Files
my_wiki/wiki/practices/Long-Running-Harness-Design.md
T

6.8 KiB
Raw Blame History

title, type, confidence, source, raw_sources, tags, last_updated
title type confidence source raw_sources tags last_updated
长运行应用的 Harness 设计 practice medium Harness design for long-running application development
path hash
raw/Harness design for long-running application development.md sha256:11521f67787364afef5e0589784cf49987d8d8b0926d5b393406993626b5fb1f
实践指南
Harness工程
多智能体
2026-04-11

长运行应用的 Harness 设计

页面定位

本页是 Anthropic 长运行应用 Harness 设计的实践案例页:上下文管理、生命周期与自主任务支持。负责该案例的问题与方案;通用 Harness 定义见 Harness-Engineering 核心页。

本文基于 Anthropic 团队的实践经验,探讨如何设计有效的 Harness 来支持长运行、自主的应用开发任务。

核心问题

在长运行 Agent 任务中,简单的实现通常会遇到两个持续存在的问题:

1. 上下文窗口填充导致的连贯性丧失

随着任务进行,模型往往会在冗长任务上失去连贯性。一些模型还表现出"上下文焦虑"——当它们接近认为的上下文限制时,会过早地结束工作。

解决方案对比

  • 压缩 (Compaction):总结对话的早期部分,使同一个 Agent 可以在缩短的历史上继续。保留了连续性,但没有给 Agent 一个干净的状态。
  • 上下文重置 (Context Reset):完全清除上下文窗口并启动一个新的 Agent,结合结构化移交来携带前一个 Agent 的状态和下一步。提供了干净的状态,但增加了编排复杂性、令牌开销和延迟。

2. 自我评估问题

当被要求评估自己产生的工作时,Agent 往往会自信地赞扬工作——即使在人类观察者看来质量明显一般。对于像设计这样的主观任务,这个问题尤其明显。

解决方案:将执行工作的 Agent 与评判工作的 Agent 分离。调整独立的评估器使其持怀疑态度,比让生成器批评自己的工作要容易得多。

前端设计:使主观质量可评分

受生成对抗网络 (GANs) 的启发,设计了一个带有生成器评估器 Agent 的多 Agent 结构。

四个评分标准

  1. 设计质量:设计感觉像是一个连贯的整体而不是部分的集合吗?
  2. 原创性:有自定义决策的证据吗,还是模板布局、库默认值和 AI 生成的模式?
  3. 工艺:技术执行:排版层次结构、间距一致性、色彩和谐、对比度。
  4. 功能性:独立于美学的可用性。

评估器校准

使用带有详细分数分解的少样本示例来校准评估器,确保评估器的判断与人类偏好一致,并减少迭代之间的分数漂移。

迭代循环

  1. 生成器 Agent 首先根据用户提示创建 HTML/CSS/JS 前端
  2. 评估器使用 Playwright MCP 与实时页面交互
  3. 评估器对每个标准进行评分并编写详细的批评
  4. 反馈流回生成器作为下一次迭代的输入
  5. 每次生成运行 5 到 15 次迭代

扩展到全栈编码

将这种 GAN 启发的模式应用于全栈开发,生成器-评估器循环自然地映射到软件开发生命周期。

三 Agent 架构

Planner (规划器)

  • 将简单的 1-4 句提示扩展为完整的产品规范
  • 被提示要对范围保持雄心勃勃
  • 专注于产品上下文和高级技术设计,而不是详细的技术实现
  • 寻找机会将 AI 功能编织到产品规范中

Generator (生成器)

  • 一次从规范中提取一个功能
  • 每个冲刺使用 React、Vite、FastAPI 和 SQLite 堆栈实现应用
  • 被指示在每个冲刺结束时自我评估其工作,然后移交给 QA
  • 有 git 用于版本控制

Evaluator (评估器)

  • 使用 Playwright MCP 像用户一样点击运行中的应用
  • 测试 UI 功能、API 端点和数据库状态
  • 根据发现的 bug 和一组标准对每个冲刺进行评分
  • 每个标准都有硬阈值,如果任何一个低于它,冲刺就失败

冲刺契约

在每个冲刺之前,生成器和评估器协商一个冲刺契约:在编写任何代码之前,就该工作块的"完成"是什么样子达成一致。

结果对比

复古游戏制作器示例

Harness 时长 成本 结果
单独 Agent 20 分钟 $9 界面看起来符合预期,但实际游戏坏了,实体不响应输入
完整 Harness 6 小时 $200 16 个功能规范,分布在十个冲刺中,包含精灵动画系统、行为模板、音效和音乐、AI 辅助的精灵生成器和关卡设计器,以及可分享链接的游戏导出

关键发现

  • 单独运行的输出最初看起来令人印象深刻,但深入研究后问题开始出现
  • Harness 运行的应用立即显示出比单独运行更多的打磨和流畅性
  • 评估器使实现与规范保持一致,契约是细粒度的,评估器的发现足够具体,可以采取行动

简化 Harness

随着模型的改进,值得重新检查 Harness,剥离不再对性能有负载作用的部分,并添加新部分以实现以前不可能的更大能力。

Opus 4.6 的改进

  • 更仔细地规划
  • 更长时间地维持 Agent 任务
  • 可以在更大的代码库中更可靠地操作
  • 具有更好的代码审查和调试技能来发现自己的错误
  • 长上下文检索方面有了实质性改进

移除冲刺结构

保持规划器和评估器,因为每个都继续增加明显的价值。将评估器移动到运行结束时的单次通过,而不是每个冲刺评分。

DAW 示例结果

使用更新的 Harness 生成数字音频工作站 (DAW):

Agent & Phase 时长 成本
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
总计 V2 Harness 3 小时 50 分钟 $124.70

经验教训

  1. 实验:与你正在构建的模型一起实验,阅读其在现实问题上的轨迹,并调整其性能以实现你想要的结果
  2. 分解:在处理更复杂的任务时,有时可以通过分解任务并将专门的 Agent 应用于问题的每个方面来获得提升
  3. 重新检查:当新模型落地时,通常很好的做法是重新检查 Harness,剥离不再对性能有负载作用的部分,并添加新部分以实现以前不可能的更大能力

随着模型的改进,有趣的 Harness 组合空间不会缩小。相反,它会移动,而 AI 工程师的有趣工作是继续找到下一个新颖的组合。

相关研究