AI Agent 运行机制浅谈
AI Agent 的本质就是:一个能使用工具的 AI,在"思考 → 行动 → 观察"的循环中反复运行,直到完成任务。就像一个有脑子、有手、有眼睛的助手——先想该干什么,然后动手干,干完看看结果,再根据结果决定下一步,直到把事情办成。
AI Agent 运行机制浅谈
基于对 Claude Code 实际通信过程的完整拆解,用通俗语言解释 AI Agent 是如何工作的。
一、先理解"普通 AI"和"AI Agent"的区别
普通 AI 聊天
你问 → AI 答 → 结束
就像一个只能动嘴的朋友。你问"今天天气怎么样",它只能说"抱歉,我不知道实时天气"。它的知识截止到训练那天,之后发生的事一概不知。
AI Agent
你问 → AI 思考 → AI 动手(查资料/写文件/搜网页)→ 看到结果 → AI 再思考 → 回答你
就像一个既有脑子又有手的助手。你问"今天天气怎么样",它会自己去搜索,看到搜索结果后,再整理成答案告诉你。
核心区别:Agent 能使用工具,能观察结果,能多步推理。
二、AI Agent 的核心循环
Agent 的运行本质上是一个不断重复的循环:
┌──────────────────────────────┐
│ │
▼ │
┌─────────┐ ┌─────────┐ ┌──────────┐
│ 思考 │ → │ 行动 │ → │ 观察结果 │
│ (Think) │ │ (Act) │ │ (Observe) │
└─────────┘ └─────────┘ └──────────┘
│ │
└──────────────────────────────┘
(如果任务没完成,继续循环)
用我们分析过的真实例子来说明。
三、实例一:文件创建任务(简单循环)
用户说:“创建 test.txt,内容是’创建文件测试’”
第 1 步:思考(Think)
AI 看到这句话,在"脑子里"想:
“用户要我创建一个文本文件,名叫 test.txt,内容是’创建文件测试’。我可以调用 Write 工具来完成这件事。文件应该放在工作目录下。”
注意:这段话你看不到——它是 AI 的内部思考过程(对应我们抓包中看到的 thinking_delta)。
思考之后,AI 做了一个决定:调用 Write 工具。
第 2 步:行动(Act)
AI 输出一个工具调用指令(不是给你看的文本):
{
"工具名": "Write",
"参数": {
"文件路径": "/桌面/catch-test/test.txt",
"内容": "创建文件测试"
}
}
这就是我们抓包中看到的 tool_use 块。此时 AI 没有输出任何文本给你。
第 3 步:观察结果(Observe)
Claude Code 在本地执行 Write 工具——真的在你的电脑上创建了那个文件。然后告诉 AI:
“文件创建成功,路径是 /桌面/catch-test/test.txt”
这就是我们看到的 tool_result 消息。
第 4 步:再次思考(Think again)
AI 收到结果后想:
“文件创建成功了,我该告诉用户一声。”
第 5 步:输出回复
“文件 test.txt 已创建,内容为’创建文件测试’。”
循环结束。 因为任务完成了(stop_reason: end_turn)。
四、实例二:天气查询(稍复杂的循环)
用户说:“查询今天天气信息”
第一轮循环
思考:
“用户要查天气,但我不知道是哪个城市。我是猜一个城市,还是问用户?看用户的系统是中文版 Windows,可能在中国,但还是问清楚比较好。”
行动:输出文本(不是工具调用):
“请问你想查询哪个城市的天气?”
观察:用户回答"北京"
第二轮循环
思考:
“用户想知道北京今天的天气。今天是 2026 年 6 月 6 日。我应该用 WebSearch 工具搜索。”
行动:输出工具调用:
{
"工具名": "WebSearch",
"参数": {
"query": "北京天气 2026年6月6日 今天"
}
}
第三轮循环(内部搜索代理)
这里有个关键的设计:搜索不是主 AI 直接做的。Claude Code 启动了一个迷你版 AI 代理,专门负责搜索。
这个迷你代理的特点:
| 主 AI | 搜索代理 | |
|---|---|---|
| 系统提示词 | 几千字的详细规则 | 一句话:“你是执行搜索的助手” |
| 可用工具 | 27 个 | 1 个(搜索工具) |
| 任务 | 通用对话 | 只管搜索 |
为什么这样设计? 省钱省资源。每次请求携带 27 个工具定义要消耗约 2 万 tokens,搜索代理只需要一个工具,大幅降低成本。
搜索代理去网上找了 10 条结果,然后自己整理成了一份格式化的天气报告:
“2026年6月6日北京天气:小到中雨转多云,最高20℃,最低12℃…”
观察:主 AI 收到了这份完整的天气报告。
第四轮循环
思考:
“搜索代理已经帮我整理好了天气信息,我直接展示给用户就行,加个数据来源说明。”
行动:输出文本:
“根据搜索结果显示,2026年6月6日北京天气如下:🌧️ 小到中雨转多云…”
循环结束。
五、AI Agent 的"大脑"里装了什么?
5.1 系统提示词(System Prompt)—— AI 的"人格"
就是那几千字的规则说明,告诉 AI:
- 你是谁:“你是 Claude Code,一个编程助手”
- 你能做什么:“你可以用工具读写文件、搜索网页、执行命令”
- 你不能做什么:“不要搞破坏、不要拒绝帮助用户”
- 你的工作环境:“用户在 Windows 11 上,工作目录是 xxx”
- 你的记忆系统:“你可以把重要信息存到记忆文件里”
这就像给一个新员工一份详细的岗位说明书。
5.2 工具列表(Tools)—— AI 的"工具箱"
27 个工具,每个都有详细的"使用说明书":
{
"工具名": "Write",
"怎么用": "创建或覆盖文件",
"需要什么参数": "文件路径(必填)、文件内容(必填)",
"注意事项": "覆盖已有文件前必须先 Read"
}
AI 在思考的时候,会根据任务需求自己选工具。你不需要告诉它"用 Write 工具"——它自己知道。
5.3 对话历史(Messages)—— AI 的"记忆"
每轮对话都记录在案。如果对话太长,Claude Code 会自动做摘要压缩,保证 AI 不会"忘记"之前的事。
六、几个关键设计
6.1 思考过程不展示给用户
你看到的只是 AI 的最终回复。AI 在你背后想了什么(thinking_delta),你是看不到的。
这就像厨师在后厨切菜炒菜,你只看到端上桌的成品。
6.2 缓存机制:降低成本的秘密武器
在我们的抓包分析中:
请求 2(任务):新增输入 147 tokens,但从缓存读了 21,120 tokens
请求 3(反馈):新增输入 140 tokens,但从缓存读了 21,248 tokens
那 2 万多个 tokens 主要是工具定义 + 系统提示词。它们每次请求都一样,所以被缓存复用,只花少量新 token 的钱。
这就像你去餐厅点菜,菜单你不用每次重印——一张菜单反复用。
6.3 工具调用和文本回复互斥
在一次响应中,AI 要么输出文本,要么输出工具调用,不会同时输出。
因为逻辑上:AI 需要先"动手"做了什么事,看到结果,然后才能告诉你答案。
6.4 工具执行在本地
Claude Code 不是 AI 帮你在云端创建文件——AI 只是发出指令:“请创建这个文件”。真正创建文件的是你电脑上的 Claude Code 运行时。
AI(云端) → 发出指令:"创建文件!"
Claude Code(本地) → 执行指令:真的写文件
AI(云端) → 收到结果:"好了,文件创建成功"
AI(云端) → 告诉你:"搞定了"
七、整体架构图
text
┌─────────────────────────────────────────────────┐
│ 用户 │
│ "帮我创建 test.txt" │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Claude Code(本地运行时) │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ 组装请求体 │ │
│ │ • 系统提示词(你是谁、能做什么) │ │
│ │ • 工具定义(27个工具的使用说明) │ │
│ │ • 对话历史(之前聊了什么) │ │
│ │ • 用户最新输入 │ │
│ └──────────────────┬───────────────────────┘ │
│ │ │
└─────────────────────┼───────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Anthropic API / DeepSeek API │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ AI 模型(大脑) │ │
│ │ │ │
│ │ 1. 阅读系统提示词(理解规则) │ │
│ │ 2. 阅读工具列表(了解能力) │ │
│ │ 3. 阅读对话历史(理解上下文) │ │
│ │ 4. 思考 → 决定行动 │ │
│ │ 5. 返回:文本回复 或 工具调用指令 │ │
│ └──────────────────┬───────────────────────┘ │
│ │ │
└─────────────────────┼───────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Claude Code(本地运行时) │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ 收到响应后: │ │
│ │ │ │
│ │ 有 text_delta?→ 渲染 Markdown 展示给用户 │ │
│ │ 有 tool_use? → 执行工具(读写文件等) │ │
│ │ → 把结果加入对话历史 │ │
│ │ → 再次请求 AI(循环) │ │
│ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────┘
八、一句话总结
AI Agent 的本质就是:一个能使用工具的 AI,在"思考 → 行动 → 观察"的循环中反复运行,直到完成任务。
就像一个有脑子、有手、有眼睛的助手——先想该干什么,然后动手干,干完看看结果,再根据结果决定下一步,直到把事情办成。
更多推荐


所有评论(0)