跳转至

嵌套子智能体和身份验证

嵌套子代理

默认情况下,子代理可以递归委派到深度 5。每个会话的执行和子代理准入限制、继承的工具策略、沙箱继承以及目标代理允许列表仍然适用。设置较低深度可更早创建叶子工作节点。

{
  agents: {
    defaults: {
      subagents: {
        maxSpawnDepth: 2, // stop nesting after depth 2 (default: 5, range 1-5)
        maxChildrenPerAgent: 5, // max active children per agent session (default: 5, range 1-20)
        maxConcurrent: 8, // concurrent child runs per spawning session (default: 8)
        runTimeoutSeconds: 900, // default timeout for sessions_spawn (0 = no timeout)
        announceTimeoutMs: 120000, // gateway announce timeout, excluding accepted queue waits
      },
    },
  },
}

深度级别

深度 会话键形状 默认角色 可生成?
0 agent:<id>:main 主代理 始终
1 agent:<id>:subagent:<uuid> 编排器 可以,除非 maxSpawnDepth: 1
2-4 持久化的扁平子代理键(含谱系) 编排器 默认可以
5 持久化的扁平子代理键(含谱系) 叶子 不可以,在默认边界处

通告链

结果逐级向回流动:

  1. 后代完成并向其直接父级通告。
  2. 该父级在结束并向上传通告之前,先综合其子级结果。
  3. 主代理接收最终通告并交付给用户。

每一级只能看到其直接子级的通告。

Note

操作指南: 只启动一次子任务并等待完成事件,而不是围绕 sessions_list、sessions_history、/subagents list 或 exec 睡眠命令构建轮询循环。sessions_list 和 /subagents list 将子会话关系聚焦于实时工作——存活的子会话保持附加,已结束的子在最近的短窗口内保持可见,过期的仅存储子链接在其新鲜度窗口后会被忽略。这可防止旧的 spawnedBy / parentSessionKey 元数据在重启后复活幽灵子会话。如果在已发送最终答案后收到子完成事件,请检查它并继续任何未完成的工作。避免重复已经交付的更新。内部编排仍然需要有意义的结果;静默 token 无法解决子任务。

按深度的工具策略

  • 子代理在生成时会捕获请求方的有效发送方策略。无发送方的子运行和经过身份验证的操作员恢复会保留该快照,即使 toolsBySender 之后发生变化;当前全局、代理、提供商、沙箱和子代理限制仍然适用。针对子代理的新外部通道轮次则会重新解析当前发送方策略。
  • 角色和控制范围会在生成时写入会话元数据以用于溯源。当前深度策略具有权威性,因此当配置的上限变化时,现有会话会获得或失去递归编排工具。
  • 编排器(低于 maxSpawnDepth): 获得 sessions_spawn、subagents、sessions_list、sessions_history,以便生成子级并检查其状态。其他会话/系统工具仍被拒绝。
  • 叶子(位于 maxSpawnDepth): 没有递归编排工具。

每个代理的生成限制

每个代理会话(任意深度)一次最多可以有 maxChildrenPerAgent(默认 5)个活跃子级。这可防止单个编排器造成失控的扇出。另外,maxConcurrent 限制该直接生成会话中正在执行的子运行。每个嵌套编排器都有自己的执行预算;其子级不共享根会话的槽位。

重置对话

完整就地对话重置会取消与该会话关联的未完成原生子代理,包括已让渡的子级以及完成请求方与其控制器不同的子级。聊天 /reset 和 sessions.reset 使用相同的清理所有者。如果子级取消不完整,重置会在清除对话前报告失败;请检查剩余任务并重试。子级转录和无关会话会被保留。

级联停止

对编排器的显式取消会级联贯穿其后代树。主聊天中的 /stop 适用于该请求方的子树。有关范围和不完整取消行为,请参阅 停止。

身份验证

子代理身份验证按 agent id 解析,而不是按会话类型解析:

  • 子代理会话键为 agent:<agentId>:subagent:<uuid>。
  • 本地身份验证覆盖层从该代理的 agentDir 加载。
  • 共享身份验证配置文件作为 回退 合并进来;发生冲突时,代理配置文件会覆盖共享配置文件。

合并是累加的,因此共享配置文件始终可作为回退使用。没有设置可以将代理的身份验证与共享配置文件隔离。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw