Agent 前几轮能对上需求、跑着跑着方向就偏了,通常不是模型能力在某一轮突然下降,而是任务描述里没有可判断的完成条件——每多跑一轮,模型就多补一次自己的理解。判断顺序建议是:先查任务描述里的验收标准,再考虑改提示词或调流程。验收标准是可以逐条核对、能被复现的东西;提示词调整往往只是把偏移往后推了几轮。
适用于 Agent 首轮输出基本符合预期、后续轮次逐步偏离的情况。操作动作:把输出按轮次编号,定位第一条与需求不符的句子;回到任务描述逐句判断能否用数量、格式、字段核对,把无法核对的要求改写成可勾选条目;用同一批输入重跑并比对两版输出。验证方式就是两版输出逐条对照,看偏移条目是否减少、有没有新增越界内容。风险边界:验收条目只能收敛方向,涉及主观取舍的部分仍需人工确认。
在跑偏的那一轮输出里找出第一个对不上的句子
先不要通读整段输出后说“感觉不对”。把会话记录导出,给每条消息加上轮次编号,再把它拆成句子或条目,逐条对照任务要求,标出第一条与需求不符的内容,并记下它出现在第几轮。第一条不符的句子就是偏移起点,在它之前的输出通常是可用的。
导出和编号可以先做最小处理,例如把会话记录转成一行一句再比对:
awk 'NR==FNR{a[NR]=$0;next}{printf "R%d\t%s\n", FNR, $0}' task.md session.log
记录至少包含四项:轮次、原始句子、对应的任务要求、违反的具体点是数量、格式还是字段。只写到“内容不符”是没用的,因为下一步要判断的正是这句话违反了哪条要求。如果任务描述本身没有对应条目,说明偏移可能从第一轮就埋下了,需要回到第二节处理。
回到任务描述,标出没有可判断完成条件的要求
把任务描述逐句拆开,对每一句问三个问题:这条要求能用数量核对吗?能用格式核对吗?能指定必须出现的字段吗?三个都答不上的句子,就是模型自由发挥的空间。
- 「整理一份调研报告」——数量、格式、字段都没有,无法核对。
- 「整理一份调研报告,输出 Markdown,含 3 个二级小节」——数量与格式可核对。
- 「结论要有依据」——不可核对;「每节末尾列出引用来源字段」——字段可核对。
- 「不要写得太长」——不可核对;「正文不超过 200 字」——数量可核对。
把无法核对的部分单独列成一张表,标清楚哪些是必须保留的意图、哪些只是措辞含糊。如果偏移句落在不可核对的要求上,通常可以判断这是描述问题,而不是模型或流程问题;此时改流程、加更多轮次都只会让偏移范围扩大。
把验收标准改写成可勾选的条目
改写目标不是把任务描述写长,而是让每条要求都能被直接判对错。下面是一份通用配置骨架,占位符按实际任务替换,可以放在任务描述末尾,也可以放在单独的 acceptance 配置里:
task: <任务名>
goal: <一句话目标>
deliverable:
format: markdown
sections: 3 # 数量
fields: [标题, 结论, 待确认项] # 字段
acceptance:
- id: A1
check: 二级标题个数
expect: "== 3"
on_fail: retry_once
- id: A2
check: 每节正文字数
expect: "<= 200"
on_fail: trim_and_flag
- id: A3
check: 每节是否包含「待确认项」字段
expect: "present"
on_fail: mark_manual
三条硬要求:每条带数量、格式、字段中的至少一项;未达标时的处理方式写清楚,常见取值是重跑一次、截断并标记、停止并转人工;占位符必须是可替换的实体名,不要留“合适的长度”这类词。处理方式建议按严重程度分级,格式类可以自动重跑,涉及事实和结论类的不建议自动改写,标记后交人工判断更稳妥。
用同一批输入重跑并比对两版输出
改完描述后,用原来那批输入重跑,不要换输入,否则无法判断是验收标准起了作用还是输入本身变了。把两版输出放在一起逐条比对,记录三类内容:两版都不符的条目、新版新增的越界内容、仍然需要人工补的部分。
- 旧版第 4 轮出现无依据的结论,新版该轮只输出待确认项 —— 偏移条目减少,方向收敛。
- 新版按 3 个小节输出,但第 2 节超出字数上限 —— 数量约束生效,长度约束未生效,需要检查该条 on_fail 是否配了处理动作。
- 新版新增了任务里没要求的背景段落 —— 越界内容,通常是任务描述里存在没有对应条目的自由表述。
比对时建议保留轮次编号,只看最终结果容易漏掉中间轮次的偏移。若新版仍然在相近轮次开始偏离,且偏离点对应同一条不可核对的要求,说明该条还没有真正改写,需要回到上一节重新处理。
把稳定的验收条目沉淀成模板复用
重跑几批任务后,把反复要用、且与具体任务无关的条目抽出来,形成通用清单,下次只填任务相关信息。
- 输出格式固定为 Markdown 或 JSON,可跨任务沿用。
- 章节或字段数量上限,可跨任务沿用。
- 每节必须出现的字段名(结论、依据、待确认项),可跨任务沿用。
- 超出数量或字段缺失时的处理动作,可跨任务沿用。
- 具体章节标题、业务口径、数据范围,与任务强相关,每次需要单独填写。
模板建议保留一份可勾选版本,交付前逐条打勾,未勾选项写清是重跑还是转人工。这样每次描述任务的成本会降下来,同时偏移定位也有了固定参照物:出现问题时先看是哪条验收条目没通过,再决定是改描述还是改处理动作。