2.2 Agent 不知道自己错了——反馈(Feedback)
现象
Agent 写了一段代码,自信地说"已完成",还加了一句"这段代码遵循了最佳实践"。
你一看:变量名混乱、边界条件没处理、测试根本跑不通。
Agent 在"自信地赞美自己的平庸输出"。
这不是因为它不聪明,而是因为它没有外部反馈来校准自己的判断。就像一个学生交了作业从不看批改——他永远觉得自己写对了。
为什么 Agent 缺乏反馈?
👤 人类的反馈循环
写代码
→
编译
→
看报错
→
修改
→
通过
🤖 Agent 的反馈循环(无 Harness)
写代码
→
"我觉得写完了"❌ 循环断裂
→
结束
没有编译检查、没有测试运行、没有 Code Review
Harness 解决方案
方案一:GAN 式验证(Anthropic)
借鉴 GAN 的思想——生成和验证分离:
生成器(Coder Agent)根据需求写代码
⇄ 对抗迭代
验证器(Reviewer Agent)独立审查代码,找出问题
关键设计:验证器不知道生成器的思考过程,两者上下文完全隔离
这就像考试时"出题人和阅卷人分离"——防止自己给自己打分。
方案二:Shift-Left 验证(Stripe)
Stripe 的实践——把验证前移到每一步:
Shift-Left vs 传统验证:反馈延迟对比
方案三:验证独立于生成
核心原则:谁来验证,比怎么验证更重要。
❌ 错误做法
Agent 写完代码 → Agent 自己检查 → "没问题!"
✅ 正确做法
Agent 写完代码 → CI 自动测试 → 测试报告 → Agent 根据报告修改
Agent 写完代码 → 独立 Reviewer Agent 审查 → 审查意见 → Agent 修改
创造性突破案例
🎨 创造性突破案例
荷兰国立博物馆在修复名画时,采用了类似原理:修复团队和鉴定团队完全分离。修复师只负责修复,鉴定师独立评估修复质量。两个团队不共享工作上下文,只交换最终结果。
这个机制确保了评估的客观性——同理适用于 Agent 的输出验证。
本节小结
📌 本节核心要点
- 现象:Agent 自信地赞美自己的平庸输出,因为缺乏外部反馈
- 根因:没有独立于生成过程的验证机制
- 方案:GAN 式验证(生成/验证分离)、Shift-Left(验证前移)、验证独立于生成
- 核心原则:谁来验证比怎么验证更重要——验证者必须独立于生成者
思考题
- 你目前使用 Agent 时,有没有"验证环节"?如果有,验证者和生成者是独立的吗?
- "Shift-Left"把验证前移到每一步,代价是什么?在什么场景下这个代价不值得?
- 如果让 Agent 自己验证自己的输出,你能想到哪些方法来降低"自评偏差"?
下一节预告
反馈解决了"知道自己错了"的问题。但 Agent 还有一个根本性缺陷——它没有记忆。每次对话都从零开始。