Work

VoxCord

Archived

What came before Vox. A cross-platform wake-word assistant: Flutter on mobile, Tauri/React on desktop, a shared core in the middle. I tore it down on purpose once “swappable” turned out to be a convention rather than a contract.

Only the Chinese original exists for this one. The text below is that original.

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%,桌面端 E2E 14/14(2026-05-03 健康报告)。

为什么推倒重做

组件可替换这条当时只是约定,不是契约。唤醒、识别、合成、会话传输确实都能换,但换的时候要靠人记得改哪几处 —— 这种可替换性在第一次真要换的时候就会破。

要让它真成立,这些层必须退到版本化契约之后,第三方 SDK 的类型不许泄漏出来。这个判断直接催生了 Vox 的 contracts/ 目录,也是我把 VoxCord 归档的原因。

代价

跨平台那一套在 Vox 里没有了:Flutter 移动端、多设备桥接、剪贴板与文件接力全部没带过去。Vox 目前只做 Windows。

换掉的是宽度,换来的是能真的替换掉任何一层。这笔账我认。