07-子智能体

By 刘志军 , 2026-03-21, 分类: agentic-patterns-translation

LLM 受限于其上下文限制(Context Limit)——即它们在任何给定时间的工作记忆中所能容纳的 Token 数量。在过去的两年里,尽管 LLM 本身的能力有了戏剧性的提升,但这一数值并没有太大增长:它们通常在大约 1,000,000 个 Token 处达到顶峰,而基准测试经常报告在 200,000 个 Token 以下时结果质量更好。

为了让模型获得最佳效果,精心管理上下文以使其保持在这些限制之内至关重要。

子智能体提供了一种简单而有效的方法来处理大型任务,同时又不会耗尽编程智能体宝贵的顶级上下文。

当编程智能体使用子智能体时,它实际上是派遣了一个自身的“新鲜副本”去实现特定目标,这个副本拥有一个从全新提示词开始的独立上下文窗口。

Claude Code 的 Explore 子智能体

Claude Code 在其标准工作流程中广泛使用子智能体。让我们以此为例进行说明。

每当你针对现有仓库启动新任务时,Claude Code 首先需要探索该仓库,以了解其总体结构并找到完成任务所需的相关信息。

它通过构建提示词并派遣一个“Explore”(探索)子智能体来执行此操作,该子智能体运行后会返回其发现的描述。

我曾用我指南中某个页面的截图和以下提示词启动了一个 Claude Code 会话:

让章节差异(chapter diffs)在差异视图中也能显示哪些字符发生了变化,对于行内单独变化的文本段落,使用深红色或深绿色显示。

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)来加速这些任务。

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

使用子智能体查找并更新所有受此更改影响的模板。

对于涉及编辑多个文件且这些文件互不依赖的任务,这可以带来显著的速度提升。

专家级子智能体

一些编程智能体允许子智能体带着进一步的自定义设置运行,通常表现为自定义系统提示词或自定义工具(或两者兼有),这使得这些子智能体能够承担不同的角色。

这些角色可以涵盖各种有用的专业领域:

虽然将任务拆分到数十个不同的专家子智能体中可能很诱人,但请务必记住,子智能体的主要价值在于保留核心上下文和管理 Token 密集型操作。只要有足够的 Token 余量,你的核心编程智能体完全有能力自行调试或审查其输出。

官方文档

几个流行的编程智能体都支持子智能体,每个都有关于如何使用它们的文档:

原文:Agentic Engineering Patterns by Simon Willison


关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅