这是一个运行在 WatcheRobot SDK daemon 之上的 Windows Tkinter 应用:通过 daemon 连接机器人,提供设备调试、SenseVoice 伪流式识别、语音唤醒、Qwen 对话、MiniMax 播报、人脸登记/识别,以及“打卡”“播放歌曲 / 放歌”关键词处理。
在项目根目录打开 Codex 后,直接发送以下内容:
请阅读 README.md,并按“运行当前源码”启动 WatcheRobot 语音助手 Demo。
必须通过 watcherobot daemon 启动应用,不要改用旧的直接 WebSocket 连接模式;启动后检查 daemon 状态和应用状态。
Codex 应执行的最短命令是:
.\.venv\Scripts\watcherobot.exe app run .
这个命令会启动或复用 SDK daemon,并以 daemon 托管方式运行当前目录的 app.py。应用窗口关闭后,命令才会返回。
代码运行模式必须使用 daemon。
app.py的ApplicationContext.from_environment()依赖 daemon 注入的设备通道;不要直接用python app.py,也不要回退到旧的 UDP/TCP 直连实现。
当前 SDK 以发布到 Hugging Face Space 并提交应用广场的方式分发,不再生成本地 .wapp 交付包。Desktop 中安装应用后,由 Desktop/Daemon 托管启动。
应用包不包含 Qwen/MiniMax 密钥或 provider 配置,也不包含本机已经登记的人脸和历史抓拍图片。
%APPDATA%\com.watcher.desktop\applications\com.orulink.watcherobot_sdk_demo\provider-config,不在应用包内。部署管理员也可通过 WATCHER_SERVER_RUNTIME_CONFIG 覆盖该私有目录。| 路径 | 作用 |
|---|---|
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 配置和密钥。