WatcheRobot 语音助手 Demo

这是一个运行在 WatcheRobot SDK daemon 之上的 Windows Tkinter 应用:通过 daemon 连接机器人,提供设备调试、SenseVoice 伪流式识别、语音唤醒、Qwen 对话、MiniMax 播报、人脸登记/识别,以及“打卡”“播放歌曲 / 放歌”关键词处理。

让 Codex 直接运行

在项目根目录打开 Codex 后,直接发送以下内容:

请阅读 README.md,并按“运行当前源码”启动 WatcheRobot 语音助手 Demo。
必须通过 watcherobot daemon 启动应用,不要改用旧的直接 WebSocket 连接模式;启动后检查 daemon 状态和应用状态。

Codex 应执行的最短命令是:

.\.venv\Scripts\watcherobot.exe app run .

这个命令会启动或复用 SDK daemon,并以 daemon 托管方式运行当前目录的 app.py。应用窗口关闭后,命令才会返回。

代码运行模式必须使用 daemon。app.pyApplicationContext.from_environment() 依赖 daemon 注入的设备通道;不要直接用 python app.py,也不要回退到旧的 UDP/TCP 直连实现。

从应用广场安装

当前 SDK 以发布到 Hugging Face Space 并提交应用广场的方式分发,不再生成本地 .wapp 交付包。Desktop 中安装应用后,由 Desktop/Daemon 托管启动。

应用包不包含 Qwen/MiniMax 密钥或 provider 配置,也不包含本机已经登记的人脸和历史抓拍图片。

Codex 交接约束

项目结构

路径 作用
app.py Tkinter UI、daemon 状态、设备操作与助手流程编排
wake_assistant.py 唤醒词匹配、VAD 和两秒静默定稿
assistant_intents.py ASR 与 LLM 之间的关键词路由;当前含“打卡”和“播放歌曲 / 放歌”
assistant_face.py daemon 摄像头图片的人脸登记与识别
assistant_providers.py Qwen/MiniMax 调用;读取当前用户的包外私有配置
speech_resources.py SenseVoice 资源下载、校验与安装
face_recognition_demo/models/ 随应用分发的 OpenCV 人脸模型
package_release.ps1 生成同事使用的一键交付 ZIP

工作链路

机器人 → SDK daemon → app.py
                     ├─ 调试模式:设备能力调用
                     └─ 助手模式:唤醒 → SenseVoice → 关键词路由 → Qwen → MiniMax
                                                    ├─ “打卡” → 关闭麦克风 → daemon 摄像头 → 人脸识别
                                                    └─ “播放歌曲 / 放歌” → 关闭麦克风 → daemon 音频播放《茉莉花》

配对与验证

启动后确认界面顶部显示 Daemon:在线。输入六位配对码后,设备:在线 才表示机器人真正连接成功。配对仍需要:机器人与电脑同一局域网、机器人 SDK Control App 可用、配对码为当前会话的临时码。

若需让 Codex 做启动后检查,可要求它执行:

检查 daemon 是否在线、应用是否运行、设备是否已连接;不要修改 provider 配置或清理人脸数据。

发布更新

使用最新 SDK 先校验,再上传应用源码:

& "D:\project\Watcher-demo\WatcheRobot_test\WatcheRobot-Workspace\WatcheRobot_python_sdk\.venv\Scripts\watcherobot.exe" app check . --jsonl
& "D:\project\Watcher-demo\WatcheRobot_test\WatcheRobot-Workspace\WatcheRobot_python_sdk\.venv\Scripts\watcherobot.exe" app publish . --jsonl

上传成功后,如需更新官方应用广场,再执行 app submit . --jsonl。发布流程不会复制或上传任何 Qwen/MiniMax 配置和密钥。