前言¶
在 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 / 幻方无官方从属关系。