subagent 让主 Agent 在对话过程中临时创建执行单元,把一个独立任务交给它,在自己的上下文中完成后返回结果。功能效果和使用场景见子 Agent,本页介绍工具的类型、配置与实现细节。
内置类型
创建时会选择一种类型,类型决定系统提示词和可用的工具范围:自定义类型
在工作区的subagents/ 目录下放置一个 .md 文件即可新增一种类型,格式与技能一致:
限定
tools 是最可靠的约束方式:只有 read, ls, search_files 的类型无法修改任何文件。写了 tools 的类型不会继承技能,需要用到技能时省略该字段,在正文中限定工作范围。
工作区首次启动时会在 subagents/ 下生成 README.md 和 example.md.template,把后者复制为 .md 文件即可启用。模板每轮对话重新读取,新增文件在下一条消息生效,无需重启。
禁用的工具
以下工具对所有子 Agent 不可用:相关配置
子 Agent 默认开启。可在 Web 控制台与桌面端的「配置 → Agent 配置」中开关,修改后下一轮对话生效,无需重启。更细的限制在config.json 中调整:
实现设计
- 上下文隔离:子 Agent 以空白消息历史启动,不加载人设文件,不接入记忆管理器。主对话中只保留一次调用记录和最终结论。
- 并行执行:单次调用中的多个任务在各自线程中执行,共享同一份时长预算;同一轮中发出的多次调用也会同时启动。
- 步数减半:子 Agent 的最大步数为主 Agent 的一半。任务范围已经明确,不需要与整场对话相同的预算;超出时会要求它对已完成的部分作出总结。
- 超时可追溯:超时的任务会被取消并标记为超时,结果数量始终与任务数一致,主 Agent 能够区分「没有查到」和「没有执行完」。
- 展示与上下文分离:返回给模型的是结构化数据,展示给用户的是排版后的报告,两者由同一份结果生成,展示内容不进入模型上下文。
