子 Agent
Bub 应用内置 subagent 工具,允许当前 Agent 将特定子任务委派给另一个单独的 Agent 实例。
子 Agent 适合将大量检索、长文档阅读、独立代码审查等产生海量中间上下文的任务从主对话中剥离出去,只将最终结论带回主会话,从而防止主会话的上下文窗口被额外信息占用。
在 bub chat 中,可以直接要求模型调用子 Agent:
使用 subagent 工具审查身份验证流程:
1. 使用临时会话,只允许使用 fs.read 和 bash;
2. 不要修改文件;
3. 返回审查发现并附带相关文件路径。
父 Agent 随后调用 subagent 工具,子 Agent 在其独立循环中调用工具完成分析,最后把结果汇总返回。
除了人工要求外,也可以在工作区 AGENTS.md 或技能中设定规则(例如:「复杂检索或代码审查应先委派给只读子 Agent,主 Agent 仅根据审查结论执行修改」)来实现自动委派。
选择会话模式
Section titled “选择会话模式”subagent 工具通过 session 参数决定会话上下文的存储与归属:
| 会话模式 | 行为 | 适用场景 |
|---|---|---|
temp(默认) |
创建独立的 temp/<id> 临时会话,执行完毕后中间记录不并入主会话 |
最常用。一次性分析或调研,仅返回结论,保持主上下文干净 |
inherit |
直接沿用父 Agent 的当前 session_id |
需要把子任务的每一步交互都完整记录到主会话历史中 |
| 自定义字符串 | 使用指定的固定会话 ID | 任务较长,后续需要恢复或人工调阅该子会话记录 |
状态共享与能力边界
Section titled “状态共享与能力边界”子 Agent 与父 Agent 基于同一个运行实例派生,其继承与隔离边界如下:
| 资源类别 | 边界关系 | 说明与控制参数 |
|---|---|---|
| 基础实例 | 完全共享 | 共享插件 Hooks、模型凭据与 BubAgent 配置 |
| 执行环境 | 完全共享 | 共享工作区目录、本地文件系统、Shell 进程和网络访问 |
| 模型选择 | 可单独指定 | 默认沿用父模型,可用 model(如 model="gpt-4o-mini")降级使用轻量模型 |
| 工具与技能 | 可参数收窄 | 默认沿用全部,可用 allowed_tools、allowed_skills 缩小可用范围 |
| 会话记录 | 视策略隔离 | 由 session 参数决定,temp 仅向父 Agent 返回最终汇总文本 |
各参数的详细类型定义及默认值见 subagent 参考。
和父 Agent 一样,子 Agent 本质上也运行在当前用户权限下的本地环境中,有可能会当前系统产生影响:
- 用临时会话隔离的仅是对话记录与模型上下文,而不是文件、网络或系统进程。子 Agent 对文件进行的修改、发送的网络请求均具有真实的系统副作用,不会因为使用
temp模式而在退出时回滚。 - 必要时可通过
allowed_tools等参数限制模型行为,不构成强制安全边界。如需对危险命令或越权工具进行硬性拦截,必须使用工具拦截 Hooks;如需物理环境隔离,应配置独立的执行环境。