拆.
起点——AI Agent 是什么 · 第 01

LLM、Chatbot、Agent——三层完全不同的'AI'

AI 这个被滥用的词背后的三层架构

5500读完约 28 分钟craft:B+发布于 2026-06-21

"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 章我们就铺这两层。