[转载] 长时间运行应用开发的 Harness 设计
原文链接:Harness Design for Long-Running Application Development 作者:Prithvi Rajasekaran, Anthropic Labs 发布时间:2026 年 3 月 24 日
这篇文章探讨了如何借鉴 GAN(生成对抗网络)的思想,设计多 Agent 架构来提升 Claude 在复杂任务上的表现——特别是前端设计和全栈应用开发。作者开发了一套"生成器 + 评估器"模式,突破了单 Agent 的性能天花板。
为什么朴素的实现方式行不通
此前的实验已经能成功地将产品规格拆解为任务列表,按顺序逐个实现功能,并在会话之间进行上下文交接。但两个顽固的失败模式始终存在:
上下文管理难题
模型在长任务中会逐渐丧失连贯性。随着上下文窗口被填满,Claude Sonnet 4.5 表现出了一种"上下文焦虑"现象——当模型感知到自己接近上下文限制时,会过早地开始收尾工作。
上下文重置(清空窗口、通过结构化交接重新开始)比单纯的压缩更有效,但引入了额外的编排复杂度和延迟。
自我评估偏差
当要求 Agent 评估自己产出的工作时,它们倾向于自信地称赞这些工作——即使对于人类观察者来说,质量明显平庸。
将生成和评估分离开来,比让生成器自我批评更容易实现。外部反馈使得迭代有了具体的改进目标。
前端设计:让主观质量可评分
实验发现 Claude 天然倾向于生成技术上功能完备、但视觉上平淡无奇的布局。两个洞察塑造了 Harness 的设计方向:
- 美学可以根据具体设计原则打分,而非纯粹的审美品味
- 分离生成与评估可以创造出高产的反馈循环
四个评分维度
| 维度 | 说明 |
|---|---|
| 设计质量 (Design Quality) | 元素是否融为一个有独特个性的整体,而非拼凑的零件 |
| 原创性 (Originality) | 是否有自主设计决策,而非模板默认值和 AI 生成的套路 |
| 工艺 (Craft) | 排版、间距、配色和谐度、对比度等技术执行力 |
| 功能性 (Functionality) | 任务完成度和界面清晰度(独立于美学之外) |
作者有意强调设计质量和原创性,弱化工艺和功能性——因为 Claude 在技术执行方面已经足够出色。
评估器校准
评估器使用 few-shot 示例进行校准,附带详细的评分拆解,以对齐评估标准与具体偏好,防止评分漂移。
基于 Claude Agent SDK 构建,生成器创建 HTML/CSS/JavaScript 前端,评估器使用 Playwright MCP 与实时页面直接交互。循环运行 5-15 次迭代,评估器在打分前截图并检查实现效果。完整运行时间可达四小时。
生成器会策略性地决定是根据评分趋势继续优化当前方向,还是在方法停滞时进行美学转向。
一个惊喜的例子
当提示创建一个荷兰艺术博物馆网站时:
- 第 9 次迭代:产出了一个简洁的暗色主题着陆页
- 第 10 次迭代:生成器完全重构了概念——变成了一个 3D 空间体验:CSS 渲染的棋盘格地板、自由排列的艺术品、基于门洞的画廊导航,取代了传统滚动浏览
这种创造性的重新构思展示了出乎意料的生成能力。
扩展到全栈开发
三 Agent 架构
作者将生成器-评估器模式应用到全栈开发中。与之前使用 Sonnet 4.5 并需要上下文重置不同,Opus 4.5 基本消除了上下文焦虑,允许连续会话运行,自动压缩管理上下文增长。
┌─────────────┐ 规格文档 ┌─────────────┐ Sprint合约 ┌─────────────┐
│ Planner │ ──────────────▶ │ Generator │ ◀──────────────▶ │ Evaluator │
│ 规划器 │ │ 生成器 │ 反馈/评分 │ 评估器 │
└─────────────┘ └─────────────┘ └─────────────┘
扩展简短提示 逐功能实现 Playwright 测试
识别AI集成机会 React+Vite+FastAPI Bug评分+阈值判定
高级技术设计 Git版本控制 Sprint合约协商规划器 (Planner):从 1-4 句的简短提示自动扩展为完整的产品规格。优先考虑雄心勃勃的范围和高级技术设计,而非细粒度的实现细节。识别在产品中集成 AI 功能的机会。
生成器 (Generator):按照基于 Sprint 的分解方式逐个实现功能。技术栈为 React、Vite、FastAPI 和 SQLite(后来改为 PostgreSQL)。生成器在提交 QA 之前会先自我评估,并使用 Git 进行版本控制。
评估器 (Evaluator):使用 Playwright MCP 像终端用户一样测试运行中的应用,操作 UI 功能、API 端点和数据库状态。根据发现的 Bug 和自适应标准(产品深度、功能性、视觉设计、代码质量)对 Sprint 进行评分。每个标准有硬性阈值,未达标则触发详细反馈。
关键设计:每个 Sprint 开始前,生成器和评估器会协商 Sprint 合约,定义可交付成果和验证标准。Agent 之间通过文件进行通信,保持对规格的忠实性,同时不过度约束实现方式。
V1 运行结果:2D 复古游戏制作器
测试提示:"创建一个 2D 复古游戏制作器,包含关卡编辑器、精灵编辑器、实体行为和可玩测试模式。"
| 指标 | 单 Agent | 完整 Harness |
|---|---|---|
| 运行时间 | 20 分钟 | 6 小时 |
| 花费 | $9 | $200 |
| 核心功能 | 破损(实体无法交互) | 可玩(物理有边界情况) |
| 功能数量 | 基础 | 16 个功能,10 个 Sprint |
单 Agent 的产出有僵硬的工作流、低效的布局,以及破损的实体-游戏运行时集成导致游戏完全无法玩。
完整 Harness 产出了精心设计的界面,规划器从一句话提示扩展出了 16 个功能的规格,涵盖精灵动画、行为模板、音效音乐、AI 辅助生成和可分享的游戏导出。内置的 Claude 集成允许用户通过提示生成游戏元素。最关键的是——游戏是可以玩的。
评估器调优
让评估器达到可靠的表现需要大量工作:
- 初期问题:Claude 能识别出合理的问题,但会将它们合理化为"可以接受",或者测试过于浅层导致遗漏边界情况
- 调优方法:在日志中识别判断偏差,相应更新 QA 提示词
- 需要多轮开发循环才能使评估达到可接受的校准水平
- 持续局限:小的布局问题、不直观的交互、深层嵌套功能中未发现的 Bug
尽管如此,与单 Agent 运行中核心功能完全失败相比,改进是巨大的。
迭代改进 Harness
方法论
在初始成功之后,作者追求在保持性能的同时简化。最初激进的删减和创造性修改未能匹配原始性能,承重组件不明确。最终采用逐个移除组件并测量影响的方法论。
Opus 4.6 带来的变化
Opus 4.6 的发布为降低复杂度提供了动力。官方博客指出:
Opus 4.6 规划更周密,Agent 任务持续时间更长,能在更大的代码库中可靠运行,并且代码审查和调试能力更强。
它还大幅提升了长上下文检索能力——这些能力此前需要 Harness 脚手架来支撑。
移除 Sprint 结构
作者完全移除了 Sprint 结构,测试 Opus 4.6 是否能在没有显式分解的情况下原生处理连贯的工作。结果发现:
- 规划器仍然必需:没有规划,生成器会缩小工作范围
- 评估器视情况而定:在 Opus 4.5 上,评估器在各次构建中都能捕获有意义的问题;在 4.6 上,改进的原生能力将边界向外推移——此前需要评估的任务现在落入了可靠的单 Agent 性能区间
- 关键洞察:评估器的包含与否应取决于任务复杂度相对于当前模型能力的关系,而非固定的架构决策
V2 运行结果:浏览器 DAW(数字音频工作站)
测试提示:"在浏览器中使用 Web Audio API 构建一个全功能的 DAW。"
运行阶段详细分解:
| 阶段 | 耗时 | 花费 |
|---|---|---|
| Planner | 4.7 分钟 | $0.46 |
| Build Round 1 | 2 小时 7 分钟 | $71.08 |
| QA Round 1 | 8.8 分钟 | $3.24 |
| Build Round 2 | 1 小时 2 分钟 | $36.89 |
| QA Round 2 | 6.8 分钟 | $3.09 |
| Build Round 3 | 10.9 分钟 | $5.88 |
| QA Round 3 | 9.6 分钟 | $4.06 |
| 总计 | 约 3 小时 50 分钟 | $124.70 |
生成器在没有 Sprint 分解的情况下连贯运行了 2 小时以上——这是 Opus 4.5 做不到的。
QA 反馈揭示的关键问题:
- 第一轮:设计保真度、AI Agent 集成、后端架构表现良好,但核心 DAW 功能缺乏交互深度——音频片段无法在时间线上移动、没有乐器 UI 面板(合成器旋钮、鼓垫)、效果编辑器只显示数字滑块而非图形化可视化
- 第二轮:音频录制仍为 stub 实现、片段缩放和分割未实现、缺少图形化效果可视化
最终产出:一个功能性的浏览器音乐制作应用,包含工作的编曲视图、混音器和播放控制。集成的 AI Agent 能自主驱动作曲——设置节拍和调号、构建旋律、编排鼓点、调整混音电平、添加混响效果。
核心经验总结
关键原则
找到最简单的可行方案,只在需要时才增加复杂度。
这与 Anthropic 的 Building Effective Agents 一文的核心理念一致。
实践建议
- 用目标模型在真实问题上实验,通过 trace 分析调优性能
- 复杂任务可能受益于分解,用专门的 Agent 处理特定方面
- 新模型发布时重新审视 Harness——移除不再承重的组件,添加能释放新能力的部分
- 每个 Harness 组件都编码了对模型局限性的假设——持续压力测试这些假设,因为它们会过时
- 评估器的价值取决于任务难度——简单任务上是浪费,能力边界任务上是救星
模型演进与 Harness 复杂度的关系
随着模型改进:
- 一些 Harness 脚手架变得多余(如 Sprint 分解)
- 但更大复杂度的机会也随之出现(如 AI 集成功能、更长的连贯运行)
- Harness 设计空间不是在缩小,而是在迁移——有趣的 AI 工程在于持续发现新的组合方式
