Affected area
Desktop UI (agent-gui / React)
Problem statement (what should this solve)
目前桌面端和 Gateway WebUI 缺少一致、完整的语音输入能力,用户无法像使用文本输入一样直接通过麦克风进行实时语音转写, 这个问题影响桌面端和 WebUI 用户使用麦克风快速输入消息。
Proposed behavior
实现桌面端和 WebUI 统一的实时语音输入能力,具体要求如下:
- 桌面端和 WebUI 聊天输入框始终显示麦克风按钮;
- 麦克风按钮不依赖配置测试结果,配置成功、失败或尚未测试时都应显示;
- 用户点击麦克风后,再依次执行麦克风权限检查、录音初始化、语音识别服务连接和音频传输;
- 权限申请、服务连接或识别过程失败时,在用户点击麦克风后提示具体错误;
- 支持以下实时语音识别供应商,并保持统一顺序:
- 腾讯云实时语音识别
- 火山引擎实时语音识别
- 阿里云 DashScope
- 百度智能云实时语音识别
- 桌面端语音识别配置通过 Gateway 安全同步到 WebUI;
- 敏感凭据不进入公开设置广播,使用受保护的私有同步数据传递;
- 增加桌面端麦克风权限声明、音频采集、实时音频分片、服务连接、识别结果回写和会话清理能力;
- 增加 Gateway 端供应商管理、WebSocket 音频传输、配置同步和敏感字段隔离能力;
- 增加桌面端、WebUI、Gateway 和协议层的自动化测试及验收文档。
Estimated change scope
crates/agent-ui/src/pages/chat/
- 聊天输入框麦克风按钮
- 语音输入会话生命周期
- 音频采集和识别结果回写
crates/agent-ui/src/pages/settings/
- 语音输入供应商配置页面
- 供应商切换、掩码字段、保存和清空秘钥行为
crates/agent-ui/src/lib/stt/
crates/agent-ui/src/lib/settings/
crates/agent-ui/src/i18n/translations/
crates/agent-gui/src/lib/stt/
crates/agent-gui/src-tauri/src/services/stt/
- 腾讯云、火山引擎 v3、阿里云 DashScope、百度智能云供应商实现
crates/agent-gui/src-tauri/src/commands/config/settings/
crates/agent-gui/src-tauri/src/services/gateway/
crates/agent-gui/src-tauri/Info.plist
crates/agent-gui/src-tauri/Entitlements.plist
crates/agent-gateway/internal/stt/
- Gateway STT 管理器、供应商实现、连接和音频处理
crates/agent-gateway/internal/session/
crates/agent-gateway/proto/v2/gateway_ws.proto
crates/agent-gateway/web/src/lib/stt/
crates/agent-gateway/web/src/app/
- WebUI 设置初始化和 Gateway 状态同步
crates/agent-gateway/test/webui/
crates/agent-gui/test/chat/
crates/agent-gui/test/settings/
docs/stt-mvp-acceptance.md
Alternatives considered
-
使用浏览器内置 Web Speech API
未采用。不同浏览器、移动端和桌面端的支持情况及识别效果不一致,无法保证与桌面端使用相同的供应商、模型和配置。
-
仅在语音识别连接测试成功后显示麦克风按钮
未采用。连接测试失败不代表用户没有配置其他可用供应商,也不应阻止用户主动点击麦克风并获得明确错误提示。
-
桌面端和 WebUI 分别维护独立的语音识别配置
未采用。独立配置会导致供应商、模型和秘钥状态不一致,增加重复配置和凭据暴露风险。
-
在 WebUI 中显示真实秘钥内容
未采用。WebUI 仅需要知道字段是否已配置,不应向浏览器暴露桌面端或 Gateway 托管的真实秘钥。
Pre-submit checklist
Affected area
Desktop UI (agent-gui / React)
Problem statement (what should this solve)
目前桌面端和 Gateway WebUI 缺少一致、完整的语音输入能力,用户无法像使用文本输入一样直接通过麦克风进行实时语音转写, 这个问题影响桌面端和 WebUI 用户使用麦克风快速输入消息。
Proposed behavior
实现桌面端和 WebUI 统一的实时语音输入能力,具体要求如下:
Estimated change scope
crates/agent-ui/src/pages/chat/crates/agent-ui/src/pages/settings/crates/agent-ui/src/lib/stt/crates/agent-ui/src/lib/settings/crates/agent-ui/src/i18n/translations/crates/agent-gui/src/lib/stt/crates/agent-gui/src-tauri/src/services/stt/crates/agent-gui/src-tauri/src/commands/config/settings/crates/agent-gui/src-tauri/src/services/gateway/crates/agent-gui/src-tauri/Info.plistcrates/agent-gui/src-tauri/Entitlements.plistcrates/agent-gateway/internal/stt/crates/agent-gateway/internal/session/crates/agent-gateway/proto/v2/gateway_ws.protocrates/agent-gateway/web/src/lib/stt/crates/agent-gateway/web/src/app/crates/agent-gateway/test/webui/crates/agent-gui/test/chat/crates/agent-gui/test/settings/docs/stt-mvp-acceptance.mdAlternatives considered
使用浏览器内置 Web Speech API
未采用。不同浏览器、移动端和桌面端的支持情况及识别效果不一致,无法保证与桌面端使用相同的供应商、模型和配置。
仅在语音识别连接测试成功后显示麦克风按钮
未采用。连接测试失败不代表用户没有配置其他可用供应商,也不应阻止用户主动点击麦克风并获得明确错误提示。
桌面端和 WebUI 分别维护独立的语音识别配置
未采用。独立配置会导致供应商、模型和秘钥状态不一致,增加重复配置和凭据暴露风险。
在 WebUI 中显示真实秘钥内容
未采用。WebUI 仅需要知道字段是否已配置,不应向浏览器暴露桌面端或 Gateway 托管的真实秘钥。
Pre-submit checklist