Harness 才是护城河:从三个开源代理外壳提炼设计清单
"harness"最近成了热词,但争论多停留在定义层。看代码更有用:Codex CLI 已用 Rust 完整开源(openai/codex),OpenHands 开源且有论文详述其架构(arXiv:2407.16741),Claude Code 虽未开放核心源码,但 Anthropic 把关键工程决策写进了官方文档与工程博客。三者交叉对照,harness 的骨架清晰可见——它不是"提示词包装",而是五个必答的工程决策。
1. 工具循环。 Anthropic 明确定义:agent 就是模型在循环中自主调用工具,harness 的第一职责是把这个循环跑稳:工具结果回填、错误处理、无依赖调用的并行执行。这是不可裁剪项。
2. 权限与沙箱——分歧最大的地方。 Codex 选择 OS 级强制隔离,macOS 用 Seatbelt、Linux 用 Landlock/seccomp(见 codex 仓库的沙箱文档);OpenHands 把执行放进 Docker 运行时;Claude Code 走细粒度权限审批 + hooks 拦截。代价对照:OS 沙箱安全上限高但平台适配成本大;审批制体验灵活但依赖用户判断。自建时二选一即可,但不能都不选。
3. 上下文压缩。 长任务必然撞上下文墙。Anthropic 的做法是对话逼近上限时自动压缩历史消息,并配合"把中间结果写入文件、按需再读"的外置记忆。这是最容易被自建者忽略、又最影响长任务成功率的组件。
4. 系统提示组装。 生产级 harness 的提示是运行时拼装的:环境信息、项目级指令文件(如 CLAUDE.md)、动态注入的提醒。可裁剪的是花样,不可裁剪的是"让配置进入提示"这条通路。
5. 扩展点。 Hooks 让确定性逻辑绕过模型直接执行——格式化、校验、审计不该靠祈祷模型记得,而该靠 harness 强制。
我的判断:这五项中,模型升级能替你改进的只有第 1 项的循环质量;2、3、5 是纯工程资产,模型换代不贬值。所以"模型同质化后价值归零"的焦虑放错了地方——该焦虑的是你的 agent 里除了提示词还有没有别的东西。行动建议:对照上述清单审计自家 agent,先补沙箱或审批(安全下限),再补压缩(能力上限),hooks 最后做(体验增量)。
*注:三家实现细节随版本快速演进,落地前请以上述仓库与文档的当前版本为准。*