子智能体:突破上下文限制的编程助手模式
大语言模型(LLM)受限于上下文窗口(Context Window)——即它们一次性能处理多少 token。过去两年,LLM 能力大幅提升,但上下文容量增长有限,通常上限在 100 万 token 左右,而基准测试显示低于 20 万 token 时效果更好。
精心管理上下文,使其保持在限制内,是发挥模型潜力的关键。
**子智能体(Subagents)**提供了一种简单有效的方法,处理大型任务时无需耗尽编程助手宝贵的主上下文。
当编程助手使用子智能体时,它会派发一个自己的新副本去完成特定目标,这个副本拥有全新的上下文窗口,从新提示开始。
Claude Code 的 Explore 子智能体
Claude Code 在其标准工作流中广泛使用子智能体。我们以此为例说明。
每次对现有仓库启动新任务时,Claude Code 首先需要探索仓库,了解其结构并找到任务所需的相关信息。
它通过构建提示并派发子智能体来执行探索,然后返回发现内容的描述。
我启动了一个 Claude Code 会话,上传了我指南中的一页截图并给出提示:
让章节差异视图在差异显示中用更深的红色或绿色突出行内变化的字符段
这是会话记录。
Claude Code 首先运行了一个“Explore”子智能体,初始提示如下:
在这个 Django 博客中找到实现“章节”差异视图的代码。我需要找到:
- 渲染差异的模板(查找带有红/绿背景的差异相关 HTML/CSS)
- 生成差异的 Python 代码(查找 difflib 使用或类似内容)
- 任何与差异渲染相关的 JavaScript
- 差异视图的 CSS 样式(红/绿行背景)
彻底搜索——检查 templates/、static/、blog/ 目录。查找关键词如“diff”、“chapter”、“revision”、“history”、“compare”。
子智能体的工作方式类似其他工具调用(Tool Use):父智能体派发它们并等待响应。有趣的是,模型会这样提示自己——它们通常有不错的提示策略品味。
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.
对于涉及编辑多个文件(且这些文件互不依赖)的任务,这能带来显著的速度提升。
专家子智能体
一些编程助手允许子智能体进一步定制,通常通过自定义系统提示或自定义工具,让这些子智能体承担不同角色。
这些角色涵盖多种有用的专业领域:
- **代码审查(Code Reviewer)**智能体可以审查代码,识别错误、功能缺失或设计缺陷。
- **测试运行(Test Runner)**智能体可以运行测试。如果你的测试套件庞大且冗长,这尤其有价值,因为子智能体可以向主编程助手隐藏完整测试输出,只报告失败详情。
- **调试(Debugger)**智能体可以专注于调试问题,花费其 token 配额推理代码库并运行代码片段,帮助隔离复现步骤和确定 bug 根本原因。
虽然很容易过度拆分任务到几十个不同的专家子智能体,但重要的是记住子智能体的主要价值在于保护宝贵的根上下文和管理 token 密集型操作。只要 token 足够,根编程助手完全能自己调试或审查输出。
官方文档
多个流行的编程助手支持子智能体,各有其使用文档:
觉得有用?分享给更多人