在 设置 → 工具权限 中提前授权工具,减少语音交流里的点击确认。 新用户和没有保存过权限设置的用户默认使用 全面开启。
| 模式 | 行为 |
|---|---|
| 全面开启 | 自动执行当前用户有权使用且已启用的工具,包括修改、发送等操作 |
| 按需确认 | 普通查询与知识库读取自动执行;修改、发送、高风险操作需要确认 |
| 每次确认 | 每次可执行的工具调用都需要确认 |
工具本身明确要求确认时,按需确认仍遵守该要求。工具声明禁止语音调用,或标记为不可执行的最高风险时,全面开启也不会使其变得可执行。 后台工具维持已有转交行为,不会伪装成已经执行成功。
全局与角色
全局设置只归属于当前用户,默认由所有角色继承。 选择一个角色后,可以单独指定模式;选择 继承全局 会清除该角色覆盖。 角色详情页的工具模块也提供 设置当前角色的工具权限 入口。 已删除角色留下的覆盖记录也可以恢复继承,避免残留配置。
设置成功会显示“已保存,对后续工具调用生效”。保存失败会显示错误,界面不会把未保存的模式当作已生效。 语音服务为每个新的工具调用读取当前用户及当前角色的权限,不必为了切换模式重建对话。 已经弹出的确认仍需处理;对同一个调用 ID 的重试保留原始决定,不自动批准已有待确认操作。
数据与边界
- 权限设置不会为账户增加访问范围,也不会启用未绑定到角色的工具。
- 知识库仍按用户和角色隔离;全面开启只是免除逐次点击确认。
- 自动执行仍使用服务器签发的单次执行授权,并保留已有调用、结果与诊断记录。
- 客户端不能在请求里指定其他用户的权限设置,也不能通过语音配置直接提升权限。
- 磁盘配置损坏或不可读取时,语音端要求确认;设置页报告读取失败。
部署与 API
设置存储在 .openrealtime/tool-permissions/settings.json,Web 和语音服务必须共享该目录。
可以在两个服务中设置同一个绝对路径:
VOICEAGENT_TOOL_PERMISSIONS_DIR=/absolute/path/to/tool-permissions
需要持久化挂载并纳入应用数据备份。首次部署本功能时,重启语音服务以加载新权限策略;后续修改设置无需重启。
GET /api/tool-permissions 返回当前用户的全局模式、角色覆盖和更新时间。
PUT /api/tool-permissions 使用同源请求,用户身份来自服务端会话:
{"mode":"full"}
角色覆盖:{"mode":"confirm","roleId":"role-example"}。
清除覆盖:{"mode":null,"roleId":"role-example"}。
有效模式是 full、balanced、confirm。