功能

Subagents

了解 Bob 如何使用 subagents 在隔离的上下文中处理集中、自包含的任务,而不会污染主要对话。

什么是 subagents?

subagent 是 Bob 可以 spawn 的独立代理,用于处理集中、自包含的任务。它在自己的隔离 context window 中运行,执行分配的工作,并将结果摘要返回给主要对话。

subagents 适用于那些否则会在进行中的对话中添加大量无关内容的工作——例如,在 Bob 继续主要任务之前,深入探索代码库的某个部分以收集特定信息。

subagents 如何工作

当 Bob spawn 一个 subagent 时:

  1. 创建一个具有自己 context window 的新独立代理。
  2. Bob 向其传递需要执行的集中任务的描述。
  3. 在开始之前会提示你批准该 spawn。Bob 等待直到你确认。
  4. subagent 使用其可用的 tools 执行任务。
  5. subagent 将其发现的摘要返回给 Bob。
  6. Bob 使用该摘要继续主要对话。

subagent 与主要对话分开运行。它不与 Bob 共享状态、文件或 tool 结果,除非 Bob 在描述中明确传递了这些内容。

Subagent 类型

有两种 subagent 类型,各自适合不同的任务:

类型描述最适合
explore只读代码库探索,在更轻量的模型上运行搜索和总结代码,查找相关文件,理解结构
general完整的 tool 访问权限,在默认模型上运行任何需要读取、写入或命令的自包含任务

上下文与对话历史

默认情况下,subagent 看不到父对话历史。这使其上下文保持精简,专注于当前任务。

当 subagent 需要理解对话中早些时候表达的先前决定、约束或偏好时,Bob 可以设置 fork_context: true 将对话历史传递给 subagent。

模式限制

你正在使用的模式控制 Bob 被允许 spawn 的 subagent 类型。某些模式允许所有 subagent 类型;其他模式将 spawn 限制为特定类型或完全禁止。如果活动模式不允许 subagent spawn,Bob 将直接完成工作而不进行 spawn。

Bob 何时使用 subagents

Bob 谨慎使用 subagents。默认情况下始终直接完成工作而不 spawn subagent。只有在以下所有条件都成立时才会考虑 subagent:

  • 任务明确是自包含的,只需要返回摘要。
  • 它会向主要上下文添加大量无关内容。
  • 无法通过一两次直接的 tool 调用完成。

Bob 将 subagents 用于:

  • 简单的文件读取或快速搜索。
  • 单一 tool 操作。
  • 相关上下文已经可用的任务。

Subagents 与 subtasks 比较

Subagents 和 subtasks 是相关但不同的概念:

SubagentSubtask
可见性在后台静默运行在 UI 中显示,带有自己的面包屑和对话
交互非交互式——只返回摘要完全交互式——可以跟踪进度并继续对话
目的在不污染主要上下文的情况下收集信息或完成隔离工作处理足够复杂、需要专用追踪和独立线程的工作
输出返回给 Bob 的摘要独立对话线程

将 subagents 用于后台信息收集。将 subtasks 用于受益于可见性和专用对话的复杂工作。

配置 subagent 行为

你可以通过在 .bob/agents/ 中创建 agent persona 文件来控制 subagent 的关注内容、输出格式以及可使用的 tool。Persona 文件为 subagent 提供定义好的角色和约束条件,例如,生成按严重程度排序的发现结果表,并明确指示不提供修复建议的代码审查员。

有关设置说明和示例,请参阅 agent persona

这个主题怎么样?