Practitioners 视角梳理现代 Agent 栈的三层边界:循环控制、状态管理、工具调用、权限控制、错误恢复在各层的归属与重叠,并附验证来源。
Harness、framework 和 MCP 在 AI 智能体架构讨论中常被混用,但它们并非同一事物。它们处于不同层级,承担不同职责,边缘地带也在日益重叠。本文用一个问题来区分这三者:哪个层级掌控执行循环、状态管理、工具传输、权限控制和故障恢复?
Harness 是执行系统,它包装一个模型并将其转化为可工作的 AI 智能体。OpenAI 在 2026 年 8 月 19 日发布的 Codex 平台文章中直接给出了定义。Harness 管理对话状态、流式执行并使用工具。它还强制执行沙箱和审批策略,并在多次交互间携带工作上下文。Anthropic 的 Claude Code 文档将同类事物称为 agentic harness(AI 智能体 harness)。Claude Agent SDK 暴露了"驱动 Claude Code 的同类工具、AI 智能体循环和上下文管理功能"。Harness 是有主见的。它将循环、权限模型、沙箱和上下文策略作为整体一并交付。
Framework 是用于组合 AI 智能体的基础原语库。它涵盖模型客户端、工具抽象、图编排、记忆接口和可观测性钩子。典型例子包括 LangGraph、OpenAI Agents SDK,以及 2026 年 4 月达到 1.0 GA 的 Microsoft Agent Framework。Framework 提供的是零件和循环骨架,策略由你决定。
Model Context Protocol 是一种线协议(wire protocol),而非运行时。它标准化了 LLM 应用(宿主)如何发现和调用服务器暴露的能力:工具、资源和 prompts。MCP 在宿主、客户端和服务器之间使用 JSON-RPC 2.0 消息。自 2025 年 12 月起,Linux Foundation 的 Agentic AI Foundation 负责管理它,同时管理的还有 goose、AGENTS.md 以及新近的 A2A。MCP 不掌控任何循环,也不掌控 AI 智能体状态。它只掌控 AI 智能体与其工具之间的契约。
下表将每项职责映射到默认拥有它的层级。"拥有"意味着该层级定义并强制执行该行为。"暴露"意味着该层级提供一个钩子但不决定策略。
| 职责 | Agent harness | Agent framework | MCP |
|---|---|---|---|
| 执行循环 | 拥有:固定的产品级循环,含轮次限制和压缩。 | 拥有骨架:你配置终止条件、交接和轮次上限。 | 无:仅请求/响应。 |
| AI 智能体状态和记忆 | 拥有:会话、恢复、分叉、文件检查点。 | 暴露:检查点器、会话存储、线程 ID。 | 自 2026-07-28 起协议层面无状态。 |
| 工具传输 | 消费:内置工具 + MCP 客户端。 | 消费:函数工具 + MCP 客户端。 | 拥有:基于 stdio 或 Streamable HTTP 的 JSON-RPC。 |
| 权限和审批 | 拥有:权限模式、钩子、沙箱。 | 暴露:护栏、中断、中间件。 | 委托给宿主:无法强制执行。 |
| 恢复 | 拥有:会话恢复、检查点回滚、压缩。 | 暴露:持久执行、重放、重试。 | 部分:Tasks 扩展支持长时调用。 |
| 隔离和沙箱 | 拥有:OS 沙箱、worktrees、容器。 | 可选:托管沙箱或 micro-VM。 | 无。 |
| 多智能体编排 | 拥有模式:子智能体、动态工作流。 | 拥有原语:图、交接、扇出。 | 无:A2A 覆盖智能体间通信。 |
本文其余部分将引用来源为每一行提供支撑。
每个 AI 智能体都运行一个循环:将上下文发送给模型、读取响应、执行工具调用、将结果反馈、重复。Harness 和 framework 都实现了这个循环,但你对它的控制程度不同。
Harness 循环:Claude Agent SDK 将其循环文档化为 5 个步骤:接收提示词、评估并响应、执行工具、重复、返回结果。每个完整周期为 1 轮,循环在 Claude 生成不含工具调用的响应时结束。钩子可以在工具调用运行前拦截、修改或阻止它。循环本身不属于你,无法重写。OpenAI 的 Codex harness 通过 app-server(一个已文档化的客户端协议)暴露循环。应用程序创建线程、启动轮次、接收事件并处理审批请求。
Framework 循环:OpenAI Agents SDK 的循环在产生最终输出时终止。它在交接时重新运行,或执行工具调用并继续。超出 max_turns 会引发 MaxTurnsExceeded,护栏触发会引发 GuardrailTripwireTriggered。在 LangGraph 中,循环取决于你绘制的图。节点、边和条件路由定义控制流。
MCP:MCP 没有循环。自 2026-07-28 规范以来,它甚至没有握手。initialize/initialized 交换和 Mcp-Session-Id 请求头已被弃用。每条请求独立传输,_meta 中携带协议版本和客户端能力。宿主的循环决定何时调用工具/MCP 只定义了在线路上该调用长什么样。
状态存在于 Harness 中,跨会话持久化。Claude Agent SDK 支持后续恢复或分叉的会话。文件检查点将文件恢复到任意先前状态。Microsoft 的 Harness 层提供了 FileMemoryProvider,用于会话范围的笔记和自动上下文压缩——它在循环中途监控 token 使用量。Anthropic 的长时运行 Harness 工作更进一步。它通过磁盘上的 artifacts 在上下文窗口之间传递状态。每个新会话开始时都没有上一个会话的记忆。
Framework 暴露状态原语但不决定持久化策略。LangGraph 的持久执行需要你附加一个检查点器并传入线程 ID。它提供 3 种持久化模式:"exit" 仅在图退出时持久化,"async" 在下一步运行时写入,"sync" 在每步之前写入。选错了,运行时崩溃就会丢失状态。OpenAI Agents SDK 提供 Sessions 用于自动对话历史,支持 SQLite、SQLAlchemy 和加密后端。
2026-07-28 版本使协议核心无状态。维护者的指导很明确:如果服务器需要跨调用的状态,就从工具中获取一个 handle,模型将其作为参数传回。状态是 AI 智能体的问题,不是协议的问题。
这是 MCP 唯一完全拥有的一行。
MCP 定义了 3 种服务器端原语:tools(模型执行的函数)、resources(上下文和数据)、prompts(模板化工作流)。客户端可以提供 elicitation,允许服务器向用户请求更多输入。传输层是基于 stdio 或 Streamable HTTP 的 JSON-RPC 2.0。2026-07-28 修订版使 Mcp-Method 和 Mcp-Name 请求头在 HTTP 请求上成为强制要求。网关和限流器现在可以无需解析 body 即可根据请求头路由。它还使 tools/list 响应可以带 ttlMs 和 cacheScope 被缓存,并废弃了遗留的 HTTP+SSE 传输,给了 12 个月的过渡期。
服务器发起的 sampling、roots 和 logging 现已废弃。替代方案是多轮请求(Multi Round-Trip Requests,MRTR)。服务器返回 resultType: "input_required",客户端用附加的答案重试原始调用。这对下面的权限行很重要。
Harness 和 framework 都作为客户端位于 MCP 之上。Claude Code 和 Claude Agent SDK 连接 MCP 服务器,也允许你通过进程内 MCP 服务器定义自定义工具。Codex 连接 MCP 服务器,OpenAI 的 Relay 示例将 Codex 与由应用托管的 MCP 工具驱动的仪表板并置。Microsoft Agent Framework 1.0 附带 MCP 和 A2A 支持。协议是共享的底层。采用数据印证了这一点。MCP 维护者报告,Tier 1 SDK 每月下载量近 5 亿次。TypeScript 和 Python SDK 各自的总下载量已超过 10 亿次。
MCP 规范在这里毫不含糊。宿主在调用任何工具前必须获得用户明确同意。工具描述和注解应被视为不可信的,除非服务器是可信的。然后是关键一句:"MCP 本身无法在协议层面强制执行这些安全原则"。权限属于宿主。
Harness:Harness 端到端拥有权限模型。Claude Code 附带 6 种权限模式:default、acceptEdits、plan、auto、dontAsk 和 bypassPermissions。Deny 规则在除 bypassPermissions 外的所有模式中都会阻止(该模式完全跳过权限层)。auto 模式将每个工具调用路由到后台分类器。钩子在 PreToolUse 和 PermissionRequest 注入点添加自定义逻辑。Codex 采取同样形态。app-server 可以暂停一轮并发出审批请求,客户端必须回答后才能继续工作。
Framework:Framework 给你的是钩子,不是策略。OpenAI Agents SDK 有输入、输出和工具护栏,一个触发器会中止运行。LangGraph 在节点内使用 interrupt() 暂停等待审批,用 Command(resume=...) 继续。Microsoft Agent Framework 添加了带"不再询问"规则的 ToolApprovalAgent 中间件。每种情况都是你写审批逻辑和 UI。
MCP:MCP 现在通过 MRTR 上的 elicitation 跨线路携带审批请求。例如,Supabase 计划用它让工具在执行前确认成本或破坏性查询。服务器可以问,但只有宿主能决定。
恢复能力是 Harness 发挥价值的关键所在。Claude Agent SDK 可以恢复会话并将文件变更回滚到检查点。它会在上下文窗口填满时压缩上下文。Claude Code 的动态工作流在终端关闭后可以从中断处继续。Anthropic 在 2026 年 3 月发布的 Harness 设计文章中,将生成器与评估器智能体分离,因为自我评分的工作结果会偏高。OpenAI 2026 年 2 月发布的 Harness 文章报告了这一策略的效果。Codex 在 5 个月内产生了约 1500 个合并的 Pull Request。代码仓库达到约 100 万行。团队从 3 名工程师扩大到 7 名,平均每位工程师每天 3.5 个 PR。OpenAI 还报告了 Harness 对 ARC-AGI-3 的影响。保留推理能力和上下文压缩使 GPT-5.6 Sol 从 13.3% 提升到 38.3%,同时将输出 token 数量削减了六倍。同一个模型,不同的 Harness,不同的分数。
LangGraph 的持久执行明确指出恢复依赖于确定性。将副作用包装在任务中,保持节点的幂等性,运行时可以在一周后恢复。OpenAI Agents SDK 暴露了 error_handlers,并在运行失败时保留已完成的护栏结果。框架负责重放。你来确保重放是安全的。
MCP 对长时间工作的答案是由 AWS 贡献的 io.modelcontextprotocol/tasks 扩展,包含基于轮询的 tasks/get 和 tasks/update。这覆盖了单个长时间的工具调用,但不涵盖智能体级别的恢复。
+------------------------------------------+
Application | Your product: UI, records, business |
| rules, consent flows |
+------------------------------------------+
| |
v v
Runtime layer +----------------+ +-----------------------+
(pick one, or | AGENT HARNESS | | AGENT FRAMEWORK |
combine) | fixed loop | | composable loop |
| sessions | | checkpointers |
| permissions | | guardrails/interrupt |
| sandbox | | graphs, handoffs |
| compaction | | middleware, tracing |
+----------------+ +-----------------------+
| |
+----------+----------+
v
Transport layer +------------------------------------------+
| MCP (JSON-RPC 2.0, stdio / Streamable |
| HTTP): tools, resources, prompts, |
| elicitation, Tasks extension |
+------------------------------------------+
|
v
Capability layer +------------------------------------------+
| MCP servers: GitHub, Figma, Supabase, |
| Sentry, Linear, internal APIs |
+------------------------------------------+
OpenAI 为 Relay 绘制了一幅几乎相同的图。应用程序拥有产品上下文、业务规则和工具。Codex app-server 提供智能体循环和沙箱执行。
边界在三个方向上正在模糊:
框架正在吸收 Harness:Microsoft Agent Framework 现在附带一个"Agent Harness"层。只需一个方法调用就能将任何聊天客户端转变为完整的 Harness。它包含上下文压缩、文件内存、待办事项提供程序以及计划与执行模式。它还添加了后台子智能体和沙箱化 shell 执行器。Microsoft 将 Harness 描述为"模型推理与真实执行相遇的层"。框架供应商承认原始原语是不够的。
Harness 正在成为平台:OpenAI 开源了 Codex Harness,现在提供 3 个集成层级。codex exec 运行有边界的作业,Codex SDK 提供编程控制,app-server 将循环嵌入到产品中。Anthropic 的 Claude Agent SDK 为 Claude Code 做了同样的事情。DeepSeek 于 2026 年 8 月 13 日在 MIT 许可证下发布了 DeepSeek Harness v0.1。其前提是每个组件(包括循环)都是一个插件。一旦 Harness 成为一个具有文档化协议的库,它就与框架形成了竞争。
MCP 正在增加智能体形态的功能:Elicitation、MRTR、Tasks 扩展、Skills over MCP 和 MCP Apps 都在将协议向外推。这些是曾经存在于运行时的交互模式。不过维护者已经划定了界限。Roots、sampling 和 logging 已弃用,核心现在是 request/response。MCP 正在标准化接口,而不是成为智能体本身。
一个不重叠的术语:A2A。智能体间通信是一个单独的协议,现在也设在 Agentic AI Foundation。MCP 连接智能体与工具。A2A 连接智能体与其他智能体。
这个决定归结为三个问题:
你想要拥有循环吗? 如果你需要自定义控制流或可以逐节点测试的图,从框架开始。LangGraph、OpenAI Agents SDK 和 Microsoft Agent Framework 都能让你塑造循环。准备好自己编写权限策略、持久化策略和沙箱。
你想要一个内置权限和恢复能力的成熟循环吗? 当任务类似于编码、运维或研究时,Harness 能让你更快地推进。Claude Agent SDK 和 Codex app-server 将会话、审批、沙箱和压缩作为默认配置提供。你用循环控制权换取生产级的行为。OpenAI 自己的数据显示,在同一模型上,Harness 设计可以将基准分数提升 25 分。
智能体需要哪些工具? 无论上层的选择是什么,用 MCP 来回答。每个 Harness 和每个主要框架都支持它。2026-07-28 的无状态核心意味着远程 MCP 服务器现在是负载均衡器后面的普通 HTTP 工作负载。一次构建工具表面,在多个运行时中复用。
2026 年下半年常见的生产形态是混合架构。框架编排外层图谱。Harness 在自己的沙箱中运行每个重操作步骤。MCP 承载每个工具调用。这些类别是层级,不是对手。
Harness 作为 一个固执己见的单元拥有循环、状态、权限和恢复。
框架暴露相同的钩子,但将策略、持久化和沙箱留给你。
MCP 只拥有工具传输,并声明它无法在协议层面强制执行同意。
框架现在附带了 Harness 层,Harness 现在附带了 SDK,所以边界正在收敛。
按层组装:框架或 Harness 用于循环,MCP 用于每个工具调用。
Model Context Protocol, Specification 2026-07-28
MCP Blog, The 2026-07-28 Specification (July 28, 2026)
MCP Blog, The New MCP Roadmap (August 22, 2026)
Linux Foundation, Formation of the Agentic AI Foundation (December 9, 2025)
Linux Foundation, AAIF launches MCPA certification (September 2026)
OpenAI, Harness engineering: leveraging Codex in an agent-first world (February 11, 2026)
OpenAI Developers, Codex as a platform: build on the open agent harness (August 19, 2026)
OpenAI, Codex app-server and Codex SDK docs
OpenAI Agents SDK, Running agents, Guardrails, Sessions
Anthropic, Claude Agent SDK overview, How the agent loop works, Hooks, Sessions, File checkpointing
Anthropic, Claude Code permission modes
Anthropic Engineering, Effective harnesses for long-running agents (November 2025)
Anthropic Engineering, Harness design for long-running application development (March 24, 2026)
Anthropic Engineering, Code execution with MCP (November 4, 2025)
Claude Blog, A harness for every task: dynamic workflows in Claude Code (June 2, 2026)
Microsoft, Microsoft Agent Framework Version 1.0 (April 2026)
Microsoft, Microsoft Agent Framework at BUILD 2026: Agent Harness, Hosted Agents, CodeAct (June 3, 2026)
LangChain, LangGraph durable execution and Interrupts
DeepSeek, DeepSeek Harness (August 13, 2026)