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