Anthropic Engineering Blog 中文翻译

create: 2026-03-24
update: 2026-08-10
author: thinkycx
title: 【译】面向长时间应用开发的 Harness 设计
description: Anthropic 通过多 Agent 架构(规划者、生成者、评估者)推动 Claude 在前端设计和长时间自主编程方面的能力边界。核心创新是借鉴 GAN 思想分离生成与评估,解决了模型自我评价偏差和上下文窗口退化两大问题,实现了多小时级别的自主全栈应用开发。
category: translation
tags: anthropic, engineering, translation, agent-harness, long-running

面向长时间应用开发的 Harness 设计

原文发布于 2026 年 3 月 24 日,作者 Prithvi Rajasekaran,Anthropic Labs 团队

概述

通过多 Agent 架构实现数小时级别的自主全栈应用开发。 本文描述了 Anthropic 如何通过创新的 harness 设计,推动 Claude 在前端设计和长时间自主软件工程方面的能力边界。这项工作建立在此前的前端设计 skill长时间编程 Agent harness 基础之上。

核心创新是一种受生成对抗网络(GAN)启发的多 Agent 结构,使用生成者评估者两个 Agent。这一架构随后演化为三 Agent 体系——规划者、生成者和评估者——能够在数小时的自主编程会话中产出完整的全栈应用。


为什么简单实现行不通

模型在长时间运行中有两个系统性弱点:上下文退化和自我评价偏差。 我们观察到两类常见的失败模式:

失败模式 表现 解决方案
上下文一致性丧失 随着上下文窗口填满,模型逐渐失去连贯性;甚至出现"上下文焦虑"——在接近自认的上下文限制时提前收尾 上下文重置(context reset):完全清空窗口,用结构化交接重新开始
自我评价偏差 被要求评估自己的工作时,Agent"倾向于自信地称赞成果——即使在人类观察者看来质量明显平庸" 将生成和评判分离给不同 Agent

上下文重置与压缩(compaction)不同——后者只是在原地总结早期对话,无法提供真正干净的起点。而分离评估者后,调优一个独立的评估器使其保持怀疑态度,远比让生成器自我批评来得可行。


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

通过编码设计原则的评分标准和生成-评估分离,让 Claude 突破"安全但平庸"的设计倾向。 Claude 通常倾向于安全、可预测的布局——技术上没问题,但视觉上毫无特色。两个关键洞察驱动了解决方案:

  1. 通过编码设计原则的评分标准,可以系统性地改善美学质量
  2. 将生成与评分分离,能产生有效的反馈循环

四项评分标准

标准 评估内容 权重
设计质量(Design quality) 设计是否呈现为一个有明确情绪和个性的整体?
原创性(Originality) 是否有自主的设计决策,而非模板布局和库默认值?"未修改的库组件——或 AI 生成的典型痕迹如紫色渐变加白卡片——会被判定失败"
工艺(Craft) 技术执行:排版层次、间距一致性、色彩和谐度、对比度 默认
功能性(Functionality) 独立于美学的可用性 默认

设计质量和原创性被赋予更高权重,因为 Claude 在工艺和功能性方面本就表现不错。

迭代循环

基于 Claude Agent SDK 构建:

  1. 生成者根据用户 prompt 创建 HTML/CSS/JS 前端
  2. 评估者使用 Playwright MCP 导航并与实时页面交互
  3. 评估者对每项标准打分并撰写详细评论
  4. 反馈回传给生成者进入下一轮迭代
  5. 每次生成需 5-15 轮迭代,完整运行可长达四小时

生成者被要求在每次评估后做出战略决策:如果分数趋势向好则精进当前方向,如果方案不奏效则彻底转向一种全新的美学风格。

典型案例

当 prompt 要求创建一个荷兰艺术博物馆网站时,到第九轮迭代模型产出了一个简洁的深色主题着陆页。到第十轮,它推翻了整个方案,"将网站重新构想为一种空间体验:一个用 CSS 透视渲染的 3D 房间,带有格子地板,画作悬挂在墙壁上。"


扩展到全栈编程

三 Agent 架构

规划者制定远大规格,生成者按冲刺交付,评估者像用户一样点击测试。 在前端设计 harness 基础上,构建了一个三 Agent 系统:

Agent 职责 关键设计
规划者(Planner) 将 1-4 句简单 prompt 扩展为完整产品规格 被提示要在范围上有雄心,关注产品上下文而非细节技术;寻找将 AI 功能融入规格的机会
生成者(Generator) 按冲刺逐个实现功能 使用 React + Vite + FastAPI + SQLite(后改 PostgreSQL)技术栈;每个冲刺结束自评后交给 QA;有 git 版本控制
评估者(Evaluator) 使用 Playwright MCP 像用户一样点击应用 测试 UI 功能、API 端点和数据库状态;根据 bug 数量和产品深度、功能性、视觉设计、代码质量标准打分;每项标准有硬性阈值

每个冲刺开始前,生成者和评估者会协商一份冲刺契约(sprint contract):在写代码之前就"完成"标准达成一致。

运行 Harness

测试 prompt:"Create a 2D retro game maker with features including a level editor, sprite editor, entity behaviors, and a playable test mode."

Harness 类型 耗时 费用
单 Agent(Solo) 20 分钟 $9
完整 Harness 6 小时 $200

单 Agent 运行问题

单 Agent Harness 产出的开始画面

单 Agent Harness 的精灵编辑器

尝试游玩但失败——实体不响应输入

单 Agent 产出的问题:浪费空间、工作流僵硬、游戏运行时崩溃(实体不响应输入)。

完整 Harness 结果

规划者将 prompt 扩展为一个包含 16 个功能的规格,分布在十个冲刺中,涵盖精灵动画、行为模板、音效、AI 辅助精灵生成和游戏导出。

完整 Harness 产出的开始画面

完整 Harness 的精灵编辑器——更简洁易用

使用内置 AI 功能生成关卡

AI 辅助关卡设计界面

成功游玩生成的游戏

应用展现出更精致的打磨、一致的视觉风格——最关键的是,游戏模式真正可用。

评估者发现(示例)

冲刺契约标准 评估者发现
矩形填充工具允许点击拖拽填充矩形区域 FAIL — 工具仅在拖拽起止点放置瓦片
用户可以选中并删除已放置的实体生成点 FAIL — 删除处理器同时需要 selectionselectedEntityId,但点击只设置其中一个
用户可以通过 API 重新排序动画帧 FAIL — 路由顺序问题导致 FastAPI 将 'reorder' 匹配为 frame_id 整数参数

让评估者达到这个水平需要大量迭代调优。"开箱即用的 Claude 是一个糟糕的 QA Agent。"它会识别出问题,然后自己说服自己批准通过。


迭代改进 Harness

Harness 中的每个组件都编码了对模型能力局限的假设——而这些假设值得不断压力测试。 核心原则:harness 中的每个组件都编码了一个关于"模型独自做不到什么"的假设,这些假设值得被反复验证。

移除冲刺结构

随着 Opus 4.6 在规划、持续 Agentic 任务和长上下文检索方面的改进,冲刺结构被移除。评估者改为在最终进行一次通过式检查。对于 4.6 能力范围内的简单任务,评估者变成了不必要的开销。但对于能力边缘的任务,它仍然提供实质性提升。

更新后 Harness 的结果

测试 prompt:"Build a fully featured DAW in the browser using the Web Audio API."

Agent 与阶段 耗时 费用
规划者 4.7 分钟 $0.46
构建(第 1 轮) 2 小时 7 分钟 $71.08
QA(第 1 轮) 8.8 分钟 $3.24
构建(第 2 轮) 1 小时 2 分钟 $36.89
QA(第 2 轮) 6.8 分钟 $3.09
构建(第 3 轮) 10.9 分钟 $5.88
QA(第 3 轮) 9.6 分钟 $4.06
总计 3 小时 50 分钟 $124.70

构建者在没有冲刺分解的情况下连贯运行超过两小时。QA Agent 仍然捕获了实际的功能缺口,包括:仅为占位的音频录制、缺失的片段交互、以及用数字代替图形的效果可视化。

最终的 DAW 应用具备可用的编排视图、混音器和走带控制。内置的 AI Agent 能够设置速度/调性、生成旋律、构建鼓轨、调整混音电平和添加效果。


展望

Harness 的设计空间不会随模型进步而收缩,只是持续移动。 关键经验:

  1. 与模型对话:实验、阅读模型的思维轨迹,针对性调优
  2. 分解复杂度:拆解复杂任务,对每个方面应用专门化的 Agent
  3. 跟随模型演进:新模型到来时重新审视 harness——剥离不再需要的组件,为更强能力添加新构件

"我的信念是,有价值的 harness 组合空间不会随模型改进而缩小。相反,它会移动。"


附录

规划者 Agent 生成的示例计划(摘录):

RetroForge - 2D Retro Game Maker

Overview
RetroForge is a web-based creative studio for designing and building 2D retro-style video games. It combines the nostalgic charm of classic 8-bit and 16-bit game aesthetics with modern, intuitive editing toolsenabling anyone from hobbyist creators to indie developers to bring their game ideas to life without writing traditional code.

The platform provides four integrated creative modules: a tile-based Level Editor for designing game worlds, a pixel-art Sprite Editor for crafting visual assets, a visual Entity Behavior system for defining game logic, and an instant Playable Test Mode for real-time gameplay testing. By weaving AI assistance throughout (powered by Claude), RetroForge accelerates the creative processhelping users generate sprites, design levels, and configure behaviors through natural language interaction.

...

Features
1. Project Dashboard & Management
The Project Dashboard is the home base for all creative work in RetroForge. Users need a clear, organized way to manage their game projectscreating new ones, returning to works-in-progress, and understanding what each project contains at a glance.

User Stories: As a user, I want to:

- Create a new game project with a name and description, so that I can begin designing my game
- See all my existing projects displayed as visual cards showing the project name, last modified date, and a thumbnail preview, so that I can quickly find and continue my work
- Open any project to enter the full game editor workspace, so that I can work on my game
- Delete projects I no longer need, with a confirmation dialog to prevent accidents, so that I can keep my workspace organized
- Duplicate an existing project as a starting point for a new game, so that I can reuse my previous work

Project Data Model: Each project contains:

Project metadata (name, description, created/modified timestamps)
Canvas settings (resolution: e.g., 256x224, 320x240, or 160x144)
Tile size configuration (8x8, 16x16, or 32x32 pixels)
Color palette selection
All associated sprites, tilesets, levels, and entity definitions

...