很多人第一次做 Agent,卡的不是模型选哪个,而是「一圈跑下来结果飘、钱还烧得快」。这篇不讲概念科普,按开发顺序把一件事拆成四段:先定任务边界与成功判据,再定工具和状态放在哪,然后压成本和延迟,最后做评测与上线回退。每一段都给出该确认的清单和「什么情况下这套做法不适用」。
很多人第一次做 Agent,卡住的不是模型选哪个,而是一圈跑下来结果飘、钱还烧得快。问题基本都出在开发顺序上:先纠结框架和模型,最后才发现任务边界没定、成功判据没写、循环没有终止条件。换个顺序做,先钉死任务和判据,再决定工具、状态放哪,然后压成本和延迟,最后做评测和灰度上线,返工次数会少很多。
下面按开发顺序拆成四段,每段给出该确认的清单和判断标准,也写清楚什么情况下这套做法不适用。不讲概念科普,只讲你打开编辑器之前和之后该做的动作。
第一步:先把任务边界和成功判据钉死
先判断这活到底该不该做成 Agent。步骤固定、输入输出确定、中间不需要看外部反馈的流程,用单次调用或者固定工作流更省更稳。只有需要多轮观察、结果不确定、要边做边改的场景,才值得上循环。判断标准很简单:如果人能一次把步骤写完并且不用回头改,那就不需要 Agent。
- 写下三条判据:什么算成功、什么算失败、允许重试几次。判据不写清,后面调参就没有参照,只能凭感觉换模型。
- 把动作分成「能做错的」和「不能做错的」两类。查询类可以自动跑,写操作类(下单、发消息、改文件、调外部接口)默认单独审批。
- 给每个任务写好「结束条件」,包括正常收敛和主动放弃两种。跑飞的第一步永远是「没有终止条件」。
- 判据里带上人可读的样例:一条成功记录长什么样,一条失败记录长什么样,方便后面做回归集。
第二步:回路、工具和状态分别怎么放
回路只负责三件事:看当前信息、决定下一步、把结果写回状态。这三件事之外的东西都别塞进循环里。控制循环次数上限,并且给每次循环打上编号,出问题时能按编号回放。工具接入选「少而稳」:每个工具要有明确的入参描述和失败返回,宁可多分几个窄工具,也别做一个万能函数让模型猜参数。
| 环节 | 放什么 | 放错会怎样 |
|---|---|---|
| 短期状态 | 当前任务的过程数据、已执行动作 | 塞进长期存储,排错时找不到边界 |
| 长期存储 | 跨会话要留的信息,可单独删除 | 混入过程数据,越滚越大且难清理 |
| 工具定义 | 窄接口、明确入参、明确失败返回 | 万能函数让模型猜参数,调用频繁报错 |
| 终止条件 | 次数上限、超时、主动放弃 | 循环跑飞,消耗失控且结果不可复现 |
框架层面别耗太久,先对齐可选项再动手。可以参考站内的 Agent 框架与 SDK 目录 Agent 框架与 SDK 目录(/stacks/frameworks) 和 Agent 常用 API 清单(/stacks/agent-apis),按你的语言和部署方式筛出两三个候选,选一个直接开工。框架换来换去,真正影响成败的还是工具粒度和状态设计。
第三步:把成本和延迟压到能上线的水平
优化之前先测基线。接口延迟用 接口测速:先量出你的延迟基线(/tools/speed-test) 量,一轮任务的消耗用 模型成本计算器(/tools/model-cost-calculator) 估算。没有基线,你没法判断某次优化到底有没有用,只能凭感觉说变快了。基线要按任务类型分别记,不同任务的步数差异很大。
- 拆小模型分工简单判断、格式整理交小模型,复杂推理再上大模型;改完用同一批任务对比通过率和消耗。
- 压缩上下文每次塞进历史里的内容只留有用的,把工具返回结果做裁剪,验证方式是看同一任务输入长度是否下降而通过率没掉。
- 加缓存重复的检索结果和稳定的判断结果缓存起来,在日志里确认命中情况,命中率低就把缓存键改细。
- 并行化延迟敏感的场景把能并行的工具调用并起来,用测速页面复测端到端延迟。
具体的单价和用量行情变化快,去 官方 API 价格(/official-api) 和 真实用量榜(/usage) 核对当时的数字,别拿记忆里的旧值做决策。不适用的情况:一次性内部工具、每天只跑几十次,优化成本高于省下的钱,直接跑通就行。
第四步:评测、灰度与回退怎么安排
建一个小而固定的回归集:把真实跑过的任务按类型各留几条,每次改提示词、换模型、动工具都跑一遍,看的是通过率变化,不是单条输出好不好看。样本要覆盖你之前定的失败判据,否则测出来全是好消息。评测口径可参考 质量监控(/tools/quality-monitor) 与 质量检测(/tools/quality-check)。
| 阶段 | 动作 | 通过标准 |
|---|---|---|
| 灰度 | 先给内部或少量用户用 | 失败样本可复现,异常调用能定位 |
| 全量 | 逐步放量并盯日志 | 通过率不低于灰度阶段,消耗在预算内 |
| 回退 | 换回旧模型、关掉写操作 | 能在短时间内切回,不丢用户数据处理 |
- 日志记全:每一步的输入、工具返回、耗时和消耗,否则出问题只能重放。
- 回退方案在上线前写好,包括换回旧模型和关掉写操作两条路。
- 把每次上线的判据和实际结果留档,下一版改动有对照。
- 不适用的情况:探索性项目可以先靠人工看样本,等任务稳定了再补回归集。
Agent 的上线不是把循环打开就完事,而是把终止条件、工具边界和回退路径一起交付。下一步把你的任务判据和回归集写出来之后,到站内挑框架和 API,顺便用测速和成本工具跑一遍基线。→
常见问题
做 Agent 一定要用最强的模型吗?
不一定。判断、规划这类环节确实吃模型能力,但工具参数填充、结果分类这种窄任务,小模型往往够用且便宜快。做法是分层:把最难的决策交给强模型,其余环节交小模型,然后用同一套回归集验证整体通过率有没有掉。掉了再往上换,别一上来全用顶配。
Agent 跑不稳,一般先查哪里?
按这个顺序排:先看有没有终止条件、循环次数上限;再看工具返回是不是结构统一、失败有没有被正确识别;然后看历史上下文是不是越堆越长导致关键信息被冲掉;最后才怀疑模型本身。多数「飘」的问题出在前两步,换模型通常治不好。
小团队没资源做评测,怎么办?
从最小可用版本起步:挑十到二十条真实任务,覆盖成功、失败、边界三类,手动跑通并记下期望结果,存成一个表格。每次改动前跑一遍,只看通过条数变化。这套东西半天能建起来,比任何复杂平台都实用,等任务量上来了再考虑自动化。