没有评估器,Agent 的 loop 只是在空转

摘要:自主编码 Agent 不能只靠模型自述判断是否完成。没有 evaluator,loop 只是生成、解释、宣布完成;有 evaluator,目标、过程和产物才会被证据闭合。

没有评估器,Agent 的 loop 只是在空转

自主编码 Agent 的核心不是“模型加工具”,而是四件事:

  • goal:目标和验收标准;
  • loop:计划、执行、观察、修正;
  • artifact:代码、文档、PR、部署结果等产物;
  • evaluator:判断产物是否满足目标的外部机制。

现在很多系统前三项都有,唯独缺 evaluator。结果是 Agent 写完代码、解释自己做了什么,再宣布任务完成。这个过程看起来像闭环,实际上只是自我报告。

问题不在于 Agent 会不会犯错。人也会犯错。问题在于:Agent 很擅长把不完整的工作解释得像完成。

自我检查不等于评估器

让 Agent 自己复盘计划、检查 diff、补测试,当然有用。但这不能替代外部评估。

原因很简单:如果模型一开始误解了需求,后面的自查也可能沿着同一个错误前提继续。如果它不知道某个 API 的真实行为,它可以在实现和检查里同时犯错。如果命令失败、测试没跑,它仍然可能在总结里写出“已完成”。

OpenAI 的 evaluation best practices 强调,AI 系统需要结构化测试,而不是凭感觉判断“看起来还行”。Anthropic 也指出,Agent 因为有工具调用、多轮状态和自治行为,比普通问答更需要 eval。LangSmith 则把评估拆成开发期实验和生产期监控,并要求把失败 trace 回流成数据集。

共同点只有一个:信心不是证据。

evaluator 应该是一层栈

Evaluator 不等于“再找一个 LLM 打分”。对编码 Agent 来说,评估器至少有四层。

第一层是确定性检查。测试、类型检查、lint、build、格式校验、schema 校验、端到端测试、截图对比。这些检查便宜、可重复,不会被模型说服。

第二层是真实环境信号。命令是否成功,页面是否渲染,接口是否返回 200,文件是否生成,部署后资源是否可访问,数据库迁移是否可回滚。

第三层才是 LLM-as-judge。它适合判断需求覆盖、文档质量、计划与产物是否一致、用户体验是否合理。但它必须有 rubric,不能自由发挥。

第四层是人类闸门。涉及资金、权限、安全、生产数据、品牌发布和不可逆操作时,自动评估只能辅助,不能直接放行。

Evaluator Stack

能用确定性检查解决的问题,不要交给 LLM;必须由人承担责任的问题,也不要伪装成自动化。

评估过程,不只评估结果

传统测试主要看结果:函数返回值对不对,页面有没有显示,接口有没有通过。

Agent 还要评估过程。因为风险经常藏在路径里:

  • 是否调用了不该调用的工具;
  • 是否读写了越界文件;
  • 是否跳过了用户要求的确认;
  • 是否在失败后继续假装完成;
  • 是否为了通过测试硬编码答案;
  • 是否无限重试却不报告问题。

所以 evaluator 最好能读取 trace。只看最终答案,很难判断 Agent 是完成了任务,还是绕开了任务。

编码 Agent 最需要的五类评估

第一,计划-结果一致性。计划说改 A、B、C,最终是否真的都改了?计划说补测试,测试是否存在并运行?

第二,失败诚实度。命令失败、网络超时、依赖缺失、测试未跑,这些是否在总结里如实说明?

第三,最小变更。用户只要求修一个按钮,Agent 是否重构了半个系统?修改范围是否与目标匹配?

第四,真实运行。代码看起来对,不代表服务跑得起来;本地通过,不代表线上可访问。完成状态应该绑定可执行证据。

第五,业务语义。价格、权限、审批、合同、工业数据口径等问题,不是测试通过就一定正确,需要规则、样例和人工校准。

一个够用的最小方案

不必一开始就搭复杂平台。多数团队可以先做一个简单 evaluator:

  1. 任务开始时,把 goal 写成结构化验收标准;
  2. 计划阶段列出文件范围、接口变化、数据变化、测试计划和风险点;
  3. 执行阶段记录 trace,包括命令、结果、失败和重试;
  4. 完成前跑确定性检查;
  5. 用 LLM judge 对照 goal、plan、diff、测试输出和 trace 做语义评估;
  6. 按风险等级设置人工闸门;
  7. 把失败样本沉淀为回归 eval。

这套机制不华丽,但能把“我觉得做完了”改成“我有证据证明做完了;没证明的部分列在这里”。

结论

Agent 不缺生成能力,缺的是停止条件。

没有 evaluator,loop 只是生成、解释、宣布完成。它跑得越快,越容易把错误包装成产出。

有 evaluator,loop 才真正闭合:goal 定义方向,loop 推动执行,artifact 承载结果,evaluator 提供证据。

生成不是完成。

被证据验证过的生成,才是完成。

参考资料

[1] OpenAI, “Evaluation best practices”, https://developers.openai.com/api/docs/guides/evaluation-best-practices

[2] Anthropic, “Demystifying evals for AI agents”, 2026-01-09, https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents

[3] Anthropic, “Building effective agents”, https://www.anthropic.com/engineering/building-effective-agents

[4] LangChain Docs, “LangSmith Evaluation”, https://docs.langchain.com/langsmith/evaluation

[5] AWS Prescriptive Guidance, “Evaluator reflect-refine loop patterns”, https://docs.aws.amazon.com/prescriptive-guidance/latest/agentic-ai-patterns/evaluator-reflect-refine-loop-patterns.html

分享到