Harness Engineering 综述

2026-03-16

一、引言

2022年以来,以ChatGPT为代表的大语言模型(Large Language Model, LLM)重塑了软件行业的生产方式。然而,仅仅”问AI问题”已经不够——越来越多的团队开始让AI Agent自主完成代码编写、测试、提交乃至部署的全流程任务。这带来了一个根本性问题:如何确保一个能够自主执行代码、操作文件系统乃至控制生产服务器的Agent,在数百万行代码规模下依然可靠、可控、可维护

传统的软件工程答案是:更好的代码审查、更严格的测试。但当代码的主要生产者变成AI Agent时,这套答案已经不够用了。2026年初,OpenAI、Anthropic与LangChain相继发表文章,系统阐述了一个新范式:Harness Engineering(Agent工程化,直译”驾驭工程”)

AI 模型 ("马") 强大但 方向不定 Harness(驾驭系统) 上下文工程 · 架构约束 验证循环 · 熵管理 观测 · 反馈 · 中间件 工具调用 · 护栏 Harness 工程师 ("骑手") 架构设计 · 方向把控 不再亲自写代码
图:Harness Engineering 的核心隐喻——AI 模型是"马",Harness 是驾驭系统,工程师是掌握方向的"骑手"

Harness Engineering 的核心洞察是:限制才能解放。当你为 Agent 构建明确的上下文、边界和验证机制时,Agent 反而能更可靠、更高效地工作——就像给野马套上马具并非束缚,而是让其力量有了用武之地。

这是一个极新的领域:核心定义论文发表于2026年1月,但已有 OpenAI、Stripe 等公司在生产环境中验证了其有效性。本文旨在系统梳理 Harness Engineering 的核心概念、技术体系与工程实践,为学习和研究这一新范式提供参考。


二、Harness Engineering 基本概述

1. 什么是 Harness Engineering?

Harness Engineering(Agent工程化) 是指围绕 AI 模型/Agent 构建基础设施、约束体系和反馈循环,使 Agent 能够在生产规模下可靠地完成代码编写、测试和部署等软件工程任务的工程学科。

提示工程(Prompt Engineering)关注”如何问出好答案”不同,Harness Engineering 关注的是如何构建让 Agent 持续稳定工作的完整系统。与上下文工程(Context Engineering)关注”给 Agent 喂什么信息”不同,Harness Engineering 是更上位的概念,涵盖环境、约束、反馈和生命周期管理的全貌。

flowchart LR
    PE["提示工程\nPrompt Engineering\n优化单次输入"] -->|进化| CE["上下文工程\nContext Engineering\n优化信息输入"]
    CE -->|进化| HE["Harness Engineering\n系统级工程\n约束·验证·生命周期"]
    style PE fill:#fef3c7,stroke:#f59e0b
    style CE fill:#dbeafe,stroke:#3b82f6
    style HE fill:#ede9fe,stroke:#7c3aed

三者的区别可以用一个比喻来理解:如果 AI 模型是一名新入职的程序员,提示工程是给他布置一个任务,上下文工程是给他提供项目文档,而 Harness Engineering 则是设计整个工作环境——包括 IDE 配置、代码规范、CI/CD 流水线、代码审查流程和团队协作规则。

2. 核心三大支柱

Harness Engineering 的实践体系围绕三个核心支柱构建:

Harness Engineering 三大支柱 ① 上下文工程 Context Engineering • 架构文档内嵌代码库 • AGENTS.md / CLAUDE.md • 动态注入观测数据 • API 契约 / 风格指南 • 仓库是唯一真相源 让 Agent 知道"应该做什么" ② 架构约束 Architectural Constraints • 确定性 Linter 规则 • 依赖分层强制执行 • LLM 代码审计器 • 结构化测试 / 边界 • Pre-commit Hooks 让 Agent 知道"不能做什么" ③ 熵管理 Entropy Management • 定期文档一致性检查 • 约束违规自动检测 • 循环依赖清理 • 定期"垃圾回收" Agent • 模式一致性巡检 让代码库"不腐烂"
图:Harness Engineering 三大支柱——上下文工程、架构约束与熵管理

3. 主要挑战

Agent 的”第一个答案偏见”:Agent 天然倾向于接受其生成的第一个解决方案,缺乏自我验证的动力。没有外部 Harness 施加压力,Agent 很少会主动运行测试或质疑自己的输出。

代码库熵增:Agent 快速生成大量代码,但如果没有约束机制,代码库将迅速积累技术债——文档过时、模块边界模糊、依赖关系混乱。

上下文缺口(Context Gap):Agent 不了解当前项目的架构决策、编码规范和隐性知识。这些知识通常散落在工程师脑中、Slack 消息里和 Google 文档中,Agent 无法访问。

模型升级的脆弱性:为特定模型版本精调的 Harness 在模型升级后可能失效,需要持续维护和重新评估。

静态设计的陷阱:过度工程化的 Harness 会在模型能力提升后成为阻碍——当模型已经能够自行处理某类问题时,原有的强制约束反而降低了效率。

4. 研究发展时间线

flowchart LR
    subgraph G2022 ["2022 基础奠定"]
        A["ChatGPT 发布\n对话式 AI 普及"] --> B["GitHub Copilot\n代码补全普及"]
    end
    subgraph G2023 ["2023 Agent 探索"]
        C["AutoGPT\n自主 Agent 概念"] --> D["LangChain / LlamaIndex\nAgent 框架兴起"]
    end
    subgraph G2024 ["2024 工程化萌芽"]
        E["提示工程系统化\nDSPy / Guidance"] --> F["Context Engineering\n上下文管理成熟"]
    end
    subgraph G2025 ["2025 规模化尝试"]
        G["Codex / Claude Code\n生产级 Coding Agent"] --> H["Stripe Minions\n千级 PR/周 实践"]
    end
    subgraph G2026 ["2026 范式确立"]
        I["OpenAI 发布\nHarness Engineering 文章"] --> J["LangChain 验证\n52.8%→66.5% 突破"]
        J --> K["Harness Engineering\n成为行业新范式"]
    end
    B --> C
    D --> E
    F --> G
    H --> I

5. 关键技术方向

Harness Engineering 的技术体系可从四个维度理解:

  • 输入侧:上下文工程,决定 Agent 看到什么信息
  • 执行侧:中间件/Hooks,控制 Agent 如何行动
  • 输出侧:验证循环,确保 Agent 的结果是正确的
  • 维护侧:熵管理,保持代码库长期健康

6. 未来研究方向

  • 跨模型 Harness 泛化:当前大多数 Harness 针对特定模型(Codex、Claude、Gemini)调优,构建模型无关的通用 Harness 是重要方向
  • 自适应 Harness:Harness 能够根据 Agent 的行为模式自动调整约束强度
  • 强化学习驱动的 Harness:从 Agent 的执行 trace 中自动挖掘改进机会(RLM,Reinforcement Learning from Model traces)
  • 多 Agent 协作的 Harness:协调多个专业化 Agent 的 Harness 架构

三、核心技术体系

1. 系统提示工程(System Prompt Engineering)

系统提示(System Prompt) 是 Harness 最基础的控制手段。高质量的系统提示不仅告诉 Agent “做什么”,更重要的是指定如何验证自己的工作

flowchart TD
    SP["系统提示 System Prompt"]
    SP --> T1["任务定义\n明确目标与范围"]
    SP --> T2["验证规范\n必须运行哪些测试"]
    SP --> T3["最佳实践\n编码规范与模式"]
    SP --> T4["禁止行为\n不允许做什么"]
    SP --> T5["时间预算\n任务截止提醒机制"]
    style SP fill:#ede9fe,stroke:#7c3aed,font-weight:bold

关键原则

  • 强调验证:提示中应明确要求 Agent 在完成后运行测试,不能仅靠 Agent 的”自我感觉”
  • 具体化禁止项:不是”写好代码”,而是”不能修改 config/ 目录下的文件”
  • 情境化指令:根据任务类型(新功能 vs Bug 修复 vs 重构)使用不同的提示模板

2. 上下文工程(Context Engineering)

上下文工程负责在正确的时间将正确的信息注入 Agent 的上下文窗口。关键实践包括:

上下文工程:信息来源与注入策略 Agent 上下文窗口 AGENTS.md / CLAUDE.md 架构决策 · 规范 · 禁止项 目录结构映射 文件树 · 模块关系 动态观测数据 日志 · CI 状态 · 指标 API 契约文档 接口规范 · 类型定义 测试标准 & 边缘案例 验收标准 · 测试模板 代码库历史 & 示例 类似实现 · 代码模式
图:上下文工程的多维信息来源与注入策略

关键原则仓库是唯一真相源(The repository must be the single source of truth)。所有架构决策、规范和隐性知识都必须以机器可读的形式存储在代码库中,而不是散落在 Google Docs、Slack 消息或工程师脑中。

AGENTS.md / CLAUDE.md 是实现这一原则的核心文件,包含:

  • 项目架构概述与模块职责
  • 代码风格和命名规范
  • 禁止的模式和反模式
  • 测试要求和验收标准
  • 常用命令和环境配置

3. 构建-验证循环(Build-Verify Loop)

这是 Harness Engineering 中最重要的执行模式,将 Agent 的工作分为四个阶段:

flowchart LR
    P["① 规划 & 探索\nPlanning & Discovery\n理解任务要求\n确定验证方法"] --> B["② 构建\nBuild\n实现解决方案\n编写测试"]
    B --> V["③ 验证\nVerify\n运行测试\n核对规范"]
    V --> F["④ 修复\nFix\n解决发现的问题\n重新验证"]
    F -->|"问题未解决"| V
    V -->|"全部通过"| Done["✓ 完成"]
    style P fill:#dbeafe,stroke:#3b82f6
    style B fill:#dcfce7,stroke:#16a34a
    style V fill:#fef3c7,stroke:#f59e0b
    style F fill:#fce7f3,stroke:#db2777
    style Done fill:#f0fdf4,stroke:#4ade80

关键洞察:Agent 天然倾向于”完成即交付”,缺乏回头验证的动力。Harness 必须主动施压(aggressive prompting),强制 Agent 在认为完成后继续执行测试,而不是立即宣告任务完成。

LangChain 的实验数据显示:仅通过在 Harness 中加入更激进的验证提示,deepagents-cli 在 Terminal Bench 2.0 上的得分从 52.8% 提升至 66.5%(提升 13.7 个百分点),排名从前 30 跃升至前 5,而底层模型没有任何改动。

4. 中间件与 Hooks(Middleware & Hooks)

中间件是介于 Agent 和工具调用之间的拦截层,能够:

Harness 中间件架构 Agent 推理 & 决策 中间件 / Hooks 层 循环检测 N次重复后强制重考 上下文注入 完成前注入验证提醒 权限控制 文件/命令白名单 验证检查点 关键步骤人工确认 工具 / 环境 代码执行 / 文件系统 拦截 放行
图:Harness 中间件架构——拦截 Agent 的工具调用并施加控制逻辑

循环检测(Loop Detection):追踪 Agent 对相同文件的重复编辑次数,当超过阈值(如 3 次)时,注入提示建议 Agent 重新思考策略,而不是继续无效的循环修改。

上下文提醒注入:在 Agent 即将提交完成信号前,自动注入”请运行测试确认你的实现正确”的提醒,对抗 Agent 的”完成偏见”。

时间预算感知:在任务进行到一定时间后注入提醒,帮助 Agent 合理分配剩余计算预算。

5. 推理预算策略(Reasoning Budget)

不同阶段的任务对推理深度的要求不同,”推理三明治”(Reasoning Sandwich)模式:

flowchart LR
    R1["高推理预算\n规划 & 探索\n深度分析问题\n识别边界条件"] --> R2["中等推理预算\n实现阶段\n按计划执行\n写代码 & 测试"]
    R2 --> R3["高推理预算\n最终验证\n批判性检查\n发现遗漏问题"]
    style R1 fill:#fce7f3,stroke:#db2777
    style R2 fill:#dbeafe,stroke:#3b82f6
    style R3 fill:#fce7f3,stroke:#db2777

这一策略既保证了关键阶段的推理质量,又避免了在简单执行阶段浪费计算资源。

6. 架构约束体系

架构约束将代码质量规则从”建议”升级为”强制执行”:

依赖分层规则(以典型 Web 应用为例):

Types → Config → Repository → Service → Runtime → UI

每一层只能依赖其下方的层,不得跨层调用。Harness 通过自动化 Linter 在 CI/CD 中强制检查这一约束,违规的 Agent 生成代码将无法通过 Pull Request 审查。

核心特点

  • 确定性 Linter:针对模式匹配的规则,零误报,快速执行
  • LLM 审计器:用另一个 LLM 审查 Agent 生成的代码,捕捉语义层面的违规(如”这个函数做了太多事情”)
  • 结构化测试:测试模块边界是否被破坏,而不仅是功能是否正确

关键悖论:约束解放创造力。限制 Agent 的解决方案空间,减少了 Agent 在死胡同上浪费的 token,反而提升了整体产出质量和速度。

7. 熵管理(Entropy Management)

代码库熵增是 AI 辅助编程时代的独特挑战——Agent 快速生成大量代码,文档、注释和架构图往往无法同步更新,代码库随时间”腐烂”。

熵管理的解决方案是定期巡检 Agent(Garbage Collection Agents):

flowchart TD
    S["调度器\n定期触发(如每周)"] --> A1["文档同步 Agent\n检查注释/文档\n与代码是否一致"]
    S --> A2["约束审计 Agent\n扫描架构约束\n违规情况"]
    S --> A3["依赖清理 Agent\n检测循环依赖\n和废弃模块"]
    A1 --> R["统一报告\n& 自动修复 PR"]
    A2 --> R
    A3 --> R
    R --> H["人工审查\n合并或调整"]
    style S fill:#f1f5f9,stroke:#64748b
    style R fill:#dbeafe,stroke:#3b82f6
    style H fill:#dcfce7,stroke:#16a34a

四、Trace 分析与迭代优化

1. Trace 作为改进燃料

Harness Engineering 的改进方法论类似于机器学习中的梯度提升(Boosting):持续分析失败案例,针对性地加固薄弱环节。

自动化 Trace 分析流程

  1. Agent 完成任务后,记录完整执行轨迹(Trace)
  2. 专门的”Trace 分析 Agent”批量审查 Trace,识别模式:
    • 推理错误(Agent 误解了任务)
    • 指令不遵循(Agent 忽略了系统提示中的约束)
    • 验证缺失(Agent 没有运行足够的测试)
    • 时间管理失当(Agent 在次要任务上耗时过多)
  3. 将识别出的问题映射到 Harness 的改进点(系统提示、中间件逻辑、文档)
  4. 实施改进,重新评估

2. 可观测性设计

高质量的 Harness 需要完善的可观测性基础设施,使工程师能够理解 Agent 的行为:

观测维度 具体指标 用途
任务成功率 通过/失败/超时 衡量整体 Harness 效果
推理轨迹 每步决策过程 诊断失败原因
工具调用分布 各工具调用频次 优化工具设计
Token 消耗 各阶段 token 用量 成本优化
循环次数 Agent 重试次数 检测困难任务类型
验证覆盖率 Agent 实际运行的测试 评估验证质量

五、工具与框架生态

1. 主流 Harness 工具

不同的 AI 编程工具对 Harness Engineering 的支持程度不同:

工具 Harness 机制 配置文件
Claude Code Hooks 系统、CLAUDE.md CLAUDE.md.claude/hooks/
OpenAI Codex 内置架构约束系统 AGENTS.md
Cursor Rules 系统 .cursorrules
LangGraph 中间件组合 代码定义
GitHub Copilot 工作区指令 .github/copilot-instructions.md

2. 分层实施路线图

根据团队规模和需求,Harness Engineering 可以分三个层次逐步实施:

flowchart TD
    L1["Level 1:个人开发者\n1-2 小时搭建\n─────────────\n• CLAUDE.md / .cursorrules\n• Pre-commit hooks\n• 基础测试套件\n• 一致命名规范"]
    L2["Level 2:小型团队\n1-2 天搭建\n─────────────\n• AGENTS.md 共享规范\n• CI 强制架构约束\n• 共享提示模板\n• 文档即代码验证\n• Agent 专属代码审查清单"]
    L3["Level 3:生产组织\n1-2 周搭建\n─────────────\n• 自定义中间件系统\n• 观测数据集成\n• 定期熵管理 Agent\n• Harness 版本管理\n• A/B 测试框架\n• 性能监控与告警\n• 升级决策流程"]
    L1 -->|"规模扩大"| L2
    L2 -->|"生产需要"| L3
    style L1 fill:#dbeafe,stroke:#3b82f6
    style L2 fill:#dcfce7,stroke:#16a34a
    style L3 fill:#fce7f3,stroke:#db2777

六、实践案例与评测基准

1. OpenAI 内部实践

背景:OpenAI 工程团队使用 Harness Engineering 构建内部系统。

结果

  • 5 个月内生产了超过 100 万行生产代码
  • 零行代码由工程师手动编写
  • 完成速度约为传统方式的 1/10

关键 Harness 设计

  1. 迭代改进循环:当 Agent 遭遇困难时,工程师不是直接修复代码,而是识别 Agent 失败的原因——缺少工具?缺少护栏?文档不足?——然后将解决方案反馈回代码库,由 AI 自己实现修复。

  2. 代码库即 Harness:技术规范、API 合同、风格指南都作为机器可读文档存储在代码库中,而非外部 Wiki 或文档系统。

  3. 约束换可靠性:牺牲”生成任何代码”的灵活性,换取”生成可维护代码”的可靠性。

已知局限:OpenAI 的 Harness 实现侧重内部代码质量和可维护性,对功能正确性的外部验证相对较弱,即缺乏明确的机制来验证代码是否真正满足用户需求。

2. LangChain deepagents-cli 实验

背景:LangChain 团队为 deepagents-cli 开发了 Harness,并在 Terminal Bench 2.0 基准上评估效果。

Terminal Bench 2.0:评估 AI 编程 Agent 完成实际软件工程任务的能力,包括代码编写、调试、测试和部署。

改进过程

改进项目 Harness 修改 效果
环境探索 任务开始时自动注入目录结构和可用工具 减少”找不到文件”类错误
验证强化 系统提示中加入”激进验证”指令 Agent 更主动地运行测试
循环检测 中间件追踪重复编辑,触发重考提示 减少无效循环
推理三明治 规划和验证阶段分配高推理预算 提升复杂任务成功率

最终结果:得分从 52.8%66.5%(+13.7 个百分点),排名从前 30 提升到前 5,底层模型未作任何改动

3. Stripe Minions

背景:Stripe 内部部署了名为”Minions”的 Agent 系统,专注于代码库维护任务。

结果:每周自动合并超过 1,000 个 Pull Request,主要处理:

  • 技术债清理
  • 依赖更新
  • 代码风格修正
  • 文档更新

Harness 特点:高度结构化的任务分配和严格的代码审查检查清单,确保 Agent 生成的 PR 符合 Stripe 的代码质量标准。


七、工程师角色的范式转变

Harness Engineering 不仅是一种工具,更是对软件工程师角色的重新定义:

工程师角色转变:传统 vs. Harness Engineering 时代 传统软件工程师 Harness 工程师 编码 架构 文档 测试 评审 主要工作(直接写代码) 次要工作(偶尔做架构设计) 事后补充(常被忽视) 手动编写测试用例 审查人工编写的代码 从不亲自写(由 Agent 负责) 主要工作(设计可强制执行的边界) 关键基础设施(Agent 的真相源) 设计测试策略(Agent 执行) 审查 Agent 的 Harness 设计
图:Harness Engineering 时代工程师职责的范式转变

Harness 工程师的核心技能

  1. 系统思维:理解上下文、约束、文档与反馈循环之间的相互作用
  2. 架构设计:设计可强制执行且能提高生产力的边界
  3. 规范写作:精确表达意图,使 Agent 能够正确理解并执行
  4. 可观测性:设计能够揭示 Agent 行为模式的监控系统
  5. 迭代速度:快速测试、评估和改进 Harness 配置

八、常见陷阱与最佳实践

1. 过度工程化(Over-Engineering)

问题:当 Harness 包含大量复杂的控制流逻辑时,随着模型能力的提升,这些逻辑会逐渐变成阻碍。

最佳实践:设计“可拆除”(Rippable)的系统。每个 Harness 组件都应该有明确的拆除路径——当模型能力提升到不再需要某个护栏时,能够干净地移除,而不影响其他部分。

2. 静态 Harness 设计

问题:Harness 是为特定模型版本优化的,当模型更新后,Harness 失效甚至起反作用。

最佳实践:将模型更新视为 Harness 的评估触发点。每次重大模型发布后,重新运行基准评估,识别哪些约束仍然必要,哪些可以放宽。

3. 忽视文档基础设施

问题:文档仍然存放在 Notion、Confluence 或工程师脑中,Agent 无法访问。

最佳实践:所有 Harness 相关文档必须以纯文本/Markdown 形式存储在代码库中,与代码一起版本控制,与代码一起更新。

4. 缺乏反馈循环

问题:Agent 完成任务后,没有机制收集成功率数据和失败原因,Harness 无法持续改进。

最佳实践:从第一天起就建立可观测性基础设施,记录每个 Agent 任务的执行轨迹、成功/失败状态和关键指标。

5. 人工知识孤岛

问题:关键的架构决策以口头形式传递,新工程师(和 Agent)需要长时间”入职”才能了解。

最佳实践:实行”文档驱动架构”——任何没有写入 AGENTS.md 的架构决策,都不算真正做出决策。


九、总结

Harness Engineering 代表了 AI 辅助软件工程的成熟:从”让 AI 尝试”到”让 AI 可靠地工作”。其核心洞察——通过上下文工程、架构约束与验证循环构建围绕 AI 的系统——已经在 OpenAI(百万行零手写代码)、LangChain(+13.7% 基准提升)和 Stripe(千级周 PR)的生产实践中得到验证。

这一范式改变的不仅是工具,更是工程师的角色定位:从代码的生产者转变为 Agent 环境的架构师。未来的顶级工程师将以精心设计的 Harness 配置为荣,而不是以代码行数为傲。

Harness Engineering 目前仍处于早期阶段,关键开放问题包括:

  • 如何构建跨模型通用的 Harness 标准?
  • 如何在自动化约束Agent 创造力之间找到最优平衡?
  • 自适应 Harness——能够根据 Agent 行为自动调整的系统——是否可行?

这些问题的答案,将定义未来数年软件工程的面貌。


参考资料

  • OpenAI. Harness Engineering. 2026.
  • Fowler, M. Harness Engineering. martinfowler.com, 2026.
  • LangChain Blog. Improving Deep Agents with Harness Engineering. 2026.
  • NxCode. Harness Engineering: A Complete Guide for AI Agent Codex 2026. 2026.
📝 报告此页错误