01Bread Agent · 第 9 章
总进度 9 / 33

子 Agent(终章)

到现在我们的 agent 已经会读文件、写文件、跑 shell、能多轮聊、能持久化。但有一类任务它处理得吃力: 调研类 。

2026-09-28约 45 分钟540 行代码难度 ★★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 把一项调研交给子助手

到现在我们的 agent 已经会读文件、写文件、跑 shell、能多轮聊、能持久化。但有一类任务它处理得吃力:调研类。

用户:"分析一下这个项目的结构,说说每个 Python 文件大概是做什么的"

主 agent 要做这事,会:

  1. 调 list_dir 看目录
  2. 调 read_file 读 main.py
  3. 调 read_file 读 agent.py
  4. 调 read_file 读 tools.py
  5. ... 读 6 个文件
  6. 把所有读到的内容整合后回答你

读完这些文件后,全文和工具记录都会留在主助手的 messages 里。后续每次请求都要携带更多内容。如果当前只需要一份项目结构说明,可以让另一个助手完成阅读,再把结论交回来。

本章就把这项调研交给一个有独立消息列表的子 Agent。

   你
    │
    ▼
┌────────────────────────┐
│   主 Agent              │  工具集: read/write/list/shell/spawn_research_agent
│                        │
│   决定调研 ─────┐       │
└─────────────────┼──────┘
                  │
                  ▼
        ┌───────────────────────┐
        │   子 Agent (research)  │  工具集: 只能 read_file / list_dir(受限)
        │                       │
        │   ... 循环 ...         │
        │   ... 返回 200 字报告  │
        └────────┬──────────────┘
                  │
                  ▼
            字符串报告 回填到主 agent 的 messages

主助手主要接收简短报告,文件全文留在子助手的消息历史中。这样能减少主对话需要携带的内容,但报告是否完整、是否遗漏细节,仍要检查。

<!-- bread-visual:start -->

给子助手一个小任务和一套小工具

图解: 子助手有独立消息列表,只把调研报告带回主助手。 没有注册的工具不能调用;子助手也有自己的步数上限。

<!-- bread-visual:end -->

2. 跑起来

cd ch08_subagent
python main.py

启动后试这一题:

你 > 分析一下当前目录里都有什么 Python 文件,每个文件是做什么的

预期输出大致如下:

  [hook:log] 即将调用 spawn_research_agent 参数={'question': '分析当前目录下的 Python 文件...'}

  ┌─ [subagent] 开始调研: 分析当前目录下的 Python 文件...
  │ [subagent] list_dir({'path': '.'})
  │ [subagent] read_file({'path': 'agent.py'})
  │ [subagent] read_file({'path': 'tools.py'})
  │ [subagent] read_file({'path': 'subagent.py'})
  └─ [subagent] 调研完成 (480 chars)

AI > 当前目录有 6 个 Python 文件:
- main.py: REPL 入口
- agent.py: Agent 类的核心实现
- tools.py: 工具定义
- subagent.py: 子 agent 实现
- hooks.py: 钩子系统
- session.py: 会话持久化

关键观察:

  • 主 agent 自己只调了 1 次工具(spawn_research_agent)
  • 子 agent 在 ┌─...└─ 里自己内部循环调了多次工具
  • 主 agent 拿到的只有一段简洁的报告,主 messages 没被 6 个文件全文撑爆

<!-- bread-practice:start -->

实操画面对照

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。