为什么你的AI不好用?不是AI笨,是你没给它搭架子
摘要:本文深入剖析了AI Agent的核心架构,指出单纯使用大语言模型(LLM)就像只有CPU没有操作系统,难以发挥真正价值。文章将AI系统比作计算机:LLM是CPU,Harness是操作系统,工具层是外设。详细拆解了生产级Agent必备的12个组件,包括编排循环、工具层、记忆系统等核心模块。通过Claude、OpenAI等案例说明,同样的模型配合专业Harness后性能可提升2-3倍。作者强调,
文章信息
预计字数:4800 字 阅读时间:16 分钟 难度等级:⭐⭐(小白友好,无需技术基础)
核心价值:搞懂AI Agent背后的完整架构,明白"为什么你的AI不好用"
你有没有想过一个很离谱的事。
同一个Claude,有人拿来做了完整的创业项目。有人用来写周报。
同一个ChatGPT,有人让它在后台自动跑任务、搜资料、管文件。
有的人只是问它"今天穿什么"。
区别在哪?
不是谁更聪明。是有人给AI搭了架子,有人没有。
你跟AI聊的那些天,都浪费了
坦白说,我也是从"跟AI聊天"那个阶段过来的。
-
第一次接触ChatGPT,觉得太神奇了,什么都能回答。
-
第二次,开始让它帮忙写邮件、改文档。
-
第三次,发现它忘了上回聊了什么,得重新说一遍。
-
第四次,让它帮我分析个数据,结果它编了个假数据糊弄我。
-
第五次,我开始怀疑——这东西到底有没有用?
-
怎么说呢……
不是AI不行。是你光丢一个裸模型在那,指望它自己搞定一切。
你以为你在用AI,其实你在用一块没装系统的CPU。

一句话搞懂:AI到底缺了什么
Agent Harness = 包裹在LLM外面的完整软件基础设施。
光有模型不行,就像光有CPU你啥也干不了。
你得给它装系统、装驱动、连硬盘、接外设。
这套"配套设施",就是 Harness。
有人翻译成"驾驭框架"。
我更喜欢叫它——AI的操作系统。
因为它的作用,跟操作系统一模一样:
让一块裸芯片变成一个能干活的完整系统。
先搞清楚三个词:LLM、Agent、Harness
这三个词天天看到,大部分人分不清。一分钟给你讲明白。
LLM 就是大语言模型本身。
Claude、GPT-4、DeepSeek……这些都是LLM。
它们干一件事
——根据你给的内容,预测下一个字。没了。
Agent 是AI表现出的一种行为。
当它能自己决定下一步做什么、自己调工具、自己检查结果、自己纠错
——这个状态叫Agent。
注意,Agent不是某个产品,是涌现出来的能力。
Harness 是产生这种能力的"机器"。
你搭好一套系统,让LLM在里面跑起来,它就表现出Agent行为。
一句话:LLM是发动机,Harness是整辆车。
你说你要开车,光拿个发动机有什么用?
计算机的比喻:为什么这个类比是精确的
有个叫 Beren Millidge 的人,2023年写了一篇文章,把这个比喻讲到了极致。
他说:我们实际上重新发明了冯·诺依曼架构。
你想想一台电脑怎么工作的
CPU = LLM
计算能力很强,但没内存、没硬盘、没外设,啥也干不了。
内存(RAM) = 上下文窗口。速度极快,但容量有限。claude.ai 给你 200K token,听起来很多,聊着聊着就满了。
硬盘 = 记忆系统。跨会话保存信息。下次打开还能找到上次聊的内容。
外设驱动 = 工具层。让AI能操作文件、搜索网页、执行代码。没有驱动程序,CPU知道键盘在那也用不了。
操作系统 = Harness。把上面这些东西全部管起来,协调运行。
不是比喻。这是计算系统的自然抽象。
这点懂了,后面拆具体组件,你就全懂了。
一个生产级Agent,到底长什么样

原文拆了12个组件。
我不用术语,用大白话讲。你当我在拆一台电脑给你看。
## ① 编排循环——心脏
这是整个系统的心脏。
简单说就是一个循环:
组装指令 → 调用模型 → 解析结果 → 执行动作 → 把结果喂回去 → 再来一轮。
从代码角度看,就是一个 while 循环。没什么高深的。
但这个循环管的东西多了
- 管工具调用
- 管错误处理
- 管上下文更新
- 管什么时候该停
Anthropic 自己说他们的运行时就是一个"笨循环",所有智能都在模型里。
Harness 只负责管理轮次。
你交给AI一个任务,它要跑3轮还是30轮,全靠这个循环在后面默默转。
## ② 工具层——手和脚
AI没有手。
工具层就是给它装手。
每个工具都是一个"技能包":名称、描述、能接收什么参数。
AI看懂了这些描述,就知道什么时候该用哪个工具。
Claude Code 有六大类工具:
- 文件操作
- 搜索
- 执行命令
- 网页访问
- 代码理解
- 子Agent
但这里有个极其反直觉的事实
工具越多,AI表现得越差。
Vercel 从他们的产品里删掉了 80% 的工具,结果反而更好了。
为什么?因为工具描述也要占上下文窗口。
塞太多工具进去,AI反而不确定该用哪个。
Hermes 的做法是:120 个技能,按需加载。
当前任务需要什么,就只把相关的几个塞进上下文。
这叫最小工具集原则。
## ③ 记忆系统——硬盘
- 短期记忆:当前对话里的聊天记录。
- 长期记忆:跨会话保存的信息。
Claude Code 用项目文件和自动生成的 CLAUDE.md 来记东西。
LangGraph 用 JSON 数据库。OpenAI 用 SQLite。
Hermes 用的是P 链协议
——每次会话都记录 parent_session_id,形成一条完整的血缘链。
你聊了三个月,它顺着这条链子就能找到任何一次对话。
一个关键设计:Agent 把自己的记忆当成"提示"而不是"真理"。
感悟:AI把记忆当参考而不是真理——这个设计哲学值得所有做产品的人想想。我们有多少时候把自己的"经验"当成了不可推翻的真理?
每次行动前,它会对照实际状态验证一遍。就像你出门前看一眼备忘录——上面写的跟实际不一致,以实际为准。
相关阅读:https://mp.weixin.qq.com/s/jgHHb7Dt6P_n3Ev36gFVxg
## ④ 上下文管理——最容易翻车的地方
这是很多Agent悄悄翻车的地方。
核心问题叫上下文腐烂:当关键信息落在对话中间位置时,模型性能下降 30% 以上。
斯坦福有个研究叫"Lost in the Middle"
哪怕是百万 token 的窗口,聊久了也会出现指令遵循能力的退化。
生产级的解决方案有四种:
压缩:对话太长了就摘要。
Hermes 的压缩策略是 threshold:0.3,protect_last_n:10
也就是说,上下文用到 30% 的时候开始压缩,但最近 10 轮对话绝对不动,保证"刚刚说了什么"不会丢。
遮蔽:旧的工具输出藏起来,但保留"调用过什么工具"这个记录。
即时检索:不全加载,用的时候再去搜。
Claude Code 用 grep、glob、head、tail 而不是把整个文件塞进去。
子Agent委派:让子Agent去广泛探索,但只返回 1000-2000 token 的压缩摘要。
📍 Anthropic 的上下文工程目标:找到最小的、高信号 token 集合,最大化产生期望结果的概率。
翻译成人话:只给AI看最关键的信息,越少越好。
## ⑤ Prompt 组装——每次都在拼乐高
每一步,Harness 都要把这些东西拼在一起喂给模型:
系统指令 → 工具定义 → 记忆文件 → 对话历史 → 你当前的消息。
OpenAI 的 Codex 用的是严格优先级栈:
- 服务器控制的系统消息最高
- 工具定义第二
- 开发者指令第三
- 用户消息第四
对话历史垫底。
每一层都有优先级。
AI 先看什么后看什么,效果天差地别。
## ⑥ 输出解析——听懂AI在说什么
现代Agent用的是原生工具调用
模型直接返回结构化的 tool_calls 对象,不是一段需要你猜的自由文本。
Harness 的逻辑很简单:有工具调用?执行。没有?那就是最终答案。
但如果解析失败怎么办?有个绝招叫 RetryWithErrorOutputParser
把原始问题、AI的失败回答、报错信息一起丢回给AI,让它自己改。
## ⑦ 状态持久化——存档功能
Agent 干到一半挂了怎么办?
LangGraph 用检查点机制,在关键步骤存档,挂了可以从存档恢复。
OpenAI 有四种互斥策略来管理状态。
Claude Code 更绝——直接用 git commit 当检查点。
你想想这个设计多优雅:每次AI做完一个有意义的事,自动 commit。
出问题了,git reset 就能回退。
Hermes 也用类似思路。进度文件就是草稿区,会话数据库就是存档点。
## ⑧ 错误处理——容错率决定生死
说个很残酷的数学。
一个 10 步流程,每步 99% 的成功率。
端到端成功率是多少?90.4%。
20 步呢?81.8%。
50 步呢?60.5%。
错误会快速叠加。
这就是为什么你的Agent跑着跑着就歪了。
LangChain 区分四种错误:
- 瞬时错误(重试就行)
- 模型可恢复错误(把错误信息喂回去让AI自己调)
- 用户可修复错误(暂停等人来)
- 意外错误(直接报错)
我给 Hermes 设计了一个特别有的配置:密钥池轮询
4 个 API 密钥,round_robin 轮着用
一个密钥限额到了自动切下一个
这听起来不起眼,但在错误处理层,这是救命的。
半夜跑个长任务,不会因为一个密钥限额用完就整个挂掉。
## ⑨ 护栏与安全——给AI上锁
OpenAI 的SDK有三层护栏:输入检查、输出检查、工具调用检查。
Anthropic 更彻底
——他们把"AI想做什么"和"系统允许做什么"完全分开。
模型决定尝试什么动作,工具系统决定让不让你做。
Claude Code 控制着大约 40 项独立的工具权限。
高风险操作必须你手动确认。
没有护栏的Agent,就像没刹车的车。跑得越快,越危险。
## ⑩ 验证循环——从玩具到产品的分水岭
这是我觉得最容易被忽视的一个组件。
Claude Code 的创建者 Boris Cherny 说了一句话:给模型一种验证自己工作的方法,质量可以提升 2 到 3 倍。
三种验证方式:
- 基于规则的——跑测试、跑 lint、做类型检查。确定性最高。
- 视觉反馈——截图对比,UI 任务必备。
- LLM 当裁判——另一个独立的AI来评估输出,能捕获语义问题。
方法论提醒:如果你的Agent只能"做"不能"查",它就是个半成品。
## ⑪ 多Agent架构——该拆的时候拆
一个人干不了所有事,AI也一样。
Claude Code 支持三种模式:
- Fork(复制一份上下文)
- Teammate(独立Agent通过文件通信)
- Worktree(每个Agent一个独立分支)
但 Anthropic 和 OpenAI 都说了一句话——先最大化单Agent。
多Agent不是银弹。
它会带来额外开销:路由需要额外的LLM调用,交接时会丢失上下文。
什么时候才该拆?工具超过 10 个重叠的时候。或者任务领域明显不同的时候。
Hermes 目前走的就是单Agent路线,但通过子Agent委派来处理复杂子任务。
拆不拆不重要,重要的是拆得值不值得。
## ⑫ 生命周期管理——从启动到结束
Agent 不是点一下就开始、关一下就结束那么简单。
- 初始化:读配置、加载记忆、注册工具、设置权限。
- 运行中:编排循环、状态管理、错误恢复。
- 结束后:保存进度、更新记忆、释放资源。
Claude Code 的做法是:
一个初始化Agent先搭好环境(脚本、进度文件、功能列表、初始 git commit)
之后的每个会话,Agent 先读 git 日志和进度文件来"定位自己"。
像不像你每天早上到工位,先看一眼昨天的笔记,再开始干活?
看看这些组件是怎么协同运转的
先别被12个组件吓到。
它们跑起来其实就是一个循环:
-
第一步:组装。系统指令 + 工具描述 + 记忆 + 对话历史 + 你的消息,全部拼好。
-
第二步:调用。发给模型,等它回答。
-
第三步:判断。回答里有没有工具调用?有,执行。没有,就是最终答案,结束。
-
第四步:执行。验证参数、检查权限、沙盒执行、捕获结果。
-
第五步:打包。把结果格式化成模型能看懂的消息。
-
第六步:更新。结果追加到对话历史。上下文快满了?触发压缩。
-
第七步:循环。回到第一步。
什么时候停?
-
模型说不需要工具了。
-
超过最大轮次了。
-
token 预算用完了。
-
触发了安全护栏。
-
你手动中断了。
-
简单的问题 1-2 轮就搞定。
-
复杂的任务可能链式执行几十轮。
-
一个循环。
就这么简单。
但12个组件全在上面默默运转。
说句可能有点伤人的话
现在你知道了Agent Harness是什么。
但我觉得大部分读这篇文章的人,听完也就听完了。
不会有任何改变。
因为知道和做到之间,隔着一条巨大的鸿沟。
你当然可以继续用Claude聊天、用ChatGPT写周报。
也没人规定你必须搭一个Agent。
但我想让你记住一个数据。
LangChain 只改了包裹LLM的基础设施
同样的模型、同样的权重
就从 TerminalBench 的前 30 名之外跃升到了第 5 名。
模型没变,变的只是架子。
这就好比你买了一台顶配的Mac Pro,拿它当菜板用。不是Mac不行,是你没装软件。
所以,该怎么做?
如果你是一个普通用户,不用急着搭什么Agent。
但下次你用AI的时候,至少知道一件事:它不好用,不是因为模型笨,是因为没人给它搭架子。
这就够了。
如果你是开发者,或者想往这个方向走
先别想着搞多Agent。先把单Agent做到极致。
先别想着装一堆工具。先想想当前任务真正需要哪几个。
先别想着写完美的prompt。先把上下文管理做好。
这不是我说的。
这是 Anthropic、OpenAI、LangChain 这些最头部的团队,用实践验证出来的结论。

最后
原文最后一句话我特别喜欢:
下次你的Agent出了问题,别怪模型。看看Harness。
我说得更直白一点:
你嫌AI不好用的时候,先想想——你给它装系统了吗?
没装操作系统就想让CPU跑程序。这锅,CPU不背。
标签:#AI Agent #Harness #Claude #Hermes Agent架构
作者:大象
相关链接
-
原文:LLM 怎么变成 Agent:Harness 全景拆解:https://mp.weixin.qq.com/s/8EeCcSElqICRBtN2Zj0bFg
-
Hermes Agent 官方文档:https://github.com/NousResearch/hermes-agent
-
Claude Code SDK 文档:https://docs.anthropic.com/en/docs/claude-code/sdk
-
LangChain Deep Agents:https://blog.langchain.dev/deep-agents/
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
相关阅读:
所有评论(0)