乐于分享
好东西不私藏

Harness&Openclaw本质 是操作系统:一文看懂 AI Agent 是怎么跑起来的

Harness&Openclaw本质 是操作系统:一文看懂 AI Agent 是怎么跑起来的

本文翻译并改编自 Akshay Pachaar 的爆文《 The Anatomy of an Agent Harness 》。

现在大家都在卷 Agent ,但大多数人只盯着模型榜单,看谁家的基座更聪明。 这其实是本末倒置。

不管是 Anthropic 的 Claude Code ,还是我们熟悉的 OpenClawHermes,它们之所以能从“聊天玩具”进化成能独立跑任务的智能体,靠的根本不是模型本身,而是一套包裹在模型外部的完整软件架构。

2026 年,这套架构终于有了正式的名字:AI Agent Harness

LangChain 的 Vivek Trivedy 给过一句最透彻的定义:

“如果你不是模型本身,那你就是 Harness 。”

简单说,大模型只是 CPU ,而 Harness 就是操作系统 它决定了模型怎么记忆、怎么调用工具、怎么处理报错、怎么在长对话中不迷失。 没有这套架构,再强的模型也只是一堆只会接话的参数;有了它,模型才能真正落地。

这篇爆文深度拆解了 Harness 的 12 个核心组件,看懂了它,你就看懂了所有 Agent 的底层逻辑。

综合 Anthropic 、 OpenAI 、 LangChain 以及广大从业者的实践经验,一个生产级的 Agent Harness 由 12 个核心组件构成。让我们逐一拆解。

1. 编排循环 (The Orchestration Loop)

这是系统的“心脏”。它实现了“思考 – 行动 – 观察”( TAO )循环,也被称为 ReAct 循环。 这个循环不停运转:整合提示词 -> 调用大语言模型 -> 解析输出 -> 执行工具调用 -> 反馈结果 -> 重复,直到任务完成。

Anthropic 将他们的运行时描述为一个“笨循环”,所有的智慧都存在于模型之中, Harness 只负责管理回合的切换。

2. 工具 (Tools)

工具是智能体的“双手”。它们被定义为某种结构化模式(名称、描述、参数类型),并注入到模型的上下文中。 工具层负责:注册、格式校验、参数提取、在沙箱( Sandbox )环境执行、结果捕获,并最终将结果格式化为模型可读的“观察结果”。

3. 记忆 (Memory)

记忆在不同的时间尺度上运作。 *   短期记忆:单次会话中的对话历史。 *   长期记忆:跨越多个会话持久存在。 Anthropic 使用项目文件和自动生成的 memory.md; LangGraph 使用按命名空间组织的 JSON 存储。

4. 上下文管理 (Context Management)

这是许多智能体容易暗中翻车的地方。核心问题在于上下文腐烂:当关键信息处于窗口中间位置时,模型表现会下降 30% 以上(这就是斯坦福大学发现的“迷失在中间”现象)。

生产环境的应对策略包括: *   压缩 (Compaction):在接近限制时总结对话历史(丢弃冗余的工具输出)。 *   观察掩码 (Observation masking):隐藏旧的工具输出,但保留工具调用的记录。 *   即时检索 (Just-in-time retrieval):只保留轻量级标识符,动态加载数据。 *   子智能体委托:让每个子智能体进行深度探索,但仅返回 1000-2000 Token 的浓缩摘要。

5. 提示词构建 (Prompt Construction)

这决定了模型在每一步具体能看到什么。它是层级化的:系统提示词、工具定义、记忆文件、对话历史,以及当前的用户消息。 OpenAI 的 Codex 使用严格的优先级栈:服务器控制的系统消息(最高优先级)-> 工具定义 -> 开发者指令 -> 用户指令 -> 对话历史。

6. 输出解析 (Output Parsing)

现代 Harness 依赖于原生工具调用,即模型返回结构化的 tool_calls 对象,而不是需要费力解析的自由文本。 对于结构化输出, OpenAI 和 LangChain 都支持通过 Pydantic 模型进行模式约束。

7. 状态管理 (State Management)

LangGraph 将状态模拟为在图形节点中流动的类型化字典。系统会在关键步骤进行“存档”( Checkpointing ),这样即使中断也能恢复,甚至可以进行“时间旅行”式的调试。 Claude Code 采用了不同的思路:将 Git 提交作为存档点,将进度文件作为结构化的草稿纸。

8. 错误处理 (Error Handling)

为什么这很重要?一个包含 10 个步骤的过程,即使每一步的成功率高达 99%,最终全流程的成功率也只有约 90.4%。错误是会滚雪球的。

LangGraph 将错误分为四类: *   临时性的(带延迟的重试)。 *   模型可恢复的(将错误返回给模型,让它自己调整)。 *   用户可修复的(暂停等待人类干预)。 *   意外错误(上报调试)。

9. 护栏与安全 (Guardrails and Safety)

OpenAI 的 SDK 实现了三个层级:输入护栏、输出护栏以及工具护栏。一旦触发“绊网”机制,智能体将立即停止。 Anthropic 在架构上将“权限执行”与“模型推理”分离。模型决定想做什么,但 Harness 决定允许做什么

10. 验证循环 (Verification Loops)

这是区分“玩具演示”和“生产级智能体”的关键。 Anthropic 推荐三种方法:基于规则的反馈(测试)、视觉反馈( UI 截图)以及以大语言模型为裁判( LLM-as-judge )。 让模型能够验证自己的工作,能让产出质量提升 2 到 3 倍

11. 子智能体编排 (Subagent Orchestration)

Claude Code 支持三种模式:克隆( Fork )、队友( Teammate )和工作树( Worktree )。 OpenAI 则支持将智能体作为工具(专家处理特定子任务)或移交(专家接管后续控制权)。

12. 组件如何协同工作?

1.提示词组装: Harness 构建完整的输入信息。
2.模型推理:发送给模型,生成 Token 或工具调用请求。
3.输出分类:有工具调用?进入执行阶段。没有?循环结束。
4.工具执行: Harness 校验参数、在沙箱中运行并捕获结果。
5.结果打包:将结果格式化为模型可读的消息。
6.上下文更新:追加历史,必要时触发压缩。
7.循环:返回第一步,直到满足退出条件。

目前主流的 Harness 框架各有千秋: *   Anthropic (Claude Agent SDK):通过 query() 暴露,“笨循环”,智慧全在模型里。 *   OpenAI (Agents SDK):“代码优先”策略,工作流逻辑直接用 Python 表达。 *   LangGraph:显式的状态图,强调对流程的精细控制。 *   CrewAI:基于角色的多智能体协作。 *   AutoGen:支持多种编排模式,如群聊、移交等。

“脚手架”这个比喻并非装饰,而是极其精准的。建筑脚手架是临时性的基础设施,让工人们能触及原本够不到的高度。脚手架本身不盖房子,但没有它,工人就上不去高层。

关键洞察在于:房子盖好后,脚手架是要拆除的 随着模型能力的提升, Harness 的复杂程度应该逐渐降低。这就是协同进化原则:现在的模型在训练时,就已经考虑了 Harness 的存在。如果你的 Harness 设计得好,当模型升级时,你不需要增加复杂度,性能就会自动提升。

写在最后

Harness 不是一个已经解决的问题,它是硬核工程能力的体现。 下次当你的智能体表现不佳时,别光顾着抱怨模型,去检查一下你的 Harness 吧。