第 08 篇

子智能体

Simon Willison 介绍子智能体如何节省主智能体的上下文,以 Claude Code 的 Explore 子智能体为例,讨论并行任务和专家分工。

Hex4C59 4 分钟阅读 更新于 2026-10-14

译文信息

  • 原文:Subagents
  • 作者:Simon Willison
  • 中文翻译与整理:Hex4C59(AI 辅助)
  • 翻译整理:2026-10-11

本文为非官方中文译文,依据提供的原文正文翻译,并按系列目录补入小节标题。正文中的「我」及实践经历均指原作者。上下文容量、基准测试和性能方面的表述保留原文记录,译者未做独立测量。并行提示词原文保留在文本块中,下方附中文翻译。

大语言模型(Large Language Models,LLM)受到上下文上限的限制,也就是在任一时刻,它们的工作记忆能容纳多少 Token。过去两年,虽然 LLM 的能力有了显著提升,这个上限却没有增长太多。它们通常最多能容纳约 1,000,000 个 Token,而基准测试经常发现,在低于 200,000 个 Token 时,结果质量更好。

仔细管理上下文,让它保持在这些限制之内,是获得良好结果的关键。

子智能体(subagent)提供了一种简单而有效的方法:在不大量消耗编程智能体宝贵的顶层上下文的情况下,处理更大的任务。

当编程智能体使用子智能体时,实际上相当于派出一个全新的自身副本,让它完成指定目标。这个副本有独立的上下文窗口,并从一条新的提示词开始工作。

Claude Code 的 Explore 子智能体 #

Claude Code 在日常工作流程中大量使用子智能体。我们就用它来举例。

每当你针对一个现有仓库开始新任务,Claude Code 都需要先探索仓库,了解它的大体结构,并找到完成任务所需的相关信息。

为此,它会构造一条提示词,派出一个子智能体进行探索,并让它返回所发现内容的说明。

我向 Claude Code 提供了一张指南中某个页面的截图,并用下面这条提示词开始了一次会话:

让章节差异视图也能显示具体哪些字符发生了变化:对于一行文本中发生变化的片段,使用更深的红色或绿色标记。

这是这次会话的完整记录。

Claude Code 一开始就运行了一个 Explore 子智能体,并向它提供以下初始提示词:

找到这个 Django 博客中实现「章节」差异视图的代码。我需要找到:

  1. 渲染差异的模板:查找与差异有关、带红色或绿色背景的 HTML/CSS。
  2. 生成差异的 Python 代码:查找 difflib 或类似工具的使用。
  3. 与差异渲染有关的 JavaScript。
  4. 差异视图的 CSS 样式:红色或绿色的行背景。

仔细搜索,检查 templates/、static/ 和 blog/ 目录。查找「diff」「chapter」「revision」「history」「compare」等关键词。

子智能体的调用方式与其他工具类似:主智能体(父智能体)像调用其他工具一样派出它们,然后等待响应。看模型这样给自己写提示词很有意思,它们通常很会选择提示策略。

Explore 子智能体忙了几秒钟,返回的响应以下面这些内容开头:

太好了!现在让我把所有发现整理成一份完整的总结:

摘要:章节差异视图实现 #

我已经找到这个 Django 博客中章节差异视图的完整实现。以下是关键组件:

1. Python 代码:差异生成(/home/user/simonwillisonblog/guides/views.py,第 139—202 行) #

chapter_changes() 视图函数使用 Python 内置的 difflib.unified_diff() 生成差异:[……]

子智能体的完整响应,包含了主智能体开始编辑代码、满足我最初需求所需的全部细节。

并行子智能体 #

Explore 子智能体展示了最简单的一种协作方式:子智能体运行时,主智能体暂停等待。这类子智能体的主要优势,是能够使用全新的上下文开展工作,避免消耗主智能体可用的上下文 Token 配额。

主智能体也可以同时运行多个子智能体,显著提升处理速度。还可以使用 Claude Haiku 等更快、更便宜的模型,加速这些任务。

支持子智能体的编程智能体,可以根据你的指令使用它们。试试这样的提示词:

Use subagents to find and update all of the templates that are affected by this change.

使用子智能体,找出并更新所有受这次改动影响的模板。

对于需要编辑多个文件、而这些文件彼此没有依赖的任务,这种方式可以显著加快速度。

专家子智能体 #

有些编程智能体允许对子智能体做进一步定制,通常是提供自定义系统提示词、自定义工具,或同时定制两者,让子智能体承担不同的角色。

这些角色可以涵盖多种有用的专长:

  • 代码审查智能体可以审查代码,找出缺陷、功能缺失或设计上的薄弱之处。
  • 测试执行智能体可以运行测试。如果测试套件很大、输出很多,这尤其有用:子智能体可以不把完整测试输出传给主智能体,只报告失败的具体情况。
  • 调试智能体可以专门排查问题,把自己的 Token 配额用于分析代码库,并运行代码片段,帮助确定复现步骤和缺陷的根本原因。

把任务拆给几十个不同的专家子智能体,可能很有吸引力。但要记住,子智能体的主要价值,是保护宝贵的主智能体上下文,并承接消耗大量 Token 的操作。只要还有足够的 Token,主智能体完全有能力调试或审查自己的输出。

官方文档 #

一些常见的编程智能体支持子智能体,并各自提供了使用文档:


上一篇原文:与编程智能体协作时如何使用 Git · 下一篇原文:红灯/绿灯测试驱动开发

一起讨论

选中正文中的文字,可以针对这段内容发起讨论。

正在读取讨论…

在 GitHub 查看与管理讨论 ↗

文章讨论