会话所有权
会话所有权¶
talk.client.create 和实时 talk.session.create 会在加载配置文件上下文或启动提供者之前解析其会话。带智能体前缀的 sessionKey 会选择该智能体。否则,Talk 使用 talk.agentId,然后是已配置的系统智能体或明确的默认智能体。在多智能体 Gateway 中没有所有者时,请设置 talk.agentId 或发送带智能体前缀的键。
talk.catalog 也需要明确的 Talk 所有者,并会在发现提供者之前对其进行检查,因此缺少所有权会立即返回其设置错误。
省略 sessionKey 会选择与裸 main 键相同的已拥有主会话;两者都会强制执行共享、隐身和操作员角色限制。主别名遵循 session.scope 以及已配置的主会话键。共享的固定存储会为未限定的键保留其记录的所有者;即使主别名变为 global,冲突的显式所有权也会被拒绝。如果在启动期间路由或访问发生变化,创建将失败而不是切换会话;请重试请求。
客户端工具调用、Gateway 拥有的提供者咨询以及引导会保留准备好的智能体、规范会话键和存储。智能体回复与语音转录保持在同一个会话中,包括在全局作用域下,而原始键继续标识语音呼叫。提供者附加的控件和 talk.session.steer 仅选择绑定到该逻辑语音呼叫的工作。重用 voiceSessionId 替换浏览器传输可保持对其已接受工作的控制。旧版 talk.client.steer RPC 仍保持会话作用域:它通过 sessionKey 选择拥有的工作,而不是通过语音呼叫 ID。
原生引导使用当前调用者的工具策略和会话权限。主机在策略准备后捕获实际后端尝试的权限,并在传递控件之前再次检查该确切所有者。调用者权限、工具白名单、权限模式或已关闭/替换的尝试发生变化都可能产生 tool_authority_mismatch;运行 ID 或复制的指纹不能授权引导。直接语音输入不会获取跟踪或客户端工具能力。聊天支持的 Talk 保留已验证调用者的正常聊天权限,包括其审查者和客户端能力,但禁用任务建议,因为 Talk 无法接受这些建议。状态和取消不需要工具策略投影。控件在队列或转录等待之前捕获其目标;它们绝不会移动到稍后开始的任务。在后端注册之前接收到的控件会返回可见的无活动运行响应,而不是等待无关的未来任务。
当源绑定的原生控件被路由到待处理问题时,其答案或图像触发的取消会在注册、输入持久化和连接准备之后、Gateway 调度之前立即再次检查。在该检查之前关闭或重新分配源会拒绝过期输入,而不会取消独立的底层问题或运行;稍后有效的答案仍可使用同一问题。如果源在其响应返回期间关闭,已被问题消费的答案仍会被接受。延迟确认使用问题现有的截止时间。如果确认完全丢失,Talk 会报告无法确认该输入,并且不会将其作为引导再次发送;重试前请检查对话。这适用于通过待处理问题输入路由的控件,而不是每个语音提供者对口头答案的普遍拦截。
托管房间移交尚不提供当前发言者的工具权限。仅房间关联无法授权引导;状态和取消仍然可用。
对于客户端转录、工具调用和关闭请求,请保留原始 sessionKey。talk.client.close 既需要该确切键,也需要返回的 voiceSessionId;等效的存储别名不能替代。talk.client.toolCall 确认会返回 agentId、agentSessionKey 和 runId;请使用该确切目标处理聊天取消、历史和完成事件,包括当规范键为 global 时。没有键的仅转录会话保持无会话状态,不会选择默认聊天。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw