几乎同时Anthropic Labs 让 Claude 用 6 小时独立构建了一个 2D 复古游戏引擎4 小时构建了一个数字音频工作站DAW。在多轮迭代中它还设计出了荷兰艺术博物馆的高质量官网——那种在第 10 轮迭代时突然抛弃常规布局、改用 CSS 3D 透视渲染展厅空间的创造性跳跃。这两个实验的主角不是 GPT-5 也不是 Claude Opus 4.5。主角是一套被称为 Harness 的运行制度。但这里有一个悖论模型能力明明在指数级增长为什么反而更需要缰绳如果马跑得越来越快缰绳不应该越来越松吗答案是大模型的原生缺陷不是能力不足而是组织自己的能力不足。就像一位天才工匠被扔进一个没有时间概念、没有记忆、不能回头的房间。他能做出精美的零件但做不出一架飞机。Harness Engineering 的本质 —— 为什么大模型时代急需它从 Prompt Engineering 到 Harness Engineering 的范式跃迁大模型应用的发展经历了三个阶段阶段核心关注点代表实践局限Prompt Engineering单次输入的魔法咒语Few-shot、CoT、ToT无法处理长周期、多步骤任务Context Engineering如何高效填充上下文窗口RAG、压缩、分层检索只解决 输入什么不解决 如何运转Harness Engineering设计智能体的运行环境与制度体系多 Agent 协作、状态外化、反馈回路需要系统性架构思维Harness缰绳这个词的隐喻极其精准它不是马匹本身模型能力也不是骑手人类意图而是连接二者、传递力量、施加约束、确保方向的整套装备系统。在大模型语境下Harness 是一套包含工具接口、沙箱环境、架构约束、自动化测试、反馈循环及监控仪表盘的完整运行环境与制度体系旨在引导和约束 AI 智能体使其能够自主、可靠地完成复杂长周期任务而无需人类实时干预。大模型的原生缺陷为什么必须需要 Harness没有 Harness 的前端模型即使强如 Opus 4.5在面对 构建一个 claude.ai 克隆 这样的高级指令时也会表现出四种系统性失败模式一次性冲刺One-shotting试图在一个上下文窗口内完成所有工作导致中途耗尽上下文留下半成品和未记录的状态。过早宣布完成Premature Completion看到局部进展就认为任务完成忽略后续功能。上下文焦虑Context Anxiety当接近上下文限制时模型会主动 收尾草率结束尚未完成的工作。这是 Anthropic 发现的一个关键现象——仅靠上下文压缩Compaction无法解决因为压缩会传递模糊指令而模型对上下文边界的 恐惧 会改变其行为模式。自我评估过度自信Overconfidence模型评估自己的产出时倾向于高估质量尤其在主观任务如 UI 设计上。这些缺陷的根源在于大模型的底层机制上下文窗口是有限且离散的Transformer 的注意力机制在超长序列上呈二次方复杂度即使窗口扩展到 200k有效注意力Effective Attention依然集中在局部。模型在窗口末端的推理质量显著下降。状态内置于参数而非显式记忆模型没有真正的长期记忆所有 记忆 都是上下文中的 token。一旦会话结束状态即丢失。自回归生成的不可逆性模型生成 token 的过程是单向的无法像人类一样 先思考再动手容易陷入局部最优。Harness Engineering 正是为了系统性解决这些原生缺陷而生。OpenAI 与 Anthropic 的 Harness 实践业务背景与技术路线对比两篇文章表面上是技术实践我觉得底层是更像是两种工程世界观的碰撞。OpenAI制度工程师OpenAI 的 Codex 团队构建的是产品级 Harness——一套需要持续演进五个月的工业化制度。他们的核心信念是人类掌舵智能体执行。工程师不写代码而是设计环境、意图和反馈回路。随着代码吞吐量增加人类 QA 成为瓶颈因此他们将审核工作 Agent 化形成了所谓的Ralph Wiggum 循环源自《辛普森一家》中那个总是说我什么都没做的角色——讽刺的是人类在这个循环中确实越来越不需要做什么。关键设计代码仓库即记录系统System of Record。所有知识必须版本化、可机械检查。专职 linter 验证文档链接有效性、新鲜度、结构合规性。甚至有一个doc-gardening智能体定期扫描过时文档并发起修复 PR。渐进式披露Progressive Disclosure。AGENTS.md只有约 100 行是地图而非说明书。它指向docs/目录中的深层文档——设计文档、执行计划、产品规范、技术债务追踪器。可观测性即感官延伸。Chrome DevTools MCP 让 Codex 能选择目标、清除控制台、捕获 DOM 快照、触发 UI 路径、截图对比。验证循环是指标的可观测性则是通过日志查询LogQL和指标查询PromQL直接暴露给 Agent。这样前后端都是可观测的Anthropic对抗训练师Anthropic Labs 构建的是项目级 Harness——针对单次 4-6 小时的长周期任务强调对抗性优化。他们的核心信念是每个新 session 都是一位失忆的新工程师靠交接文档恢复状态。关键设计三 Agent 架构Planner Generator Evaluator。受 GAN 启发Generator 和 Evaluator 形成对抗式优化闭环。Planner 将高级目标分解为 JSON 格式的 Feature List。Sprint Contract 机制。Generator 和 Evaluator 在每次编码前先协商完成的定义Definition of Done。Generator 提议构建内容和验证方式Evaluator 审查以确保 Generator 在构建正确的东西。这种先签合同再干活的机制解决了过度乐观问题。Context Reset 而非 Compaction。对于长任务主动结束 session通过 Handoff Artifactclaude-progress.txt、feature-list.json、init.sh启动新 session。Reset 不是放弃记忆而是将记忆外化到更可靠的存储——文件系统。一个关键的差异模型进化如何淘汰 Harness 组件Anthropic 在实验中发现了一个反常识现象Harness 的组件不是越复杂越好而且模型的进化会不断让某些组件失效。Opus 4.5 表现出强烈的 Context Anxiety因此必须依赖 Sprint 分解和 Context Reset。但 Opus 4.6 发布时其官方改进包括更谨慎地规划、更长时间地维持 Agent 任务、在更大代码库中更可靠地运行、更好的代码审查和调试能力。于是 Anthropic 做了一个实验移除 Sprint 结构。结果令人惊讶4.6 可以在没有 Sprint 分解的情况下连续运行超过两小时保持连贯。Evaluator 仍然有价值但只在超出模型原生能力边界的任务上。对于模型已经能可靠完成的任务Evaluator 变成了不必要的开销。这揭示了一个深层原则Harness 中的每个组件都编码了一个关于模型不能做什么的假设。这些假设会随模型进化而失效因此 Harness 必须持续被压力测试和简化。维度OpenAICodex 团队AnthropicLabs 团队业务目标从零构建内部 SaaS 产品百万级代码库长周期自主软件工程前端设计 全栈应用Harness 哲学制度性GovernanceCI、linter、doc-gardening对抗性AdversarialGenerator-Evaluator 博弈状态管理仓库即真相源渐进式披露文件系统外化JSON progress.txt init.sh测试策略Chrome DevTools MCP LogQL/PromQLPlaywright MCP 结构化评分评估机制Agent 自审 交叉审查 人类可选审核独立 Evaluator四维度评分Design/Originality/Craft/Functionality成本特征持续投入追求吞吐量单次高成本$200 vs $9追求质量跃迁共性提炼优秀 Harness 的五大黄金法则尽管路线不同两篇文章在底层设计上高度一致法则一状态必须外化到文件系统OpenAI 将docs/目录作为知识库的唯一真相源Anthropic 将claude-progress.txt、feature-list.json和init.sh作为跨 session 的 交接文档。核心共识上下文窗口不是存储文件系统才是。这类似于解决内存泄漏的思路——不优化内存而是重启进程并从磁盘恢复状态。法则二渐进式披露优于百科全书式灌输OpenAI 的AGENTS.md只有 100 行是 地图 而非 说明书Anthropic 的 Feature List 是 JSON 结构化数据每次只加载当前任务所需信息。两团队都发现给 Agent 一张地图比给一本 1000 页的说明书更有效。过多的指导会挤占任务上下文导致模型进行错误的局部模式匹配。法则三分离 做事 与 评判OpenAI 让 Codex 在提交 PR 前进行自我审查并引入其他 Agent 进行交叉审查Anthropic 明确将 Generator 与 Evaluator 分离并指出让独立的 Evaluator 保持怀疑态度远比让 Generator 自我批评更容易实现far more tractable。 这本质上是在 Harness 层面实现了关注点分离Separation of Concerns。法则四可观测性必须对 Agent 可读OpenAI 将 Chrome DevTools Protocol、日志查询LogQL、指标查询PromQL直接暴露给 CodexAnthropic 让 Evaluator 通过 Playwright MCP 与实时页面交互。两者的共同洞见如果人类需要看截图才能判断 UI 好坏Agent 也需要同样的感知通道。可观测性不是给人类看的仪表盘而是 Agent 的感官延伸。法则五增量推进是长周期任务的唯一可行策略OpenAI 采用 深度优先 的模块化解构Anthropic 强制 每次只做 1 个 feature。两者都拒绝了 大爆炸式 开发因为上下文窗口的离散性决定了复杂任务必须被切分为可在单个窗口内完成的原子单元。2.3 差异分析产品级 Harness vs 项目级 HarnessOpenAI 的 Harness 是为持续演进的产品设计的需要处理 1500 个 PR、维护技术债务、进行文档园艺doc-gardening、支持多人多 Agent协作。其 Harness 强调制度性——CI 验证、 linter、知识库新鲜度检查。Anthropic 的 Harness 是为单次长周期项目设计的6 小时构建游戏引擎、4 小时构建 DAW。其 Harness 强调对抗性——Generator-Evaluator 的迭代循环、上下文重置的干净启动。这种差异决定了 Harness 设计的两个方向产品 Harness 需要治理Governance项目 Harness 需要对抗Adversarial。第三章多 Agent 协作机制深度拆解3.1 Anthropic 的三 Agent 架构Planner-Generator-EvaluatorAnthropic 在前端设计和全栈开发中采用了受 GAN 启发的三 Agent 架构plain复制plain┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Planner │────→│ Generator │←────│ Evaluator │ │ (规划器) │ │ (生成器) │ │ (评估器) │ └─────────────┘ └─────────────┘ └─────────────┘ │ ↑ │ └───────────────────┴───────────────────┘ (迭代循环5-15 轮)Planner将高级目标构建 claude.ai 克隆分解为可执行的 Feature ListJSON 格式确定优先级和依赖关系。Generator每次 session 只处理一个 feature编写代码并进行端到端测试。Evaluator使用 Playwright MCP 与实时页面交互从Design Quality、Originality、Craft、Functionality四个维度进行评分提供详细批评反馈。关键设计细节Evaluator 被专门校准为 skeptical怀疑论者通过 few-shot 示例训练其给出严苛评价。每轮迭代产生渐进式优化的输出单次运行可迭代 5-15 轮持续长达 4 小时。Evaluator 的反馈直接驱动 Generator 的下一轮改进形成对抗式优化闭环。3.2 OpenAI 的 Agent 审查网络Ralph Wiggum 循环OpenAI 的 Harness 更侧重于代码生产的工业化流程plain复制plain人类工程师描述任务 ↓ Codex (Generator) ↓ 打开 Pull Request ↓ ┌─────────────────┐ │ 本地自审 Agent │ │ 云端审查 Agent │ │ 交叉审查 Agent │ └─────────────────┘ ↓ 反馈循环直到通过 ↓ 可选人类审核 ↓ 合并OpenAI 将这个循环称为Ralph Wiggum 循环源自《辛普森一家》。其核心洞见是随着代码吞吐量增加人类 QA 成为瓶颈因此必须将审核工作 Agent 化。最终该团队几乎将所有审核工作调整为 Agent 审 Agent 的模式。3.3 单 Agent 多角色 vs 多 Agent 分离Anthropic 在脚注中澄清了一个重要设计选择其 Initializer Agent 和 Coding Agent实际上是同一个 Agent只是使用了不同的初始 user prompt。系统提示词、工具集和整体 Harness 完全相同。这揭示了一个深层架构决策模式优点缺点适用场景单 Agent 多角色Anthropic 早期实现简单无需角色间通信协议角色混淆评估偏差难以消除任务边界清晰、评估客观的场景多 Agent 分离Anthropic 后期/OpenAI评估更客观可并行可专业化需要定义 Agent 间通信格式和状态传递主观评估、长周期、高质量要求Anthropic 从前端设计主观到全栈开发客观的演进中逐渐从单 Agent 多角色转向多 Agent 分离尤其是在 Evaluator 独立化上。OpenAI 则从一开始就是多 Agent 协作因为产品级代码审查天然需要多视角。实战启示如果你的任务包含主观判断UI 设计、文案质量必须将 Evaluator 独立出来如果任务以客观正确性为主API 实现、算法逻辑单 Agent 多角色即可满足。测试与编码模块的设计细节可观测性即代码OpenAI 的 感官延伸 设计OpenAI 的 Harness 将可观测性从 人类仪表盘 重新定义为 Agent 感官系统Chrome DevTools MCP 接入Codex 可以通过 CDP 选择目标、清除控制台、捕获 DOM 快照、触发 UI 路径、截图对比。验证循环Snapshot BEFORE → Trigger UI → Runtime Events → Snapshot AFTER → Apply Fix → Re-run Validation → Loop Until Clean。可观测性堆栈每个 git worktree 启动独立应用实例 临时可观测性堆栈。Codex 使用LogQL查询日志PromQL查询指标。任务完成后整个环境包括日志和指标被销毁保持干净。这使得提示词如确保服务启动在 800ms 内完成或这四个关键用户旅程中的任何跨度都不得超过两秒变得可执行——Agent 可以直接查询验证。端到端测试即真理Anthropic 的浏览器自动化Anthropic 明确拒绝了curl级别的浅层测试坚持使用Playwright/Puppeteer 级别的浏览器自动化Claude was able to identify and fix bugs that werent obvious from the code alone.其测试流程是 Generator 编码 → 启动应用 → Evaluator 用 Playwright MCP 导航 → 截图/交互验证 → 评分反馈。这种测试不是 检查 API 是否 200 OK而是 检查按钮点击后模态框是否正确动画弹出。关键设计测试必须产生结构化评分JSON而非开放式文本。Anthropic 的前端评估四维度Design Quality / Originality / Craft / Functionality每个都有明确的评分标准和 few-shot 校准示例。反馈回路的形式化两篇文章共同定义了 Harness 中反馈回路的三种形式反馈类型触发时机形式作用即时反馈单轮工具调用后工具返回结果成功/失败/输出修正当前行动会话内反馈单 session 内多轮迭代Evaluator 评分 批评优化当前 feature跨会话反馈新 session 启动时Handoff Artifactprogress.txt / git log / feature list恢复状态确定下一步第五章核心架构图景 —— 一个优秀 Harness 的六层模型基于对 OpenAI 和 Anthropic 实践的拆解我总结出一个优秀 Harness 应具备的六层架构模型。这个模型不是理论设想而是对两家前沿团队实践的抽象与整合。plain┌─────────────────────────────────────────────────────────────┐ │ Layer 6: 意图与治理层 (Intent Governance) │ │ - 人类指令解析、伦理约束、安全策略、成本预算 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 5: 知识库与渐进披露层 (Knowledge Progressive Disclosure)│ │ - AGENTS.md (地图)、docs/ (真相源)、Feature List、Design Docs │ ├─────────────────────────────────────────────────────────────┤ │ Layer 4: 评估与反馈层 (Evaluation Feedback) │ │ - Evaluator Agent、评分标准、测试套件、审查规则 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 3: Agent 执行层 (Agent Runtime) │ │ - Generator Agent、Planner Agent、工具调用循环、上下文管理 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 2: 任务分解与状态管理层 (Task State Management) │ │ - Feature List JSON、Progress Log、Handoff Artifact、Git 状态 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 1: 工具与沙箱层 (Tools Sandbox) │ │ - MCP 工具集、浏览器自动化、可观测性查询、文件系统、代码执行环境 │ └─────────────────────────────────────────────────────────────┘工具与沙箱层 —— Agent 的四肢与环境这是 Harness 的基础设施。OpenAI 提供了 Chrome DevTools MCP、本地脚本、gh CLI、可观测性查询工具Anthropic 提供了 Playwright MCP、代码执行工具、文件读写工具。设计原则工具必须对 Agent 可读如果工具输出是人类可读的日志Agent 也必须能直接读取。避免 人类看 GrafanaAgent 看文本摘要 的双轨制。沙箱必须可丢弃每个 session 应在隔离环境中运行任务完成后销毁确保状态不污染。工具调用必须可追踪所有工具调用记录到结构化日志供后续审计和调试。任务分解与状态管理层 —— 跨 session 的记忆系统这是 Harness 最核心的创新层。状态外化是这个层的核心设计模式。关键数据结构json// feature-list.json (Anthropic 模式) { features: [ { id: auth-login, description: Implement OAuth2 login flow, priority: 1, dependencies: [db-schema], passes: false, test_command: npm run test:auth, notes: Blocked by token refresh bug } ], metadata: { last_updated: 2026-05-21T14:32:00Z, session_count: 7 } }markdown!-- claude-progress.txt (Anthropic 模式) -- ## Session 7 Summary - Completed: User profile page layout - Blocked: Image upload (CORS issue) - Next: Fix CORS then implement upload - Git commit: a1b2c3dbash# init.sh (环境恢复脚本) #!/bin/bash git checkout main git pull npm install npm run db:migrate npm run dev echo App ready at http://localhost:3000设计原则JSON 优于 Markdown结构化数据更不易被模型意外修改。Anthropic 明确警告模型不太可能不适当地更改或覆盖 JSON 文件相比之下 Markdown 文件风险更高。状态必须是自描述的新 session 启动时仅通过读取文件系统就能恢复全部上下文无需外部记忆。Git 是状态的唯一真相源每次 session 结束必须提交提交信息包含进度摘要。Agent 执行层 —— 上下文调度与循环控制这是 Harness 的 大脑调度器。上下文管理三策略Compaction压缩当上下文接近上限时智能总结历史对话保留关键决策和当前状态。Skill 渐进披露不一次性加载所有工具和 MCP而是根据当前任务动态加载相关 Skill如 前端调试 Skill、数据库迁移 Skill。Context Reset上下文重置当模型表现出 上下文焦虑 时主动结束 session通过 Handoff Artifact 启动新 session。这是 Anthropic 发现的关键策略——对于长任务reset 比压缩更有效。评估与反馈层 —— 对抗式质量控制这是 Harness 的 免疫系统。Evaluator 设计要点独立性Evaluator 必须是独立 Agent或至少独立实例与 Generator 不共享上下文。怀疑论校准通过 few-shot 示例训练 Evaluator 给出负面评价避免 好好先生 偏差。多维度评分主观任务如 UI需要结构化评分维度客观任务如 API需要断言式验证。可执行性Evaluator 的反馈必须能驱动 Generator 的具体改进行动而非泛泛而谈。知识库与渐进披露层 —— Agent 的地图系统OpenAI 的AGENTS.mddocs/架构是这个层的最佳实践plainAGENTS.md (≈100 行) ──→ 地图指向深层文档 ├── ARCHITECTURE.md ──→ 域和包分层的顶层地图 ├── docs/ │ ├── design-docs/ ──→ 设计理念、核心信念 │ ├── exec-plans/ ──→ 活跃/已完成计划、技术债务 │ ├── product-specs/ ──→ 产品需求 │ └── references/ ──→ 外部技术参考如 Nixpacks、uv ├── DESIGN.md ──→ 设计系统 ├── FRONTEND.md ──→ 前端规范 ├── QUALITY_SCORE.md ──→ 质量评分与差距追踪 └── SECURITY.md ──→ 安全规范设计原则AGENTS.md 是地图不是百科全书它只回答 我在哪我该去哪找什么文档必须可机械检查专职 linter 验证链接有效性、新鲜度、结构合规性。知识必须版本化所有文档与代码同仓库、同版本控制。意图与治理层 —— 人类的最终掌控这是 Harness 的 方向盘。即使 Agent 自主运行人类工程师仍通过以下机制保持掌控任务描述Task Description高级意图的自然语言表述。约束规则Constraints如 不手动写代码、所有变更必须通过 PR、禁止直接修改生产环境。预算与配额Budget QuotaAPI 调用成本上限、session 数量限制、时间盒Time-boxing。安全策略Security Policy沙箱网络隔离、敏感操作人工确认、凭证代理Credential Proxy。深度洞见 —— Harness Engineering 的底层原理与未来上下文焦虑的神经机制为什么 Reset 比 Compaction 更有效Anthropic 发现的Context Anxiety上下文焦虑是一个极具洞察力的现象。从 Transformer 的注意力机制分析这一现象有其数学必然性Transformer 的注意力计算为Attention(Q,K,V)softmax(dkQKT)V。当序列长度L接近上下文上限时注意力熵增softmax分布在超长序列上趋于平缓每个 token 获得的注意力权重差异减小导致 注意力稀释。位置编码退化即使是 RoPE 或 ALiBi 等外推编码在接近训练长度极限时相对位置感知能力也会下降。元认知压力当模型在系统提示中感知到 剩余 token 不足 时通过工具返回的上下文使用统计会产生一种隐性的优化压力——倾向于提前结束当前推理链将 完成 作为优先目标而非 正确。Compaction 的问题在于它将历史对话压缩为摘要但摘要的信息损失在复杂任务中是不可接受的。更关键的是Compaction 保留了 这是一个长对话 的元信息模型仍然感知到自己在处理一个历史沉重的会话。Context Reset 的优雅之处在于它彻底切断了这种元认知压力。新 session 面对的是一个干净的注意力矩阵没有任何历史负担。模型从 交接文档 中恢复状态而非从压缩的上下文中继承焦虑。这类似于操作系统的进程隔离——不修复内存泄漏直接重启进程。7.2 Harness 作为外部认知支架External Cognitive Scaffolding从认知科学视角看Harness 本质上是将模型的认知过程外化为可操作的符号系统Feature List是模型的外部工作记忆External Working Memory弥补了模型无法维护长期任务栈的缺陷。Progress Log是模型的元认知监控器Metacognitive Monitor使模型能够 思考自己的思考过程。Evaluator是模型的外部批判性思维External Critical Thinking解决了自回归模型无法自我修正的结构性问题。Git是模型的 ** episodic memory**情景记忆提供了时间轴上的状态回溯能力。这揭示了一个深层原理大模型不是缺乏智能而是缺乏 智能的组织结构。Harness Engineering 不是让模型变得更聪明而是为模型设计一个外骨骼——让它能够承载超出其原生认知带宽的复杂任务。7.3 从 Harness 到 Agent Operating SystemOpenAI 和 Anthropic 的实践共同指向一个未来图景Agent Operating SystemAgent 操作系统。当前的 Harness 还是 每个项目一套配置 的手工业模式。未来的 Harness 将演化为操作系统级别的抽象当前 Harness未来 Agent OS项目级 init.sh系统级进程管理fork/exec/session手工编写的 AGENTS.md自动生成的 Agent 能力目录类似 /proc专用 Feature List通用任务调度器类似内核调度器单一 Evaluator多维度质量守护进程类似系统守护进程静态工具集动态 MCP 加载与卸载类似内核模块这个 Agent OS 将具备进程隔离每个 Agent session 是独立进程通过 IPC文件/消息队列通信。虚拟内存文件系统作为 Agent 的 虚拟内存按需分页渐进披露加载上下文。调度器根据任务优先级、依赖关系和上下文压力动态调度 Agent。安全边界沙箱、凭证代理、权限系统构成 Ring 0/1/3 隔离。
Context Engineering 到 Harness Engineering —— 大模型时代软件工程的新范式
发布时间:2026/7/6 4:26:07
几乎同时Anthropic Labs 让 Claude 用 6 小时独立构建了一个 2D 复古游戏引擎4 小时构建了一个数字音频工作站DAW。在多轮迭代中它还设计出了荷兰艺术博物馆的高质量官网——那种在第 10 轮迭代时突然抛弃常规布局、改用 CSS 3D 透视渲染展厅空间的创造性跳跃。这两个实验的主角不是 GPT-5 也不是 Claude Opus 4.5。主角是一套被称为 Harness 的运行制度。但这里有一个悖论模型能力明明在指数级增长为什么反而更需要缰绳如果马跑得越来越快缰绳不应该越来越松吗答案是大模型的原生缺陷不是能力不足而是组织自己的能力不足。就像一位天才工匠被扔进一个没有时间概念、没有记忆、不能回头的房间。他能做出精美的零件但做不出一架飞机。Harness Engineering 的本质 —— 为什么大模型时代急需它从 Prompt Engineering 到 Harness Engineering 的范式跃迁大模型应用的发展经历了三个阶段阶段核心关注点代表实践局限Prompt Engineering单次输入的魔法咒语Few-shot、CoT、ToT无法处理长周期、多步骤任务Context Engineering如何高效填充上下文窗口RAG、压缩、分层检索只解决 输入什么不解决 如何运转Harness Engineering设计智能体的运行环境与制度体系多 Agent 协作、状态外化、反馈回路需要系统性架构思维Harness缰绳这个词的隐喻极其精准它不是马匹本身模型能力也不是骑手人类意图而是连接二者、传递力量、施加约束、确保方向的整套装备系统。在大模型语境下Harness 是一套包含工具接口、沙箱环境、架构约束、自动化测试、反馈循环及监控仪表盘的完整运行环境与制度体系旨在引导和约束 AI 智能体使其能够自主、可靠地完成复杂长周期任务而无需人类实时干预。大模型的原生缺陷为什么必须需要 Harness没有 Harness 的前端模型即使强如 Opus 4.5在面对 构建一个 claude.ai 克隆 这样的高级指令时也会表现出四种系统性失败模式一次性冲刺One-shotting试图在一个上下文窗口内完成所有工作导致中途耗尽上下文留下半成品和未记录的状态。过早宣布完成Premature Completion看到局部进展就认为任务完成忽略后续功能。上下文焦虑Context Anxiety当接近上下文限制时模型会主动 收尾草率结束尚未完成的工作。这是 Anthropic 发现的一个关键现象——仅靠上下文压缩Compaction无法解决因为压缩会传递模糊指令而模型对上下文边界的 恐惧 会改变其行为模式。自我评估过度自信Overconfidence模型评估自己的产出时倾向于高估质量尤其在主观任务如 UI 设计上。这些缺陷的根源在于大模型的底层机制上下文窗口是有限且离散的Transformer 的注意力机制在超长序列上呈二次方复杂度即使窗口扩展到 200k有效注意力Effective Attention依然集中在局部。模型在窗口末端的推理质量显著下降。状态内置于参数而非显式记忆模型没有真正的长期记忆所有 记忆 都是上下文中的 token。一旦会话结束状态即丢失。自回归生成的不可逆性模型生成 token 的过程是单向的无法像人类一样 先思考再动手容易陷入局部最优。Harness Engineering 正是为了系统性解决这些原生缺陷而生。OpenAI 与 Anthropic 的 Harness 实践业务背景与技术路线对比两篇文章表面上是技术实践我觉得底层是更像是两种工程世界观的碰撞。OpenAI制度工程师OpenAI 的 Codex 团队构建的是产品级 Harness——一套需要持续演进五个月的工业化制度。他们的核心信念是人类掌舵智能体执行。工程师不写代码而是设计环境、意图和反馈回路。随着代码吞吐量增加人类 QA 成为瓶颈因此他们将审核工作 Agent 化形成了所谓的Ralph Wiggum 循环源自《辛普森一家》中那个总是说我什么都没做的角色——讽刺的是人类在这个循环中确实越来越不需要做什么。关键设计代码仓库即记录系统System of Record。所有知识必须版本化、可机械检查。专职 linter 验证文档链接有效性、新鲜度、结构合规性。甚至有一个doc-gardening智能体定期扫描过时文档并发起修复 PR。渐进式披露Progressive Disclosure。AGENTS.md只有约 100 行是地图而非说明书。它指向docs/目录中的深层文档——设计文档、执行计划、产品规范、技术债务追踪器。可观测性即感官延伸。Chrome DevTools MCP 让 Codex 能选择目标、清除控制台、捕获 DOM 快照、触发 UI 路径、截图对比。验证循环是指标的可观测性则是通过日志查询LogQL和指标查询PromQL直接暴露给 Agent。这样前后端都是可观测的Anthropic对抗训练师Anthropic Labs 构建的是项目级 Harness——针对单次 4-6 小时的长周期任务强调对抗性优化。他们的核心信念是每个新 session 都是一位失忆的新工程师靠交接文档恢复状态。关键设计三 Agent 架构Planner Generator Evaluator。受 GAN 启发Generator 和 Evaluator 形成对抗式优化闭环。Planner 将高级目标分解为 JSON 格式的 Feature List。Sprint Contract 机制。Generator 和 Evaluator 在每次编码前先协商完成的定义Definition of Done。Generator 提议构建内容和验证方式Evaluator 审查以确保 Generator 在构建正确的东西。这种先签合同再干活的机制解决了过度乐观问题。Context Reset 而非 Compaction。对于长任务主动结束 session通过 Handoff Artifactclaude-progress.txt、feature-list.json、init.sh启动新 session。Reset 不是放弃记忆而是将记忆外化到更可靠的存储——文件系统。一个关键的差异模型进化如何淘汰 Harness 组件Anthropic 在实验中发现了一个反常识现象Harness 的组件不是越复杂越好而且模型的进化会不断让某些组件失效。Opus 4.5 表现出强烈的 Context Anxiety因此必须依赖 Sprint 分解和 Context Reset。但 Opus 4.6 发布时其官方改进包括更谨慎地规划、更长时间地维持 Agent 任务、在更大代码库中更可靠地运行、更好的代码审查和调试能力。于是 Anthropic 做了一个实验移除 Sprint 结构。结果令人惊讶4.6 可以在没有 Sprint 分解的情况下连续运行超过两小时保持连贯。Evaluator 仍然有价值但只在超出模型原生能力边界的任务上。对于模型已经能可靠完成的任务Evaluator 变成了不必要的开销。这揭示了一个深层原则Harness 中的每个组件都编码了一个关于模型不能做什么的假设。这些假设会随模型进化而失效因此 Harness 必须持续被压力测试和简化。维度OpenAICodex 团队AnthropicLabs 团队业务目标从零构建内部 SaaS 产品百万级代码库长周期自主软件工程前端设计 全栈应用Harness 哲学制度性GovernanceCI、linter、doc-gardening对抗性AdversarialGenerator-Evaluator 博弈状态管理仓库即真相源渐进式披露文件系统外化JSON progress.txt init.sh测试策略Chrome DevTools MCP LogQL/PromQLPlaywright MCP 结构化评分评估机制Agent 自审 交叉审查 人类可选审核独立 Evaluator四维度评分Design/Originality/Craft/Functionality成本特征持续投入追求吞吐量单次高成本$200 vs $9追求质量跃迁共性提炼优秀 Harness 的五大黄金法则尽管路线不同两篇文章在底层设计上高度一致法则一状态必须外化到文件系统OpenAI 将docs/目录作为知识库的唯一真相源Anthropic 将claude-progress.txt、feature-list.json和init.sh作为跨 session 的 交接文档。核心共识上下文窗口不是存储文件系统才是。这类似于解决内存泄漏的思路——不优化内存而是重启进程并从磁盘恢复状态。法则二渐进式披露优于百科全书式灌输OpenAI 的AGENTS.md只有 100 行是 地图 而非 说明书Anthropic 的 Feature List 是 JSON 结构化数据每次只加载当前任务所需信息。两团队都发现给 Agent 一张地图比给一本 1000 页的说明书更有效。过多的指导会挤占任务上下文导致模型进行错误的局部模式匹配。法则三分离 做事 与 评判OpenAI 让 Codex 在提交 PR 前进行自我审查并引入其他 Agent 进行交叉审查Anthropic 明确将 Generator 与 Evaluator 分离并指出让独立的 Evaluator 保持怀疑态度远比让 Generator 自我批评更容易实现far more tractable。 这本质上是在 Harness 层面实现了关注点分离Separation of Concerns。法则四可观测性必须对 Agent 可读OpenAI 将 Chrome DevTools Protocol、日志查询LogQL、指标查询PromQL直接暴露给 CodexAnthropic 让 Evaluator 通过 Playwright MCP 与实时页面交互。两者的共同洞见如果人类需要看截图才能判断 UI 好坏Agent 也需要同样的感知通道。可观测性不是给人类看的仪表盘而是 Agent 的感官延伸。法则五增量推进是长周期任务的唯一可行策略OpenAI 采用 深度优先 的模块化解构Anthropic 强制 每次只做 1 个 feature。两者都拒绝了 大爆炸式 开发因为上下文窗口的离散性决定了复杂任务必须被切分为可在单个窗口内完成的原子单元。2.3 差异分析产品级 Harness vs 项目级 HarnessOpenAI 的 Harness 是为持续演进的产品设计的需要处理 1500 个 PR、维护技术债务、进行文档园艺doc-gardening、支持多人多 Agent协作。其 Harness 强调制度性——CI 验证、 linter、知识库新鲜度检查。Anthropic 的 Harness 是为单次长周期项目设计的6 小时构建游戏引擎、4 小时构建 DAW。其 Harness 强调对抗性——Generator-Evaluator 的迭代循环、上下文重置的干净启动。这种差异决定了 Harness 设计的两个方向产品 Harness 需要治理Governance项目 Harness 需要对抗Adversarial。第三章多 Agent 协作机制深度拆解3.1 Anthropic 的三 Agent 架构Planner-Generator-EvaluatorAnthropic 在前端设计和全栈开发中采用了受 GAN 启发的三 Agent 架构plain复制plain┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Planner │────→│ Generator │←────│ Evaluator │ │ (规划器) │ │ (生成器) │ │ (评估器) │ └─────────────┘ └─────────────┘ └─────────────┘ │ ↑ │ └───────────────────┴───────────────────┘ (迭代循环5-15 轮)Planner将高级目标构建 claude.ai 克隆分解为可执行的 Feature ListJSON 格式确定优先级和依赖关系。Generator每次 session 只处理一个 feature编写代码并进行端到端测试。Evaluator使用 Playwright MCP 与实时页面交互从Design Quality、Originality、Craft、Functionality四个维度进行评分提供详细批评反馈。关键设计细节Evaluator 被专门校准为 skeptical怀疑论者通过 few-shot 示例训练其给出严苛评价。每轮迭代产生渐进式优化的输出单次运行可迭代 5-15 轮持续长达 4 小时。Evaluator 的反馈直接驱动 Generator 的下一轮改进形成对抗式优化闭环。3.2 OpenAI 的 Agent 审查网络Ralph Wiggum 循环OpenAI 的 Harness 更侧重于代码生产的工业化流程plain复制plain人类工程师描述任务 ↓ Codex (Generator) ↓ 打开 Pull Request ↓ ┌─────────────────┐ │ 本地自审 Agent │ │ 云端审查 Agent │ │ 交叉审查 Agent │ └─────────────────┘ ↓ 反馈循环直到通过 ↓ 可选人类审核 ↓ 合并OpenAI 将这个循环称为Ralph Wiggum 循环源自《辛普森一家》。其核心洞见是随着代码吞吐量增加人类 QA 成为瓶颈因此必须将审核工作 Agent 化。最终该团队几乎将所有审核工作调整为 Agent 审 Agent 的模式。3.3 单 Agent 多角色 vs 多 Agent 分离Anthropic 在脚注中澄清了一个重要设计选择其 Initializer Agent 和 Coding Agent实际上是同一个 Agent只是使用了不同的初始 user prompt。系统提示词、工具集和整体 Harness 完全相同。这揭示了一个深层架构决策模式优点缺点适用场景单 Agent 多角色Anthropic 早期实现简单无需角色间通信协议角色混淆评估偏差难以消除任务边界清晰、评估客观的场景多 Agent 分离Anthropic 后期/OpenAI评估更客观可并行可专业化需要定义 Agent 间通信格式和状态传递主观评估、长周期、高质量要求Anthropic 从前端设计主观到全栈开发客观的演进中逐渐从单 Agent 多角色转向多 Agent 分离尤其是在 Evaluator 独立化上。OpenAI 则从一开始就是多 Agent 协作因为产品级代码审查天然需要多视角。实战启示如果你的任务包含主观判断UI 设计、文案质量必须将 Evaluator 独立出来如果任务以客观正确性为主API 实现、算法逻辑单 Agent 多角色即可满足。测试与编码模块的设计细节可观测性即代码OpenAI 的 感官延伸 设计OpenAI 的 Harness 将可观测性从 人类仪表盘 重新定义为 Agent 感官系统Chrome DevTools MCP 接入Codex 可以通过 CDP 选择目标、清除控制台、捕获 DOM 快照、触发 UI 路径、截图对比。验证循环Snapshot BEFORE → Trigger UI → Runtime Events → Snapshot AFTER → Apply Fix → Re-run Validation → Loop Until Clean。可观测性堆栈每个 git worktree 启动独立应用实例 临时可观测性堆栈。Codex 使用LogQL查询日志PromQL查询指标。任务完成后整个环境包括日志和指标被销毁保持干净。这使得提示词如确保服务启动在 800ms 内完成或这四个关键用户旅程中的任何跨度都不得超过两秒变得可执行——Agent 可以直接查询验证。端到端测试即真理Anthropic 的浏览器自动化Anthropic 明确拒绝了curl级别的浅层测试坚持使用Playwright/Puppeteer 级别的浏览器自动化Claude was able to identify and fix bugs that werent obvious from the code alone.其测试流程是 Generator 编码 → 启动应用 → Evaluator 用 Playwright MCP 导航 → 截图/交互验证 → 评分反馈。这种测试不是 检查 API 是否 200 OK而是 检查按钮点击后模态框是否正确动画弹出。关键设计测试必须产生结构化评分JSON而非开放式文本。Anthropic 的前端评估四维度Design Quality / Originality / Craft / Functionality每个都有明确的评分标准和 few-shot 校准示例。反馈回路的形式化两篇文章共同定义了 Harness 中反馈回路的三种形式反馈类型触发时机形式作用即时反馈单轮工具调用后工具返回结果成功/失败/输出修正当前行动会话内反馈单 session 内多轮迭代Evaluator 评分 批评优化当前 feature跨会话反馈新 session 启动时Handoff Artifactprogress.txt / git log / feature list恢复状态确定下一步第五章核心架构图景 —— 一个优秀 Harness 的六层模型基于对 OpenAI 和 Anthropic 实践的拆解我总结出一个优秀 Harness 应具备的六层架构模型。这个模型不是理论设想而是对两家前沿团队实践的抽象与整合。plain┌─────────────────────────────────────────────────────────────┐ │ Layer 6: 意图与治理层 (Intent Governance) │ │ - 人类指令解析、伦理约束、安全策略、成本预算 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 5: 知识库与渐进披露层 (Knowledge Progressive Disclosure)│ │ - AGENTS.md (地图)、docs/ (真相源)、Feature List、Design Docs │ ├─────────────────────────────────────────────────────────────┤ │ Layer 4: 评估与反馈层 (Evaluation Feedback) │ │ - Evaluator Agent、评分标准、测试套件、审查规则 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 3: Agent 执行层 (Agent Runtime) │ │ - Generator Agent、Planner Agent、工具调用循环、上下文管理 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 2: 任务分解与状态管理层 (Task State Management) │ │ - Feature List JSON、Progress Log、Handoff Artifact、Git 状态 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 1: 工具与沙箱层 (Tools Sandbox) │ │ - MCP 工具集、浏览器自动化、可观测性查询、文件系统、代码执行环境 │ └─────────────────────────────────────────────────────────────┘工具与沙箱层 —— Agent 的四肢与环境这是 Harness 的基础设施。OpenAI 提供了 Chrome DevTools MCP、本地脚本、gh CLI、可观测性查询工具Anthropic 提供了 Playwright MCP、代码执行工具、文件读写工具。设计原则工具必须对 Agent 可读如果工具输出是人类可读的日志Agent 也必须能直接读取。避免 人类看 GrafanaAgent 看文本摘要 的双轨制。沙箱必须可丢弃每个 session 应在隔离环境中运行任务完成后销毁确保状态不污染。工具调用必须可追踪所有工具调用记录到结构化日志供后续审计和调试。任务分解与状态管理层 —— 跨 session 的记忆系统这是 Harness 最核心的创新层。状态外化是这个层的核心设计模式。关键数据结构json// feature-list.json (Anthropic 模式) { features: [ { id: auth-login, description: Implement OAuth2 login flow, priority: 1, dependencies: [db-schema], passes: false, test_command: npm run test:auth, notes: Blocked by token refresh bug } ], metadata: { last_updated: 2026-05-21T14:32:00Z, session_count: 7 } }markdown!-- claude-progress.txt (Anthropic 模式) -- ## Session 7 Summary - Completed: User profile page layout - Blocked: Image upload (CORS issue) - Next: Fix CORS then implement upload - Git commit: a1b2c3dbash# init.sh (环境恢复脚本) #!/bin/bash git checkout main git pull npm install npm run db:migrate npm run dev echo App ready at http://localhost:3000设计原则JSON 优于 Markdown结构化数据更不易被模型意外修改。Anthropic 明确警告模型不太可能不适当地更改或覆盖 JSON 文件相比之下 Markdown 文件风险更高。状态必须是自描述的新 session 启动时仅通过读取文件系统就能恢复全部上下文无需外部记忆。Git 是状态的唯一真相源每次 session 结束必须提交提交信息包含进度摘要。Agent 执行层 —— 上下文调度与循环控制这是 Harness 的 大脑调度器。上下文管理三策略Compaction压缩当上下文接近上限时智能总结历史对话保留关键决策和当前状态。Skill 渐进披露不一次性加载所有工具和 MCP而是根据当前任务动态加载相关 Skill如 前端调试 Skill、数据库迁移 Skill。Context Reset上下文重置当模型表现出 上下文焦虑 时主动结束 session通过 Handoff Artifact 启动新 session。这是 Anthropic 发现的关键策略——对于长任务reset 比压缩更有效。评估与反馈层 —— 对抗式质量控制这是 Harness 的 免疫系统。Evaluator 设计要点独立性Evaluator 必须是独立 Agent或至少独立实例与 Generator 不共享上下文。怀疑论校准通过 few-shot 示例训练 Evaluator 给出负面评价避免 好好先生 偏差。多维度评分主观任务如 UI需要结构化评分维度客观任务如 API需要断言式验证。可执行性Evaluator 的反馈必须能驱动 Generator 的具体改进行动而非泛泛而谈。知识库与渐进披露层 —— Agent 的地图系统OpenAI 的AGENTS.mddocs/架构是这个层的最佳实践plainAGENTS.md (≈100 行) ──→ 地图指向深层文档 ├── ARCHITECTURE.md ──→ 域和包分层的顶层地图 ├── docs/ │ ├── design-docs/ ──→ 设计理念、核心信念 │ ├── exec-plans/ ──→ 活跃/已完成计划、技术债务 │ ├── product-specs/ ──→ 产品需求 │ └── references/ ──→ 外部技术参考如 Nixpacks、uv ├── DESIGN.md ──→ 设计系统 ├── FRONTEND.md ──→ 前端规范 ├── QUALITY_SCORE.md ──→ 质量评分与差距追踪 └── SECURITY.md ──→ 安全规范设计原则AGENTS.md 是地图不是百科全书它只回答 我在哪我该去哪找什么文档必须可机械检查专职 linter 验证链接有效性、新鲜度、结构合规性。知识必须版本化所有文档与代码同仓库、同版本控制。意图与治理层 —— 人类的最终掌控这是 Harness 的 方向盘。即使 Agent 自主运行人类工程师仍通过以下机制保持掌控任务描述Task Description高级意图的自然语言表述。约束规则Constraints如 不手动写代码、所有变更必须通过 PR、禁止直接修改生产环境。预算与配额Budget QuotaAPI 调用成本上限、session 数量限制、时间盒Time-boxing。安全策略Security Policy沙箱网络隔离、敏感操作人工确认、凭证代理Credential Proxy。深度洞见 —— Harness Engineering 的底层原理与未来上下文焦虑的神经机制为什么 Reset 比 Compaction 更有效Anthropic 发现的Context Anxiety上下文焦虑是一个极具洞察力的现象。从 Transformer 的注意力机制分析这一现象有其数学必然性Transformer 的注意力计算为Attention(Q,K,V)softmax(dkQKT)V。当序列长度L接近上下文上限时注意力熵增softmax分布在超长序列上趋于平缓每个 token 获得的注意力权重差异减小导致 注意力稀释。位置编码退化即使是 RoPE 或 ALiBi 等外推编码在接近训练长度极限时相对位置感知能力也会下降。元认知压力当模型在系统提示中感知到 剩余 token 不足 时通过工具返回的上下文使用统计会产生一种隐性的优化压力——倾向于提前结束当前推理链将 完成 作为优先目标而非 正确。Compaction 的问题在于它将历史对话压缩为摘要但摘要的信息损失在复杂任务中是不可接受的。更关键的是Compaction 保留了 这是一个长对话 的元信息模型仍然感知到自己在处理一个历史沉重的会话。Context Reset 的优雅之处在于它彻底切断了这种元认知压力。新 session 面对的是一个干净的注意力矩阵没有任何历史负担。模型从 交接文档 中恢复状态而非从压缩的上下文中继承焦虑。这类似于操作系统的进程隔离——不修复内存泄漏直接重启进程。7.2 Harness 作为外部认知支架External Cognitive Scaffolding从认知科学视角看Harness 本质上是将模型的认知过程外化为可操作的符号系统Feature List是模型的外部工作记忆External Working Memory弥补了模型无法维护长期任务栈的缺陷。Progress Log是模型的元认知监控器Metacognitive Monitor使模型能够 思考自己的思考过程。Evaluator是模型的外部批判性思维External Critical Thinking解决了自回归模型无法自我修正的结构性问题。Git是模型的 ** episodic memory**情景记忆提供了时间轴上的状态回溯能力。这揭示了一个深层原理大模型不是缺乏智能而是缺乏 智能的组织结构。Harness Engineering 不是让模型变得更聪明而是为模型设计一个外骨骼——让它能够承载超出其原生认知带宽的复杂任务。7.3 从 Harness 到 Agent Operating SystemOpenAI 和 Anthropic 的实践共同指向一个未来图景Agent Operating SystemAgent 操作系统。当前的 Harness 还是 每个项目一套配置 的手工业模式。未来的 Harness 将演化为操作系统级别的抽象当前 Harness未来 Agent OS项目级 init.sh系统级进程管理fork/exec/session手工编写的 AGENTS.md自动生成的 Agent 能力目录类似 /proc专用 Feature List通用任务调度器类似内核调度器单一 Evaluator多维度质量守护进程类似系统守护进程静态工具集动态 MCP 加载与卸载类似内核模块这个 Agent OS 将具备进程隔离每个 Agent session 是独立进程通过 IPC文件/消息队列通信。虚拟内存文件系统作为 Agent 的 虚拟内存按需分页渐进披露加载上下文。调度器根据任务优先级、依赖关系和上下文压力动态调度 Agent。安全边界沙箱、凭证代理、权限系统构成 Ring 0/1/3 隔离。