VoxCord
アーカイブVox の前身。Flutter のモバイル + Tauri/React のデスクトップ + 共有コアという構成のウェイクワード・アシスタント。差し替え可能というのが契約ではなく約束事にすぎないと分かって、自分から作り直した。
Vox 之前的那一版,跨平台。Flutter 做移动端,Tauri + React 做桌面端,中间一个共享的 Python 核心运行时,用 monorepo 管起来。
做到了哪儿
- 本地唤醒 + 声纹门,唤醒阶段零云端调用。CAM++ 声纹实测同人 0.8468、异人 0.4579,阈值 0.8。
- 阿里云 DashScope 全链路真机接通 —— ASR、Qwen LLM、CosyVoice TTS 都有实测日志,不是只写在配置里。
- 进程内消息总线,handler 异常隔离;技能插件、多轮上下文、SQLite 事件日志。
- 多设备静默 —— 一台设备唤醒后其他设备自动让位,避免几台一起答。
- 桌面端 Siri 化交互 —— 半屏灵动岛弹窗加 Canvas 画的流体语音球,唤醒后先出一句预录反馈音,说满三个字自动打断它。
- 核心层
124 passed、覆盖率90.20%,桌面端 E2E14/14(2026-05-03 健康报告)。
为什么推倒重做
组件可替换这条当时只是约定,不是契约。唤醒、识别、合成、会话传输确实都能换,但换的时候要靠人记得改哪几处 —— 这种可替换性在第一次真要换的时候就会破。
要让它真成立,这些层必须退到版本化契约之后,第三方 SDK 的类型不许泄漏出来。这个判断直接催生了 Vox 的 contracts/ 目录,也是我把 VoxCord 归档的原因。
代价
跨平台那一套在 Vox 里没有了:Flutter 移动端、多设备桥接、剪贴板与文件接力全部没带过去。Vox 目前只做 Windows。
换掉的是宽度,换来的是能真的替换掉任何一层。这笔账我认。