Anthropic

Agentic Harness: LLM to Coding Agent

  1. Claude Code serves as the agentic harness around Claude
  2. It provides the tools, context management, and execution environment that turn a language model into a capable coding agent.

增强模型能力

模型本身只会生成文本Harness 赋予了模型各种能力:读文件、写代码、搜索代码库、在终端执行命令

5c73e5d6313819828d739eeb2bfca72b

业界对 Agentic Harness 的核心共识

组件 职责
Agent Harness 包裹 LLM运行时基础设施,管理工具调度上下文工程安全执行状态持久化会话连续性
LLM 只负责推理决策

9697d298c3132c33e94c6b2eac1e1eaf

Harness 组件

Model 本身只是一个推理引擎,不能独立行动,Model 要变成 Agent,需要五个 Harness 组件

Tools

模型的手脚

  1. Read、Write、Edit、Bash、Grep 等工具赋予模型与文件系统终端网络交互的能力
  2. 如果没有工具,模型只能推理不能执行

Context

模型的记忆加载器

  1. 上下文:CLAUDE.md系统提示词对话历史工具定义
  2. 上下文在每一轮循环中被注入模型,决定模型能看到什么、知道什么
  3. 上下文管理:不仅是被动的信息传递,还包括主动的压缩重注入策略

Memory

模型的长期存储

  1. 跨会话记忆持久化 - 模型能记住用户偏好项目规则以及历史决策
  2. 记忆分类 - 显式 or 隐式
    • CLAUDE.md显式记忆
    • 自动记忆 ~/.claude/memory/隐式记忆
  3. 如果没有记忆,每次对话都是从零开始

Hooks

模型的神经反射

  1. 事件驱动自动化机制,在工具执行前后触发自定义逻辑
    • 每次保存文件前自动格式化
    • 每次提交前自动运行 lint
  2. 不需要模型主动决策行为自动发生

Permissions

模型的安全围栏

  1. 哪些工具可以自由使用、哪些需要人工审批、哪些完全禁止
  2. 权限系统是 Harness 的安全底线
  3. 解决的核心矛盾:希望 Agent 足够自主提高效率,但又不希望自主到失控

逻辑架构

  1. 模型不直接接触外部世界,所有交互通过 Harness 组件中转
  2. Harness模型现实之间的唯一接口
  3. 5 个 Harness 组件也不是孤立的 - 协调运转
    • Tools 的执行结果变成 Context 的一部分
    • HooksTools 执行前后触发
    • Permissions 决定哪些 Tools 可以被调用
    • Memory 用于跨会话保留 Context 中的关键信息

image-20260403114527944

核心能力

Agentic Loop

Harness 的心脏

如果 Harness 是一台机器,Agentic Loop 是 Harness 的发动机,整个 Claude Code 的运转,本质是一个循环

image-20260403115302994

模型并不是一次性给出最终答案的,在步骤 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 抓取网页、搜索互联网
编排 AgentTodoWriteSkill 委派子代理管理任务列表触发技能
  1. 工具设计背后有一个深刻的哲学 - 少而精 - 也是 Linux 设计哲学 - Keep It Simple, Stupid
  2. Claude Code 没有内置的重构工具测试工具部署工具,而是只提供了最基础的原语
    • 重构 - Read + Edit + Bash 的组合涌现
    • 测试 - Bash + Read 的组合涌现
    • 部署 - Bash
  3. 计算机只需要几条指令就能图灵完备
    • Harness 不需要为每个场景构造一个工具,只需要确保**基础工具的组合空间**足够大即可
  4. Bash 工具是一个图灵完备逃逸舱
    • 通过 Bash,Claude 可以执行任何 Shell 命令,即 Claude Code 的能力上限,理论上等于操作系统的能力上限
    • 因此,Harness 需要权限控制

上下文管理

在讨论 Agent 框架时,容易只关注工具循环,而 Harness 最精巧的部分,其实是上下文管理

  1. Claude 的上下文窗口是有限的 - 200K tokens
  2. 一个真实的编码任务,产生的历史对话会迅速膨胀,容易撑爆上下文窗口

Claude Code 的解决方案是自动压缩,当对话历史接近上下文窗口的 83% 时,Harness 会触发一次压缩操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
对话历史(166K tokens)

▼ 压缩触发
┌────────────────────────────┐
│ 保留:最近的消息(完整) │
│ 压缩:早期消息 → 摘要 │
│ 重注入:CLAUDE.md 内容 │
│ 重注入:系统提示词 │
│ 重注入:工具定义 │
└────────────────────────────┘


压缩后对话历史(~80K tokens)

▼ 继续工作
  1. CLAUDE.md + 系统提示词 + 工具定义,在每次压缩后都会重新注入
  2. 即便对话历史被截断了,模型仍然知道项目的规则、有哪些工具可用、应该遵循什么约定等

上下文管理是 Harness 最容易被低估的能力

  1. 很多开源 Agent 框架只关心工具调用循环,但在长任务上容易翻车,并非模型能力不行,而是 Agent 框架的上下文管理太粗糙
  2. 没有智能压缩
    • 全部历史 - 导致模型注意力涣散
    • 简单截断 - 模型忘记关键上下文
  3. Claude Code - 压缩 + 重注入

Claude Agent SDK

可编程的 Harness

  1. Claude Code CLI 本身不开源,但 Anthropic 在 2025 年发布了 Claude Agent SDK - 一套可编程Harness 接口
    • 核心 Harness 代码以编译后的 npm 包分发,Claude Agent SDK 提供可编程Harness 接口
  2. Claude Agent SDK 提供了与 Claude Code CLI 完全相同Agentic Loop内置工具上下文管理权限系统HooksSub-Agent 支持MCP 集成
1
2
3
4
5
6
7
8
9
10
11
12
13
from claude_agent_sdk import AgentClient

client = AgentClient(api_key="...")

# 创建一个有工具能力的 Agent
result = client.run(
prompt="审查这个 PR 的安全问题",
tools=["Read", "Grep", "Glob", "Bash"],
max_turns=20,
allowed_tools={"Bash": ["npm test", "npm run lint"]}
)

print(result.text)

商业策略 - 开放编排能力 + 锁定模型消费

  1. 开源 CLI 会侵蚀 Anthropic 的 API 调用收入,开源 CLI 后,任何人都可以接入其它模型
  2. Claude Agent SDK 的核心价值是绑定在 Claude 模型上,用 Claude Agent SDK 意味着用 Claude API
  3. Claude Agent SDK 开放编排能力,但锁定模型消费

第三方 Harness

  1. Claude Code - 模型 + Harness = 10 倍生产力
  2. OpenCode 是最成功的第三方 Harness
    • Client-Server 架构解决了 Claude Code 的单表面局限
    • TUI桌面 APPIDE 插件Slack 机器人共享同一个后端
  3. 2026 年 1 月,Anthropic 封堵了第三方工具通过消费者 OAuth Token 调用 Claude API 的通道 - 必须购买独立的 API Key
  4. 模型提供商希望控制 Harness 层,因为 Harness 决定了 API 调用量用户体验
  5. 第三方 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

  1. 模型本身正在商品化 - Claude、GPT、Gemini、DeepSeek 的能力差距缩小
  2. 同一模型在不同的 Harness 中的表现差距,远大于不同模型在同一个 Harness 中的差距 - Harness 比模型更重要
  3. Anthropic 收购了 Bun(JavaScript 运行时),用于加强 Claude Code 的基础设施
    • 收购一个运行时来加强一个 Harness - Anthropic 将 Harness 视为战略级资产
  4. 理解 Harness理解模型更重要
    • 模型能力由 Anthropic/OpenAI 决定,而 Harness 配置可控