跳转到内容

子 Agent

Bub 应用内置 subagent 工具,允许当前 Agent 将特定子任务委派给另一个单独的 Agent 实例。

子 Agent 适合将大量检索、长文档阅读、独立代码审查等产生海量中间上下文的任务从主对话中剥离出去,只将最终结论带回主会话,从而防止主会话的上下文窗口被额外信息占用。

在 bub chat 中,可以直接要求模型调用子 Agent:

使用 subagent 工具审查身份验证流程:
1. 使用临时会话,只允许使用 fs.read 和 bash;
2. 不要修改文件;
3. 返回审查发现并附带相关文件路径。

父 Agent 随后调用 subagent 工具,子 Agent 在其独立循环中调用工具完成分析,最后把结果汇总返回。

除了人工要求外,也可以在工作区 AGENTS.md 或技能中设定规则(例如:「复杂检索或代码审查应先委派给只读子 Agent,主 Agent 仅根据审查结论执行修改」)来实现自动委派。

subagent 工具通过 session 参数决定会话上下文的存储与归属:

会话模式 行为 适用场景
temp(默认) 创建独立的 temp/<id> 临时会话,执行完毕后中间记录不并入主会话 最常用。一次性分析或调研,仅返回结论,保持主上下文干净
inherit 直接沿用父 Agent 的当前 session_id 需要把子任务的每一步交互都完整记录到主会话历史中
自定义字符串 使用指定的固定会话 ID 任务较长,后续需要恢复或人工调阅该子会话记录

子 Agent 与父 Agent 基于同一个运行实例派生,其继承与隔离边界如下:

资源类别 边界关系 说明与控制参数
基础实例 完全共享 共享插件 Hooks、模型凭据与 BubAgent 配置
执行环境 完全共享 共享工作区目录、本地文件系统、Shell 进程和网络访问
模型选择 可单独指定 默认沿用父模型,可用 model(如 model="gpt-4o-mini")降级使用轻量模型
工具与技能 可参数收窄 默认沿用全部,可用 allowed_tools、allowed_skills 缩小可用范围
会话记录 视策略隔离 由 session 参数决定,temp 仅向父 Agent 返回最终汇总文本

各参数的详细类型定义及默认值见 subagent 参考。

和父 Agent 一样,子 Agent 本质上也运行在当前用户权限下的本地环境中,有可能会当前系统产生影响:

  1. 用临时会话隔离的仅是对话记录与模型上下文,而不是文件、网络或系统进程。子 Agent 对文件进行的修改、发送的网络请求均具有真实的系统副作用,不会因为使用 temp 模式而在退出时回滚。
  2. 必要时可通过 allowed_tools 等参数限制模型行为,不构成强制安全边界。如需对危险命令或越权工具进行硬性拦截,必须使用工具拦截 Hooks;如需物理环境隔离,应配置独立的执行环境。