🏠 总目录 📚 资料库Harness 设计

Harness Design for Long-Running Application Development(长时应用开发的 Harness 设计)

📄 来自 Claude 官方博客
原文标题
Harness Design for Long-Running Application Development(长时应用开发的 Harness 设计)
原文链接
https://www.anthropic.com/engineering/harness-design-long-running-apps
作者
Prithvi Rajasekaran(Anthropic Labs)
发布日期
2026-03-24
⚠️ 本页是原文的中文结构化整理笔记(保留架构、数据、案例、结论),并非逐字翻译。具体参数与功能名更新很快,落地前请点击上方链接核对原文。

14 分钟 | 🏗️ 让任务跑得比上下文更久

🎯 一句话

长时任务的根本矛盾是:任务比上下文窗口长。⭐ 解法都围绕一件事:把状态外置到上下文之外,让每一轮都能从外部恢复

📑 本页目录

通过借鉴生成对抗网络(GAN)思想的多 Agent harness 架构,可以显著提升 Claude 在复杂长周期任务上的表现。关键在于:把任务执行与结果评估分离,并引入中间规划阶段,从而在主观领域(如前端设计)和客观领域(如全栈开发)都获得更高质量的产出。

要解决的核心问题

上下文管理问题

长时间运行的 Agent 有两种主要失败模式:

  1. 上下文窗口退化: 随着对话历史填满上下文窗口,模型逐渐失去连贯性。
  2. 上下文焦虑(Context Anxiety): 模型感知到接近 token 上限时,会过早草率收尾。

解决方案是「上下文重置」——清空对话历史,在全新的 Agent 会话之间传递结构化产物(artifacts),而不是仅依赖上下文内的摘要。

自我评估盲区

模型评估自己的工作时存在系统性的正面偏差,在主观任务上尤其明显。把生成与评估分离,远比试图让生成者自我批判更有效。

实验一:前端设计

目标: 提升 Claude 生成有美学水准、有原创性的 Web 界面的能力。

架构: 受 GAN 启发的双 Agent 结构: - 生成器 Agent: 编写 HTML/CSS/JavaScript 界面 - 评估器 Agent: 按四项具体标准打分: 1. 设计质量(整体协调、氛围、独特的视觉身份) 2. 原创性(自主的设计决策 vs 模板化默认样式) 3. 工艺(排版、间距、色彩和谐) 4. 功能性(可用性和任务完成度)

关键发现: 「这个设计是否符合我们的优秀设计原则?」是可回答的问题,而「这个设计美吗?」不是。把模糊的审美判断转化为具体可衡量的标准,评估才能稳定进行。

评估器通过 Playwright MCP 与真实页面交互,截图并研究实现后再打分。每轮生成经过 5–15 次迭代逐步打磨。一个典型例子:一个博物馆网站最初生成了平庸的深色主题设计,在第十次迭代时被推翻,改为使用 CSS perspective 渲染的 3D 空间画廊漫游体验。

实验二:全栈应用开发

架构演进: 三 Agent 系统:

1. 规划 Agent(Planner)

2. 生成 Agent(Generator)

3. 评估 Agent(Evaluator)

通信协议: Agent 之间通过文件交换信息,在写代码之前先建立明确的「何为完成」契约。

具体案例

复古游戏制作器(Retro Video Game Maker)

浏览器数字音频工作站(DAW)

DAW 案例展示了评估器反馈的价值——它抓住了「时间轴上的片段无法拖动」「录音功能还只是桩代码」这类生成器自己会忽略的实质性缺口。

迭代精简与模型演进

经验与结论

  1. 专业化分工驱动性能: 针对规划、生成、评估分别优化的 Agent,优于一体化方案。
  2. 具体标准使主观改进成为可能: 把模糊判断转化为可衡量的设计原则。
  3. 生成/评估分离消除自评偏差: 外部评估器远比自我打分客观。
  4. 结构化交接支撑长时任务: 基于文件的通信和显式契约让多会话工作不发生上下文崩塌。
  5. harness 调优需要实证依据: 阅读 Agent 日志、度量具体提示词选择的影响,是优化的必经之路。

前瞻建议


✅ 检查点

  1. 长时任务的根本矛盾是什么?
  2. 「状态外置」具体外置什么?
  3. 为什么说「可恢复」比「不出错」更重要?
👀 答案
  1. 任务需要的信息量超过了上下文窗口。一个跑几小时、几百步的任务,不可能把所有中间过程都留在上下文里
  2. ①进度和待办(做到哪了、还剩什么)②已经确定的结论和决策(避免反复推翻)③产出物本身(写进文件而不是留在对话里)④遇到过的坑(否则会重复踩)。⭐ 关键是这些都要写到文件或外部存储,且格式要便于下一轮读回
  3. 因为长任务里出错是必然的——工具超时、模型走偏、外部服务变更,跑几百步不可能一次不出错。⭐ 所以设计目标不该是「不出错」,而是「出错后能从最近的检查点继续」能恢复,长度就不再是问题;不能恢复,一次失败就要从头再来。

🛑 可以停在这里

走神救援
长时任务的根本矛盾:任务需要的信息量超过了上下文窗口——跑几小时几百步的任务不可能把所有中间过程留在上下文里。⭐解法都围绕「状态外置」,外置四样:进度和待办、已确定的结论和决策(避免反复推翻)、产出物本身(写文件而非留在对话里)、遇到过的坑(否则重复踩);关键是写到文件或外部存储,且格式便于下一轮读回。⭐⭐「可恢复」比「不出错」更重要长任务里出错是必然的(工具超时、模型走偏、外部服务变更),设计目标该是「出错后能从最近的检查点继续」——能恢复,长度就不再是问题;不能恢复,一次失败就要从头再来