Anthropic 最近发布了一篇关于 Harness 的工程实践。表面看是在讲产品实现,实质上回答的是一个更长期的问题:
当模型能力持续变化时,Agent 系统哪些层要稳定,哪些层应该允许快速替换?
核心判断
我对这篇文章的核心理解是:Agent 基础设施会越来越像一个轻量的 Agent OS。
重点不在“把今天的最佳流程写死”,而在“定义长期稳定的系统抽象”。
为什么这点重要
很多 Agent 框架常见的问题是:
- 把模型的临时短板固化为永久架构
- 把 prompt 工程误当成系统边界
- 把一次有效的补丁写成长期依赖
模型会变强,今天合理的补丁,明天可能就是技术债。
Anthropic 的解法:从具体 Harness 到 Meta-Harness
这套思路不是承诺某一种固定编排方式,而是抽象出三层稳定接口:
session:可恢复的事件与状态历史harness:推理与调度循环(brain)sandbox:执行环境与工具能力(hands)
它们分离后,系统更容易替换、恢复和扩展。
1) Session 不是上下文窗口
一个关键观点是:Session 不等于模型上下文。
Session 应该是可查询、可回放、可恢复的事件日志,而不是直接塞给模型的历史拼接。
这样做的价值:
- trimming 不等于历史消失
- compaction 不等于事实丢失
- 崩溃恢复可以回到事件层,而不是依赖摘要记忆
2) Harness 是可替换的编排层
Harness 应专注于调度,而不是持有业务状态。
理想接口更接近:
execute(name, input) -> string
这意味着模型只关心“我能调用什么能力”,而不强绑定具体设备、容器或操作系统。
3) Sandbox 是“手”,不是“脑”
当 brain 和 hands 解耦:
- 工具环境可以独立演进
- 不同基础设施可以并行接入
- 不必每个会话都预热完整执行环境
这直接带来更好的启动与扩展表现。
性能与安全启发
这种拆分通常会同时改善性能和安全。
性能上:
- 可以先启动 brain,再按需拉起 hands
- 降低首 token 延迟(TTFT)
安全上:
- 不把高敏凭证直接暴露给模型
- 用受控 proxy / vault 做间接凭证访问
- 安全边界建立在系统约束上,而不是“模型应该做不到”