Harness 到底是什么?一次讲清楚
@theo 长文解读
harness
bash
read_file
search
edit_file
Harness
到底是什么?
大模型只会生成文字。
是谁让它真的动手干活?
01人 → 界面
人用电脑不写代码
靠的是界面
界面 Interface
Chrome · Claude Code
ChatGPT App
按钮
快捷键
命令
↓ 人看不见的那一层
def open_tab(url): …
on_key("cmd+t", new_tab)
subprocess.run(cmd, shell=True)
代码一直都在,人只看见界面。
02模型 → 文字
大模型默认只做一件事
生成文字
<read_file name="README.md">
……也只是一串字
像关着机敲键盘:什么也不会发生
03harness = 五样东西
想让模型真动手
需要这五样
1工具read_file · edit_file · bash …
2调用格式用文字表示「去跑这段代码」
3解析并执行的系统认出格式,运行对应的代码
4结果回传把工具的输出交还给模型
5工具清单有哪些工具、各自怎么用
合起来 = harness
04它跑的是一个循环
调用 → 执行 → 回传
→ 模型再想下一步
① 模型
写出调用
② harness
认出来,去执行
③ 工具运行
read_file(…)
④ 结果送回
模型接着往下想
一圈一圈
直到任务做完
05一条分界线
Claude Code
其实分两半
界面
终端里的 TUI · 桌面 App
(你敲 claude 打开的那个)
↑ 人看见的
↓ 模型看见的
harness
Anthropic Agent SDK
Codex 同理:App ⇄ Codex App Server
06拆下来,换个 App
同一个 harness
能装进别的应用
harness
装进的应用
Cursor 的 harness
Grok Bot
Pi
OpenClaw
Agent SDK
+ Codex App Server
T3 Code
Claude Code 和 Codex 把 harness 焊进了自己的 App,所以大家容易混。例子都出自原文。
07一个比方
harness 是厨房
工具是锅碗刀铲
harness = 厨房
没有哪个厨房什么都有 → 允许自带工具
TypeScript 插件
操作电脑 CUA
08工具层
工具在另一层
人和模型都摸不到
bash
read_file
edit_file
read_skill
…
harness
工具层
TS 插件
跳转定义…
操作电脑
截屏 · 点击
看不见 ✕
✕ 看不见
界面
harness 把工具亮给模型,也亮给界面。
09MCP
工具在这里跑
MCP 去别处要
工具 Tool
>_
在本机跑代码
像 Chrome 插件
得先装上
MCP
向别处发请求
像 网站
知道地址就能用
最常见:把数据接给模型 邮件网站数据
10全景
MCP 像菜谱
是做法,不是锅铲
bash
read_file
edit_file
harness
memory
CLAUDE.md
AGENTS.md
工具层
在 harness 里跑
界面
模型
数据层
代码跑在「别处」
Supabase MCP
PostHog MCP
T3 Code MCP
= 一本菜谱
11那 agent 是什么?
harness + 模型
= agent
模型
只会出字
+
harness
自己不会做菜
=
agent
能开火了
厨师
模型
厨房
harness
餐厅
T3 Code 带哪间厨房来都行
不同的 agent,往往只是 harness 的配置不同:工具、指令、MCP。
记住三句
01界面,给人用
02harness,把模型的文字
变成动作
03harness + 模型 = agent
下次听到 harness,先问一句:
它是给人看的界面,
还是让模型动手的那一层?
原文:Theo《What is a “harness”?》
x.com/theo · 2026-10-23