dsh-xiaoai-bridge:喚醒小愛音箱,讓 DeepSeek Harness 用語音回答

前言

在 DeepSeek Harness(DSH)裏跑 agent,常見入口是桌面或網頁:打字或麥克風進會話,回覆落在屏幕上。若你家裏已有刷成 open-xiaoai 客戶端的小愛音箱,更自然的交互是站在設備旁說喚醒詞、聽音箱念出結論,而不是每次走到電腦前。

社區插件 dsh-xiaoai-bridge(維護者 OMSociety,GitHub 倉庫 OMSociety/dsh-xiaoai-bridge)把這條鏈路接進 DSH:本地橋接器負責喚醒、收音、識別與播放,插件負責會話、播報紀律和進程託管。下面介紹它是什麼、能做什麼,以及按官方 README 復現安裝與試用的步驟。

這是什麼

dsh-xiaoai-bridge 是 DSH 的客戶端類插件(當前版本 1.0.0,MIT 許可證)。一句話定位:把小愛音箱接進 DeepSeek Harness——說喚醒詞,識別出的文本作爲用戶消息進入 DSH 會話,會話回覆經潤色後從音箱播放;模型也可通過工具主動讓音箱開口。

倉庫分兩半:根目錄是 Node 寫的 DSH 插件(lib/),負責設置頁、狀態卡、橋接器子進程託管、鑑權與隨包預設;bridge/ 是 Python 橋接器,負責設備側 TCP 音頻、VAD、喚醒詞、語音識別、合成與播放閘門。橋接器源碼基於 coderzc/open-xiaoai-bridge,本倉庫在其上接 DSH 後端並獨立演進。

插件目錄頁:SkillHub — OMSociety/dsh-xiaoai-bridge。

核心功能

喚醒即對話

喚醒詞在橋接器本地用 sherpa-onnx 識別;命中後收一句話,VAD 判斷結束再 ASR,文本 POST 到插件路由 /plugin/xiaoai/asr(bearer 鑑權,fail closed)。插件把文本投進該音箱綁定的 DSH 會話(不存在則創建),回覆正文會自動口語化潤色後播放。支持一次喚醒一句,或開啓「連續對話」直到靜默超時或退出詞。

播報紀律

何時出聲、念什麼由插件層規則決定,而非模型隨意輸出:

  • 音箱發起的對話:默認念回覆正文;若本輪已調用 xiaoai_speak,則不再念回覆正文。
  • 其他會話:默認不出聲;可開啓「任何會話都能讓小愛說話」,讓桌面/網頁會話也能驅動音箱。
  • 工具卡在審批時只播固定提示,審批正文不會被念出。
  • 播放期間播放閘門關閉麥克風,避免半雙工自問自答。

主動說話:xiaoai_speak

工具 用途 關鍵參數
xiaoai_speak 讓音箱念出一段文字 text(必填),逐字念

同一輪只生效一次;text 勿含 Markdown、代碼塊或 URL。橋接器未運行時,在「隨插件啓動橋接器」開啓時會嘗試拉起並等待(最長約 12 秒)。

進程、狀態與數據

  • 插件拉起橋接器子進程,崩潰按滑動窗口重啓,退出 DSH 時先停子進程。
  • 設置頁運行狀態卡展示進程、API、令牌、預設及最近錯誤碼;日誌前綴 dsh-xiaoai-bridge:。
  • 實際播報到音箱的句子追加在 spoken.jsonl,卸載時可保留記錄。
  • 隨包 小愛模式 Agent 預設(cordis.patch.yml),面向音箱會話:能跑命令、讀寫文件、查資料、記待辦,無子代理與計劃模式;設置頁默認預設名爲 xiaoai。

端口與路由(便於排錯)

端口/前綴 作用
4399 Rust 擴展 dsh_xiaoai_server 音頻 TCP;音箱撥到此地址(默認可帶 URL token)
127.0.0.1:9092 橋接器 HTTP API(播報、健康檢查)
/plugin/xiaoai/* 插件掛在宿主 webServer 上的路由(如 /plugin/xiaoai/asr、/plugin/xiaoai/bridge/start 等)

安裝與啓用

前置條件

需要 版本 / 說明
DSH 0.2.0-rc.1 或更新
Node 20 或更新
pnpm 安裝插件依賴
Python 3.12
uv 橋接器虛擬環境與依賴;首次會編譯 Rust 擴展(約十幾分鍾)
Rust 工具鏈 uv sync 通過 maturin 編譯 PyO3 擴展
小愛音箱 已刷機並打 open-xiaoai 客戶端補丁(見上游文檔)

步驟

1. 安裝插件並重啓 DSH

先停止正在運行的 DSH,再執行(<profile> 換成你的 profile):

dsh plugin --profile <profile> add "dsh-xiaoai-bridge"

裝完後必須重啓 DSH。插件包內含 bridge/ 源碼,但不含橋接器虛擬環境與語音模型包,需在本地補齊並在設置頁把「橋接器目錄」指到該路徑。

2. 準備橋接器 Python 環境

進入插件自帶的 bridge/ 目錄(路徑以你本機插件安裝位置爲準),執行:

uv sync --no-install-project
uv sync
.\.venv\Scripts\python.exe -c "import dsh_xiaoai_server; print('ok')"

Linux/macOS 上將最後一行改爲對應虛擬環境中的 python。僅當修改 bridge/native/**/*.rs 後需重跑 uv sync;重跑前應先停橋接器。

3. 下載並放置模型包

約 470 MB,不隨倉庫分發,需手動解壓到 bridge/core/models/:

項目 值
下載 https://github.com/coderzc/open-xiaoai-bridge/releases/download/vad-kws-asr-models/models.zip
sha256 8E8A709D6EA011F644F3C5055F536D5E6EB363EEAFBA53CC3232398FD636D273

4. 音箱與設置頁

設備側屬於 open-xiaoai 上游:刷機與客戶端補丁見 flash.md 與 client-rust README。音箱上 /data/open-xiaoai/server.txt 應指向 ws://<運行橋接器的電腦局域網 IP>:4399?token=<訪問令牌>(與設置頁「音箱連接鑑權」一致;關鑑權則同網任意主機可注音,需自行權衡)。

在 DSH 插件設置頁確認:啓用插件、音箱名稱、音箱 IP、會話工作區;按需選擇「隨插件啓動橋接器」與「小愛模式」預設。保存部分配置會熱重載橋接器配置文件;日誌級別、API 監聽、憑據等寫在子進程環境變量中的項需重啓橋接器後生效。

5. 驗證

對着音箱說喚醒詞再說話;若鏈路正常,DSH 會話會收到識別文本,回覆會從音箱播出。

典型用法

語音問答(默認路徑)

無需模型顯式調工具:喚醒 → 說話 → 等待 VAD 結束 → 插件創建或複用音箱會話 → 回覆正文自動潤色並播放。

讓 agent 主動播報

在需要逐字念出口令、驗證碼、任務完成或提醒時,在 agent 可用工具中調用:

xiaoai_speak(text="會議還有五分鐘開始。")

若希望桌面會話也能驅動音箱,在設置頁打開「任何會話都能讓小愛說話」。

運維與診斷

  • 設置頁狀態卡查看橋接器進程與最近錯誤碼。
  • 需要換環境變量類配置後,可通過設置頁或 API 重啓橋接器,例如 POST /plugin/xiaoai/bridge/restart。
  • 橋接器未起、地址錯、token 缺失時,常見表現是音箱無反應或橋接器日誌 401;README「排錯」節列出了診斷編碼含義。

適用場景與注意

適合誰: 已在 DSH 0.2.0-rc.1+ 上跑 agent,且願意按 open-xiaoai 流程維護音箱設備;希望用喚醒詞把語音輸入/輸出併到同一套 Harness 會話與工作區的人。

權限與安全: 插件與橋接器隨 當前 DSH 進程 運行,agent 在音箱會話裏能做的事(讀文件、跑命令等)受你爲該會話配置的預設與 DSH 權限約束。安裝前應閱讀倉庫源碼、LICENSE(MIT)及 DISCLAIMER.md:項目非小米官方,刷機與補丁存在設備與賬號風險;/asr 使用 bearer 門禁,無令牌返回 503,令牌錯誤返回 401。

生態說明: DSH 採用「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係,本文介紹的是社區維護的客戶端插件,而非官方應用商店條目。

結尾

dsh-xiaoai-bridge 把 open-xiaoai 音箱的喚醒與播放接到 DSH 會話上,用插件管生命週期與播報規則,用本地橋接器管語音鏈路。若你要在現有 Harness 工作流里加一條「喊一聲、聽答案」的入口,可按上文步驟安裝插件、補齊 bridge/ 環境與模型,再在設置頁對齊音箱地址與鑑權。

  • 目錄頁:https://www.skillhub.cn/plugins/OMSociety/dsh-xiaoai-bridge
  • 源碼與完整配置說明:https://github.com/OMSociety/dsh-xiaoai-bridge
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜