dsh-pet-plus
DSH(DeepSeek Harness)桌面宠物插件 —— 基于 dsh-pet 0.3.6 的二次创作。
保留上游全部基础功能(动画、漫游、拖拽抛掷物理、余额、碎碎念、对话与记忆、系统通知、工作状态联动、 多开与布局、透明置顶桌面小窗),并新增六组功能。与上游可以并存(改名隔离,见下)。
二创来源与权利声明
- 上游:
dsh-pet0.3.6,作者 PC2005-cloud,MIT 许可 (https://github.com/PC2005-cloud/dsh-pet)。- 本二创:
dsh-pet-plus,作者 youhuangqing,就本仓库新增与修改的部分同样以 MIT 释出。 上游LICENSE原文完整保留,两者许可互相独立、互不影响。- 素材例外:动画 / 提示词 / 源视频沿用上游声明 —— 允许开源使用,禁止商用。
- 详见
THIRD_PARTY_NOTICES.md。
〇、路径约定
下文用 <DSH安装目录> 表示你的 DeepSeek Harness 安装位置(不是固定值,取决于你安装时选的路径)。
dsh.cmd 与 pnpm 都在它下面。不确定就查:
Get-Command dsh | Select-Object -ExpandProperty Source # dsh 已在 PATH 时
拿到的路径形如 <DSH安装目录>\resources\runtime\cli\bin\dsh.cmd,往上退三级就是 <DSH安装目录>。
一、环境要求
| 项 | 要求 |
|---|---|
| DSH | 桌面版 0.2.0-rc.1 / 0.2.0-rc.2(0.1.7-rc.2 不兼容) |
| 系统 | Windows 优先(桌面小窗与语音朗读依赖 Windows 自带能力);其它平台可用浏览器内的那只宠物 |
| 网络 | 仅在首次会下载 Electron 运行时(约 200MB,用于桌面小窗)。之后离线可用 |
| 语音朗读 | 走 Windows 系统语音(离线),或用 Edge 联网音色(可选) |
不需要额外安装 Node.js —— 构建产物已随包提供。
二、安装
假设你的档案名是 desktop(DSH 桌面版默认)。
方式 1:一行命令(推荐,直接从 Release 装)
dsh plugin --profile desktop add https://github.com/youhuangqing/dsh-pet-plus/releases/download/v0.1.0/dsh-pet-plus-0.1.0.tgz
dsh 不在 PATH 时用全路径:& '<DSH安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add <上面的网址或本地 tgz 路径>。
方式 2:从本地 tgz 装
& '<DSH安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add file:C:\path\to\dsh-pet-plus-0.1.0.tgz
装完重启 DeepSeek Harness 即可(插件在启动时加载)。
若该包日后发布到 npm,也可以按包名安装:
dsh plugin --profile desktop add dsh-pet-plus。
为什么装完要重启
DSH 在启动时组合插件树,运行中不热加载第三方插件。
安装后怎么确认装上了
浏览器开发者控制台(Ctrl+Shift+I)里搜 dsh-pet-plus,应能看到功能就绪日志;
或访问 http://127.0.0.1:19387/dsh-pet-plus-7340/state,返回的 sections 里应含
social / pomodoro / stats / sfx / tts。
三、功能一览
| 功能 | 怎么用 |
|---|---|
| 亲密度 + 喂食养成 | 点击宠物摸头;右键「互动」→ 摸摸头 / 喂小鱼干;/social 看状态 |
| 番茄钟 | 右键「专注」→ 开始 25 / 10 / 45 分钟;菜单标题实时显示倒计时 |
| 语音朗读 | 自动朗读宠物说的话;右键「偏好 → 语音朗读」开关;/tts status 看提供方 |
| 音效 | 自动(点击 / 落地 / 余额 / 番茄钟结束 / 升级 / 喂食);右键「偏好 → 音效」开关 |
| 增强菜单 | 右键新增「互动 / 专注 / 统计 / 偏好」四组,浏览器里那只与桌面上那只完全一致 |
| 每日统计与记账 | 右键「统计」;/stats;/dsh-pet-plus-7340/stats?days=7 |
上游原有功能(余额、碎碎念、对话、系统通知、工作状态联动、多开布局、设置页)全部保留。
四、配置
首次运行后配置文件在:
C:\Users\<你>\.dsh\dsh-pet-plus\main-config.jsonc
改完即时生效(每个请求重读),不用重启、不用重装。包内 assets/config.jsonc 是带完整注释的默认值,
想看所有可配项就看它。
语音音色(最常问的一个)
在 main-config.jsonc 里写 tts 段,然后让它说句话(或 /tts 你好呀)即可听效果:
{
"tts": {
"enabled": true,
"provider": "edge", // "auto"(Windows→系统语音)| "sapi" | "edge" | "stub"
"voice": "zh-CN-XiaoyiNeural", // ← 音色名写这里
"rate": 0, // 语速 -10~10
"volume": 100
}
}
音色名怎么选:
provider: "sapi"(离线,系统自带):音色名要写已安装的 Windows 语音名。列出本机已装的:Add-Type -AssemblyName System.Speech (New-Object System.Speech.Synthesis.SpeechSynthesizer).GetInstalledVoices() | ForEach-Object { $_.VoiceInfo.Name + ' [' + $_.VoiceInfo.Culture.Name + ']' }Windows 中文版通常只有
Microsoft Huihui Desktop(成年女声)。想要少女音/萝莉音,需要另外装 Windows 语音包,或者用下面的 Edge。provider: "edge"(联网,微软 Edge「大声朗读」接口,音色明显更好且免 key):候选音色名包括zh-CN-XiaoyiNeural(少女)、zh-CN-XiaoshuangNeural(童声/萝莉)、zh-CN-XiaoxiaoNeural(默认女声)、zh-CN-XiaomengNeural、zh-CN-XiaohanNeural。 ⚠️ 这是未公开接口,随微软改动可能失效。为此做了三重保护:默认不用它、返回字节必须是合法 MP3 才采纳、 失败自动回落系统语音。所以最坏结果只是"Edge 没生效、退回系统语音",不会更坏。/tts status会显示实际生效的提供方;应用日志里会写明是否发生过回落。provider: "stub":只产出静音,用来验证链路(排查用,不出声)。
改设置页里那一行的名字
src/client/settings.ts 里 zh 字典的 nav 字段(以及 en 的),改完重新构建:
& '<DSH安装目录>\resources\runtime\pnpm\bin\pnpm.mjs' run build
(仓库里 lib/ 是构建产物、不入库,所以要自己构建一次;详见第九节。)
五、命令
| 命令 | 说明 |
|---|---|
/pet |
选择当前桌宠(支持选择框或手输 id/名字) |
/chat |
与桌宠对话 |
/balance |
查询余额 |
/social |
亲密度 / 小鱼干状态 |
/pomodoro |
番茄钟(start / stop / status …) |
/stats |
每日统计 |
/tts |
语音朗读(status / 直接给一句试听文本) |
与上游 dsh-pet 并存时,/pet /chat /balance 三个短名归先加载的原版,
本插件会自动改用 /pet-plus /chat-plus /balance-plus(注册失败只告警,不会让插件加载失败)。
卸掉原版后短名自动归本插件,无需改配置。
六、卸载
& '<DSH安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop remove dsh-pet-plus
然后重启。用户数据(~/.dsh/dsh-pet-plus/)不会自动删除,需要时手动删。
七、与上游并存
本插件把所有注册进 DSH 全局命名空间的标识都加了 -plus:包名、cordis 行 id、路由前缀
(/dsh-pet-plus-7340)、桥协议 scheme、用户数据目录(~/.dsh/dsh-pet-plus/)、Electron 应用名、
环境变量前缀、客户端插件名与插槽 id、locale 命名空间(pet-plus.config)、斜杠命令。
两套可以同时装、互不影响(会看到两只宠物、设置页两个分区)。想只用一套就卸掉另一个。
⚠️ Electron 运行时目录(
~/.dsh/electron/)是两套共用的,这是刻意的 —— 避免重复下载 200MB。
八、已知限制
| 项 | 说明 |
|---|---|
| 悬停快捷条 | 未实现(计划里有)。它要改桌面端「整窗点击穿透」的判定,改错会让鼠标移过去就穿透、按钮点不到,在缺少真机验证条件下风险过高。 |
| Edge 联网音色 | 协议为未公开接口,未经运行时验证(有三重保护,最坏退回系统语音)。 |
| token 用量统计 | 会话事件是否携带 usage 未核实,故留空而非填猜测值。 |
九、开发
仓库不含 lib/(构建产物),clone 后先装依赖再构建:
# 1) 装依赖(需要网络;peer 依赖 @deepseek-ai/* 是公共 npm 包)
& '<DSH安装目录>\resources\runtime\pnpm\bin\pnpm.mjs' install
# 2) 构建与自测
$env:ELECTRON_RUN_AS_NODE = '1'
$env:PATH = '<DSH安装目录>\resources\runtime\bin;' + $env:PATH
$exe = '<DSH安装目录>\DeepSeek Harness.exe'
$pnpm = '<DSH安装目录>\resources\runtime\pnpm\bin\pnpm.mjs'
& $exe --expose-internals $pnpm run typecheck # 类型检查
& $exe --expose-internals $pnpm run build # tsdown + 重建 shared-core.js
& $exe --expose-internals $pnpm test # 上游测试套件(553 个用例)
& $exe --expose-internals $pnpm run test:single # 受限环境用这个(不 spawn 子进程)
# 3) 独立模式(不需要 DSH、不用重启应用)
$env:DSH_HOME = '<工作区内的临时目录>'
& node.cmd lib/standalone.js --port 3099
$exe --expose-internals $pnpm是「用 DSH 自带的 Node 跑 pnpm」的写法。 你也可以直接用系统里的pnpm(如果有):pnpm install && pnpm run build。
runtime/electron-helper/*.js 不在 tsc 范围内,改动后要单独做语法检查:node --check <文件>。
打分发用的包:pnpm pack → 产出 dsh-pet-plus-<版本>.tgz,把它作为 Release 附件发布。
十、许可与署名
代码 MIT(见 LICENSE)。素材来自上游 dsh-pet:代码 MIT;动画 / 提示词 / 源视频允许开源使用,禁止商用。
详细说明见 THIRD_PARTY_NOTICES.md。
No comments yet. Be the first to write one.