dsh-playmate:給 DSH 加「看屏、語音輸入、念回答」的客戶端陪玩插件

前言

在 DeepSeek Harness(DSH)裏跑智能體時,常見做法是純文本對話:模型看不到你屏幕上的變化,你也得切回窗口打字。若希望「模型能按需看屏、用麥克風說一句話進會話、把回答開頭念出來」,通常要自己接抓屏、ASR、TTS 和會話注入,和 DSH 的插件機制還要對齊。

下面介紹社區插件 dsh-playmate(維護者 ZiFeng11,分類:客戶端)。它把三件事做成三個獨立開關模塊——看(see)、說(talk)、聽(hear)——默認全關;不附帶任何聲音模型與參考音頻,「念出來」需自備 TTS 服務。倉庫採用 MIT 許可證;README 寫當前版本 0.1.0,同倉庫 package.json 爲 0.1.1。該項目未上 DSH 插件市場,從 GitHub 分發;SkillHub 目錄頁:https://www.skillhub.cn/plugins/ZiFeng11/dsh-playmate。

這是什麼

dsh-playmate 是給 DeepSeek Harness 用的陪玩插件:看屏幕 / 聽你說話 / 把回答念出來。作者定位爲個人作品:不承諾長期維護、不接定製、不加雲端依賴、不收集數據;代碼量約 2,600 行。三個模塊互不依賴,關着的模塊不會抓屏、錄音或出聲。

插件以當前 DSH 進程權限在本機運行。安裝前建議閱讀源碼與 MIT 許可證;抓幀與識別在本機完成,只有「把圖交給當前會話」會走 DSH 自身的模型請求。

核心功能

看(see)

  • 手動(默認):模型需要時通過工具 play_see 抓屏,按變化挑幀、可拼圖後交給會話;靜止屏約 1 幀 ≈ 233 token,9 幀拼圖約 2,100 token。
  • 自動:後臺定時抓幀,畫面變化足夠大才投遞;靜止屏不投遞。每次投遞會喚醒一輪對話(重讀上下文),故有「多主動」三檔(安靜 / 正常 / 熱鬧)控制最短間隔與變化門檻。
  • 依賴:ffmpeg(無則該開關無法就緒)。

說(talk)

  • 按住說話(熱鍵 Ctrl+Alt+V,按一下開始、說完自動停)或 一直聽;本地 FunASR 識別,識別結果 POST 進指定或最近會話,作爲普通用戶消息注入;本地識別 0 token。
  • 默認識別模型 iic/SenseVoiceSmall(快,長句同音字易錯);可改 asrModel 換 Paraformer-large 等,關開「聽我說話」後引擎按新模型重啓。
  • 依賴:Python(需能 import numpy, sounddevice)、麥克風;SenseVoiceSmall 顯存約 1.1 GB。

聽(hear)

  • 取回答開頭一段文字,POST {text} 到你配置的 ttsUrl,由外部 TTS 念出;0 token,顯存取決於你的 TTS(例如 GPT-SoVITS 約 1.6 GB)。
  • 插件不內嵌、不下載 TTS 模型;需自備 3–10 秒參考音並自建 GPT-SoVITS / IndexTTS 等服務,再把地址填入配置。

它不做什麼(摘要)

不上傳屏幕/錄音做雲端留存(抓幀寫臨時目錄、用完即刪);不操作鼠標鍵盤;不附帶模型權重與參考音;配置越界返回 400,不靜默改成邊界值。HTTP 接口僅接受迴環地址。

安裝與啓用

依賴先說清楚:看屏幕需要 ffmpeg;聽我說話需要 Python + 麥克風 + FunASR;念出來默認關着,填好 ttsUrl 即可,插件側無需額外安裝 TTS。

本項目沒有 dsh plugin add github:... 一類市場命令,請按倉庫 README 的三種方式之一安裝。

方式一:讓 AI 幫你裝(推薦)

把下面這句發給你的 DSH(需要文件權限),將 desktop 換成你的 profile 名:

請把 https://github.com/ZiFeng11/dsh-playmate 裝進我的 DSH:
克隆到 ~/.dsh/plugins/dsh-playmate,
在 profiles/desktop/node_modules 下建目錄聯接,
並在 cordis.patch.yml 里加一條 id: playmate 的 insert。
裝完告訴我怎麼重啓。

裝完後需自行重啓 DSH。設置裏點「環境自檢」,四個勾都綠纔算依賴齊。

方式二:Windows 腳本

在倉庫目錄執行:

powershell -ExecutionPolicy Bypass -File .\install.ps1

腳本會找 profile、克隆/更新到 ~\.dsh\plugins\dsh-playmate、建目錄聯接、寫 patch(已寫過則跳過並備份)。

方式三:手動

將倉庫目錄放到(或聯接到)<profile>/node_modules/dsh-playmate(Windows 可用目錄聯接 mklink /J),並在 <profile>/cordis.patch.yml 末尾增加:

- insert:
  - id: playmate
    name: dsh-playmate
    config: {}

然後重啓 DSH,設置頁會出現「陪玩」。

配置要點

配置保存在 $DSH_HOME/playmate.json(默認 ~/.dsh/playmate.json),設置頁也可改。常用項:

鍵 說明
see / talk / hear 三個模塊總開關,默認均爲 false
seeMode manual | auto
seePace 自動模式「多主動」:quiet | normal | dense
ffmpegPath 留空走 PATH
talkMode ptt(熱鍵)| always(常聽)
pythonPath 跑 ear.py 的解釋器,建議絕對路徑
asrModel 默認同上 SenseVoiceSmall
ttsUrl 例如 http://127.0.0.1:PORT/say;留空表示未接線
targetMode / targetSessionId 語音送進最近活動會話或固定會話(防串臺)

完整字段與取值範圍見倉庫 README「配置」表。TTS 需接受 POST {text};若有 /health,環境自檢會探活。

本地 API 示例(均迴環):GET /api/playmate/status、POST /api/playmate/toggle、GET/POST /api/playmate/config、GET /api/playmate/diag 等。

典型用法

  1. 只開語音輸入:設置裏打開「聽我說話」,選熱鍵或一直聽;說完停頓約 1 秒自動結束;文字進入當前或固定會話。固定會話:設置 → 語音送到哪個會話 → 固定。
  2. 模型按需看屏:保持 seeMode: manual,在對話中讓模型使用看屏能力;避免不必要的自動投遞以節省「喚醒」成本。
  3. 演示或遊戲時自動看變化:打開 see 且 seeMode: auto,按場景選「多主動」檔位;太吵或太費時改回 manual 或切到「安靜」。
  4. 念回答:自建 TTS 後填 ttsUrl,打開 hear;插件只轉發文字,聲音與引擎完全由你決定。

識別不準時:優先將 asrModel 改爲 README 推薦的 Paraformer-large,然後關閉再打開「聽我說話」重啓引擎。

適用場景與注意

適合:在本機 DSH 裏希望低耦合地加看屏、語音輸入、外接 TTS 朗讀;三個能力可只開其一;強調本地抓幀與 ASR、不上傳錄像。

注意:

  • 插件隨 DSH 宿主 API 變化可能失效;同一機器不要給兩個 profile 都註冊本插件(會雙實例)。
  • 自動看屏依賴 DSH 的 attachments 服務(插件 inject 已聲明)。
  • 受限環境下全局鍵盤鉤子可能裝不上,故熱鍵爲「按一下開始」而非按住;衝突時可改 lib/ptt/ptt-window.ps1 中的熱鍵註冊。
  • 日誌與反饋:<DSH_HOME>/playmate-plugin.log、<臨時目錄>/dsh-playmate/ear.log;issue 請附系統與 DSH 版本、環境自檢結果。

結尾

dsh-playmate 把 DSH 會話擴展成「能看、能說、能聽(外接 TTS)」的客戶端陪玩組合,開關分離、默認全關,且明確不捆綁聲音模型。DeepSeek Harness 生態強調「一切皆插件」;SkillHub 目錄是社區站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

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

小夜