Agentic Harness - Architecture
Anthropic
Agentic Harness: LLM to Coding Agent
- Claude Code serves as the agentic harness around Claude
- It provides the tools, context management, and execution environment that turn a language model into a capable coding agent.
增强模型能力
模型本身只会生成文本,Harness 赋予了模型各种能力:读文件、写代码、搜索代码库、在终端执行命令
业界对 Agentic Harness 的核心共识
| 组件 | 职责 |
|---|---|
| Agent Harness | 包裹 LLM 的运行时基础设施,管理工具调度、上下文工程、安全执行、状态持久化和会话连续性 |
| LLM | 只负责推理决策 |
Harness 组件
Model 本身只是一个推理引擎,不能独立行动,Model 要变成 Agent,需要五个 Harness 组件
Tools
模型的手脚
- Read、Write、Edit、Bash、Grep 等工具赋予模型与文件系统、终端、网络交互的能力
- 如果没有工具,模型只能推理,不能执行
Context
模型的记忆加载器
- 上下文:CLAUDE.md、系统提示词、对话历史、工具定义
- 上下文在每一轮循环中被注入模型,决定模型能看到什么、知道什么
- 上下文管理:不仅是被动的信息传递,还包括主动的压缩和重注入策略
Memory
模型的长期存储
- 跨会话的记忆持久化 - 模型能记住用户偏好、项目规则以及历史决策等
- 记忆分类 - 显式 or 隐式
CLAUDE.md是显式记忆- 自动记忆
~/.claude/memory/是隐式记忆
- 如果没有记忆,每次对话都是从零开始
Hooks
模型的神经反射
- 事件驱动的自动化机制,在工具执行前后触发自定义逻辑
- 每次保存文件前自动格式化
- 每次提交前自动运行 lint
- 不需要模型主动决策,行为自动发生
Permissions
模型的安全围栏
- 哪些工具可以自由使用、哪些需要人工审批、哪些完全禁止
- 权限系统是 Harness 的安全底线
- 解决的核心矛盾:希望 Agent 足够自主以提高效率,但又不希望自主到失控
逻辑架构
- 模型不直接接触外部世界,所有交互都通过 Harness 组件中转
- Harness 是模型和现实之间的唯一接口
- 5 个 Harness 组件也不是孤立的 - 协调运转
- Tools 的执行结果变成 Context 的一部分
- Hooks 在 Tools 执行前后触发
- Permissions 决定哪些 Tools 可以被调用
- Memory 用于跨会话保留 Context 中的关键信息
核心能力
Agentic Loop
Harness 的心脏
如果 Harness 是一台机器,Agentic Loop 是 Harness 的发动机,整个 Claude Code 的运转,本质是一个循环
模型并不是一次性给出最终答案的,在步骤 2 和步骤 4 之间循环 – 一个复杂任务可能跑几十轮循环
| 循环结束条件 | 描述 |
|---|---|
| 模型主动停止 | Claude 模型认为任务完成、生成纯文本回复,不再请求工具调用,API 返回:stop_reason: "end_turn" |
| 达到最大轮次 | Harness 设置了 --max-turns 限制,防止无限循环 |
修复 Bug 过程:反复观察、假设、验证,这种过程无法预先编程,而是 Agentic Loop 的循环结构涌现出来的
内置工具
Harness 的手脚,如果 Agentic Loop 是发动机,而 Tools 就是车轮,Claude Code 提供了多个工具,覆盖软件工程的 5 个原子操作
| 原子操作 | 对应工具 | 说明 |
|---|---|---|
| 读 | Read、Glob、Grep | 读文件内容、按模式找文件、按内容搜索 |
| 写 | Write、Edit | 创建新文件、精确替换现有文件片段 |
| 执行 | Bash | 运行任意 Shell 命令 |
| 联网 | WebFetch、WebSearch | 抓取网页、搜索互联网 |
| 编排 | Agent、TodoWrite、Skill | 委派子代理、管理任务列表、触发技能 |
- 工具设计背后有一个深刻的哲学 - 少而精 - 也是 Linux 设计哲学 - Keep It Simple, Stupid
- Claude Code 没有内置的重构工具、测试工具、部署工具,而是只提供了最基础的原语
- 重构 - Read + Edit + Bash 的组合涌现
- 测试 - Bash + Read 的组合涌现
- 部署 - Bash
- 计算机只需要几条指令就能图灵完备
- Harness 不需要为每个场景构造一个工具,只需要确保**基础工具的组合空间**足够大即可
- Bash 工具是一个图灵完备的逃逸舱
- 通过 Bash,Claude 可以执行任何 Shell 命令,即 Claude Code 的能力上限,理论上等于操作系统的能力上限
- 因此,Harness 需要权限控制
上下文管理
在讨论 Agent 框架时,容易只关注工具和循环,而 Harness 最精巧的部分,其实是上下文管理
- Claude 的上下文窗口是有限的 - 200K tokens
- 一个真实的编码任务,产生的历史对话会迅速膨胀,容易撑爆上下文窗口
Claude Code 的解决方案是自动压缩,当对话历史接近上下文窗口的 83% 时,Harness 会触发一次压缩操作
1 | 对话历史(166K tokens) |
- CLAUDE.md + 系统提示词 + 工具定义,在每次压缩后都会重新注入
- 即便对话历史被截断了,模型仍然知道项目的规则、有哪些工具可用、应该遵循什么约定等
上下文管理是 Harness 最容易被低估的能力
- 很多开源 Agent 框架只关心工具调用和循环,但在长任务上容易翻车,并非模型能力不行,而是 Agent 框架的上下文管理太粗糙
- 没有智能压缩
- 全部历史 - 导致模型注意力涣散
- 简单截断 - 模型忘记关键上下文
- Claude Code - 压缩 + 重注入
Claude Agent SDK
可编程的 Harness
- Claude Code CLI 本身不开源,但 Anthropic 在 2025 年发布了 Claude Agent SDK - 一套可编程的 Harness 接口
- 核心 Harness 代码以编译后的 npm 包分发,Claude Agent SDK 提供可编程的 Harness 接口
- Claude Agent SDK 提供了与 Claude Code CLI 完全相同的 Agentic Loop、内置工具、上下文管理、权限系统、Hooks、Sub-Agent 支持 和 MCP 集成
1 | from claude_agent_sdk import AgentClient |
商业策略 - 开放编排能力 + 锁定模型消费
- 开源 CLI 会侵蚀 Anthropic 的 API 调用收入,开源 CLI 后,任何人都可以接入其它模型
- Claude Agent SDK 的核心价值是绑定在 Claude 模型上,用 Claude Agent SDK 意味着用 Claude API
- Claude Agent SDK 开放编排能力,但锁定模型消费
第三方 Harness
- Claude Code - 模型 + Harness = 10 倍生产力
- OpenCode 是最成功的第三方 Harness
- 用 Client-Server 架构解决了 Claude Code 的单表面局限
- TUI、桌面 APP、IDE 插件、Slack 机器人共享同一个后端
- 2026 年 1 月,Anthropic 封堵了第三方工具通过消费者 OAuth Token 调用 Claude API 的通道 - 必须购买独立的 API Key
- 模型提供商希望控制 Harness 层,因为 Harness 决定了 API 调用量和用户体验
- 第三方 Harness 希望模型层是可替换的商品,建立独立的价值
Harness 生态
| Harness | 定位 | 模型绑定 | 开源 |
|---|---|---|---|
| Claude Code CLI | Anthropic 官方 CLI | 仅 Claude - GLM 等进行适配 | 否 |
| Claude Agent SDK | Anthropic 编程库 | 仅 Claude | 否(商业许可) |
| OpenCode | 第三方多模型 Agent | 多模型 | MIT |
| Cursor | IDE 内置 Agent | 多模型 | 否 |
| Windsurf | IDE 内置 Agent | 多模型 | 否 |
| Aider | 终端 Agent | 多模型 | Apache 2.0 |
2026
2025 - Agent,2026 - Agentic Harness
- 模型本身正在商品化 - Claude、GPT、Gemini、DeepSeek 的能力差距在缩小
- 同一模型在不同的 Harness 中的表现差距,远大于不同模型在同一个 Harness 中的差距 - Harness 比模型更重要
- Anthropic 收购了 Bun(JavaScript 运行时),用于加强 Claude Code 的基础设施
- 收购一个运行时来加强一个 Harness - Anthropic 将 Harness 视为战略级资产
- 理解 Harness 比理解模型更重要
- 模型能力由 Anthropic/OpenAI 决定,而 Harness 配置是可控的
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.














