深度“解剖”AI Agent Harness

Akshay Pachaar 2026年5月25日 07:00

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

楔子

在这个 OceanBase 社区公众号上,兹拉坦向来没有把一份儿外文资料翻译成中文后直接发布的习惯。因为我们希望每篇文章都是在自己阅读之后,把理解的东西提炼出来分享给大家。但今天的这篇文章,是个特例。

Akshay Pachaar 前段儿时间,在推特上发了一篇长文《The Anatomy of an Agent Harness》,系统地拆解了 Anthropic、OpenAI、LangChain 等公司的 Agent Harness 架构设计。这篇文章也是截至目前为止,兹拉坦读到过的,讲 Harness 最为清晰和全面的。而且这篇文章现在已经有 139 万的阅读量了。

Akshay Pachaar 推特长文《The Anatomy of an Agent Harness》

原推文 139 万阅读量数据展示

也欢迎大家关注 OceanBase 社区公众号 “老纪的技术唠嗑局”。

正文开始

这篇文章聊的是 Anthropic、OpenAI 和 LangChain 他们究竟在造什么。让我们一起来看看——编排循环、工具、记忆、上下文管理,以及那些把“无状态”大语言模型变成全能智能体的底层机制。

你可能已经搭过聊天机器人,甚至用几个工具撸了一个 ReAct 循环。Demo 跑起来一切美好,但一上生产环境就原形毕露:模型转头就忘了三步前干过啥,工具调用悄无声息地挂掉,上下文窗口里塞满了没用的垃圾。

问题不在模型,在模型外面那一圈基础设施。

LangChain 用事实说了话:模型没换,参数没动,光改了外面那层架构,就在 TerminalBench 2.0 上从 30 名开外一路杀到第 5。还有一项研究让大模型自己去优化这套架构,结果通过率干到了 76.4%,比人类精心设计的系统还猛。现在,这套基础设施有了个正式名字:AI Agent Harness

什么是 Agent Harness?

Harness 这个词虽然 2026 年初才正式叫开,但背后的理念早就有了。Harness 就是套在大模型外面的那一整套软件架构:编排循环、工具、记忆、上下文管理、状态持久化、错误处理、护栏……全算。

Anthropic 在 Claude Code 文档里说得很直白:SDK 就是“驱动 Claude Code 的 Agent Harness”。OpenAI 的 Codex 团队也是一个意思。LangChain 的 Vivek Trivedy 给出的定义:“如果你不是模型本身,那你就是 Harness。” 简单粗暴。

很多人分不清这俩概念:“AI 智能体”(Agent)是你看到的那个表现;“Harness” 是幕后那台机器。当有人说“我做了一个智能体”,其实他是说“我搭了一套 Harness,然后把模型接上去了”。

AI 智能体与幕后 Harness 关系图解

Beren Millidge 打了个特别到位的比方:裸奔的大模型就是一颗没有内存、没有硬盘、也没有输入输出的 CPU。上下文窗口是内存,外部数据库是硬盘,工具集成是设备驱动。而Harness,就是操作系统。“我们重新发明了冯·诺依曼架构”。

大模型类比冯·诺依曼架构的操作系统图解

工程化的三个层次

  • 提示词工程:把喂给模型的指令写好。
  • 上下文工程:管好模型在什么时候能看到什么。
  • Harness 工程:前两者全包,再加上整个应用架构——工具编排、状态持久化、错误恢复、验证循环、安全执行、生命周期管理。

Harness 可不是什么提示词套壳(AI Wrapper),它是让智能体真正能自主行动的完整系统。

提示词工程、上下文工程与 Harness 工程三层次对比

生产级 Harness 的 12 个核心组件

综合 Anthropic、OpenAI、LangChain 和一线从业者的经验,生产级 Harness 由 12 个核心组件构成。

生产级 Harness 的 12 个核心组件全景图

1. 编排循环 (The Orchestration Loop)

“思考 - 行动 - 观察”(TAO)循环:拼提示词 → 调大模型 → 解析输出 → 执行工具调用 → 喂回结果 → 再来,直到任务完成。代码层面就是一个 while 循环。Anthropic 管自家运行时叫“笨循环”。

思考-行动-观察 TAO 编排循环流程图

2. 工具 (Tools)

工具是智能体的“手”。Claude Code 提供了六大类工具:文件操作、搜索、执行、网页访问、代码分析和子智能体创建。OpenAI 的 Agents SDK 支持函数工具、托管工具以及 MCP 服务器工具。

3. 记忆 (Memory)

短期记忆就是一次会话里的对话历史。长期记忆跨会话存在:Anthropic 用 MEMORY.md,LangGraph 用 JSON 存储,OpenAI 用 SQLite 或 Redis。Claude Code 搞了三层记忆架构。重要原则:智能体把自己的记忆当“提示”看,行动前必须拿实际状态验证

4. 上下文管理 (Context Management)

这是很多智能体悄悄翻车的重灾区。上下文腐烂:关键信息一旦落到窗口中间位置,模型表现就会掉 30% 以上——斯坦福管这叫“迷失在中间”。

上下文腐烂与迷失在中间问题示意图

生产环境应对策略:压缩(Compaction)、观察掩码(Observation Masking)、即时检索(Just-in-time Retrieval)、子智能体委托。

5. 提示词构建 (Prompt Construction)

分层的:系统提示词、工具定义、记忆文件、对话历史,最后是当前用户消息。

6. 输出解析 (Output Parsing)

现代 Harness 用原生工具调用:模型直接返回结构化的 tool_calls 对象。

7. 状态管理 (State Management)

LangGraph 把状态建模成类型化字典,关键步骤自动存档。Claude Code 拿 Git 提交当存档点。

8. 错误处理 (Error Handling)

10 个步骤,每步 99% 成功率,全流程成功率只剩 90.4%。LangGraph 分四类错误处理。

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

OpenAI 搞三层防线。Anthropic 把“权限执行”和“模型推理”拆开——模型决定想干什么,Harness 决定让不让干。

Harness 护栏与安全多层防线架构图

10. 验证循环 (Verification Loops)

“能 Demo”和“能上线”的分水岭。Claude Code 创造者 Boris Cherny 说过,让模型验证自己的活儿,产出质量能翻 2~3 倍。

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

Claude Code 支持三种玩法:克隆(Fork)、队友(Teammate)、工作树(Worktree)。

循环运作:步进式演练

零件认全了,看看它们在一次循环里是怎么配合干活的。

Harness 七步循环步进式演练流程图

七步循环:提示词组装 → 模型推理 → 输出分类 → 工具执行 → 结果打包 → 上下文更新 → 循环。

退出条件:模型给出无工具调用回复、达到最大轮次、Token 预算用完、护栏触发、用户中断。Anthropic 还开发了“Ralph 循环”两阶段方案用于跨窗口长任务。

现实中的框架是怎么落地的

Anthropic、OpenAI、LangGraph 等框架落地对比图

  • Anthropic(Claude Agent SDK)query() 函数暴露 Harness,运行时“笨循环”
  • OpenAI(Agents SDK):代码优先路线,Codex Harness 分三层
  • LangGraph:显式状态图,两个节点加条件边
  • CrewAI:基于角色的多智能体协作
  • AutoGen:微软出品,五种编排模式

“脚手架” (The Scaffolding Metaphor)

Harness 脚手架隐喻与协同进化原则配图

协同进化原则:现在的模型在训练时,就已经把 Harness 考虑在内了。检验标准:换更强模型,性能提升而不需要增加 Harness 复杂度。

定义 Harness 的 7 个关键决策

定义 Harness 的 7 个关键决策概览图

  1. 单智能体 vs. 多智能体:先把单智能体潜力榨干
  2. ReAct vs. 先规划后执行:LLMCompiler 比顺序 ReAct 快 3.6 倍
  3. 上下文管理策略:优先保留推理过程,减少 26~54% Token 消耗
  4. 验证循环设计:引导(前馈)+ 传感器(反馈)
  5. 权限与安全架构:宽松还是严格取决于场景
  6. 工具范围管理:Vercel 砍掉 80% 工具反而更好
  7. Harness 的厚度:多少逻辑写死,多少留给模型

Harness 即产品

两个同模型智能体性能天差地别——差就差在 Harness 上。TerminalBench 证明光换 Harness 排名能蹿 20 多位。Harness 永远不会消失。即便是最强的模型,也需要 Harness 帮它管窗口、跑代码、存状态、验结果。

Harness 即产品:同模型不同 Harness 性能差异

小编评注

因为 Agent 时代会产生大量高频、半结构化、带上下文、需要回放和比较的过程性数据。

现在有一个非常“刺眼”的问题:通用 Agent 把运行时数据落到 JSONL / Markdown / SQLite 等外围文件中。很多公司被 Postgres + pgvector + Redis + ClickHouse + LangSmith + JSONL 的运维成本搞疯了。

Agent 运行时数据散落多组件的运维困境配图

LangChain 为 LangSmith 自研了 SmithDB。详见:LangChain “不务正业”,居然从零造了个数据库?

LangChain 自研 SmithDB 相关文章封面

Agent 的 context、execution history、task、observability 与 footprint,应该直接沉淀到数据库中。

Agent 过程性数据沉淀到数据库的架构示意图

What’s more?

5 月 30 日,OceanBase × LangChain Meetup 上会重磅发布 AgentSeek。

OceanBase × LangChain Meetup 发布 AgentSeek 预告

AgentSeek 拥有 OB4AI + SeekVFS + SeekContext,可以把 context / trace / tool I/O / footprint 作为数据库原生对象承接。

点击下方图片,查看活动详情:

5 月 30 日上海 Meetup 活动详情海报

时间:5 月 30 日;地点:上海市浦东新区张江科学之门 T1 (模力·源) 35 楼

原文链接:《The Anatomy of an Agent Harness》: https://x.com/akshay_pachaar/status/2041146899319971922