LLM、Chatbot、Agent——三层完全不同的'AI'
AI 这个被滥用的词背后的三层架构
"AI"是个被严重滥用的词。
你跟人聊"我们公司用 AI 做了 X"——他可能想到 ChatGPT 那种聊天框。你跟另一个人聊同一个 X——他可能想到 Claude API 那种 endpoint。第三个人想到的是 Cursor 那种会改代码的工具。
这三个人想的是完全不同的东西。它们的能力、成本、风险、设计原则全都不一样。把它们混为一谈——会做出错误的产品判断。
这一章我们把"AI"这个词拆开。理解 LLM、Chatbot、Agent 这三层的本质区别——是理解所有 AI 产品的起点。
一、LLM 是什么——一个没有任何记忆和动作能力的"文本续写器"
最底层是 LLM——Large Language Model。Claude、GPT-4、Gemini,这些是 LLM。
LLM 在物理上是什么?一个巨大的统计模型——通过看了几万亿 token 的文本学到"语言的统计规律"。给它一段开头——它能续写出最可能的接续。
它的工作方式非常单纯。你输入一段文字(叫 prompt)——它输出一段文字。就这一件事——把文字续写出去。
它没有别的能力。
- 它不能打开你的文件——它不知道文件系统是什么
- 它不能跑命令——它不知道 shell 是什么
- 它不能上网——它不知道 HTTP 是什么
- 它不能调 API——它不知道外部系统是什么
- 它甚至不记得你上一次跟它说过什么——每次调用都是从零开始
这最后一点反直觉但关键。LLM 本身没有记忆。你今天问 Claude API "你叫什么名字"——它说"Claude"。明天再问——它还说"Claude"——但它不是"记得"你昨天问过——它是从训练数据里"知道"自己叫 Claude。
如果你今天对 Claude 说"我喜欢吃苹果"——明天问"我喜欢什么"——它完全不知道。LLM 没有任何机制把"你今天说的话"保留到明天。
它的"记忆"是训练时学到的知识——不是"跟你互动过的历史"。这两个是完全不同的东西。
理解了这件事,你才能理解后两层为什么存在。
LLM 在物理上是一个 API endpoint——你的产品后端 POST 一段 JSON 过去:
{"messages": [{"role": "user", "content": "Hello"}]}
它返回另一段 JSON:
{"content": "Hi! How can I help you?"}
POST 一次、GET 一次——一次交互结束。LLM 服务端不保留任何状态。它甚至不知道你是谁——它只看到一段 JSON、返回一段 JSON。
这是 LLM 的本质——一个无状态、无工具、无记忆的文本续写函数。它强大但有限——它能续写出极其聪明的文字,但它什么都不能做。
二、Chatbot 是什么——给 LLM 套了"对话历史"和"用户界面"
往上一层是 Chatbot——给 LLM 套了个壳子。ChatGPT 网页、Claude.ai 网页、文心一言 App——这些是 Chatbot。
Chatbot 在物理上做了两件 LLM 自己做不到的事。
第一件:维护对话历史。
LLM 自己没记忆——但 ChatGPT 显然"记得"你说过什么。怎么做到的?
ChatGPT 网页在后台自己保存你的对话——每次你说新话——它把之前所有对话和新话一起发给 LLM:
{
"messages": [
{"role": "user", "content": "我喜欢吃苹果"}, // 你十分钟前说的
{"role": "assistant", "content": "苹果很健康!"}, // AI 回复
{"role": "user", "content": "我喜欢什么?"} // 你刚说的
]
}
LLM 看到完整历史——能"回答"出"你喜欢苹果"。但LLM 不是"记得"你说过——是chatbot 把历史塞给它了——它看到了所有内容、续写出最合理的下一句。
这种"伪装的记忆"是 chatbot 的核心机制。LLM 视角里每次对话仍然是无状态的——但 chatbot 视角里它在持续累积历史。
第二件:提供用户界面。
LLM 是 API——你不能让普通用户直接 POST JSON。Chatbot 给用户提供能用的界面:网页、App、移动端——用户在 UI 里打字、看回复、按按钮切换 session。
这两件事加起来——Chatbot = LLM + 对话历史管理 + UI。它没给 LLM 增加任何"做事"的能力——LLM 还是只会续写文字——但 Chatbot 让这种续写变得连贯、可持续、好用。
注意一个关键事实——Chatbot 不能做事。
你问 ChatGPT "帮我删除 /tmp 下所有 .DS_Store 文件"——它会告诉你怎么删——给你 shell 命令、教你 Python 脚本——但它自己不会去删。它没法访问你的文件系统、没法跑命令、没法做任何"动作"。
ChatGPT 后来加了 Code Interpreter / Advanced Data Analysis——能跑 Python 代码——这是给 LLM 长了"一只手"——但那是从 Chatbot 升级到部分 Agent 的过渡形态。纯粹的 Chatbot 是纯文本对话。
三、Agent 是什么——给 LLM 装了"工具调用"能力
最上层是 Agent——给 LLM 装了"手脚"。Cursor、opencode、Claude Code——这些是 Agent。
Agent 比 Chatbot 多了一件根本能力——LLM 能通过 Agent 让外部世界做事。
具体怎么做?通过一个叫 tool calling(工具调用)的协议。
机制大致是这样的——
Agent 后端在调 LLM 时,告诉 LLM "你可以用这些工具"——比如 read_file(读文件)、write_file(写文件)、bash(跑命令)。LLM 看到工具清单——它在生成响应时有两种选择:
- 输出纯文本(像 Chatbot 那样)
- 输出一段结构化的"工具调用请求"
工具调用请求长这样:
{"tool": "read_file", "args": {"path": "/Users/lee/main.py"}}
这还是文字——LLM 还是只会续写文字——但这段文字有结构、有约定——Agent 后端能解析它、识别出"LLM 想读 /Users/lee/main.py 这个文件"。
然后 Agent 后端真的去读这个文件——把文件内容拿到。再塞回 LLM 的下一次请求里——告诉 LLM "你刚才想读的文件、内容是这样"。
LLM 看到文件内容——继续思考。它可能再调一个工具("我还要看另一个文件")、可能给出最终回复("看完了、这段代码有 bug 在第 30 行")。
这个循环可以跑很多轮:
LLM 想要 → 输出工具调用请求
↓
Agent 后端 → 真的执行工具 → 拿到结果
↓
LLM 看到结果 → 继续思考 → 想要下一个工具
↓
... 循环 ...
↓
LLM 不再想要工具 → 输出最终文字回复
这是 Agent 的核心——让 LLM 通过 tool calling 间接地"做事"。LLM 还是只会续写文字——但 Agent 后端把 LLM 的"想要"翻译成实际操作。
Cursor 之所以"能改代码"——是因为它的 LLM 调用 edit_file 工具——Cursor 后端真的改了文件。opencode 之所以"能跑测试"——是因为它的 LLM 调用 bash 工具——opencode 后端真的跑了 npm test。
Agent = LLM + 工具集 + 循环 + 对话历史 + UI。
每一层比前一层多了能力维度:
- LLM = 只会输出文字
- Chatbot = LLM + 能持续对话
- Agent = Chatbot + 能让世界发生变化
第三层是质的飞跃——前两层只在文字世界活动,Agent 跨入了"动作世界"。这跨越带来巨大的能力——也带来巨大的风险。Agent 能改你的代码——也能改坏你的代码。Agent 能跑命令——也能跑 rm -rf。第 7 篇专门讲怎么管这些风险。
四、能力边界——三层各自能做什么不能做什么
理解三层最有用的方式是想"它们各自的能力边界"。
LLM 能做的事:
- 文字生成、改写、翻译、总结
- 回答基于训练数据的知识问题
- 简单推理、模式识别
LLM 不能做的事:
- 知道实时信息(今天天气、最新新闻)
- 跨次对话记忆(这次说的下次记不住)
- 操作任何外部系统(文件、命令、API)
Chatbot 在 LLM 基础上额外能做:
- 持续多轮对话
- 用户友好的交互
- 多 session 管理
Chatbot 仍然不能做:
- 操作任何外部系统(仍然没有工具)
- 真正访问实时信息(除非加了搜索这种 Agent 雏形)
Agent 在 Chatbot 基础上额外能做:
- 读写文件
- 跑命令
- 调用 API
- 上网搜索
- 控制其他系统
- 多步骤复杂任务
Agent 仍然不能做(取决于工具集):
- 工具没暴露的事——没有 email 工具就不能发邮件
- 工具实现限制的事——bash 工具有 timeout 就不能跑无限长的命令
把这张能力边界图记住——你能立刻判断"某个 AI 产品是哪一层"。
ChatGPT = Chatbot。 Claude API = LLM(裸 API)。 Cursor = Agent。 opencode = Agent。 GitHub Copilot 的代码补全 = LLM(裸调用,没循环、没工具)。 GitHub Copilot Chat = Chatbot(有对话、没工具——直到他们加了 agent mode)。
五、混淆三层会犯哪些错
把这三层混为一谈——会犯几种典型错误。
错误 1:把 LLM 的局限怪到 Agent 头上。
你说"Cursor 不会用我的代码风格"——这其实是 LLM 没看过你的代码风格——Cursor 已经把你的代码塞进 LLM 的 context 了——是 LLM 自己"忽略"了你的风格偏好。
给 Agent 加再多功能也不能根本解决——你需要解决的是 LLM 层的问题(比如更明确的 prompt、更多示例)。
错误 2:把 Agent 的能力期待给 Chatbot。
你说"ChatGPT 怎么不能自动跑代码"——它结构上就不是 Agent。OpenAI 后来加了 Code Interpreter——本质是给 ChatGPT 长了"一只手"——从 Chatbot 升级成局部 Agent。
但纯 Chatbot 的期待是不该有的——它就不是干这个的。
错误 3:把 Chatbot 的体验期待给 Agent。
你说"Cursor 怎么不像 ChatGPT 那样聊天流畅"——Cursor 不是聊天产品。它的输出更结构化、更聚焦任务——因为它的设计目标是"完成任务"不是"陪你聊"。
期待错了——评价就错了。
错误 4:把 LLM 当 Chatbot 用。
直接调 Claude API、不维护对话历史——结果发现 AI"什么都不记得"。这不是 AI"健忘"——是你忘了把历史塞进去。
调 LLM 必须自己管历史——这是个工程负担、不是 LLM 帮你做的事。
六、这三层是怎么演化出来的
理解三层最深的方式是看历史——它们是按时间顺序长出来的。
2020-2022:LLM 时代。OpenAI 发布 GPT-3——一个纯粹的文本续写 API。开发者 POST 一段 prompt、拿到续写。没有对话概念、没有 chat、没有工具。
那时候用 GPT-3 做产品很累——你要自己设计 prompt 让 LLM 假装在对话、自己解析输出、自己管理历史。
2022 年 11 月:ChatGPT 时代开始。OpenAI 发布 ChatGPT——给 GPT-3.5 套了对话历史管理 + UI——一夜间引爆。所有人突然"用得起 AI 了"——但实际能力跟 GPT-3 没太大变化——是包装变好了。
ChatGPT 是 Chatbot 形态。
2023 年 6 月:Function Calling 发布。OpenAI 在 API 里加了 function calling——这是 tool calling 的前身。LLM 现在能输出"我想调用 X 函数"——agent 后端能解析、执行、回灌。
这是 Agent 时代的开始。
2023 年下半年:Agent 工具爆发。Cursor、Continue、Aider、AutoGPT、BabyAGI——这些工具都基于"LLM + 工具循环"的 Agent 范式。各家在 prompt、工具集、UI 上各自探索。
2024-2025:Agent 成熟期。Anthropic 推 Claude Code、OpenAI 推 Code Interpreter / Operator、Google 推 Gemini Agents——大厂下场。同时开源 Agent 如 opencode、Devin、SWE-agent 在各种 benchmark 上不断刷新成绩。
现在我们处在 Agent 时代。但这三层都还活着——LLM 仍然在被用(裸 API 调用)、Chatbot 仍然在被用(ChatGPT 等)、Agent 是最新的形态。
理解每一层是为什么存在、解决了什么、还有什么不解决——你才能判断你的产品该在哪一层。
七、本书研究的是 Agent——为什么选 opencode
本书研究的是 Agent 层——AI 产品里最复杂、最难做对、最有产品空间的一层。
LLM 层的设计判断主要在 prompt——已经有大量"prompt engineering"资料。
Chatbot 层的设计判断主要在对话历史管理 + UI——成熟产品如 ChatGPT 已经定义了标准。
Agent 层是当前 AI 工程的真正前沿——还没有公认的"标准范式"——每个产品都在摸索 tool 集设计、循环管理、错误处理、context 优化、multi-agent 编排、安全权限。
opencode 是这一层的完整开源样本。我们选它作为贯穿全书的案例——不是因为它是最好的 Agent 产品(它不一定是)——是因为它完整、开源、跨多个 LLM provider——让我们能看到 Agent 产品的所有维度。
后面 10 篇我们会逐层拆开 Agent 产品的核心机制——prompt、循环、工具、context、多 agent、协议、安全、生态、UI、运行时——每一层用 opencode 作为具体的"长什么样"的样本。
但在那之前——你需要先彻底理解 LLM 和 Chatbot 这两层。因为 Agent 是建立在它们之上——你不懂 LLM 怎么续写文字、不懂 Chatbot 怎么管对话——你看 Agent 设计会一头雾水。
接下来 5 章我们就铺这两层。