第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 -->|反馈| Brain
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 -->|反馈| Brain
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 -->|反馈| Brain
flowchart 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 -->|增强| Model
graph LR
    Model[Model 推理] -->|判断需要| K[加载 Skills]
    K -->|读取| S[Skills 文件]
    S -->|注入| C[上下文]
    C -->|增强| Model
graph LR
    Model[Model 推理] -->|判断需要| K[加载 Skills]
    K -->|读取| S[Skills 文件]
    S -->|注入| C[上下文]
    C -->|增强| Model
graph LR
    Model[Model 推理] -->|判断需要| K[加载 Skills]
    K -->|读取| S[Skills 文件]
    S -->|注入| C[上下文]
    C -->|增强| Model

CLAUDE.md 自动注入:项目根目录的 CLAUDE.md 文件会被自动注入到上下文,提供项目特定信息(架构、约定、注意事项)。

3. Observation(感知系统)—— Agent 的眼睛

一句话定义:环境状态的感知接口。

感知类型示例来源
代码状态git diff、git statusBash 工具输出
文件结构ls -la、treeGlob 工具输出
错误日志编译错误、测试失败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:

AgentHarness提供的能力
DQNAtari 模拟器游戏画面输入、动作输出、分数反馈
AlphaGo围棋引擎棋盘状态、落子接口、规则验证
AlphaStar星际争霸 II 引擎游戏状态、单位控制、资源信息
OpenAI FiveDota 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 + 多渠道
生活管理 Harness
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 + 多渠道
生活管理 Harness
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 + 多渠道
生活管理 Harness
timeline
    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 落地

ModelHarnessAgent 产品
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层、工具层、管理层、扩展层。



相关内容

如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
Cygnus Yang 支付宝支付宝
Cygnus Yang 微信微信