第03章 Harness 概念溯源 —— "模型是大脑,Harness是身体"
上一篇我们看到 LLM Agent = Model + Harness。本章我们深入理解 Harness 这个概念——Agent 在特定领域工作的能力边界。
什么是 Harness
一句话定义:Harness 是 Agent 在特定领域工作所需要的一切——工具、权限、上下文、知识、行动接口的总和。
Harness = Tools + Knowledge + Observation + Action Interfaces + Permissions
graph LR
subgraph Harness["Harness 公式"]
T[Tools
工具]
K[Knowledge
知识]
O[Observation
感知]
A[Action
行动接口]
P[Permissions
权限边界]
end
T & K & O & A & P --> E[Agent 能力边界]graph LR
subgraph Harness["Harness 公式"]
T[Tools
工具]
K[Knowledge
知识]
O[Observation
感知]
A[Action
行动接口]
P[Permissions
权限边界]
end
T & K & O & A & P --> E[Agent 能力边界]graph LR
subgraph Harness["Harness 公式"]
T[Tools
工具]
K[Knowledge
知识]
O[Observation
感知]
A[Action
行动接口]
P[Permissions
权限边界]
end
T & K & O & A & P --> E[Agent 能力边界]graph LR
subgraph Harness["Harness 公式"]
T[Tools<br/>工具]
K[Knowledge<br/>知识]
O[Observation<br/>感知]
A[Action<br/>行动接口]
P[Permissions<br/>权限边界]
end
T & K & O & A & P --> E[Agent 能力边界]核心定位:模型提供智能(推理),Harness 提供环境(行动)。模型是大脑,Harness 是身体。大脑跨领域泛化,身体因场景而变。
“模型是大脑,Harness是身体”
类比理解
flowchart LR
subgraph Body["Harness (身体)"]
B1[双手 - Tools
文件读写、Shell执行]
B2[眼睛 - Observation
git diff、错误日志、浏览器状态]
B3[双脚 - Action
CLI命令、API调用、UI交互]
B4[边界 - Permissions
沙箱隔离、审批流程]
B5[记忆 - Context
上下文管理、任务持久化]
end
subgraph Brain["Model (大脑)"]
M1[推理能力
感知→推理→决策]
M2[泛化能力
跨领域知识迁移]
M3[决策能力
自主判断行动策略]
end
Brain -->|指挥| Body
Body -->|反馈| Brainflowchart LR
subgraph Body["Harness (身体)"]
B1[双手 - Tools
文件读写、Shell执行]
B2[眼睛 - Observation
git diff、错误日志、浏览器状态]
B3[双脚 - Action
CLI命令、API调用、UI交互]
B4[边界 - Permissions
沙箱隔离、审批流程]
B5[记忆 - Context
上下文管理、任务持久化]
end
subgraph Brain["Model (大脑)"]
M1[推理能力
感知→推理→决策]
M2[泛化能力
跨领域知识迁移]
M3[决策能力
自主判断行动策略]
end
Brain -->|指挥| Body
Body -->|反馈| Brainflowchart LR
subgraph Body["Harness (身体)"]
B1[双手 - Tools
文件读写、Shell执行]
B2[眼睛 - Observation
git diff、错误日志、浏览器状态]
B3[双脚 - Action
CLI命令、API调用、UI交互]
B4[边界 - Permissions
沙箱隔离、审批流程]
B5[记忆 - Context
上下文管理、任务持久化]
end
subgraph Brain["Model (大脑)"]
M1[推理能力
感知→推理→决策]
M2[泛化能力
跨领域知识迁移]
M3[决策能力
自主判断行动策略]
end
Brain -->|指挥| Body
Body -->|反馈| Brainflowchart LR
subgraph Body["Harness (身体)"]
B1[双手 - Tools<br/>文件读写、Shell执行]
B2[眼睛 - Observation<br/>git diff、错误日志、浏览器状态]
B3[双脚 - Action<br/>CLI命令、API调用、UI交互]
B4[边界 - Permissions<br/>沙箱隔离、审批流程]
B5[记忆 - Context<br/>上下文管理、任务持久化]
end
subgraph Brain["Model (大脑)"]
M1[推理能力<br/>感知→推理→决策]
M2[泛化能力<br/>跨领域知识迁移]
M3[决策能力<br/>自主判断行动策略]
end
Brain -->|指挥| Body
Body -->|反馈| Brain| 对应关系 | Model(大脑) | Harness(身体) |
|---|---|---|
| 感知 | 理解环境状态 | 提供感知接口(git diff、日志) |
| 推理 | 决策下一步行动 | 不参与决策 |
| 行动 | 决定使用什么工具 | 执行工具调用 |
| 记忆 | 管理上下文窗口 | 提供记忆存储机制 |
| 安全 | 不负责边界 | 强制权限控制 |
为什么需要 Harness
Model 的局限:
| Model 特性 | 局限 | Harness 解决方案 |
|---|---|---|
| 无状态 | 每次调用独立,不保存状态 | Context 管理历史消息 |
| 无感知 | 不知道代码库状态 | Observation 提供 git diff、ls |
| 无行动 | 只输出文本,不执行操作 | Tools 执行 Bash/Read/Write |
| 无边界 | 不区分安全/危险操作 | Permissions 强制审批 |
Harness 的必要性:Model 本质是一个推理函数——输入消息,输出文本。它没有手(工具),没有眼(感知),没有记忆(上下文管理),没有边界(权限)。Harness 让 Model 落地。
Harness 的五大组件
graph TB
subgraph Harness["Harness 五大组件"]
T[Tools
工具系统]
K[Knowledge
知识系统]
O[Observation
感知系统]
A[Action
行动接口]
P[Permissions
权限系统]
end
Model[Model 推理引擎] -->|调用| Harness
Harness -->|执行| Env[环境
文件系统/终端/网络]graph TB
subgraph Harness["Harness 五大组件"]
T[Tools
工具系统]
K[Knowledge
知识系统]
O[Observation
感知系统]
A[Action
行动接口]
P[Permissions
权限系统]
end
Model[Model 推理引擎] -->|调用| Harness
Harness -->|执行| Env[环境
文件系统/终端/网络]graph TB
subgraph Harness["Harness 五大组件"]
T[Tools
工具系统]
K[Knowledge
知识系统]
O[Observation
感知系统]
A[Action
行动接口]
P[Permissions
权限系统]
end
Model[Model 推理引擎] -->|调用| Harness
Harness -->|执行| Env[环境
文件系统/终端/网络]graph TB
subgraph Harness["Harness 五大组件"]
T[Tools<br/>工具系统]
K[Knowledge<br/>知识系统]
O[Observation<br/>感知系统]
A[Action<br/>行动接口]
P[Permissions<br/>权限系统]
end
Model[Model 推理引擎] -->|调用| Harness
Harness -->|执行| Env[环境<br/>文件系统/终端/网络]1. Tools(工具系统)—— Agent 的双手
一句话定义:Agent 可以采取的行动集合。
| 工具类别 | 工具示例 | 功能 |
|---|---|---|
| 文件操作 | Read、Write、Edit | 读写文件、编辑代码 |
| 搜索导航 | Glob、Grep | 搜索文件、查找内容 |
| 命令执行 | Bash | 执行 Shell 命令 |
| 网络交互 | WebFetch、WebSearch | 网络请求、搜索 |
| 浏览器控制 | Browser_navigate、Browser_click | 网页自动化 |
| MCP 扩展 | 自定义 MCP 工具 | 连接外部系统 |
设计原则:
- 原子化:每个工具只做一件事
- 可组合:工具组合完成复杂任务
- 描述清晰:工具名称和参数清晰定义
2. Knowledge(知识系统)—— Agent 的脑库
一句话定义:按需加载的领域知识资料。
| 知识类型 | 内容 | 加载方式 |
|---|---|---|
| 产品文档 | 项目架构、API 规范 | Skills 按需加载 |
| 技术知识 | 编程语言、框架用法 | CLAUDE.md 自动注入 |
| 领域知识 | 业务规则、合规要求 | Skills 文件夹 |
| 工作记忆 | 任务进展、历史决策 | Context 管理 |
Skills 按需加载:
graph LR
Model[Model 推理] -->|判断需要| K[加载 Skills]
K -->|读取| S[Skills 文件]
S -->|注入| C[上下文]
C -->|增强| Modelgraph LR
Model[Model 推理] -->|判断需要| K[加载 Skills]
K -->|读取| S[Skills 文件]
S -->|注入| C[上下文]
C -->|增强| Modelgraph LR
Model[Model 推理] -->|判断需要| K[加载 Skills]
K -->|读取| S[Skills 文件]
S -->|注入| C[上下文]
C -->|增强| Modelgraph LR
Model[Model 推理] -->|判断需要| K[加载 Skills]
K -->|读取| S[Skills 文件]
S -->|注入| C[上下文]
C -->|增强| ModelCLAUDE.md 自动注入:项目根目录的 CLAUDE.md 文件会被自动注入到上下文,提供项目特定信息(架构、约定、注意事项)。
3. Observation(感知系统)—— Agent 的眼睛
一句话定义:环境状态的感知接口。
| 感知类型 | 示例 | 来源 |
|---|---|---|
| 代码状态 | git diff、git status | Bash 工具输出 |
| 文件结构 | ls -la、tree | Glob 工具输出 |
| 错误日志 | 编译错误、测试失败 | Bash 工具输出 |
| 浏览器状态 | 页面截图、DOM 结构 | Browser 工具输出 |
设计原则:
- 惰性加载:只在需要时执行感知命令
- 结果过滤:压缩感知结果,只保留关键信息
- 自动注入:关键状态自动注入上下文
4. Action(行动接口)—— Agent 的双脚
一句话定义:与外部系统的交互接口。
| 行动接口 | 目标系统 | 示例 |
|---|---|---|
| CLI 命令 | Shell/终端 | npm install、git commit |
| API 调用 | 外部服务 | HTTP request、MCP call |
| UI 交互 | 桌面/浏览器 | Browser_click、键盘输入 |
| 文件操作 | 文件系统 | Write 文件、Edit 代码 |
MCP 扩展:MCP(Model Context Protocol)让 Harness 可以连接任意外部系统——数据库、云服务、企业应用。
5. Permissions(权限系统)—— Agent 的边界
一句话定义:安全边界和审批流程。
| 权限模式 | 行为 | 示例 |
|---|---|---|
| deny | 禁止执行 | 删除系统文件、访问密钥 |
| ask | 请求审批 | git push、npm install |
| allow | 自动执行 | Read 文件、Grep 搜索 |
graph LR
A[工具调用请求] --> B{权限检查}
B -->|deny| C[❌ 禁止执行
返回错误]
B -->|ask| D[⚠️ 请求审批
等待用户确认]
B -->|allow| E[✅ 自动执行
返回结果]graph LR
A[工具调用请求] --> B{权限检查}
B -->|deny| C[❌ 禁止执行
返回错误]
B -->|ask| D[⚠️ 请求审批
等待用户确认]
B -->|allow| E[✅ 自动执行
返回结果]graph LR
A[工具调用请求] --> B{权限检查}
B -->|deny| C[❌ 禁止执行
返回错误]
B -->|ask| D[⚠️ 请求审批
等待用户确认]
B -->|allow| E[✅ 自动执行
返回结果]graph LR
A[工具调用请求] --> B{权限检查}
B -->|deny| C[❌ 禁止执行<br/>返回错误]
B -->|ask| D[⚠️ 请求审批<br/>等待用户确认]
B -->|allow| E[✅ 自动执行<br/>返回结果]设计原则:
- 默认 deny:未知操作默认禁止
- 最小权限:只授予必要权限
- 信任边界:区分可信/不可信操作
从何而来:Harness 的历史渊源
游戏 Agent 的 Harness
历史上的每一个 Agent 都需要一个 Harness:
| Agent | Harness | 提供的能力 |
|---|---|---|
| DQN | Atari 模拟器 | 游戏画面输入、动作输出、分数反馈 |
| AlphaGo | 围棋引擎 | 棋盘状态、落子接口、规则验证 |
| AlphaStar | 星际争霸 II 引擎 | 游戏状态、单位控制、资源信息 |
| OpenAI Five | Dota 2 客户端 | 地图状态、英雄控制、技能接口 |
timeline
title Agent Harness 的演变
section 游戏 Agent 时代
2013 : DQN + Atari 模拟器
游戏环境作为 Harness
2016 : AlphaGo + 围棋引擎
棋盘作为 Harness
2019 : AlphaStar + 星际引擎
复杂环境 Harness
section LLM Agent 时代
2024 : Claude Code + IDE/终端
编程环境 Harness
2025 : OpenClaw + 多渠道
生活管理 Harnesstimeline
title Agent Harness 的演变
section 游戏 Agent 时代
2013 : DQN + Atari 模拟器
游戏环境作为 Harness
2016 : AlphaGo + 围棋引擎
棋盘作为 Harness
2019 : AlphaStar + 星际引擎
复杂环境 Harness
section LLM Agent 时代
2024 : Claude Code + IDE/终端
编程环境 Harness
2025 : OpenClaw + 多渠道
生活管理 Harnesstimeline
title Agent Harness 的演变
section 游戏 Agent 时代
2013 : DQN + Atari 模拟器
游戏环境作为 Harness
2016 : AlphaGo + 围棋引擎
棋盘作为 Harness
2019 : AlphaStar + 星际引擎
复杂环境 Harness
section LLM Agent 时代
2024 : Claude Code + IDE/终端
编程环境 Harness
2025 : OpenClaw + 多渠道
生活管理 Harnesstimeline
title Agent Harness 的演变
section 游戏 Agent 时代
2013 : DQN + Atari 模拟器<br/>游戏环境作为 Harness
2016 : AlphaGo + 围棋引擎<br/>棋盘作为 Harness
2019 : AlphaStar + 星际引擎<br/>复杂环境 Harness
section LLM Agent 时代
2024 : Claude Code + IDE/终端<br/>编程环境 Harness
2025 : OpenClaw + 多渠道<br/>生活管理 Harness编程 Agent 的 Harness
Claude Code 的 Harness:
编程 Harness = IDE + 终端 + 文件系统
+ Tools(Bash/Read/Write/Edit)
+ Skills(CLAUDE.md + Skills 文件夹)
+ Permissions(deny→ask→allow)庄园 Agent 的 Harness:
庄园 Harness = 物业传感器 + 维护工具 + 租户通信渠道
+ Tools(巡检、维修、通知)
+ Knowledge(设施文档、租户信息)
+ Permissions(审批流程)为什么需要 Harness
Model 的本质:输入→输出的函数
graph LR
I[输入
messages 数组] --> M[Model
推理函数]
M --> O[输出
response]graph LR
I[输入
messages 数组] --> M[Model
推理函数]
M --> O[输出
response]graph LR
I[输入
messages 数组] --> M[Model
推理函数]
M --> O[输出
response]graph LR
I[输入<br/>messages 数组] --> M[Model<br/>推理函数]
M --> O[输出<br/>response]Model 的特性:
- 无状态:每次调用独立,不保存历史
- 无感知:不知道环境状态
- 无行动:只输出文本,不执行操作
- 泛化能力:跨领域推理
Harness 的角色:让 Model 落地
| Model | Harness | Agent 产品 |
|---|---|---|
| Claude(推理) | Claude Code(编程环境) | 编程 Agent |
| Claude(推理) | OpenClaw(生活管理) | 个人助手 Agent |
| GPT(推理) | Cursor(IDE) | 编程 Agent |
真相:同一个模型,不同的 Harness,可以变成完全不同的 Agent 产品。Harness 决定了 Agent 能做什么、在哪个领域工作、如何行动。
适用场景
✅ 适合你如果:
- 你有明确的任务领域(编程、庄园管理、酒店运营)
- 你需要 Model 在特定环境中行动
- 你愿意专注构建 Harness(工具、权限、上下文)
❌ 可能不适合:
- 你试图通过提示词链创造智能
- 你期望固定工作流能泛化到新场景
- 你不想管理权限和上下文
本章小结
- Harness 定义:Agent 在特定领域工作的能力边界
- Harness 公式:Tools + Knowledge + Observation + Action + Permissions
- 大脑身体类比:Model 推理,Harness 执行
- 五大组件:工具(手)、知识(脑库)、感知(眼)、行动(脚)、权限(边界)
- 历史渊源:游戏 Agent 到 LLM Agent,Harness 始终是环境提供者
预告:下一篇我们拆解 Harness 的四层架构——Loop层、工具层、管理层、扩展层。
相关内容
- 第01章 Agent 的 70 年简史 —— 从符号推理到深度学习
- 第02章 LLM 时代的 Agent 革命 —— 2023-2026 爆发期
- 第04章 Harness 核心架构 —— 四层模型详解
- 第05章 Harness vs Agent vs Model —— 三者关系辨析
- 第06章 Claude Code Harness 架构剖析 —— 编程 Agent 的标杆实现
支付宝
微信