本页内容
本页内容
代理协调
线程绑定的子代理会话
线程绑定会话
当为通道启用线程绑定时,生成的子代理可以获得自己的新线程。该线程中的后续用户消息继续路由到同一个子代理会话,而您从中生成的对话则保留在您的代理中。
嵌入式和 CLI- 支持的代理使用当前对话来生成线程。仅当运行时可以识别该对话并且通道策略允许生成时,它才会通告线程绑定生成。调用者提供的 MCP 会话标头不授权线程绑定。
支持线程的通道
sessions_spawn 和 thread: true 总是打开一个新的子线程;它永远不会将当前的对话交给工作人员。可以打开一个的捆绑通道:Discord 和 Matrix。在绑定当前对话的通道(例如 Telegram、iMessage、Feishu 和 LINE)上,thread: true 被拒绝;使用 mode: "run" 生成,结果将在对话中宣布。使用每通道 threadBindings 配置键来启用、超时和 spawnSessions。
当前对话中旧版本创建的工作绑定将被忽略:那里的消息再次路由到您的代理,并且过时的绑定将在其正常空闲超时后到期。要故意将对话交给 ACP 会话,请使用 /acp spawn --bind here。
快速流程
生成
使用 sessions_spawn 搭配 thread: true(也可选用 mode: "session")。
绑定
OpenClaw 在活动通道中打开一个新的子线程并将其绑定到该会话。
路线追踪
该线程中的回复和后续消息会路由到已绑定的会话。
检查超时
使用 /session idle 至 inspect/update 不活动到期和 /session max-age 来控制硬上限。
分离
使用 /session unbind 进行分离而不关闭代理会话。
手动控制
| 命令 | 作用 |
|---|---|
/session unbind |
删除当前会话绑定而不关闭代理会话 |
/agents |
列出活动运行和绑定状态(binding:<id>、unbound 或 bindings unavailable) |
/session idle |
Inspect/update 当前绑定的不活动到期 |
/session max-age |
Inspect/update 当前绑定的最大年龄 |
配置开关
- 全局默认值:
session.threadBindings.enabled、session.threadBindings.idleHours、session.threadBindings.maxAgeHours。 - 通道覆盖和自动绑定的 spawn 键 依赖适配器。参见上方的 支持线程的通道。
白名单
agents.entries.*.subagents.allowAgentsstring[]通过显式 agentId 可作为目标的已配置代理 id 列表(["*"] 允许任何已配置目标)。默认:仅请求者代理。如果你设置了列表,但仍希望请求者使用 agentId 自行创建会话,请将请求者 id 包含在列表中。
agents.defaults.subagents.allowAgentsstring[]当请求者代理未自行设置 subagents.allowAgents 时使用的默认已配置目标代理允许名单。
agents.defaults.subagents.requireAgentIdbooleandefault: false阻止省略 agentId 的 sessions_spawn 调用(强制显式配置文件选择)。每个代理覆盖:agents.entries.*.subagents.requireAgentId。
agents.defaults.subagents.announceTimeoutMsnumberdefault: 120000网关 agent 公告切换尝试超时。一旦接受切换,等待父会话的轮次就不会消耗此预算。执行开始后,请求者的正常运行时超时和取消控制适用;公告计时器不会重新启动。值是正整数毫秒,并被限制在平台安全计时器最大值。队列等待、请求者执行和瞬时重试可能会使总传递时间比配置的超时时间长。
如果请求者会话处于沙箱环境中,sessions_spawn 会拒绝那些会以非沙箱方式运行的目标。
发现
使用 agents_list 查看当前允许用于 sessions_spawn 的代理 id。响应会包含每个已列出代理的有效模型和嵌入的运行时元数据,以便调用方区分 OpenClaw、Codex app-server 和其他已配置的原生运行时。
allowAgents 条目必须指向 agents.entries.* 中已配置的代理 id。 ["*"] 表示任何已配置的目标代理以及请求者。如果某个代理配置被删除,但其 id 仍保留在 allowAgents 中,sessions_spawn 会拒绝该 id, 而 agents_list 会省略它。运行 openclaw doctor --fix 可清理过期的白名单条目,或者在目标需要在继承默认值的同时仍可被 spawn 时,添加一个最小的 agents.entries.* 条目。
自动归档
- 子代理会在
agents.defaults.subagents.archiveAfterMinutes(默认60)后自动归档。 - 归档使用
sessions.delete,并将转录重命名为*.deleted.<timestamp>(同一文件夹)。 cleanup: "delete"会在通知后立即归档(仍通过重命名保留转录)。- 自动归档尽力而为;如果网关重启,待处理的定时器会丢失。
- 已配置的运行超时不会自动归档;它们只会停止运行。会话会一直保留,直到自动归档。
- 自动归档同样适用于每个子代理深度。
- 浏览器清理与存档清理是分开的:运行完成时,跟踪的浏览器 tabs/processes 会尽力关闭,即使保留 transcript/session 记录也是如此。
如果较新的运行接管同一会话,则较旧的运行将停止声明选项卡以进行清理。已允许选项卡进行的清理仍取决于该选项卡捕获的所有权;它不会删除后来的注册。
subagent_ended 插件挂钩是尽力而为的。记录挂钩执行或插件运行时加载失败,并且不会中止子代理清理。
在启动它的请求结束后,定期上下文引擎清理将继续。尽最大努力上下文引擎清理失败会记录经过编辑的错误、清理原因和屏蔽的子会话密钥。