第05章 Harness vs Agent vs Model —— 三者关系辨析
上一篇我们拆解了 Harness 的四层架构。本章我们辨析 Model、Agent、Harness 三者的精确定义——很多人混淆这些概念。
Model 是什么
一句话定义:推理引擎——输入→输出的函数,无状态、无感知、无行动。
Model = 推理函数 输入:messages 数组(对话历史) 输出:response(文本 + stop_reason)
graph LR
I[输入
messages 数组
对话历史] --> M[Model
推理引擎
Claude/GPT]
M --> O[输出
response
文本 + stop_reason]
style I fill:#E3F2FD
style M fill:#E3F2FD
style O fill:#E3F2FDgraph LR
I[输入
messages 数组
对话历史] --> M[Model
推理引擎
Claude/GPT]
M --> O[输出
response
文本 + stop_reason]
style I fill:#E3F2FD
style M fill:#E3F2FD
style O fill:#E3F2FDgraph LR
I[输入
messages 数组
对话历史] --> M[Model
推理引擎
Claude/GPT]
M --> O[输出
response
文本 + stop_reason]
style I fill:#E3F2FD
style M fill:#E3F2FD
style O fill:#E3F2FDgraph LR
I[输入<br/>messages 数组<br/>对话历史] --> M[Model<br/>推理引擎<br/>Claude/GPT]
M --> O[输出<br/>response<br/>文本 + stop_reason]
style I fill:#E3F2FD
style M fill:#E3F2FD
style O fill:#E3F2FDModel 的特性
| 特性 | 说明 | 局限 |
|---|---|---|
| 无状态 | 每次调用独立,不保存历史 | 需要 Harness 管理上下文 |
| 无感知 | 不知道环境状态 | 需要 Harness 提供感知接口 |
| 无行动 | 只输出文本,不执行操作 | 需要 Harness 执行工具 |
| 泛化能力 | 跨领域推理 | 需要 Harness 落地特定领域 |
| 推理能力 | 感知→推理→决策 | 需要 Harness 执行决策 |
Model 不做什么
| 不做的事 | 原因 | Harness 解决方案 |
|---|---|---|
| 不读取文件 | Model 没有文件系统接口 | Read 工具执行 |
| 不执行命令 | Model 没有终端接口 | Bash 工具执行 |
| 不保存状态 | Model 无状态 | Context 管理历史 |
| 不感知环境 | Model 无感知 | Observation 接口 |
| 不判断权限 | Model 不懂安全边界 | Permissions 强制控制 |
Model 的本质:Model 是一个被训练出来的神经网络——经过数十亿次梯度更新,在行动序列数据上学会了感知环境、推理目标、采取行动的决策能力。但它只是一个函数——输入文本,输出文本。要让它干活,需要 Harness。
Agent 是什么
一句话定义:决策循环——Model + 目标 + 记忆 + 循环,完整的自主行动产品。
Agent = Model + Harness Model:推理引擎(决策者) Harness:能力边界(行动环境)
graph LR
subgraph Agent["Agent = Model + Harness"]
M[Model
推理引擎
Claude/GPT]
H[Harness
能力边界
工具/权限/上下文]
end
M -->|调用| H
H -->|反馈| M
Agent --> A[完整产品
感知/推理/行动]
style Agent fill:#FFF3E0
style A fill:#FFF3E0graph LR
subgraph Agent["Agent = Model + Harness"]
M[Model
推理引擎
Claude/GPT]
H[Harness
能力边界
工具/权限/上下文]
end
M -->|调用| H
H -->|反馈| M
Agent --> A[完整产品
感知/推理/行动]
style Agent fill:#FFF3E0
style A fill:#FFF3E0graph LR
subgraph Agent["Agent = Model + Harness"]
M[Model
推理引擎
Claude/GPT]
H[Harness
能力边界
工具/权限/上下文]
end
M -->|调用| H
H -->|反馈| M
Agent --> A[完整产品
感知/推理/行动]
style Agent fill:#FFF3E0
style A fill:#FFF3E0graph LR
subgraph Agent["Agent = Model + Harness"]
M[Model<br/>推理引擎<br/>Claude/GPT]
H[Harness<br/>能力边界<br/>工具/权限/上下文]
end
M -->|调用| H
H -->|反馈| M
Agent --> A[完整产品<br/>感知/推理/行动]
style Agent fill:#FFF3E0
style A fill:#FFF3E0Agent 的特性
| 特性 | 说明 | 来源 |
|---|---|---|
| 有状态 | 保存对话历史、任务进展 | Harness Context 管理 |
| 有感知 | 知道环境状态(git diff、文件结构) | Harness Observation |
| 有行动 | 执行工具(Bash、Read、Write) | Harness Tools |
| 有决策 | 自主判断下一步行动 | Model 推理 |
| 有边界 | 权限控制、安全约束 | Harness Permissions |
Agent 的完整形态
Agent = Agent Loop(持续循环)
+ Model(推理决策)
+ Tools(行动能力)
+ Context(记忆管理)
+ Permissions(安全边界)
+ Knowledge(领域知识)Agent 的本质:Agent 是一个完整的自主行动产品——用户给它一个目标,它自己感知环境、推理步骤、执行行动、反思结果。Agent 不是被编程出来的智能,而是 Model 的推理能力 + Harness 的行动环境。
Harness 是什么
一句话定义:能力边界系统——Agent 在特定领域工作所需的一切。
Harness = Tools + Knowledge + Observation + Action + Permissions
graph TB
subgraph Harness["Harness = "]
T[Tools
工具
Bash/Read/Write]
K[Knowledge
知识
Skills/CLAUDE.md]
O[Observation
感知
git diff/日志]
A[Action
行动接口
CLI/API/UI]
P[Permissions
权限
deny→ask→allow]
end
Harness --> E[Agent 能力边界]
style Harness fill:#E8F5E9
style E fill:#E8F5E9graph TB
subgraph Harness["Harness = "]
T[Tools
工具
Bash/Read/Write]
K[Knowledge
知识
Skills/CLAUDE.md]
O[Observation
感知
git diff/日志]
A[Action
行动接口
CLI/API/UI]
P[Permissions
权限
deny→ask→allow]
end
Harness --> E[Agent 能力边界]
style Harness fill:#E8F5E9
style E fill:#E8F5E9graph TB
subgraph Harness["Harness = "]
T[Tools
工具
Bash/Read/Write]
K[Knowledge
知识
Skills/CLAUDE.md]
O[Observation
感知
git diff/日志]
A[Action
行动接口
CLI/API/UI]
P[Permissions
权限
deny→ask→allow]
end
Harness --> E[Agent 能力边界]
style Harness fill:#E8F5E9
style E fill:#E8F5E9graph TB
subgraph Harness["Harness = "]
T[Tools<br/>工具<br/>Bash/Read/Write]
K[Knowledge<br/>知识<br/>Skills/CLAUDE.md]
O[Observation<br/>感知<br/>git diff/日志]
A[Action<br/>行动接口<br/>CLI/API/UI]
P[Permissions<br/>权限<br/>deny→ask→allow]
end
Harness --> E[Agent 能力边界]
style Harness fill:#E8F5E9
style E fill:#E8F5E9Harness 的角色
| 角色 | 说明 | 对应组件 |
|---|---|---|
| 双手 | 执行工具操作 | Tools(Bash、Read、Write、Edit) |
| 脑库 | 提供领域知识 | Knowledge(Skills、CLAUDE.md) |
| 眼睛 | 感知环境状态 | Observation(git diff、日志) |
| 双脚 | 连接外部系统 | Action(CLI、API、UI) |
| 边界 | 强制安全约束 | Permissions(deny→ask→allow) |
Harness 不做什么
| 不做的事 | 原因 | Model 负责 |
|---|---|---|
| 不做决策 | Harness 不推理 | Model 判断下一步行动 |
| 不做推理 | Harness 不思考 | Model 推理目标、规划步骤 |
| 不做判断 | Harness 不选择 | Model 决定使用什么工具 |
| 不做智能 | Harness 不聪明 | Model 提供推理能力 |
Harness 的本质:Harness 是 Agent 的栖居世界——提供工具、知识、感知、行动接口和权限边界。同一个 Model,不同的 Harness,可以变成完全不同的 Agent。
三者关系辨析
公式关系
graph LR
M[Model
推理引擎
无状态无感知] + H[Harness
能力边界
工具权限上下文] --> A[Agent
完整产品
感知推理行动]
style M fill:#E3F2FD
style H fill:#E8F5E9
style A fill:#FFF3E0graph LR
M[Model
推理引擎
无状态无感知] + H[Harness
能力边界
工具权限上下文] --> A[Agent
完整产品
感知推理行动]
style M fill:#E3F2FD
style H fill:#E8F5E9
style A fill:#FFF3E0graph LR
M[Model
推理引擎
无状态无感知] + H[Harness
能力边界
工具权限上下文] --> A[Agent
完整产品
感知推理行动]
style M fill:#E3F2FD
style H fill:#E8F5E9
style A fill:#FFF3E0graph LR
M[Model<br/>推理引擎<br/>无状态无感知] + H[Harness<br/>能力边界<br/>工具权限上下文] --> A[Agent<br/>完整产品<br/>感知推理行动]
style M fill:#E3F2FD
style H fill:#E8F5E9
style A fill:#FFF3E0公式解读:
- Model:推理引擎——提供决策能力(大脑)
- Harness:能力边界——提供行动环境(身体)
- Agent:完整产品——Model + Harness(完整的人)
全维度对比
| 维度 | Model | Harness | Agent |
|---|---|---|---|
| 本质 | 推理函数 | 能力边界系统 | 完整产品 |
| 状态 | ❌ 无状态 | ✅ 管理状态 | ✅ 有记忆 |
| 感知 | ❌ 无感知 | ✅ 提供感知接口 | ✅ 有感知 |
| 行动 | ❌ 无行动 | ✅ 执行工具 | ✅ 有行动 |
| 决策 | ✅ 仅推理 | ❌ 不决策 | ✅ 有决策循环 |
| 泛化 | ✅ 跨领域 | ❌ 因领域而变 | ✅ 领域特化 |
| 知识 | ✅ 世界知识 | ✅ 领域知识注入 | ✅ 组合知识 |
| 权限 | ❌ 不懂边界 | ✅ 强制控制 | ✅ 有安全边界 |
分工关系
| 工作 | Model 负责 | Harness 负责 |
|---|---|---|
| 感知环境 | 理解感知结果 | 提供感知接口 |
| 推理决策 | 规划下一步行动 | 不参与推理 |
| 执行工具 | 决定调用什么工具 | 执行工具调用 |
| 管理记忆 | 使用上下文窗口 | 管理历史、压缩上下文 |
| 安全控制 | 不负责 | 强制权限判断 |
| 知识加载 | 判断需要什么知识 | 按需加载 Skills |
Claude Code 三者拆解
Claude Code 的组成
graph TB
subgraph ClaudeCode["Claude Code Agent"]
subgraph ModelLayer["Model 层"]
M1[Claude 4.x
推理引擎]
end
subgraph HarnessLayer["Harness 层"]
subgraph Loop["Loop 层"]
L1[Agent Loop
observe→think→act]
end
subgraph Tools["工具层"]
T1[Bash]
T2[Read/Write/Edit]
T3[Glob/Grep]
T4[Browser]
end
subgraph Mgmt["管理层"]
M2[Permissions]
M3[Context 压缩]
M4[任务系统]
M5[子Agent派发]
end
subgraph Ext["扩展层"]
E1[Skills]
E2[MCP]
E3[Hooks]
end
end
end
ModelLayer -->|调用| HarnessLayer
HarnessLayer -->|执行| Env[环境
IDE/终端/文件系统]graph TB
subgraph ClaudeCode["Claude Code Agent"]
subgraph ModelLayer["Model 层"]
M1[Claude 4.x
推理引擎]
end
subgraph HarnessLayer["Harness 层"]
subgraph Loop["Loop 层"]
L1[Agent Loop
observe→think→act]
end
subgraph Tools["工具层"]
T1[Bash]
T2[Read/Write/Edit]
T3[Glob/Grep]
T4[Browser]
end
subgraph Mgmt["管理层"]
M2[Permissions]
M3[Context 压缩]
M4[任务系统]
M5[子Agent派发]
end
subgraph Ext["扩展层"]
E1[Skills]
E2[MCP]
E3[Hooks]
end
end
end
ModelLayer -->|调用| HarnessLayer
HarnessLayer -->|执行| Env[环境
IDE/终端/文件系统]graph TB
subgraph ClaudeCode["Claude Code Agent"]
subgraph ModelLayer["Model 层"]
M1[Claude 4.x
推理引擎]
end
subgraph HarnessLayer["Harness 层"]
subgraph Loop["Loop 层"]
L1[Agent Loop
observe→think→act]
end
subgraph Tools["工具层"]
T1[Bash]
T2[Read/Write/Edit]
T3[Glob/Grep]
T4[Browser]
end
subgraph Mgmt["管理层"]
M2[Permissions]
M3[Context 压缩]
M4[任务系统]
M5[子Agent派发]
end
subgraph Ext["扩展层"]
E1[Skills]
E2[MCP]
E3[Hooks]
end
end
end
ModelLayer -->|调用| HarnessLayer
HarnessLayer -->|执行| Env[环境
IDE/终端/文件系统]graph TB
subgraph ClaudeCode["Claude Code Agent"]
subgraph ModelLayer["Model 层"]
M1[Claude 4.x<br/>推理引擎]
end
subgraph HarnessLayer["Harness 层"]
subgraph Loop["Loop 层"]
L1[Agent Loop<br/>observe→think→act]
end
subgraph Tools["工具层"]
T1[Bash]
T2[Read/Write/Edit]
T3[Glob/Grep]
T4[Browser]
end
subgraph Mgmt["管理层"]
M2[Permissions]
M3[Context 压缩]
M4[任务系统]
M5[子Agent派发]
end
subgraph Ext["扩展层"]
E1[Skills]
E2[MCP]
E3[Hooks]
end
end
end
ModelLayer -->|调用| HarnessLayer
HarnessLayer -->|执行| Env[环境<br/>IDE/终端/文件系统]Model 部分
| Model | Claude Code 使用 |
|---|---|
| Claude 4.x | 提供推理能力 |
| 特性 | 无状态、无感知、无行动 |
| 职责 | 感知代码库、推理步骤、决策工具调用 |
Harness 部分
| Harness 组件 | Claude Code 实现 |
|---|---|
| Loop 层 | Agent Loop(observe→think→act→feedback) |
| 工具层 | Bash、Read、Write、Edit、Glob、Grep、Browser |
| 管理层 | Permissions(deny→ask→allow)、Context 压缩、任务系统、子 Agent 派发 |
| 扩展层 | Skills 按需加载、MCP 插件集成、Hooks 扩展点 |
Agent 部分
| Agent 特性 | Claude Code 实现 |
|---|---|
| 有状态 | messages 数组管理对话历史 |
| 有感知 | Bash 执行 git diff、Glob 查看文件结构 |
| 有行动 | Read 读取代码、Write 写入文件、Edit 编辑片段 |
| 有决策 | Model 自主判断下一步操作 |
| 有边界 | Permissions 强制控制危险操作 |
常见误解纠正
误解 1:“我在开发 Agent” 的两种含义
含义 A:训练 Model(真正开发 Agent)
- 通过强化学习、微调、RLHF 调整权重
- 收集任务过程数据(感知-推理-行动轨迹)
- 这是 DeepMind、OpenAI、Anthropic 在做的事
含义 B:构建 Harness(大多数人的工作)
- 编写工具定义、权限规则
- 管理上下文、设计 Skills
- 这是 Harness 工程师的工作
真相:大多数说"我在开发 Agent"的人,实际上是在构建 Harness。Model 已经被 Anthropic/OpenAI 训练好了,我们只需要为它提供 Harness(行动环境)。
误解 2:提示词链是 Agent
真相:提示词链、节点图、工作流编排——它们不是 Agent,是假 Agent。
| 真假 Agent | 真 Agent(Model + Harness) | 假 Agent(提示词水管工) |
|---|---|---|
| 核心架构 | Model + Agent Loop | if-else + 节点图 |
| 决策方式 | Model 自主推理 | 硬编码路由逻辑 |
| 泛化能力 | ✅ 跨领域泛化 | ❌ 无法泛化 |
| 可维护性 | ✅ 模型自动演化 | ❌ 规则爆炸 |
真相:提示词水管工是 GOFAI(符号 AI)的还魂——几十年前就被学界抛弃的规则系统,喷了一层 LLM 的漆又登场了。
误解 3:Harness 负责决策
真相:Harness 不决策。Model 决策,Harness 执行。
| 决策 | 负责方 | 说明 |
|---|---|---|
| 判断需要什么工具 | Model | 推理决定调用 Bash 或 Read |
| 执行工具调用 | Harness | 执行 Bash 命令、Read 文件 |
| 判断需要什么知识 | Model | 判断需要加载哪些 Skills |
| 加载 Skills | Harness | 按需加载 Markdown 文件 |
实际案例:同一 Model,不同 Harness
| Model | Harness | Agent 产品 |
|---|---|---|
| Claude 4.x | Claude Code(IDE + 终端) | 编程 Agent |
| Claude 4.x | OpenClaw(多渠道通信) | 个人助手 Agent |
| Claude 4.x | 庄园 Harness(传感器 + 维护工具) | 庄园管理 Agent |
| Claude 4.x | 酒店 Harness(预订系统 + 客户渠道) | 店运营 Agent |
启示:同一个 Model(Claude),不同的 Harness,可以变成完全不同的 Agent 产品。Harness 决定了 Agent 能做什么、在哪个领域工作。
本章小结
- Model:推理引擎,无状态无感知无行动,只负责推理
- Harness:能力边界,提供工具、知识、感知、行动、权限
- Agent:Model + Harness,完整的自主行动产品
- 分工:Model 决策,Harness 执行;Model 推理,Harness 提供环境
- 误解:提示词链不是 Agent,Harness 不负责决策
- 案例:同一 Model,不同 Harness = 不同 Agent
预告:下一篇我们开始实战——剖析 Claude Code 的 Harness 实现细节。
相关内容
- 第01章 Agent 的 70 年简史 —— 从符号推理到深度学习
- 第02章 LLM 时代的 Agent 革命 —— 2023-2026 爆发期
- 第03章 Harness 概念溯源 —— "模型是大脑,Harness是身体"
- 第04章 Harness 核心架构 —— 四层模型详解
- 第06章 Claude Code Harness 架构剖析 —— 编程 Agent 的标杆实现
支付宝
微信