为什么 Harness Engineering 最近突然变热了?
最近一段时间,Harness Engineering 这个词在 AI Coding Agent 圈子里越来越热。
如果只看字面,它很容易被理解成一个新的技术名词,或者某种旧概念的重新包装。但我越来越觉得,它的升温并不是因为大家突然喜欢发明新词,而是因为 Agent 开始进入更真实的工程环境之后,很多过去被掩盖的问题都集中暴露了出来。
过去大家聊 Agent,更多在聊这些事情:
- 模型能力够不够强
- Prompt 怎么设计
- Tool Calling 怎么接
- Memory 怎么做
- Planning 怎么设计
- Workflow 怎么编排
但当 Agent 真正开始接触代码仓库、执行命令、修改文件、运行测试、提交 PR 之后,问题的重心就变了。
这时候你会发现,真正让一个 Agent 难以落地的,往往不是它“会不会想”,而是它:
- 运行在哪个环境里
- 拥有什么权限
- 执行过程能不能被观察
- 失败之后能不能恢复
- 改动是否可追踪、可回放、可审计
这些问题,单靠更强的模型并不能解决。它们本质上是执行系统工程的问题,而 Harness Engineering 对应的,正是这层能力。
什么是 Harness Engineering?
如果要给它一个足够工程化的定义,我会这样说:
Harness Engineering,就是为 Agent 提供可控、可观测、可审计、可恢复执行环境的一整套系统工程。
这里的 harness,你可以把它理解成 Agent 和真实世界之间的执行中间层。
它不是模型本身,也不是某一个具体工具。它更像是 Agent 在执行层面的 runtime、control plane 和 safety layer 的组合。
对于 Coding Agent 来说,模型负责的是:
- 理解任务
- 规划步骤
- 生成代码
- 做推理和决策
而 harness 负责的是:
- 决定它在哪儿执行
- 决定它能做什么、不能做什么
- 记录它做了什么
- 在失败时提供恢复路径
- 让人类能够接管、审核和纠错
换句话说,模型决定“想做什么”,harness 决定“能怎么做、做到哪一步、出了事怎么办”。
这个分层很重要。因为在很多 Agent 讨论里,大家习惯把“会调用工具”也归到“Agent 很强”的范畴里,但真正到了生产环境,光会调工具远远不够,关键是你是否有一层稳定的执行底座把这些能力承接起来。
为什么它现在才开始变热?
我觉得原因至少有五个。
1. 模型能力变强之后,瓶颈从 reasoning 转向 execution
前一阶段大家最关心的问题是:模型到底能不能理解复杂任务,能不能在多步推理里保持稳定,能不能生成还像样的代码。
现在这个问题虽然没有完全解决,但已经不再是唯一瓶颈了。很多模型已经足够强,至少能在相当多的软件任务里完成“理解—规划—执行建议”这一套流程。
于是新问题浮出水面:
- 为什么第一次跑得通,第二次就挂了?
- 为什么改动成功了,但仓库也被顺手搞脏了?
- 为什么 Agent 明明知道要做什么,但执行半路卡死?
- 为什么用户总是不放心让它直接动代码?
这些都不是 reasoning 的问题,而是 execution 的问题。
2. 大家开始从 Demo Agent 走向生产 Agent
做一个 Demo Agent 并不难。你可以把模型、工具、少量 prompt glue code 拼起来,再加一个会话 UI,看起来就已经很像一个完整产品了。
但 Demo Agent 和生产 Agent 最大的差别,不在于“能不能跑通一次”,而在于:
- 能不能稳定重复执行
- 能不能控制风险边界
- 能不能让团队排查问题
- 能不能在复杂环境里长时间工作
一旦进入企业环境,原来那些“反正先跑起来”的部分,都会变成必须认真设计的问题。Harness Engineering 的热度,本质上就是 Agent 从 demo 阶段走向系统阶段的表现。
3. Coding Agent 天然是高风险执行系统
和纯聊天型产品不同,Coding Agent 不是只输出文字。
它会:
- 读你的仓库
- 改你的文件
- 运行 shell
- 安装依赖
- 调用浏览器
- 跑测试
- 可能还会推送 commit、发起 PR
这意味着它面对的是一个真实、脆弱、带状态的执行环境。哪怕模型输出再聪明,只要执行环境设计得差,它依然可能:
- 污染工作区
- 覆盖不该改的文件
- 卡在不可恢复的中间状态
- 在权限边界外误执行危险操作
所以对 Coding Agent 来说,harness 不是锦上添花,而是基础设施。
4. 用户对“可控感”的要求显著上升
很多时候,用户对 Agent 的担忧并不是“它不够聪明”,而是“它会不会乱来”。
一个很有意思的现象是:哪怕 Agent 的成功率已经不错,用户也不一定愿意让它全自动执行。因为用户真正需要的是一种可控感:
- 我知道它现在在做什么
- 我知道它为什么这么做
- 我知道它接下来会不会动危险区域
- 我知道哪里需要我确认
- 我知道出问题了怎么停下来
这不是模型参数的问题,而是产品和运行时设计的问题。Harness Engineering 恰好就是提供这种可控感的关键层。
5. 产品竞争开始从“会不会用工具”转向“谁的执行系统更强”
Agent 的第一阶段竞争,大家比的是:
- 模型接得多不多
- Tool Calling 做得灵不灵
- Prompt 调得准不准
- UI 体验顺不顺
但随着基础能力逐渐拉平,真正的差异会越来越落在更深层的系统能力上:
- 谁能提供更稳定的执行环境
- 谁能更好地管理长任务和异步任务
- 谁能让人机协同更顺滑
- 谁能提供更强的可观测性和审计能力
- 谁能把 Agent 真正接入团队日常工作流
这也是我觉得 Harness Engineering 会持续升温的原因。它不是一个阶段性热点,而很可能会成为下一轮 Agent 产品竞争的核心变量之一。
一个好的 Harness,需要解决什么问题?
如果从工程角度拆分,我觉得一个成熟的 harness 至少要覆盖下面五个方面。
1. 隔离性
Agent 需要自己的工作空间和边界。
比如:
- 独立 worktree
- 容器化执行环境
- 临时沙盒目录
- 对文件系统和网络的范围限制
隔离性的意义不只是安全,更是为了可重复性。没有隔离,Agent 的执行会越来越依赖历史状态;有隔离,才能更接近“每次都在一个已知环境里开始”。
2. 可观测性
你必须知道 Agent 做了什么。
这包括但不限于:
- 执行了哪些命令
- 读了哪些文件
- 改了哪些文件
- 调用了哪些工具
- 当前停在哪个步骤
- 最近一次失败发生在哪里
如果这些信息拿不到,Agent 一旦出问题,排查体验会非常痛苦。很多 Agent 产品之所以让人缺乏信任,不是因为失败本身,而是因为它失败得像个黑盒。
3. 可控性
可控性不是“全放开”或者“全禁掉”二选一,而是更细粒度的授权和介入能力。
比如:
- 哪些命令可以自动执行,哪些必须确认
- 哪些目录可写,哪些只能读
- 哪些外部服务允许访问
- 哪一步执行需要人工审批
- 用户能否在中途接管或修改计划
如果没有这层控制,Agent 要么太弱,要么太危险。真正可用的产品,一定要在“自动化效率”和“人类监督”之间找到平衡。
4. 可恢复性
长任务一定会失败,也一定会中断。
可能是因为:
- 网络断了
- CLI 断开了
- shell 卡住了
- 模型超时了
- 用户中途介入了
- 外部工具返回了不一致结果
这时候最糟糕的情况,是整个任务只能从头再来。
成熟的 harness 需要提供:
- 任务状态持久化
- 断点恢复
- 会话恢复
- 中间产物保留
- 人工接手后的继续执行能力
只有这样,Agent 才能处理真正复杂的、持续时间长的工作。
5. 可审计性
当 Agent 开始被团队使用时,“它做了什么”会变成一个管理问题,而不仅是一个调试问题。
可审计性意味着:
- 关键操作有记录
- 代码变更有来源
- 权限升级有痕迹
- 外部访问有轨迹
- 人工确认节点可回看
这对于企业场景尤其重要。不是所有问题都能靠“相信 Agent”解决,很多时候需要的是“可以证明它是怎么做的”。
Harness 不等于 Tool Calling
我觉得这是最容易混淆的一点。
很多人第一次听到 Harness Engineering,会下意识把它理解成“更复杂的工具调用系统”。这并不完全错,但也远远不够。
Tool Calling 关注的是能力接口
Tool Calling 主要解决的是这些问题:
- 模型能调用哪些工具
- 调用参数怎么传
- 工具返回什么结果
- 结果如何反馈进上下文
它本质上是在解决“能力暴露”和“能力消费”的问题。
Harness Engineering 关注的是执行底座
Harness Engineering 解决的是另外一层问题:
- 这些工具运行在什么环境里
- 怎么隔离权限和状态
- 多个工具如何形成稳定流程
- 长任务、中断、恢复怎么处理
- 人类如何观察、确认和接管
- 执行链路如何被记录和审计
所以如果要用一句话概括两者的区别,我会这样说:
Tool Calling 是能力接口,Harness Engineering 是执行底座。
前者回答的是“Agent 能调什么”,后者回答的是“Agent 调完之后,整个系统怎么稳地跑下去”。
这也是为什么很多只靠 Tool Calling 拼起来的 Agent,在 demo 时看起来不错,但一旦进入真实工作流,就会暴露出大量不稳定性问题。
Harness 也在重新定义 Agent UX
还有一个我觉得经常被低估的点:Harness Engineering 不只是 infra 问题,它其实也直接塑造了 Agent UX。
以前我们谈 Agent UX,讨论的大多是这些:
- 对话框体验
- 输出流式展示
- 思考链可视化
- 工具调用的结果展示
但对于 Coding Agent 来说,真正关键的用户体验往往是另一组问题:
- 我能不能清楚看到它现在在做什么?
- 我能不能判断它是否卡住了?
- 我能不能快速知道它改了哪里?
- 我能不能方便地在关键节点接手?
- 我能不能放心让它继续往下跑?
这时候你会发现,用户体验的核心已经不只是“对话顺不顺”,而是“执行过程是否透明、稳定、可接管”。
也就是说,Harness Engineering 既是基础设施问题,也是产品体验问题。
我的一个判断:Harness 会成为下一阶段 Agent 的基础设施层
如果说第一阶段的 Agent 竞争,更接近模型能力竞争;第二阶段,更接近 workflow、tool use 和产品交互竞争;那我觉得下一阶段,很可能会越来越像 runtime / infra / platform 能力竞争。
原因很简单。
真正决定一个 Agent 能不能走进生产的,通常不是它在 benchmark 上多了几点,而是它是否具备这些条件:
- 能进入真实仓库工作
- 能安全执行 shell、browser、MCP、API
- 能在长任务里保持状态
- 能与人工顺滑协作
- 能被团队观察、管理和审计
而这些能力的核心承载层,恰恰就是 harness。
所以我会倾向于把 Harness Engineering 视为 Agent 时代的一层新基础设施,而不是某个边缘优化点。
写在最后
Harness Engineering 最近变热,本质上说明了一件事:
Agent 行业正在从“会不会做 Demo”转向“能不能把执行系统做扎实”。
当模型能力逐渐变成基础能力之后,真正拉开差距的,会越来越是这些看起来不那么性感、但极其关键的工程层问题:
- 运行时设计
- 权限体系
- 可观测性
- 恢复机制
- 审计能力
- 人机协同接口
换句话说,Agent 产品正在从“模型驱动”走向“系统驱动”。
而 Harness Engineering 的升温,正是这个阶段变化最直接的信号之一。
如果说 Prompt、Memory、Tool Calling 解决的是 Agent “能不能想”和“能不能调用能力”,那么 Harness Engineering 解决的,就是它最终能不能被安全、稳定、长期地执行。
我觉得,这不会只是一个短暂热点。它很可能会成为未来几年 AI Coding Agent 产品里最值得认真建设的一层。