云计算百科
云计算领域专业知识百科平台

Harness Engineering 驾驭工程:让 AI 能写百万行代码,工程师该做什么?

2026 年初,AI 工程圈被一个词刷屏了——Harness Engineering。它不是又一个换皮概念,而是一场正在发生的范式革命。本文将结合 OpenAI、Anthropic、HashiCorp 等一线团队的实践,带你一次性搞懂:Harness 工程到底是什么、它和 Prompt/Context 工程是什么关系、以及为什么说"瓶颈不在模型智能,而在基础设施"。


目录

    • 一个颠覆认知的事实
    • 什么是 Harness Engineering?
    • AI 工程范式的三次进化
    • Agent 常见的四种翻车姿势
    • Harness Engineering 的四大支柱
      • 支柱一:上下文架构(Context Architecture)
      • 支柱二:Agent 专业化(Agent Specialization)
      • 支柱三:持久化记忆(Persistent Memory)
      • 支柱四:结构化执行(Structured Execution)
    • 四大护栏:OpenAI 的百万行代码实践
      • 护栏一:上下文工程——AGENTS.md 活文档
      • 护栏二:架构约束——用 Linter 做缰绳
      • 护栏三:反馈循环——智能体审智能体
      • 护栏四:熵管理——"垃圾回收"
    • 工程师角色的转变:从写代码到设计环境
    • 六大行业共识
    • 还有哪些未解难题?
    • 写在最后

一个颠覆认知的事实

先看两组数据:

OpenAI 的百万行代码实验:3 名工程师,5 个月,产出约 100 万行代码,手写代码 0 行,合并 PR 约 1,500 个,人均日提 3.5 个 PR——效率提升约 10 倍。

LangChain 的 Harness 优化实验:底层模型一个参数都没动,仅仅优化了外部驾驭环境(文档结构、验证回路、追踪系统),编码 Agent 在 Terminal Bench 2.0 的得分从 52.8% 飙升至 66.5%,全球排名从第 30 位跃升至第 5 位。

更有说服力的是 Can.ac 的实验:仅改变 Harness 的工具格式(编辑接口),就在 16 个模型上显著提升了编码基准分数。效果最显著的 Grok Code Fast 1 从 6.7% 跃升至 68.3%——没有修改任何模型权重。

五个独立团队得出了同一个结论:真正卡住 AI Agent 的不是写代码的能力,而是围绕它的结构、工具和反馈机制跟不上。瓶颈在基础设施,不在模型智能。

这就是 Harness Engineering 要解决的问题。


什么是 Harness Engineering?

Harness Engineering(驾驭工程) 是围绕 AI 智能体设计和构建约束机制、反馈回路、工作流控制和持续改进循环的系统工程实践。它的核心哲学可以浓缩为八个字:人类掌舵,智能体执行(Human Steer, Agent Execute)。

“Harness"一词来自马具——缰绳、马鞍、嚼子——这是一套引导强大但不可预测的动物的完整装备。驾驭工程不是去削弱 AI 的能力,而是为它打造一套"黄金缰绳”,让它跑得又快又稳。

这个概念由 HashiCorp 联合创始人 Mitchell Hashimoto 在 2026 年 2 月 5 日首次明确提出。他在博客中写道:

“Harness engineering is the idea that anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent will not make that mistake again in the future.”

这句话的潜台词是:Agent 的每一次失败,都是环境设计不完善的信号。 正确的回应不是换一个更强的模型,而是重新设计它运行的环境。

六天后,OpenAI 在百万行代码实验报告中正式采用这一术语。随后 Martin Fowler 撰文深度分析,Ethan Mollick 以此重组了他的 AI 指南框架。一个月内,Harness Engineering 成为开发者社区的高频词。


AI 工程范式的三次进化

要理解 Harness Engineering 为何重要,需要先看清我们是怎么一步步走到这里的。

范式核心问题优化对象交互模式
提示词工程 怎么把话说清楚 Prompt 的措辞、格式、示例 一问一答
上下文工程 怎么给 AI 喂信息 文档、代码片段、历史对话 信息注入 → 生成
驾驭工程 怎么让 Agent 可靠工作 约束、反馈回路、控制系统 人类掌舵,Agent 执行

一个好记的类比:

  • Prompt Engineering —— 对马喊话的技巧
  • Context Engineering —— 给马看的地图
  • Harness Engineering —— 给马造一条高速公路,配上护栏、限速牌和加油站

Phil Schmid 的比喻更技术化:模型是 CPU,Harness 是操作系统——CPU 再强,OS 拉胯也白搭。mtrajan 的区分则更直接:Context Engineering 管的是"给 Agent 看什么",Harness Engineering 管的是"系统怎么防崩、怎么量化、怎么修"。

Harness 不优化模型本身,而是优化模型运行的环境。它不替代 SDK、脚手架或 Agent 框架,而是位于它们之上的驾驭层——解决持久化、确定性重放、成本控制、可观测性、错误恢复这些框架覆盖不到的问题。

AI 工程范式的三次进化:从提示词到驾驭


Agent 常见的四种翻车姿势

Anthropic 工程师在长时间运行 Agent 的过程中,总结了四种典型的失败模式,正是 Harness Engineering 要解决的核心痛点:

失败模式 1:试图一步到位(One-shotting)

Agent 倾向于在一个会话里把所有功能都做完。结果是上下文窗口耗尽,留下一堆没有文档的半成品代码,下一个会话启动时只能花大量时间猜测之前发生了什么。

失败模式 2:过早宣布胜利

在项目后期,当部分功能已经完成后,Agent 会环顾四周,看到已有进展就直接宣布任务完成——即使还有大量功能未实现。

失败模式 3:过早标记功能完成

在没有明确提示的情况下,Agent 写完代码就标记为"完成",却没有做端到端测试。单元测试或 curl 命令通过了不代表功能真正可用。

失败模式 4:环境启动困难

每次新会话启动时,Agent 需要花费大量 token 弄清楚如何运行应用、如何启动开发服务器,而不是把时间花在实际开发上。

此外,Agent 还有一个危险特性:它非常擅长模式复制。代码库里有什么模式,它就忠实地复制并放大——包括坏模式和架构漂移。不加约束的 Agent 会以惊人的速度积累技术债务。


Harness Engineering 的四大支柱

综合 OpenAI、Anthropic、Stripe、HashiCorp 等多个团队的实践,Harness Engineering 可以归纳为四个核心支柱。

支柱一:上下文架构(Context Architecture)

核心原则:Agent 应当恰好获得当前任务所需的上下文——不多不少。

每个团队都独立发现,将所有指令塞进一个文件无法扩展。解决方案是分层上下文与渐进式披露。Vasilopoulos 在 2026 年的论文中将上下文形式化为三层:

层级加载时机内容示例上下文占用
Tier 1:会话常驻 每次会话自动加载 AGENTS.md / CLAUDE.md,项目结构 最小
Tier 2:按需加载 子 Agent 或技能被调用时 专业化上下文、领域知识 中等
Tier 3:持久化知识库 Agent 主动查询时 研究文档、规格说明、历史会话 按需

Dex Horthy 有个很实用的经验观察:上下文填得越满,LLM 输出质量越差。以 168K token 的上下文窗口为例,大约用到 40% 就开始走下坡路——超过这个阈值,Agent 会进入"Dumb Zone",出现幻觉、循环、格式错误的工具调用和低质量代码。

支柱二:Agent 专业化(Agent Specialization)

核心原则:专注于特定领域、拥有受限工具的 Agent 优于拥有全部权限的通用 Agent。

Carlini 在 Anthropic 的 C 编译器项目中,将 Agent 专业化为编译器核心、去重、性能优化和文档四类角色。Vasilopoulos 部署了 19 个领域特定 Agent。专业化不仅是组织性的——它本身就是上下文管理策略。每个专家因为携带更少的无关信息,所以运行在"Smart Zone"内。

典型的角色分工包括:研究 Agent(只读探索)、规划 Agent(分解任务)、执行 Agent(限权实现)、审查 Agent(审计标记)、调试 Agent(修复问题)、清理 Agent(对抗熵增)。

支柱三:持久化记忆(Persistent Memory)

核心原则:进度持久化在文件系统上,而非上下文窗口中。每次新 Agent 会话从零开始,通过文件系统制品重建上下文。

Anthropic 解决这一问题的方案堪称经典:

初始化 Agent:首次会话建立初始环境——init.sh 脚本、claude-progress.txt 进度文件和初始 git 提交。从高级 prompt 生成综合 feature 列表,单个 Web 应用可能超过 200 个独立功能,每个都有明确的测试步骤,全部初始标记为 “failing”。

编码 Agent:后续每次会话的启动流程标准化——运行 pwd 查看目录 → 读取 git log 和进度文件 → 读取 feature list 选择最高优先级任务 → 启动开发服务器运行基础测试 → 确认一切正常后开始新功能开发 → 结束时提交 git 和进度更新。

关键发现:使用 JSON 格式追踪 feature 状态比 Markdown 更有效,因为 Agent 不太可能不恰当地修改或覆盖结构化数据。

支柱四:结构化执行(Structured Execution)

核心原则:将思考与执行分离。所有团队都施加了刻意的执行序列:理解 → 规划 → 执行 → 验证。

Cloudflare 的 Boris Tane 将此原则总结为一句话:

“永远不要让 Agent 在你审查和批准书面计划之前写代码。这种规划与执行的分离是我做的最重要的一件事。”

审查计划远比审查代码快。当规格正确时,实现自然可靠。当规格有误时,可以在 500 行代码生成之前及时纠正。这是驾驭工程中投入产出比最高的实践之一。

Harness Engineering 的四大支柱


四大护栏:OpenAI 的百万行代码实践

OpenAI 三名工程师在 5 个月内用 Codex 构建了约 100 万行代码的产品,提炼出五大 Harness 原则。结合其他团队的实践,可以归纳为四根"护栏":

护栏一:上下文工程——AGENTS.md 活文档

AGENTS.md 是一个新兴的开放约定——本质上是给 AI Agent 的 README。它不是一次性编写后遗忘的静态文档,而是活的反馈循环:每当 Agent 犯错时就更新。Mitchell Hashimoto 的 Ghostty 项目 AGENTS.md 里,每一行都对应一个历史 Agent 失败案例。

OpenAI 的进阶做法是:不维护一个巨大的指令文件,而是构建一个小型 AGENTS.md,指向更深层的事实源——设计文档、架构图、执行计划、质量评级——全部版本控制并维护在仓库中。甚至有一个专门的 Doc-gardening Agent(文档园丁代理),在后台自动扫描文档与代码之间的不一致,发现过时内容就自动提交 PR 修复——Agent 为 Agent 维护文档。

护栏二:架构约束——用 Linter 做缰绳

OpenAI 团队建立了严格的层级依赖模型:Types → Config → Repo → Service → Runtime → UI,下层不能反向依赖上层。所有架构规则被编码为自定义 Linter 规则,违反即 CI 阻止合并——无论代码是人写的还是 AI 写的。

有个关键细节:Linter 的错误信息本身也是上下文工程。它不只说"你违反了规则 X",而是解释为什么这个规则存在、正确做法是什么。这样 Agent 读到错误后就能自我理解并修正,不需要人类介入。工具在 Agent 工作时同时"教会"它。

护栏三:反馈循环——智能体审智能体

传统开发中人类工程师负责 Code Review。在驾驭工程中,这个工作变成了智能体对智能体的方式:Codex 在本地审核自身更改,请求额外审查,循环往复直到通过。反馈循环中的钩子可以运行预定义的测试套件,并在失败时带着错误信息循环回到模型,或者提示模型独立评估其代码。

如果 AI 写的测试用例通过了带有 Bug 的代码,Harness 就会判定测试无效,强迫它重新思考测试边界。

护栏四:熵管理——“垃圾回收”

OpenAI 团队最初每周五花 20% 的时间手动清理"AI Slop"(低质量生成物)。后来这被自动化为 Codex 运行的后台任务——清理吞吐量与代码生成吞吐量成正比扩展。定期运行后台任务扫描偏差、更新质量等级、发起针对性重构 PR。

四大护栏:OpenAI 百万行代码实践


工程师角色的转变:从写代码到设计环境

所有团队的实践都指向同一个结论:工程师的工作正在从"代码的编写者"变成"环境的建筑师"。

Greg Brockman 建议每个团队指定一名"Agent 队长"——负责思考 Agent 如何融入团队工作流。Peter Steinberger(OpenClaw 创作者)在一个月内完成了 6,600+ 次提交,同时运行 5-10 个 Agent。这不是一个人写了 6,600 次代码,而是一个人驾驭了 5-10 个 Agent 产出了 6,600 次提交。

正如 Addy Osmani 所言:“AI 编码的兴起并没有取代软件工程的工艺——它抬高了工艺的门槛。”

软件开发的未来,可能不再是关于我们能写多快多好的代码,而是关于我们能设计多聪明、多鲁棒的系统来驾驭 AI 代理的巨大能量。工程师的价值正在从执行者转变为赋能者和系统思考者——从构建产品转向构建能够构建产品的工厂。

工程师角色转变:从代码编写者到环境建筑师


六大行业共识

综合 OpenAI、Anthropic、LangChain、Stripe、HashiCorp、Martin Fowler 等 8 个独立信息源的交叉对比,业界在以下六个方面已形成明确共识:

  • 瓶颈在基础设施,不在模型智能——五个独立团队得出相同结论,是最核心的共识。
  • 文档必须是活的反馈循环——静态文档是坟场,动态文档才有价值。让后台 Agent 定期清理过时文档并提交 PR。
  • 思考与执行必须分离——复杂任务不可能在单个上下文窗口内完成,先规划再执行是所有团队的共同选择。
  • 上下文不是越多越好——上下文是稀缺资源,约 40% 窗口利用率是甜蜜区间,应按需检索、动态注入。
  • 约束必须自动化执行——人工 Review 是瓶颈。护栏要编码为 Linter、CI、类型系统,让机器来执行而非人。
  • 工程师角色在转变——从代码的编写者变成环境的建筑师。最大的工程挑战是设计让 Agent 可靠工作的控制系统。

  • 还有哪些未解难题?

    尽管共识已经清晰,但 Harness Engineering 领域仍有三大空白区亟待填补:

    棕地项目的 Harness 改造。所有公开的成功案例——OpenAI、Carlini、Anthropic、Stripe、Hashimoto——全部是绿地项目或可控环境。对于十年历史的遗留代码库如何引入 Harness Engineering,目前零成功案例、零方法论。

    功能验证的系统化方案。目前大家擅长的是"约束 Agent 不做错事"(架构约束、Linter、类型检查),但"验证 Agent 做对了事"这个问题远未解决。

    AI 生成代码的长期可维护性。Greg Brockman 抛出的问题至今无人回答:怎么防止"功能没问题但维护性很差"的代码渗透进代码库?Agent 写的代码和人写的代码,积累技术债的方式不一样。


    写在最后

    Harness Engineering 标志着 AI 辅助开发从"让模型写代码"到"设计让模型可靠工作的系统"的范式转变。这不是等更强模型出来就能解决的事——模型越强,能给的自主权越大,护栏就得越好。

    Birgitta Böckeler 的总结最为精辟:

    “为了获得更高的 AI 自主性,运行时必须受到更严格的约束。增加信任需要的不是更多自由,而是更多限制。”

    就像高速公路上的护栏——正是因为有护栏,你才敢踩到 120 码。

    如果只记一句话:瓶颈不在智能,而在基础设施。 每一次 Agent 的失败,都不是换更强模型的理由,而是重新设计它运行环境的信号。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Harness Engineering 驾驭工程:让 AI 能写百万行代码,工程师该做什么?
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!