生成器-评估器架构

创建时间: 2026-04-27 来源: [[sources/Harness design for long-running application development]] 相关: Harness-EngineeringAgent-First-Repository-Design


起源

生成器-评估器架构的灵感来自生成对抗网络(GAN)。在 GAN 中,一个生成器网络和一个判别器网络相互对抗训练。将这一结构类比应用于 AI 编码智能体:生成器智能体(创建者)产生输出,评估器智能体(评判者)对输出进行评分并提供反馈。这种分离解决了智能体无法可靠评估自己工作的问题。

将执行工作的智能体与评判工作的智能体分离,被证明是解决自评价问题的有力杠杆。

为什么需要分离

当被要求评估自己生成的输出时,智能体会自信地赞扬自己的工作——即使质量在人类观察者看来明显平庸。这个问题在两类任务中都存在:

  • 主观性任务(设计):没有类似于可验证软件测试的二元检验。布局是”精致”还是”普通”是主观判断。
  • 客观性任务(带有可验证结果的编码):即使有可验证的目标,智能体仍会在完成任务过程中表现出不良判断力,阻碍其进展。

“分离”并不能立即消除这种宽容——评估器仍然是一个倾向于对 LLM 生成输出持宽容态度的 LLM。“但是,将一个独立的评估器调校为持怀疑态度,远比让生成器批判自己的工作更容易。而一旦外部反馈到位,生成器就有了具体的迭代目标。“

前端的四标准评估体系

Prithvi Rajasekaran 通过首先在前端设计领域进行实验,开发了一套评分标准,将主观判断转化为具体、可评分的维度:

标准问题评分逻辑
设计质量设计是否感觉像一个连贯的整体,而非零散部分的集合?颜色、排版、布局、图像和细节共同创造出独特的氛围与身份认同
原创性是否存在自定义决策的痕迹?还是模板布局、库默认值和 AI 生成模式?显式惩罚”AI 味道”——紫色渐变配白色卡片、未经修改的基础组件
工艺技术执行:排版层次、间距一致性、色彩和谐度、对比度能力检查,默认情况下大多数合理实现均可通过
功能性可用性独立于美学用户是否能理解界面功能、找到主要操作、无需猜测完成目标任务

权重设定:设计质量和原创性被赋予更高权重。Claude 在工艺和功能性上默认已经得分良好,但在设计和原创性上往往产出平淡。通过加大前者权重,将模型推向更大的美学风险承担。

评估器校准

通过**少量示例(few-shot)**与详细评分分解进行校准。这确保评估器的判断与人类偏好保持一致,并减少跨迭代的评分漂移。

评估器使用 Playwright MCP 直接与实时页面交互——自行导航、截图和仔细研究实现——而非评审静态截图。然后对每个标准进行评分,撰写详细批评意见,将反馈返回给生成器进行下一次迭代。

每次运行 5 到 15 次迭代,每次迭代通常推动生成器朝着更独特的方向发展。完整运行时间可达 4 小时。

扩展到全栈开发:三智能体架构

将该模式从设计扩展到完整软件开发:

规划器(Planner)      生成器(Generator)       评估器(Evaluator)
─────────────────    ──────────────────       ─────────────────
1-4 句话提示 →       每个冲刺实施一个特性        通过 Playwright 点击运行中的应用
完整产品规格          与评估器协商冲刺合同         测试 UI 特性、API 端点、数据库状态
设定范围              自我评估                   根据功能完整性与 bug 进行评分
融入 AI 功能          使用 React/Vite/          详细反馈
                      FastAPI/SQLite/PG        四个标准的硬性阈值:
                                              任一不达标,冲刺即为失败

冲刺合同

每个冲刺开始前,生成器与评估器协商一份冲刺合同:就”完成”的定义达成一致。产品规格故意保持高层次,合同弥合了用户故事与可测试实现之间的差距。

  • 生成器提议:将构建什么,如何验证成功
  • 评估器审核:确保构建的是正确的东西
  • 双方迭代,直到达成一致

示例:冲刺 3(关卡编辑器)——仅此冲刺就包含 27 条标准,涵盖矩形填充工具、实体删除和动画帧排序。

通信机制

智能体通过文件进行通信:一个智能体写入文件,另一个智能体读取该文件,并在同一个文件或一个新文件中做出响应,前一个智能体再读取这个文件。

评估器调校循环

开箱即用的 Claude 作为质量保证智能体表现较差。在早期运行中,它发现了真正的问题,然后说服自己这些问题不重要,仍然批准了该工作。它还倾向于表面测试而非探索边缘情况。

调校循环:

阅读评估器日志
 → 发现判断与自身判断偏离之处
   → 更新质量保证提示词以解决这些问题
     → 重复多次,直到评估器合理

即使经过调校,评估器仍会漏掉一些 edge-case bug 和较深嵌套的功能问题。但相比于 solo 运行(核心功能根本不工作),提升是显著的。

Opus 4.6 驱动下的架构简化

随着 Opus 4.6 的发布,多个负载组件变得不再必需:

组件Opus 4.5 必要性Opus 4.6 状态
冲刺分解结构模型在无分解的情况下难以保持连贯已移除——模型可以原生处理
上下文重置Sonnet 4.5 的上下文焦虑需要它已移除——Opus 4.6 无此行为,支持连续会话
每冲刺评估器对于发现中期问题至关重要移至仅结束时单次通过

评估器的实用性现在取决于任务相对于模型可靠 solo 能力的位置。对于模型可以自己可靠处理的任务,评估器变成不必要的开销。对于仍处于极限边缘的任务,评估器能提供真正的提升。

核心原则

每个 harness 组件都编码了一个关于”模型不能独立完成什么”的假设。这些假设值得进行压力测试——既因为它们可能是不正确的,也因为它们会随着模型的改进而迅速过时。

找到最简单的可行方案,仅在必要时增加复杂度。

随着模型的改进,有趣的 harness 组合空间并不会缩小——它会移动。对于 AI 工程师来说,有趣的工作是不断寻找下一个新颖的组合。

参考资料

  • 来源:Anthropic《Harness design for long-running application development》——Prithvi Rajasekaran
  • 相关概念:GAN(生成对抗网络)——Ian Goodfellow 等人,2014 年