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,在"思考 → 行动 → 观察"的循环中反复运行,直到完成任务。

就像一个有脑子、有手、有眼睛的助手——先想该干什么,然后动手干,干完看看结果,再根据结果决定下一步,直到把事情办成。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐