本文将深入探讨 Anthropic、OpenAI、Perplexity 和 LangChain 究竟在开发什么。我们将聊聊编排循环、工具、记忆、上下文管理,以及那些将“无状态”的大语言模型(LLM)转变为全能智能体(Agent)的底层机制。
你可能已经开发过聊天机器人,甚至可能用一些工具搭建了一个 ReAct 循环
(ReAct:Reason + Act,一种让模型在行动前先进行推理的模式)
。跑 Demo 的时候看着挺好,但一旦投入生产环境,系统就会开始掉链子:模型会忘记三步前做了什么,工具调用悄悄报错,上下文窗口(Context Window)里塞满了毫无意义的垃圾信息。
问题其实并不在模型本身,而在模型外围的基础设施。
LangChain 证明了这一点:他们仅仅通过改变包裹大语言模型的底层架构——模型没变,参数没变——就让系统在 TerminalBench 2.0
(一个衡量 AI 智能体处理命令行任务能力的权威基准测试)
上的排名从 30 名开外飙升到了第 5 名。另一项研究则通过让大语言模型自己去优化这套架构,实现了 76.4% 的通过率,甚至超过了人类精心设计的系统。
现在,这套基础设施有了一个正式的名字:
AI 智能体 Harness

什么是 Agent Harness?
虽然这个术语在 2026 年初才正式确立,但其核心理念早已存在。
Harness
是包裹在大语言模型之外的完整软件架构:它包括编排循环、工具、记忆、上下文管理、状态持久化、错误处理和护栏(Guardrails)。Anthropic 在其 Claude Code 文档中直截了当地指出:SDK(软件开发工具包)就是“驱动 Claude Code 的智能体 Agent Harness”。OpenAI 的 Codex 团队也使用了同样的说法,明确将“智能体”和“Harness”等同,指代那些让大语言模型真正发挥作用的非模型架构。
我非常喜欢 LangChain 的 Vivek Trivedy 给出的定义公式:
“如果你不是模型本身,那你就是 Harness。”
这里有一个经常让人搞混的区别:
“AI 智能体”
(Agent)是用户感知到的行为体现,它是一个有目标、会用工具、能自我纠错的实体;而
“Harness”
则是产生这种行为的背后机器。当有人说“我开发了一个智能体”时,他真正的意思是“我开发了一套 Harness,并把它接入了模型”。
Beren Millidge 在其 2023 年的博文中做了一个精准的类比:原生大语言模型就像一个没有内存、没有硬盘、也没有输入输出设备的 CPU。此时,
上下文窗口
充当了内存(快但容量有限),
外部数据库
扮演了硬盘(大但速度慢),
工具集成
则是设备驱动程序。而
Harness
,就是那个操作系统。正如 Millidge 所写:“我们重新发明了冯·诺依曼架构(Von Neumann architecture)”,因为这是任何计算系统最自然的抽象方式。
工程化的三个层次
围绕模型,工程化可以分为三个同心圆层次:
提示词工程 (Prompt engineering)
:精心设计模型接收到的指令。
上下文工程 (Context engineering)
:管理模型在什么时间点能看到什么内容。
Harness 工程 (Harness engineering)
:涵盖了上述两者,再加上整个应用架构:包括工具编排、状态持久化、错误恢复、验证循环、安全执行以及生命周期管理。
Harness 不仅仅是一个包裹提示词的套壳(AI Wrapper),它是让智能体能够自主行动的完整系统。
生产级 Harness 的 12 个核心组件
综合 Anthropic、OpenAI、LangChain 以及广大从业者的实践经验,一个生产级的智能体 Harness 由 12 个不同的组件构成。让我们逐一拆解。
1. 编排循环 (The Orchestration Loop)
这是系统的“心脏”。它实现了“思考 - 行动 - 观察”(Thought-Action-Observation,简称 TAO)循环,也被称为 ReAct 循环。这个循环不停运转:整合提示词 -> 调用大语言模型 -> 解析输出 -> 执行工具调用 -> 反馈结果 -> 重复,直到任务完成。
从技术实现上看,它通常只是一个
while
循环。但复杂的地方不在于循环本身,而在于循环所要处理的各种状态和逻辑。Anthropic 将他们的运行时描述为一个“笨循环”,所有的智慧都存在于模型之中,Harness 只负责管理回合的切换。
2. 工具 (Tools)
工具是智能体的“双手”。它们被定义为某种结构化模式(名称、描述、参数类型),并注入到模型的上下文中,让模型知道哪些工具可用。工具层负责注册、格式校验、参数提取、在
沙箱(Sandbox)
环境执行、结果捕获,并最终将结果格式化为模型可读的“观察结果”。
Claude Code 提供了六大类工具:文件操作、搜索、执行、网页访问、代码分析和子智能体创建。OpenAI 的 Agents SDK 则支持函数工具(通过
@function_tool
定义)、托管工具(如网页搜索、代码解释器、文件搜索)以及 MCP
(Model Context Protocol,一种开放的工具接入标准)
服务器工具。
3. 记忆 (Memory)
记忆在不同的时间尺度上运作。
短期记忆
是单次会话中的对话历史。
长期记忆
则跨越多个会话持久存在:Anthropic 使用项目文件和自动生成的
memory.md
文件;LangGraph 使用按命名空间组织的 JSON 存储;OpenAI 则支持由 SQLite 或 Redis 驱动的会话存储。
Claude Code 实现了三层记忆架构:一个轻量级索引(每条约 150 字符,始终加载)、按需调用的详细主题文件,以及仅通过搜索访问的原始对话记录。一个核心设计原则是:
智能体将自己的记忆视为一种“提示”,在行动前必须根据实际状态进行验证。
4. 上下文管理 (Context Management)
这是许多智能体容易暗中翻车的地方。核心问题在于
上下文腐烂
:当关键信息处于窗口中间位置时,模型表现会下降 30% 以上(这就是斯坦福大学发现的“迷失在中间”现象)。即便是支持百万级 Token
(Token:模型处理文本的最小单位,大致相当于单词或汉字的部分)
的窗口,随着上下文的增长,指令遵循能力也会退化。
生产环境的应对策略包括:
压缩 (Compaction)
:在接近限制时总结对话历史(Claude Code 会保留架构决策和未修复的 Bug,同时丢弃冗余的工具输出)。
观察掩码 (Observation masking)
:隐藏旧的工具输出,但保留工具调用的记录。
即时检索 (Just-in-time retrieval)
:只保留轻量级标识符,动态加载数据(Claude Code 倾向于使用
grep

head
命令,而不是加载整个文件)。
子智能体委托
:让每个子智能体进行深度探索,但仅返回 1000 到 2000 Token 的浓缩摘要。
Anth