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