很多人第一次做 Agent,是先把框架文档翻一遍,然后写出一堆互相调用的智能体,跑两次就崩,也不知道钱花在哪。这篇不讲概念史,只给一条能照着走的路径:怎么把需求拆成模型能干的活、工具怎么暴露、循环什么时候该停、出错怎么回滚,以及额度与授权该在哪一页核对。每一步都附一个可交付的检查点,走完才算这步过了。
很多人第一次做 Agent,是先把框架文档翻一遍,然后写出一堆互相调用的智能体,跑两次就崩,也不知道钱花在哪。这篇不讲概念史,只给一条能照着走的路径:怎么把需求拆成模型能干的活、工具怎么暴露、循环什么时候该停、出错怎么回滚,以及额度与授权该在哪一页核对。每一步都附一个可交付的检查点,走完才算这步过了。
整条路径的顺序是:先划边界、再定义最小任务,然后设计工具与提示词,接着把循环和状态管住,最后算账、验收,才考虑扩场景。跳步的代价通常在后面某个环节集中爆出来,而且很难定位,不如按顺序一步步来。
第一步:先把「谁的活」拆清楚
拆需求时,最容易犯的错是把「做客服机器人」这种大目标直接丢给 Agent。正确做法是先把所有动作按性质分成三类,再决定哪些交给它自动跑。
| 任务类型 | 典型例子 | 是否交给 Agent 自动跑 |
|---|---|---|
| 模型判断类 | 分类、抽取、改写、打标签 | 是,这类是 Agent 的主场 |
| 确定性代码类 | 查数据库、算数、格式转换 | 是,但尽量用代码而非模型来做 |
| 必须人工确认类 | 付款、发信、删数据、改配置 | 否,做成待确认队列,人点过才执行 |
分完类后,写出一个「最小可交付任务」,比如「给一封客户来信打标签并起草回复草稿」,而不是「做客服机器人」。任务越小,越容易判断它到底行不行;也方便你在后面算成本、定验收标准。
- 把需求按「模型判断 / 确定性代码 / 人工确认」三类拆开,只有前两类该交给 Agent 自动跑。
- 写出最小可交付任务,一句话说清输入和输出,不要写成产品愿景。
- 提前定失败的样子:答错、答一半、超时、调错工具,各写一条预期行为。
- 任务本身规则能写死、没有模糊判断空间的,用普通脚本更省钱也更稳,不必套 Agent。
第二步:工具怎么暴露,提示词怎么写
工具设计的核心原则是:每个工具只做一件事,参数名和返回字段写清楚,别让模型猜。工具描述里写清「什么时候该用」,比写清「它是什么」更有用,因为模型做的是决策而不是查阅手册。
- 系统提示词
- 负责角色、边界、输出格式和停止条件,一份任务只写一次。
- 用户提示词
- 只放这次的具体输入,别混入长期规则,混着写是后面失控的主因。
- 输出结构
- 给字段名、类型、取值范围定死,解析失败就当一次错误,不要用正则去兜。
术语拿不准时,先到 基础概念词典:Token、上下文、温度(/ai-dict/category/basics) 对一遍。温度、上下文长度这些参数直接影响循环稳不稳;比如温度调高会让输出更发散,在需要严格格式的任务里反而增加解析失败率。
- 工具描述写清触发条件,而不是只写功能说明。
- 系统提示词与用户提示词分开维护,避免规则被单次输入带偏。
- 输出结构固定下来,解析失败按错误处理,不要事后补救。
- 参数含义不确定时,先查站内词典再动手改代码。
第三步:循环、状态和停止条件
Agent 出问题,多半是循环没边。一定要设上限:最多几步、最多调几次工具、最多花多少 token,触顶就退出并返回已完成的部分,不要无限重试。上限值本身不用猜,跑几次简单任务看实际步数,再往上加一点余量就行。
- 设硬上限给步数、工具调用次数、token 消耗各设一个阈值,触顶即停,返回当前结果。
- 状态落表把每一步的输入、工具返回、模型输出写进一张表或日志文件,方便回放。
- 错误分类网络、限流这类可重试的退避重试;参数错、权限不足这类直接上报,别让模型改参数硬试。
- 接现成能力需要连外部系统时,先看 Agent 常用 API 清单(/stacks/agent-apis) 和 MCP 服务器大全(/mcp),能接现成的就不写胶水层。
状态单独存的价值在于:出问题能回放到具体那一步,而不是靠翻日志猜。回放能力在多人协作或任务链路变长后几乎是必需品。如果只做单步调用、任务很短,可以先简化,但一旦出现重试逻辑,就该把它补上。
第四步:算账、验收、再扩场景
算账要按「一次任务消耗多少 token + 调几次工具」估单价,而不是只看模型标价。用 模型成本计算器(/tools/model-cost-calculator) 和 Token 单价换算(/tools/token-price-calculator) 把口径对齐,具体数字到这两个页面核对当时的数值。
| 验收指标 | 怎么量 | 变差时先查哪 |
|---|---|---|
| 任务完成率 | 固定测试集上跑一批,看成功比例 | 提示词边界、工具描述是否含糊 |
| 平均步数 | 统计每个任务实际走了几步 | 是不是循环没停住或工具反复试错 |
| 单任务成本 | 按 token 与调用次数折算 | 上下文是否塞太多、模型选得是否合适 |
换模型或换服务商之前,先到 Agent 框架与 SDK 目录(/stacks/frameworks) 看兼容写法,把模型调用封一层,后面换起来才不重写。验收三个数里有一个明显变差,先回上一步查,不要靠换模型解决。
下一步把这条路径落到具体数字上:先到模型成本计算器把口径对齐,再去 Agent 常用 API 清单确认能接的能力,最后回站内工具页把验收指标固定下来,才开始扩场景。→常见问题
要不要先学会某个 Agent 框架再动手?
不用。先把「一个任务 + 两三个工具 + 固定输出格式」用最朴素的方式跑通,再去看框架能省掉哪部分。框架主要解决编排和状态管理,如果你还没跑通过一次完整任务,看框架文档只会更晕。跑通之后再对照 Agent 框架与 SDK 目录(/stacks/frameworks) 挑,判断标准是它能不能接你已经在用的模型接口。
Agent 老是绕圈或者重复调同一个工具,怎么排查?
按顺序查三处:一是工具描述有没有写清适用场景,模型不知道还有别的工具可选;二是系统提示词里有没有写停止条件和步数上限;三是历史消息是不是把每一步结果都堆进去,导致上下文里混了互相矛盾的信号。一般改掉前两处就能明显改善,改完再用同一批输入复跑对比。
怎么判断这个 Agent 能不能上生产?
拿一批真实输入压一遍,看三件事:失败时是否有明确反馈而不是静默出错、每一步是否有记录可回放、单任务成本是否落在你能接受的区间。三项都过再谈扩容。任何一项靠人工兜着走,就先别上,先把它变成 Agent 自己能处理或能明确报错的分支,否则人越多越乱。