子智能体:突破上下文限制的编程助手模式

深度Simon Willison2026年3月17日4 分钟阅读
大语言模型(LLM)的上下文窗口(Context Window)容量两年来增长有限,子智能体(Subagents)成为高效管理上下文、处理复杂任务的关键模式。Claude Code 的 Explore 子智能体能在新上下文中探索代码库,而并行和专家子智能体还能提升速度与专业性。

大语言模型(LLM)受限于上下文窗口(Context Window)——即它们一次性能处理多少 token。过去两年,LLM 能力大幅提升,但上下文容量增长有限,通常上限在 100 万 token 左右,而基准测试显示低于 20 万 token 时效果更好。

精心管理上下文,使其保持在限制内,是发挥模型潜力的关键。

**子智能体(Subagents)**提供了一种简单有效的方法,处理大型任务时无需耗尽编程助手宝贵的主上下文。

当编程助手使用子智能体时,它会派发一个自己的新副本去完成特定目标,这个副本拥有全新的上下文窗口,从新提示开始。

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”。

子智能体的工作方式类似其他工具调用(Tool Use):父智能体派发它们并等待响应。有趣的是,模型会这样提示自己——它们通常有不错的提示策略品味。

Explore 子智能体运行了几秒,返回的响应开头如下:

完美!现在我来创建一个包含所有发现的全面总结:

总结:章节差异视图实现

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

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

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

完整的子智能体响应包含了父智能体开始编辑代码以满足原始请求所需的所有细节。

并行子智能体

这个 Explore 子智能体是最简单的例子,父智能体在子智能体运行时暂停。这种子智能体的主要优势在于,它能在新上下文中工作,避免消耗父智能体的可用 token 限制。

子智能体还能通过让父智能体同时运行多个子智能体来显著提升性能,可能使用更快更便宜的模型(如 Claude Haiku)来加速任务。

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

code
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 足够,根编程助手完全能自己调试或审查输出。

官方文档

多个流行的编程助手支持子智能体,各有其使用文档:

本文编译自 Subagents,版权归原作者所有。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

Simon Willison 正在重构 LLM Python 库的抽象层,以支持服务器端工具执行等新功能。他利用 Claude Code 分析了四大 LLM 提供商的客户端库,生成了用于测试的 curl 命令和 JSON 输出。这些调研材料已开源,旨在帮助设计更通用的 API 抽象。

深度Simon Willison·4月5日·1 分钟

智能体技能——包含程序性知识和可执行资源的结构化包,供智能体在推理时动态加载——已成为增强 LLM 智能体的可靠机制。然而,推理时技能增强存在根本性限制:检索噪声引入无关指导,注入的技能内容带来大量 token 开销,而模型从未真正习得它所遵循的知识。我们提出一个问题:技能是否可以被内化到模型参数中,使其在无需任何运行时技能检索的情况下实现零样本自主行为?我们提出 Skill0,一个专为技能内化设计的上下文强化学习框架。Skill0 引入了一种训练时课程,从提供完整技能上下文开始,逐步撤除。技能按类别离线分组,并与交互历史一起渲染为紧凑的视觉上下文,教授模型工具调用和多轮任务完成。动态课程机制…

深度·4月5日·17 分钟

评论