本节摘要:harness(运行环境)是 2026 年智能体工程里最热的词,也是最容易被望文生义的词。本节从 Addy Osmani 的定名之作出发,给出本书通用的定义——编码智能体 = 模型 + 围绕它的一切,harness 就是那个"一切":Agent 循环、工具系统、权限审批门、沙箱隔离、上下文工程、观测评测。用一个引擎与底盘的类比讲清它和模型的关系,用"同一模型、不同结局"讲清它为什么值得单独成书,最后用一批身边实例(Claude Code、Codex CLI、OpenClaw、OpenHands)把抽象定义落到具体产品上。
阅读完本节,你应当能够:
2026 年 4 月,Addy Osmani 发表《Agent Harness Engineering》(官方),随后被 O'Reilly 平台转载(2026-05)。文章的核心论断只有一句:
A coding agent is the model plus everything you build around it.
(编码智能体是模型加上你围绕它构建的一切。)
这句话把行业已有的共识钉在了板上:决定编码智能体表现的,不只有模型。你给模型什么提示词、给它哪些工具、怎么管理它看到的上下文、在它执行危险操作前设几道门、出错后怎么反馈——这些"围绕模型的一切",Osmani 统称为 harness(直译"马具 / 挖矿的矿井支架",引申为"让力量安全做功的支架系统"),并主张把它当作一门独立的工程学科:harness engineering。
| 公式 | 说明 |
|---|---|
| 编码智能体 = 模型 + harness | 模型是"大脑",harness 是让大脑能干活的"整辆车" |
| 模型负责 | 理解、推理、决策、生成("想") |
| harness 负责 | 循环、工具、权限、沙箱、上下文、观测("做",以及"想"之前的供料与"做"之后的刹车) |
💡 一个 helpful 的误解纠正:harness 不是"套壳"。"套壳"暗示它是可有可无的包装;而 harness 恰恰相反——去掉它,模型只剩一个聊天补全接口,连"读一个文件"都做不到。它是让模型从"会说"变成"会做"的全部机械结构。
把模型想成发动机,harness 就是发动机之外的整辆车:
| 汽车 | 编码智能体 | 类比含义 |
|---|---|---|
| 发动机 | 模型 | 动力来源,决定理论上限 |
| 变速箱与传动 | Agent 主循环 | 把动力转成一轮轮可控的动作 |
| 方向盘与踏板 | 工具系统 | 让动力作用到真实世界(文件、终端、网络) |
| 刹车与安全带 | 权限审批门 + 沙箱 | 限制爆炸半径,防止动力伤人 |
| 仪表盘与导航 | 上下文工程 + 观测评测 | 告诉引擎"现在在哪、接下来去哪、刚才跑得怎么样 |
| 整辆车 | 编码智能体 | 发动机再强,没有车也是一堆铁 |
同一台发动机(模型),装进赛车、SUV 还是货车(不同 harness),能干的事完全不同。这就是 2026 年各家产品用着相近的模型、体验却天差地别的根本原因。
一个思想实验(示意):把同一个前沿模型分别接到两种环境里——
while 循环 + 一段"你是编程助手"的提示词,没有任何工具。它只能输出"你应该先打开文件看看"之类的建议,一行真实代码都改不了。模型没变,结局差出一个量级。差距全部来自 harness。反过来说,harness 工程师的工作就是:让每个模型在其能力范围内,把能力稳定地兑现出来——不因上下文塞爆而降智,不因工具报错含糊而空转,不因权限缺失而卡死,也不因权限全开而闯祸。
Hacker News 上有一句流传很广的讨论(社区):"harness 本身在沙箱之外"——它是在沙箱外运行的那个程序:调用 LLM API、拿到模型决策、然后把工具调用派发到沙箱里执行、收集结果、再喂回模型。
这句话划出了一条关键边界:
┌────────────────── 沙箱之外(可信区)──────────────────┐ │ Harness 主循环 │ │ 组装上下文 → 调用模型 → 权限门 → 派发工具 → 回填结果 │ └──────────────┬───────────────────────────────────────┘ │ 受控接口 ┌──────────────▼───────────────┐ │ 沙箱之内(不可信区) │ │ bash、编译、测试、任意代码 │ └──────────────────────────────┘
由此得到两个推论:其一,沙箱只是 harness 的一个组件(第 6 章的主角),不是 harness 本身;其二,harness 代码自己必须可信——它拿着 API Key、握着所有权限开关,它是安全边界本身。(这条边界的完整论证见第 1.1 节的四者边界表。)
| 产品 | 形态 | harness 侧重点(官方 / 社区资料) |
|---|---|---|
| Claude Code | 终端编码智能体 | 精细的工具集与权限模式(ask/allow 列表)、hooks、项目级上下文文件 |
| Codex CLI | 开源终端编码智能体 | 开源可读、沙箱模式分级(只读 / 工作区可写 / 全开) |
| OpenClaw | 本地自托管个人 AI 助理 | 多渠道网关(WhatsApp/Discord/iMessage/Slack/Telegram 等),GitHub 史上增长最快的项目之一(约 39 万 star,社区统计,2026-09) |
| OpenHands / opencode | 开源 Agent 平台 / 终端 agent | 完整的开源 harness 实现,适合当"可阅读的参考答案" |
这四个例子会在第 2 章逐一解剖。现在只需要记住:它们竞争的重心,很大程度上是 harness 的竞争。
概念已经就位:harness 是模型之外的一切。但"一切"到底有多大的疆域?它和模型、沙箱、框架的边界画在哪?下一章我们用一张四者边界表和一张六组件全景图,把这块疆域正式丈量出来。