前言¶
在 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 秒自動結束;文字進入當前或固定會話。固定會話:
設置 → 語音送到哪個會話 → 固定。 - 模型按需看屏:保持
seeMode: manual,在對話中讓模型使用看屏能力;避免不必要的自動投遞以節省「喚醒」成本。 - 演示或遊戲時自動看變化:打開
see且seeMode: auto,按場景選「多主動」檔位;太吵或太費時改回manual或切到「安靜」。 - 念回答:自建 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 / 幻方無官方從屬關係。