摘要:自主编码 Agent 不能只靠模型自述判断是否完成。没有 evaluator,loop 只是生成、解释、宣布完成;有 evaluator,目标、过程和产物才会被证据闭合。
自主编码 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,不能自由发挥。
第四层是人类闸门。涉及资金、权限、安全、生产数据、品牌发布和不可逆操作时,自动评估只能辅助,不能直接放行。
能用确定性检查解决的问题,不要交给 LLM;必须由人承担责任的问题,也不要伪装成自动化。
评估过程,不只评估结果
传统测试主要看结果:函数返回值对不对,页面有没有显示,接口有没有通过。
Agent 还要评估过程。因为风险经常藏在路径里:
- 是否调用了不该调用的工具;
- 是否读写了越界文件;
- 是否跳过了用户要求的确认;
- 是否在失败后继续假装完成;
- 是否为了通过测试硬编码答案;
- 是否无限重试却不报告问题。
所以 evaluator 最好能读取 trace。只看最终答案,很难判断 Agent 是完成了任务,还是绕开了任务。
编码 Agent 最需要的五类评估
第一,计划-结果一致性。计划说改 A、B、C,最终是否真的都改了?计划说补测试,测试是否存在并运行?
第二,失败诚实度。命令失败、网络超时、依赖缺失、测试未跑,这些是否在总结里如实说明?
第三,最小变更。用户只要求修一个按钮,Agent 是否重构了半个系统?修改范围是否与目标匹配?
第四,真实运行。代码看起来对,不代表服务跑得起来;本地通过,不代表线上可访问。完成状态应该绑定可执行证据。
第五,业务语义。价格、权限、审批、合同、工业数据口径等问题,不是测试通过就一定正确,需要规则、样例和人工校准。
一个够用的最小方案
不必一开始就搭复杂平台。多数团队可以先做一个简单 evaluator:
- 任务开始时,把 goal 写成结构化验收标准;
- 计划阶段列出文件范围、接口变化、数据变化、测试计划和风险点;
- 执行阶段记录 trace,包括命令、结果、失败和重试;
- 完成前跑确定性检查;
- 用 LLM judge 对照 goal、plan、diff、测试输出和 trace 做语义评估;
- 按风险等级设置人工闸门;
- 把失败样本沉淀为回归 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