🐋 better-dsh-pet
一只住在 Windows 桌面上的大肥鱼,由 DeepSeek Harness 真实工作状态驱动。
透明 · 置顶 · 会吐槽 · 会番茄钟 · 会喂食 · 会语音 · 会执行任务 · 会陪你干活
如果这个大肥鱼让你开心,给个 ⭐ 支持一下吧~
📑 目录
🎬 视频推广
📹 点击观看 better-dsh-pet 演示视频:
▶️ B站:一行命令,把大肥鱼放到桌面
📖 项目简介
better-dsh-pet 是一个 DSH 桌面宠物插件,基于 PC2005-cloud/dsh-pet 二创增强。
它和普通网页桌宠最大的区别是:
- 🪟 使用 独立透明置顶窗口 运行,不占用 DSH 网页界面
- 🧠 能感知 DSH 的真实工作状态:思考 / 工作 / 等待 / 完成 / 出错
- 🎞️ 内置 91 个透明动画,全部开箱即用
- 🎙️ 支持 本地语音识别 / 语音唤醒 / 语音闲聊(SenseVoice,离线运行)
- 🤖 识别到任务时填入输入框手动确认,再在 DSH 中开启真实会话执行
- 🎛️ 提供大量自定义玩法:动作选择、播放顺序、移动频率、番茄钟、喂食、吐槽、余额、节日、情绪系统
简单说:DSH 在干活,大肥鱼在陪你。
✨ 功能特性
🧠 DSH 状态联动
- 监听 DSH 会话事件,实时感知 Agent 状态
- 状态变化自动切换动画和气泡文案
- 支持状态:空闲、思考、工作、等待确认、完成、出错
- 支持子 Agent 状态选择(可关闭)
- 自动统计 Token 用量,并在对话结束后刷新余额
🖥️ 独立桌面气泡
- 透明、无边框、始终置顶
- 不占用网页界面
- 支持点击穿透,不挡鼠标
- 可拖拽到屏幕任意位置
- 支持系统托盘:显示 / 隐藏 / 退出
- 置顶看门狗:定期重新置顶,防止被资源管理器 / 全屏应用顶掉
- 全屏自动隐藏:仅在全屏游戏 / 视频时自动隐藏,不影响日常使用
- Helper 看门狗:桌宠进程意外退出后自动重新拉起
🎞️ 91 个透明动画
包含但不限于:
- 待机呼吸、东张西望、打瞌睡、伸懒腰
- 写代码、照镜子、玩魔方、敲桌面
- 吃白饭、吃火锅、吃大闸蟹、吃汤圆、吃饺子
- 放风筝、堆雪人、放烟花、放孔明灯
- 拆礼物、变鸽子、扑克魔术、撸猫、骑木马
- 小提琴、女仆舞、宅舞、摇摆舞
- 点击回应:开心、害羞、傲娇、挠痒、元气挥手
全部 91 个透明动画 见仓库:assets/thumb/
🚶 屏幕漫游
- 可开启 / 关闭行走
- 可调节移动频率
- 支持螃蟹走路、原地漂浮踏步、向左奔跑
- 移动和动画节奏同步
🍚 喂食互动
- 右键菜单一键喂食
- 随机播放吃饭动画
- 显示“谢谢投喂”气泡
- 增加心情和精力
💰 余额显示
- 自动读取 DeepSeek 账户余额
- 气泡中显示余额,如
余额 ¥11.06
- 每次对话结束后自动刷新
- 每 5 分钟定时刷新
- 点击余额气泡可手动刷新
🍅 番茄钟
- 自定义工作时长 / 休息时长
- 气泡显示倒计时
- 结束时播放 MP3 闹钟 + 抖动
- 可随时停止
- 完成番茄钟会增加心情和精力
💬 对话吐槽
- 根据当前对话生成俏皮吐槽
- 可手动触发
- 可开启自动吐槽(会消耗 Token)
- 自动吐槽可一键关闭
🎙️ 语音聊天与唤醒
- 本地 SenseVoice 语音识别(
sherpa-onnx-node,无需联网)
- 可自定义唤醒词,默认“大肥鱼”
- 说“大肥鱼 + 指令”即可控制:喂食、番茄钟、余额、闲聊
- 语音识别为任务时,不会自动发送,而是填入输入框并显示「执行任务」按钮,等你确认后再执行,避免误识别白烧 Token
- 支持自动录音、断句静音时长、自动发送开关
🤖 真实任务执行
- 识别到复杂任务后,在 DSH 中新建真实会话执行(方案三)
- 可配置任务工作目录(
taskCwd,留空默认用户主目录)
- 任务执行前需要手动点击「执行任务」确认
- 任务会话被归档时会自动停止,避免“以为关了还在跑”烧 Token
🎭 情绪系统
- 心情 / 精力 / 焦虑 / 无聊 四维情绪
- 互动、喂食、番茄钟、DSH 状态都会影响情绪
- 情绪会改变空闲动作和气泡文案
- 情绪值自动保存,重新打开桌宠不会重置
📅 节日模式
- 支持阳历 + 农历节日识别
- 可一键播放节日祝福动画
- 可开启节日自动播放
- 内置元旦、春节、元宵、劳动节、儿童节、端午、七夕、中秋、重阳、腊八、国庆、圣诞等
🎛️ 自定义动作
- 右键勾选要播放的动作
- 支持自定义播放顺序
- 支持动作切换间隔
- 支持移动频率
- 支持动画播放速度(1.0x~2.0x)
⚙️ 行为设置
- 宠物大小(px)
- 角色大小百分比
- 气泡大小
- 移动频繁度
- 动作切换间隔
- 播放速度
- 行走开关
- 自动吐槽开关
- 语音开关 / 唤醒词 / 自动录音 / 自动发送
- 任务工作目录
- 节日开关
📸 效果预览
动画为透明背景;GIF 预览中透明部分显示为页面底色,实际播放为透明。
😴 待机 / 日常
待机呼吸休闲
东张西望
哈欠连天
原地小憩沉眠
超大伸懒腰
悠闲哼歌
🏃 移动
原地漂浮踏步
螃蟹走路
被鼠标拖拽悬空反馈
🍜 吃东西
吃白饭
吃Token
大口吃零食
吃早餐
吃冰淇淋融化
🎮 玩耍 / 才艺
原地专心玩魔方
玩水枪
小提琴演奏
优雅女仆舞
可爱宅舞
🎉 节日 / 季节
堆雪人
放风筝
中秋赏月吃月饼
被落叶淹没
🖱️ 点击回应
开心跃动
害羞惊讶
傲娇生气
🚀 快速开始
环境要求
| 项目 | 要求 |
|---|
| 操作系统 | Windows 10 / 11 |
| DSH | 已安装 DeepSeek Harness(DSH) |
| Node.js | 可用(用于 DSH / pnpm 插件安装) |
| Electron | 不需要手动安装,首次启动自动下载到 ~/.dsh/electron/ |
安装
dsh plugin --profile web add better-dsh-pet
如果刚发布新版本不到 24 小时,pnpm 11 的 minimumReleaseAge 安全策略可能不会自动选最新版,而是退回旧版。此时请指定精确版本安装:
dsh plugin --profile web add better-dsh-pet@0.3.5
pnpm 会自动把该版本加入 minimumReleaseAgeExclude 并完成安装;也可以等待 24 小时后直接用上面的普通命令。
启动
dsh web
启动后,桌面右下角会出现大肥鱼。
首次启动时插件会自动探测 / 下载 Electron,可能需要一点时间,请耐心等待。
卸载
dsh plugin --profile web remove better-dsh-pet
⬇️ 下载说明
better-dsh-pet 有两类下载:
- Electron:桌宠窗口运行环境,首次启动自动下载;
- SenseVoice 语音模型:本地离线语音识别模型,需要手动下载(可选增强)。
路径会自动识别 DSH 主目录:DSH_HOME 环境变量 → 从插件安装路径自动推断 → 默认 ~/.dsh。所以在不同电脑、不同 DSH 安装目录下都能保持一致。
Electron 自动下载
手动触发下载(可在终端直接看进度):
node "C:\Users\Administrator\.dsh\profiles\web\node_modules\better-dsh-pet\scripts\ensure-electron.mjs"
SenseVoice 语音模型下载
语音模型不会自动下载,需要手动执行一次:
cd C:\Users\Administrator\.dsh\profiles\web\node_modules\better-dsh-pet
npm run download:sensevoice
脚本会自动尝试多个镜像源,哪个可用就用哪个:
1. GitHub 官方
2. ghproxy.net
3. ghfast.top
4. gh-proxy.com
下载进度显示在终端,也会写入:
C:\Users\Administrator\.dsh\logs\better-dsh-pet-sensevoice.log
查看进度:
Get-Content "C:\Users\Administrator\.dsh\logs\better-dsh-pet-sensevoice.log" -Tail 20
模型下载完成后位于:
C:\Users\Administrator\.dsh\voice\sensevoice\model.int8.onnx
C:\Users\Administrator\.dsh\voice\sensevoice\tokens.txt
如何判断下载完成
| 项目 | 完成标志 |
|---|
| Electron | C:\Users\Administrator\.dsh\electron\electron.exe 存在(约 215MB) |
| 语音模型 | C:\Users\Administrator\.dsh\voice\sensevoice\model.int8.onnx 和 tokens.txt 存在 |
| 下载日志 | 日志末尾出现 下载完成 |
重新下载 / 清除缓存
# 删除 Electron
Remove-Item "C:\Users\Administrator\.dsh\electron" -Recurse -Force
# 删除语音模型
Remove-Item "C:\Users\Administrator\.dsh\voice" -Recurse -Force
然后重新启动 DSH 或重新运行上面的下载命令。
下载失败排查
- Electron 解压报“文件正由另一进程使用”:
- 先关闭 DSH / 桌宠,再重新下载;
- 或手动运行
ensure-electron.mjs。
- 语音模型一直 0% / 进度条半天不动:
- 升级时提示 EPERM:
🖱️ 使用指南
右键菜单
右键点击大肥鱼,可以看到:
| 菜单项 | 作用 |
|---|
| 情绪状态 | 实时显示心情 / 精力 / 焦虑 / 无聊 |
| 喂食 | 播放吃饭动画 + 感谢气泡 |
| 开始番茄钟 / 开始短休息 | 启动番茄钟 |
| 停止番茄钟 | 停止当前番茄钟 |
| 让大肥鱼吐槽一下 | 手动生成一条吐槽 |
| 语音控制 | 开始一次语音指令识别 |
| 开启/关闭语音唤醒 | 切换“大肥鱼 + 指令”唤醒 |
| 闲聊 | 打开聊天面板,支持语音 / 文字 / 任务确认 |
| 检查更新 | 检查 GitHub 新版本 |
| 设置… | 打开完整设置页(外观、动作、番茄钟、语音、任务目录、节日等) |
| 本次隐藏 | 隐藏本次大肥鱼 |
| 本次关闭 | 关闭本次大肥鱼 |
聊天面板
- 点击右键菜单「闲聊」打开聊天面板
- 支持文字输入、语音输入
- 识别为普通问题 → 直接聊天
- 识别为任务 → 填入输入框,显示「执行任务」按钮,手动确认后才执行
- 任务模式下隐藏普通「发送」按钮,按回车也等于执行任务
语音控制
常用指令示例:
大肥鱼,开始番茄钟
大肥鱼,喂食
大肥鱼,看看余额
大肥鱼,打开聊天
也可以直接点右键菜单「语音控制」说一次指令。
节日祝福
- 在设置中开启「节日祝福」
- 遇到节日时,右键菜单会出现「播放节日祝福」
- 也可开启自动播放,节日当天自动播放对应动画
⚙️ 配置说明
DSH 设置页
设置 → 插件 → 插件配置 → Better DSH Pet(大肥鱼增强版)
也可以在桌宠右键菜单 →「设置…」中直接修改。
| 配置项 | 说明 | 默认 |
|---|
enabled | 是否启用大肥鱼 | true |
petSize | 宠物宽度(px) | 460 |
scale | 角色大小(70%~140%) | 100% |
bubbleScale | 气泡大小(80%~120%) | 100% |
activityLevel | 空闲微动作频率 | normal |
reducedMotion | 减少动态效果 | false |
bubbleMode | 气泡显示模式 | always |
bubbleStates | 自定义气泡状态 | SUCCESS/ERROR/WAITING |
includeSubagents | 是否响应子 Agent | false |
walkEnabled | 是否允许走动 | true |
moveChance | 移动频繁度(%) | 20 |
actionDelayMs | 动作切换间隔(ms) | 0 |
playbackRate | 动画播放速度(1.0x~2.0x) | 1 |
enabledActions | 自定义待机动作 | [](全部) |
actionOrder | 自定义播放顺序 | [](随机) |
roastEnabled | 自动吐槽(耗 Token) | false |
workMinutes | 番茄钟工作时长 | 25 |
breakMinutes | 番茄钟休息时长 | 5 |
voiceEnabled | 启用语音(麦克风) | true |
voiceWakeAutoStart | 启动时自动开启语音唤醒 | false |
voiceSilenceMs | 语音断句静音时长(ms) | |
🎭 情绪系统
大肥鱼有四维情绪:
| 情绪 | 范围 | 说明 |
|---|
| 心情 Mood | -100 ~ 100 | 负=低落,正=开心 |
| 精力 Energy | 0 ~ 100 | 越低越容易犯困 |
| 焦虑 Anxiety | 0 ~ 100 | 越高越紧张 |
| 无聊 Boredom | 0 ~ 100 | 越高越想找事做 |
情绪如何变化
- 点击、喂食、番茄钟完成 → 心情和精力上升
- 空闲太久 → 越来越无聊、疲惫
- DSH 工作 / 思考 → 消耗精力
- DSH 等待确认 / 出错 → 焦虑上升
情绪影响
- 情绪强烈时,大肥鱼会优先播放对应情绪动作
- 会弹出心情气泡,例如:
- 开心:
今天心情超好!
- 犯困:
好累啊,让我趴一会儿…
- 焦虑:
有点小紧张…
- 无聊:
好无聊啊…
持久化
情绪值会自动保存到本地,重新打开桌宠不会重置。
🤖 任务执行机制
流程
- 你对大肥鱼说 / 输入一个复杂任务
- 插件先用 LLM 做意图分类
- 如果识别为
task:
- 不会自动发送
- 把任务文本填入聊天输入框
- 显示「执行任务」按钮
- 等你确认后再执行
- 点击「执行任务」后,插件会在 DSH 中新建一个真实会话,把任务作为首条消息发送
- 任务在工作目录(
taskCwd)中执行,默认是用户主目录
为什么需要手动确认
因为自动识别偶尔会出错,直接执行可能会白烧 Token。手动确认可以给你一个修改 / 取消的机会。
归档自动停止
如果任务会话被归档(隐藏),插件会自动取消正在运行的 Agent;如果 3 秒后仍在运行,会强制销毁,避免“以为关了还在跑”的情况。
🎙️ 语音说明
识别引擎
- 默认使用 Windows 系统语音识别(SAPI),开箱即用
- 可选安装 SenseVoice 本地模型 +
sherpa-onnx-node,完全离线、更准、不上传音频
- 首次使用 SenseVoice 需要下载模型:
cd node_modules/better-dsh-pet
npm run download:sensevoice
模型会下载到 ~/.dsh/voice/sensevoice。
下载脚本会自动尝试多个镜像源,详细说明见 ⬇️ 下载说明。
唤醒词
默认唤醒词是 大肥鱼,可以在设置中修改。
开启语音唤醒后,说:
大肥鱼,开始番茄钟
大肥鱼就会执行对应指令。
语音闲聊
在聊天面板中点击 🎤,或说唤醒词后,大肥鱼会自动开始录音。
识别结果会进入聊天输入框:
- 普通内容 → 可修改后发送
- 任务内容 → 自动进入任务确认模式
❓ 常见问题
Q:为什么大肥鱼没有出现?
- 确认安装的是
better-dsh-pet
- 完全退出并重启 DSH
- 检查设置里“启用大肥鱼”是否开启
- 首次启动需要自动下载 Electron,请稍等片刻
- 如果下载失败,可手动设置
DSH_PET_ELECTRON_PATH 指向 electron.exe
Q:为什么没有余额显示?
- 需要 DSH 中配置了
DEEPSEEK_API_KEY
- 插件会自动读取
~/.dsh/.credentials.yaml
- 网络不通时不会显示
Q:余额多久刷新一次?
- 每次对话/任务结束后自动刷新
- 每 5 分钟定时刷新
- 点击余额气泡可手动刷新
Q:自动吐槽会消耗 Token 吗?
会。所以默认关闭,可以在设置或右键菜单中开启。
Q:如何让大肥鱼只播放指定动作?
右键 → 设置… → 在“自定义待机动作”中勾选要播放的动作。
Q:如何自定义播放顺序?
在设置页的“自定义播放顺序”中填写动作名,用逗号分隔。
Q:大小设置无效?
- 在设置页或右键“设置…”中修改
- 现在是实时生效的,不需要重启
- 如果没生效,确认保存成功后再看
Q:没有 DSH 桌面端能运行吗?
可以。
- 本插件不依赖 DSH Desktop.exe
- 只需要 DSH 本体(
dsh web)正常运行
- 右键“打开 DSH 桌面版”只是可选功能,找不到桌面端也不影响桌宠本体
Q:其他电脑需要额外安装 Electron 吗?
不需要手动安装。
Q:插件会在没有 Electron 的电脑上崩溃吗?
不会导致 DSH 崩溃。首次启动会自动下载 Electron;如果下载失败,桌宠窗口无法显示,日志会提示:
better-dsh-pet: cannot resolve Electron executable.
Q:语音模型怎么下载?
语音模型是可选增强,不会自动下载。手动执行:
cd C:\Users\Administrator\.dsh\profiles\web\node_modules\better-dsh-pet
npm run download:sensevoice
详细说明见 ⬇️ 下载说明。
Q:没有语音模型能使用语音功能吗?
能。
- 没有 SenseVoice 模型时,会自动回退到 Windows 系统语音识别(SAPI)
- 下载 SenseVoice 后,会使用更准的本地离线识别
Q:为什么任务识别后没有自动执行?
这是故意的。识别为任务后需要你点击「执行任务」按钮确认,防止误识别白烧 Token。
Q:任务会话归档后还在跑怎么办?
已经修复:归档后会自动取消 Agent,3 秒兜底强杀。如果仍然遇到,请升级到最新版本。
Q:情绪值为什么还是重置?
请确认使用的是 0.3.0 及以上版本,并重启一次 DSH / 桌宠进程。旧版本没有情绪持久化。
🛠️ 开发 / 发布
本地调试
# 使用本地源码
dsh plugin --profile web add "D:\dsh-pet"
# 打包
npm pack
# 发布前检查
node scripts/prepack-check.js
# 发布到 npm
npm publish
目录结构
better-dsh-pet/
├── lib/ # 宿主半侧(DSH 插件逻辑)
│ ├── index.js # 插件入口
│ ├── client.js # 浏览器半侧(DSH 设置卡片)
│ ├── pet-reducer.js # DSH 状态 → 桌宠状态
│ ├── pet-helper-process.js # Electron Helper 进程管理
│ └── sensevoice.js # 本地语音识别
├── runtime/electron-helper/ # Electron 桌面端
│ ├── main.js # 主进程(托盘 / 看门狗 / 全屏检测)
│ ├── preload.js # 安全桥
│ └── renderer.js # 桌宠 UI / 动画 / 聊天 / 语音
├── assets/ # 动画、音效、图标
├── scripts/ # 下载、转码、发布检查
└── cordis.patch.yml # DSH bundle 挂载声明
📌 二创声明
本项目是基于 PC2005-cloud/dsh-pet 的二创修改版。
- 感谢原作者的桌宠动画与设计
- 本项目在保留原动画基础上,增加了 DSH 状态联动、桌面独立窗口、余额、番茄钟、吐槽、语音、任务执行、情绪、节日、自定义动作等能力
- 素材使用请遵守原作者仓库的许可说明
🔎 相关链接
📄 许可
- 代码:MIT
- 素材(动画 / 提示词 / 源视频):见仓库说明,禁止商用
如果这个大肥鱼让你开心,给个 ⭐ 支持一下吧~
🐋 DSH 在干活,大肥鱼在陪你。