先解释为什么会有这句话
这句话最早其实是很多 AI Infra 公司(包括 LangChain、OpenAI SDK、Anthropic、Cognition、Cursor 等生态)慢慢形成的共识。
以前大家觉得:Agent = 一个超级聪明的大模型,后来发现不是。真正上线以后,大模型真正负责的大概只有:理解问题、推理、决策、写一点代码、输出下一步。
真正复杂的是:
- 调用工具
- 状态管理
- 上下文压缩
- 错误恢复
- 权限控制
- Memory
- Observation
- Workflow
- Retry
- Logging
- Evaluation
这些东西全部不是模型。
于是大家开始说:Agent = Model + Harness,这里 Harness 可以理解成:把模型"驾驭"起来的一整套运行框架。
我怎么理解 Harness
我更喜欢把 Harness 理解成:Agent Runtime,里面至少包括几个层次。
第一层:Context Harness
就是模型到底看到什么。
例如:User Question + History + Memory + Tool Results + Long Context + Prompt,其实都是 Harness 决定。很多 Agent 的性能不是模型决定,而是:你给模型看了什么。
第二层:Execution Harness
模型说:Call Search,谁去调用?模型不会。Harness 去:execute() -> 拿到结果 -> 继续喂回模型,包括:Tool Calling 、MCP 、 Function Calling 、 API 、 Browser 都属于这里。
第三层:Loop Harness
Agent 为什么能一直干活?因为:Think -> Act -> Observe -> Think -> Act -> Observe,这个循环不是模型自己会。Harness 在控制:
while not done:
model()
execute()
observe()
所以 ReAct 本质上就是一种 Harness。
第四层:Recovery Harness
Agent 最大的问题其实不是不会。而是会失败。
例如:
- Tool timeout
- API error
- 404
- Permission denied
- JSON parse failed
这些模型不会处理,Harness 要:Retry 、 Fallback 、 Alternative Tool 、 Repair JSON 、 Human in loop,真正上线以后,这部分代码可能比 Prompt 还多。
所以 Model 的职责越来越小了吗?
恰恰相反。 Model 的职责越来越纯。以前,模型负责:Planning、Tool、Memory、Workflow、Coding、Everything,现在越来越变成:Reasoning 、 Decision 、Planning 、Generation,其它全部外包。所以Model 更像CPU,Harness 更像Operating System,这个比喻我觉得比 “Harness” 更容易理解。
但我觉得还缺一层,如果让我定义,我会写:Agent=Runtime+Model+Environment,或者:Agent=Reasoning+Execution+World。为什么?因为很多 Agent 能力其实来自 Environment。
举个例子:Claude Desktop为什么厉害?不是 Claude。而是:Claude +MCP +Filesystem +Git +Browser +Slack +Notion。换句话说:Agent 能干什么。80% 是:它能接触世界吗?而不是:它会不会推理。
再进一步,我觉得还缺 Memory,很多人忽略 Memory,真正长期 Agent:Model+Harness+Memory。Memory 包括:短期:Conversation、Scratchpad,长期:User Preference、Past Experience、Project Knowledge、Failures、Learned Skills。没有 Memory,Agent 永远都是,第一天上班。
Goal
│
▼
┌────────────┐
│ Model │
│ Reasoning │
└────────────┘
│
Decision / Plan
│
▼
┌────────────┐
│ Harness │
│ Runtime │
└────────────┘
│ │ │
│ │ │
Memory Tools Environment
│ │ │
└────┴────┘
│
Observation
│
▼
Model
其中:
Model 决定"怎么想"(推理、规划、判断)。
Harness(Runtime) 决定"怎么执行"(循环、工具调用、错误恢复、状态管理)。
Memory 决定"是否积累经验"(跨会话、跨任务的持续能力)。
Environment 决定"能影响什么世界"(浏览器、代码、文件、业务系统、机器人等)。
如果你在学习或构建 Agent,我建议把精力按下面的比例分配:
20%:模型能力——理解推理、Prompt、工具调用等基本能力。
50%:Harness / Runtime——上下文管理、工作流、状态机、调度、容错、可观测性。
30%:Environment 与 Memory——如何连接真实业务系统,如何让 Agent 跨任务积累知识和经验。
一句话总结我的观点:
“Agent = Harness + Model” 是一个优秀的工程起点,但不是终点。真正完整的 Agent 更像是:Agent = Model(思考) + Harness(执行) + Memory(积累) + Environment(工作环境)。
如果把 Agent 比作一个人,那么模型是大脑,Harness 是神经系统和身体协调机制,Memory 是长期记忆,Environment 则是这个人能够接触和改变的世界。只有这四者协同,Agent 才真正具备持续完成复杂任务的能力。