第五章 深度解析Harness Engineering
你试过让 AI Agent 完成一个完整的开发任务吗?十有八九的情况是:开头惊艳,中间迷路,结尾翻车。不是模型不够聪明,是没有"缰绳"。HashiCorp 联合创始人 Mitchell Hashimoto 提出的 Harness Engineering 正是解决这个问题的——它不训练更强的模型,而是在模型外面加一层系统级的"驯服框架"。2026 年,这是每个 AI 工程师都必须掌握的范式。
一、2026 年的范式转移:从"写 Prompt"到"设计系统"
2025 年,整个行业在问"AI 能不能写代码"。到了 2026 年,答案变了——"Agent 不是难点,Harness 才是。"
🍻
Mitchell Hashimoto 用一个极其精准的类比定义了 Harness Engineering:AI Agent = SOTA 模型(野马)+ Harness(驯服系统)。野马本身力量无穷,但完全不可控。Harness 就是那套马鞍、缰绳和训练协议——你不改变马的基因,而是设计一套让它稳定、可预测、能大规模干活的外部控制系统。
这句话是 Harness Engineering 的灵魂:"你不是在编写智能,而是在构建智能运行的世界。"
二、为什么你的 Prompt 再好也没用:Agent 的"三大原罪"
在传统 AI 开发模式中,我们试图通过"更聪明的提示词"来控制模型行为。但 2026 年的实践证明这条路走不通,因为 Agent 有三大无法通过 Prompt 解决的原罪:
原罪一:上下文焦虑
模型记不住长期项目历史。你给它塞太多文档,它反而因为注意力稀释而变笨。更致命的是——任务一旦中断,所有工作进度全部丢失。
原罪二:任务跑偏
模型能生成代码,但难以保证代码真正跑通。"一次跑偏,步步跑偏"——生成和验证之间有一道混沌的鸿沟。Prompt 无法强制闭环反馈。
原罪三:安全失控
Agent 拥有 Shell 权限、文件系统权限、API 调用权限。没有系统级的权限管控和沙箱隔离,"rm -rf /" 就不是段子了。而且很多 Agent 在"自信地犯错",用户根本不知道。
这三大原罪的共同点:它们都不是模型能力不够,而是"模型外面缺一层基础设施"。Harness Engineering 就是这层基础设施。
三、Harness 的四层架构:像操作系统一样管理 Agent
Harness Engineering 的核心架构可以拆解为四个关键组件,覆盖 Agent 从创建到销毁的完整生命周期:
#bwpWcZGHIHnl text { white-space: pre; }#bwpWcZGHIHnl .fb0 { stroke: var(--N900-FG, 0.15); }#bwpWcZGHIHnl .fb0 {stroke: rgba(31,35,41, 0.15)}#bwpWcZGHIHnl .fx0 { stroke-miterlimit: 10; }#bwpWcZGHIHnl .fx0 {stroke-miterlimit: 10}#bwpWcZGHIHnl .fa1 { fill: rgb(187, 191, 196); }#bwpWcZGHIHnl .fa1 {fill: rgb(187, 191, 196)}#bwpWcZGHIHnl .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#bwpWcZGHIHnl .fx1 {font-style: normal}#bwpWcZGHIHnl .fx2 { text-anchor: middle; }#bwpWcZGHIHnl .fx2 {text-anchor: middle}#bwpWcZGHIHnl .fx3 { dominant-baseline: central; }#bwpWcZGHIHnl .fx3 {dominant-baseline: central}#bwpWcZGHIHnl .fx4 { stroke: none; }#bwpWcZGHIHnl .fx4 {stroke: none}#bwpWcZGHIHnl .fc0 { fill: var(--text-caption); }#bwpWcZGHIHnl .fc0 {fill: #646a73}#bwpWcZGHIHnl .fa2 { fill: var(--text-link-disabled); }#bwpWcZGHIHnl .fa2 {fill: rgb(187, 191, 196)}#bwpWcZGHIHnl .fa3 { fill: rgb(225, 234, 255); }#bwpWcZGHIHnl .fa3 {fill: rgb(225, 234, 255)}#bwpWcZGHIHnl .fa4 { fill: rgb(255, 255, 255); }#bwpWcZGHIHnl .fa4 {fill: rgb(255, 255, 255)}#bwpWcZGHIHnl .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#bwpWcZGHIHnl .fx5 {font-style: normal}#bwpWcZGHIHnl .fx6 { text-anchor: start; }#bwpWcZGHIHnl .fx6 {text-anchor: start}#bwpWcZGHIHnl .fx7 { dominant-baseline: alphabetic; }#bwpWcZGHIHnl .fx7 {dominant-baseline: alphabetic}#bwpWcZGHIHnl .fc1 { fill: rgb(31, 35, 41); }#bwpWcZGHIHnl .fc1 {fill: rgb(31, 35, 41)}#bwpWcZGHIHnl .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#bwpWcZGHIHnl .fx8 {font-style: normal}#bwpWcZGHIHnl .fb1 { fill: var(--N900-FG, 0.15); }#bwpWcZGHIHnl .fb1 {fill: rgba(31,35,41, 0.15)}#bwpWcZGHIHnl .fa5 { fill: var(--bg-body); }#bwpWcZGHIHnl .fa5 {fill: #fff}ABC12345组件InitializerWorkerReviewerEvaluator作用类比解析任务描述,生成执行计划,拆解为可追踪的子任务。绝不"一次做太多"。按计划执行子任务,每步写入状态记录。"小步快跑,步步验收"。每步执行后自动审查输出,用 linter、test runner、diff check 形成反馈闭环。全局质量评估,确保整体交付质量。跨步骤验证一致性,补 Reviewer 的盲区。进程 fork进程执行进程监控进程退出码
这四层架构的目标非常明确:将 Agent 任务成功率提升至 99.9%,将安全事故率降低到 0.01% 以下,使多 Agent 的规模化运维成本降低 90% 以上。
四、R.E.S.T 实战框架:四大原则
Harness Engineering 有一套实践方法论——R.E.S.T 框架,用四个原则保证 Agent 的可控性:
R — Registry(注册中心)
每个 Agent 的能力、接口、版本、依赖都要在 Registry 中注册。不允许"黑户 Agent"——不在 Registry 中的 Agent 不能被调度。
E — Execution Context(执行上下文)
每个 Agent 运行在独立沙箱中,拥有明确的资源配额和权限策略。任务完成后沙箱自动销毁,不留痕迹。
S — State Machine(状态机)
每个任务都有明确的状态迁移图。Agent 不能"想到哪就做哪",而是在预定义的状态之间迁移。PLANNED → RUNNING → REVIEWING → RETRYING → DONE / FAILED。
T — Telemetry(可观测性)
每一步决策都记录日志、耗时、Token 用量、成功率。从可观测数据中发现 Agent 的"坏习惯",持续优化。
五、谁在用 Harness?三大落地案例
#rBtuTEuMQHzZ text { white-space: pre; }#rBtuTEuMQHzZ .fb0 { stroke: var(--N900-FG, 0.15); }#rBtuTEuMQHzZ .fb0 {stroke: rgba(31,35,41, 0.15)}#rBtuTEuMQHzZ .fx0 { stroke-miterlimit: 10; }#rBtuTEuMQHzZ .fx0 {stroke-miterlimit: 10}#rBtuTEuMQHzZ .fa1 { fill: rgb(187, 191, 196); }#rBtuTEuMQHzZ .fa1 {fill: rgb(187, 191, 196)}#rBtuTEuMQHzZ .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rBtuTEuMQHzZ .fx1 {font-style: normal}#rBtuTEuMQHzZ .fx2 { text-anchor: middle; }#rBtuTEuMQHzZ .fx2 {text-anchor: middle}#rBtuTEuMQHzZ .fx3 { dominant-baseline: central; }#rBtuTEuMQHzZ .fx3 {dominant-baseline: central}#rBtuTEuMQHzZ .fx4 { stroke: none; }#rBtuTEuMQHzZ .fx4 {stroke: none}#rBtuTEuMQHzZ .fc0 { fill: var(--text-caption); }#rBtuTEuMQHzZ .fc0 {fill: #646a73}#rBtuTEuMQHzZ .fa2 { fill: var(--text-link-disabled); }#rBtuTEuMQHzZ .fa2 {fill: rgb(187, 191, 196)}#rBtuTEuMQHzZ .fa3 { fill: rgb(225, 234, 255); }#rBtuTEuMQHzZ .fa3 {fill: rgb(225, 234, 255)}#rBtuTEuMQHzZ .fa4 { fill: rgb(255, 255, 255); }#rBtuTEuMQHzZ .fa4 {fill: rgb(255, 255, 255)}#rBtuTEuMQHzZ .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rBtuTEuMQHzZ .fx5 {font-style: normal}#rBtuTEuMQHzZ .fx6 { text-anchor: start; }#rBtuTEuMQHzZ .fx6 {text-anchor: start}#rBtuTEuMQHzZ .fx7 { dominant-baseline: alphabetic; }#rBtuTEuMQHzZ .fx7 {dominant-baseline: alphabetic}#rBtuTEuMQHzZ .fc1 { fill: rgb(31, 35, 41); }#rBtuTEuMQHzZ .fc1 {fill: rgb(31, 35, 41)}#rBtuTEuMQHzZ .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rBtuTEuMQHzZ .fx8 {font-style: normal}#rBtuTEuMQHzZ .fb1 { fill: var(--N900-FG, 0.15); }#rBtuTEuMQHzZ .fb1 {fill: rgba(31,35,41, 0.15)}#rBtuTEuMQHzZ .fa5 { fill: var(--bg-body); }#rBtuTEuMQHzZ .fa5 {fill: #fff}ABC1234案例OpenAI CodexVercel Open AgentsWiseClaw 医疗Harness 应用效果用 Harness 管理百万行级代码生成,每个任务经 Initializer → Worker → Reviewer → Evaluator。5 月 6 日开源。三层架构(Web + Agent + Sandbox)完美对应 R.E.S.T。智诊科技发布 Agent OS 平台,Harness 作为系统默认值嵌入。端到端代码生成成功率大幅提升支持 Agent 暂停/休眠/恢复全球医疗榜第一
六、3 个动作立刻开始
你不需要从零搭建 Harness。以下是三个最快的切入点:
入门级:用 Vercel Open Agents。git clone 后部署到 Vercel,一键拥有 Harness 三层架构。
高级:用 Python 搭最小 Harness。只需四个文件:registry.py(管理 Agent 注册)+ executor.py(沙箱执行)+ reviewer.py(自动审查)+ evaluator.py(全局评估)。最小可行 Harness 不到 200 行代码。
团队级:建自己的 Skill 库。如果你在做 AI 应用产品——现在就开始建团队的 skill 库。6 个月后这会成为壁垒。
七、写在最后
Harness Engineering 不是另一个"流行词"。它是 AI 工程化落地的必经之路。
2025 年是 Agent 元年,2026 年是 Agent Harness 爆发之年。竞争的核心,已从"训练更强的模型"转向"构建更可控的运行系统"。
你现在用的 Agent 有 Harness 吗?还是没有缰绳的"裸马"?