子 agent
子 agent 是从现有 agent 运行生成的后台 agent 运行。它们在自己的会话(agent:<agentId>:subagent:<uuid>)中运行,完成后,将其结果公告回请求者聊天频道。
斜杠命令
使用/subagents 检查或控制当前会话的子 agent 运行:
/subagents list/subagents stop <id|#|all>/subagents log <id|#> [limit] [tools]/subagents info <id|#>/subagents send <id|#> <message>
/subagents info 显示运行元数据(状态、时间戳、会话 id、记录路径、清理)。
主要目标:
- 并行化”研究/长任务/慢工具”工作,而不阻塞主运行。
- 默认情况下保持子 agent 隔离(会话分离 + 可选沙箱)。
- 保持工具表面难以误用: 子 agent 默认不获得会话工具。
- 避免嵌套扇出: 子 agent 无法生成子 agent。
agents.defaults.subagents.model 或每个 agent 的覆盖来配置这一点。
工具
使用sessions_spawn:
- 启动子 agent 运行(
deliver: false,全局通道:subagent) - 然后运行公告步骤并将公告回复发布到请求者聊天频道
- 默认模型: 继承调用者,除非您设置
agents.defaults.subagents.model(或每个 agent 的agents.list[].subagents.model);显式的sessions_spawn.model仍然获胜。
task(必需)label?(可选)agentId?(可选;如果允许,在另一个 agent id 下生成)model?(可选;覆盖子 agent 模型;无效值被跳过,子 agent 在默认模型上运行,工具结果中有警告)thinking?(可选;覆盖子 agent 运行的 thinking 级别)runTimeoutSeconds?(默认0;设置时,子 agent 运行在 N 秒后中止)cleanup?(delete|keep,默认keep)
agents.list[].subagents.allowAgents: 可以通过agentId定位的 agent id 列表(["*"]允许任何)。默认: 仅请求者 agent。
- 使用
agents_list查看当前允许sessions_spawn的 agent id。
- 子 agent 会话在
agents.defaults.subagents.archiveAfterMinutes(默认: 60)后自动归档。 - 归档使用
sessions.delete并将记录重命名为*.deleted.<timestamp>(相同文件夹)。 cleanup: "delete"在公告后立即归档(仍通过重命名保留记录)。- 自动归档是尽力而为的;如果网关重启,挂起的计时器会丢失。
runTimeoutSeconds不自动归档;它只停止运行。会话保留直到自动归档。
认证
子 agent 认证由 agent id 解析,而不是会话类型:- 子 agent 会话键是
agent:<agentId>:subagent:<uuid>。 - 认证存储从该 agent 的
agentDir加载。 - 主 agent 的认证配置文件合并为回退;agent 配置文件在冲突时覆盖主配置文件。
公告
子 agent 通过公告步骤报告:- 公告步骤在子 agent 会话内运行(而非请求者会话)。
- 如果子 agent 恰好回复
ANNOUNCE_SKIP,则不发布任何内容。 - 否则,公告回复通过后续
agent调用(deliver=true)发布到请求者聊天频道。 - 公告回复在可用时保留线程/主题路由(Slack 线程、Telegram 主题、Matrix 线程)。
- 公告消息规范化为稳定模板:
Status:从运行结果派生(success、error、timeout或unknown)。Result:公告步骤的摘要内容(如果缺失则为(not available))。Notes:错误详细信息和其他有用的上下文。
Status不是从模型输出推断的;它来自运行时结果信号。
- 运行时(例如,
runtime 5m12s) - 令牌使用(输入/输出/总计)
- 配置模型定价时的估计成本(
models.providers.*.models[].cost) sessionKey、sessionId和记录路径(以便主 agent 可以通过sessions_history获取历史记录或检查磁盘上的文件)
工具策略(子 agent 工具)
默认情况下,子 agent 获得除会话工具之外的所有工具:sessions_listsessions_historysessions_sendsessions_spawn
并发
子 agent 使用专用的进程内队列通道:- 通道名称:
subagent - 并发:
agents.defaults.subagents.maxConcurrent(默认8)
停止
- 在请求者聊天中发送
/stop会中止请求者会话并停止从中生成的任何活动子 agent 运行。
限制
- 子 agent 公告是尽力而为。如果网关重启,挂起的”公告回”工作会丢失。
- 子 agent 仍共享相同的网关进程资源;将
maxConcurrent视为安全阀。 sessions_spawn始终是非阻塞的: 它立即返回{ status: "accepted", runId, childSessionKey }。- 子 agent 上下文仅注入
AGENTS.md+TOOLS.md(无SOUL.md、IDENTITY.md、USER.md、HEARTBEAT.md或BOOTSTRAP.md)。