这是一个运行在 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 直连实现。
不要把整个开发目录或 .venv 复制给同事。发送桌面上的 WatcheRobot-SDK-Demo-0.1.1-delivery.zip:
解压 ZIP。
双击 one_click_start.cmd,或让 Codex 在解压目录执行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\setup_and_start.ps1
脚本会自动使用包内 Python 安装器、SDK 源码和离线依赖创建本地运行环境,启动 daemon、安装 .wapp 并启动应用。
在首页输入机器人屏幕显示的六位配对码并连接。
首次使用语音功能时,点击首页的“一键下载 SenseVoice 语音识别资源”。这是交付包外唯一需要下载的大型资源,会安装到 C:\WatcherSpeech。
交付包中已包含 Qwen/MiniMax 本地配置、Python 3.13 安装器、SDK daemon 源码、离线 Python 依赖、人脸模型和应用代码。出于隐私考虑,不包含本机已经登记的人脸和历史抓拍图片。
config/runtime/llm.json 与 config/runtime/tts.json 中的密钥。交付包已经内置它们,仅限内部使用。| 路径 | 作用 |
|---|---|
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 配置或清理人脸数据。
在具备本项目开发环境与 Watcher Server 配置的机器上执行:
.\package_release.ps1
它会生成 release\WatcheRobot-SDK-Demo-0.1.1-delivery.zip。该流程会将当前 Qwen/MiniMax 本地配置打入内部交付包;仅允许发给获授权的内部同事。