Skip to content

Harness Engineering ​

Harness(挽具)是把力量接出来的那套装具。Agent Harness 是包裹 LLM 的整个运行外壳——同一个模型,装在不同的 Harness 里,表现天差地别。

什么是 Harness ​

Harness 是模型之外、任务之内的一切工程。拿主流 Coding Agent 剖开看,通常包括:

组件职责基础篇对应
系统提示角色、行为规范、领域知识Prompt Engineering
工具面内置工具集、MCP 接入、Skills工具
权限系统哪些操作自动放行、哪些要确认安全与权限
上下文管理压缩、外置、缓存友好的组织Context Engineering
事件循环调用模型、执行工具、写回结果Agent 核心循环
持久层会话恢复、任务清单、记忆文件用户记忆与知识库

一个有力的行业观察:模型能力的差距正在被 Harness 的差距放大甚至反超。同一个模型,在精心调校的 Harness 里(比如 Claude Code)和裸 API 循环里的生产率差距,常常大于换一个更强模型。Claude Code、Codex、Pi、DeepSeek Harness 之间的竞争,本质上就是 Harness 工程的竞争。

Harness Engineering 的核心决策 ​

1. 工具面:宽而浅,还是窄而深? ​

内置多少工具、开放多少扩展?Claude Code 的选择是“窄内核 + 强扩展”:核心只给读写文件、执行命令、搜索等十来个原语,其余能力通过 MCP 和 Skills 加载。这个设计的哲学是:原语越少越稳,能力按需注入。

2. 权限模型:默认开放,还是默认收敛? ​

每个工具调用都要回答“允许吗”。三级策略由松到紧:全自动(快但危险)、白名单 + 确认(主流)、全确认(安全但烦人)。Harness 通常做成可配置的分级模式(如 Claude Code 的 permission modes),并把“哪些命令永远不用问”的记忆也纳入 Harness。

3. 上下文策略:何时压、压什么? ​

压缩阈值设在多少、系统提示如何为缓存保持稳定、哪些文件常驻、哪些按需读——这些参数直接决定长任务的后半程表现。Harness 的上下文策略往往比模型本身更长窗口更重要。

4. 人机接口:Agent 如何与用户对话? ​

进度如何呈现、何时停下来问、计划是否需要先批准(plan mode)、中断后如何恢复。好的 Harness 让人始终知情而不被打扰,坏的 Harness 让人要么失控要么疲于确认。

为什么不直接用框架 ​

Anthropic 官方的建议值得抄录:框架降低了入门门槛,但额外的抽象层会遮蔽底层的 prompt 和响应,让调试变难;很多模式用 LLM API 直接实现只需几行代码。如果你使用框架(Claude Agent SDK、LangGraph 等),务必理解它底下在做什么——对底层的错误假设是客户事故的常见来源。

这也是本教程的结构逻辑:先弄懂 Harness 各组件的原理,框架只是把这些组件预先装配好的产物。

参考 ​

最近更新