dsh-pet

DSH PLUGINUI 与外观

仓库 ggxx001/dsh-pet · npm dsh-pet

UI 与外观 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

一只住在 DeepSeek Harness 里的桌面宠物:97 个透明动画随机切换,支持点击 Q 弹、拖拽甩抛、屏幕漫游与碎碎念对话,还能多开或住上桌面。

一句话选型结论

按资料字段整理

dsh-pet 是UI 与外观类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类UI 与外观 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-11-02 创建于 2026-11-02
README 39.2 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:ggxx001/dsh-pet
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.2-rc.1 等 2 个,Node.js 要求 >=22.12.0;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.2-rc.1、0.2.2-alpha.2版本不匹配时安装会报错
Node.js 要求>=22.12.0来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@^4.0.4、@deepseek-ai/dsh-agent-default-model@^0.2.0-rc.1 等 12 个需要同时安装的同级依赖
npm 包名dsh-pet可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-pet:住进 DeepSeek Harness 的桌面宠物

  • 97 个透明动画随机无缝衔接
  • 点击 Q 弹与拖拽甩抛物理
  • 屏幕漫游与多宠物同屏
  • 碎碎念与对话可配表情包
  • 透明置顶桌面窗独立运行

适用场景

皮肤主题

上游标签

dsh-plugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-11-04): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 结论说明 静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。
  • 风险计数 严重 0 / 高 0

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.2-rc.1 等 2 个),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 需要同时装好同级依赖,漏装会启动失败。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在UI 与外观场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-pet当前 L5 · 运行验证通过 低风险 0 0.2.2-rc.1 等 2 个 有
nuwa-skill 未做沙盒验证 未标注 3.8 万 未标注 有
awesome-dsh-plugin L4 · 沙盒安装通过 低风险 1.8 万 0.1.1-rc.2 有
deepseek-balance-whale-widget L4 · 沙盒安装通过 低风险 4,492 0.1.7-rc.2 等 2 个 有
dsh-better-sidebar L4 · 沙盒安装通过 低风险 4,112 0.1.7-rc.2 等 10 个 有
dsh-deep-whale L4 · 沙盒安装通过 低风险 2,470 未标注 有

仓库档案

UI 与外观
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方ggxx001仓库 dsh-pet · 默认分支 master
分类UI 与外观ui
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-11-02 · 2026-11-02最后推送 2026-11-02
本站收录2026-11-03首次进入本站目录的时间

README 全文

39.2 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-pet 🐾

> A floating desktop pet for the DeepSeek Harness Web UI: idle breathing, random actions (the 97 transparent animations — dozing off, playing with a Rubik's cube, writing code, hotpot…), turns, screen wandering, squash-and-stretch click reactions, throw-and-bounce drag physics, a right-click menu to play any action on demand, balance animations with a thinking bubble, occasional self-talk and a chat dialog (both can attach a meme image) — spawn as many pets as you want, live on your desktop (transparent always-on-top window), or add brand-new pet species (pet pack).
> 一只住在 DeepSeek Harness 里的桌面宠物:待机呼吸、随机动作(打瞌睡、玩魔方、写代码、吃火锅……97 个透明动画随时无缝衔接)、左右转向、屏幕漫游、点击 Q 弹、拖拽甩抛反弹、右键菜单点播动作、余额动画 + 头顶联想气泡、时不时的碎碎念与对话(都能配一张表情包)——可多开同屏,能脱离浏览器住上桌面(透明置顶小窗),也能自己添加全新宠物种类(pet pack)。


🚀 快速开始(安装插件)

桌面应用(Electron 版):在应用内「插件管理」页的安装框里填 dsh-pet,不用开终端;需要在终端里操作时,用桌面应用自带的那份 CLI。

dsh web:

dsh plugin --profile web add dsh-pet

装完重开桌面应用(dsh web 用户则重启 dsh web)才生效。宠物出现在界面右上角(默认配置角落,可在设置页修改)——全部透明动画开箱即用,无需任何生成流程。

> 💡 格式自动适配:Chrome/Edge/Firefox 与桌面模式(Electron=Chromium)播 .webm(VP9-alpha);macOS Safari/WKWebView 会自动改用 .mov(HEVC-with-Alpha)。把 mov 素材放进目录即生效,没放时自动退回 webm(黑底但动画正常播,不会白屏)。见下方「🖥️ macOS 使用 mov」。

> 💡 想自己造一只专属宠物?克隆 PC2005-cloud/dsh-pet 仓库,用内置素材链(AI 提示词 → 绿幕视频 → 透明动画,素材由豆包生成)从零生成,全流程可复现。

> 💡 不想每次都开着 DSH?npx dsh-pet-standalone 可以完全不打开 DSH 让桌宠住在桌面上,见下方「🧍 独立运行(完全不打开 DSH)」。

安装后你会看到什么

默认 display: "both"(浏览器与桌面都显示),重开 DSH 后两处会依次出现,不必手动开:

  1. 浏览器端先出现:宠物落在界面右上角(默认角落,设置页可改),此时桌面上还是空的。
  2. 宿主自动补桌面运行时:本机没有 Electron 时会自己下载一份(落在 ~/.dsh/electron,同一版本只下一次),进度直接打在 DSH 的控制台里([dsh-pet] Electron not found … → downloading … → download complete …)。这一步在后台进行,浏览器里的宠物照常可用,等多久取决于网速。
  3. 桌面端随后出现:解压完自动拉起桌面 Helper,同一只宠物以透明窗形式落到桌面上——此时屏幕上一共两只:浏览器里一只、桌面上那只,共用同一份配置与同一套动画。
  4. 想只留一只:设置页选中该宠物 →「显示位置」下拉框(仅浏览器 / 仅桌面 / 两者都显示 / 都不显示);或在宠物上右键 →「显示位置」子菜单直接切换,不用回设置页。

> 已经装过 Electron(或设了 DSH_PET_ELECTRON_PATH)时第 2 步会跳过,桌面端几乎立刻出现;下载失败只影响桌面模式,浏览器里的宠物不受影响。探测顺序、手动触发与镜像/版本环境变量见下方「🪟 桌面模式(脱离浏览器,可选)」。

🖥️ macOS 使用 mov(Safari 透明播放)

macOS 的 Safari/WKWebView 不认 webm 的 alpha 通道(会渲染黑底),需要用 .mov(HEVC-with-Alpha)。客户端会自动识别 macOS Safari 并优先请求 .mov,所以只需两步:

  1. 下载 mov 素材:(保持最新,zip 解压后文件名与 webm 一一对应)
  2. 放入素材目录:把 .mov 文件放进 $DSH_HOME/dsh-pet/main-animation/mov/(pet pack 宠物则是 pet/<种类名>-animation/mov/)

放好后刷新页面即生效,不用重启 dsh web。

  • 有 mov:Safari 播 HEVC(真透明);其他浏览器照旧用 webm,互不影响
  • 没有 mov:Safari 退回 webm(黑底,动画正常播,不会白屏)
  • 桌面模式(Electron=Chromium)始终用 webm,不受影响

✨ 功能特性

  • 纯粹的桌宠:不掺业务功能——没有天气查询、系统监控、Agent 状态感知,就一件事:陪你(外加可选的余额展示、系统通知、碎碎念与对话,见配置节)。零核心改动;默认零模型成本——只有主动开启碎碎念(pets[].whisperEnabled)或主动发起对话时才会调用当前会话所用的模型,其余功能运行时零 LLM/API 调用
  • 透明动画:待机呼吸、打瞌睡、玩魔方、哼歌、炸毛、吐泡泡、玩水枪、小提琴演奏、蓝鲸现世、吃白饭、照镜子、三支舞、写代码、四季动作(放风筝、堆雪人、吃冰淇淋、放烟花……)全部无缝衔接
  • 永不停止的动画链:每段动画播完立即按权重选下一个(默认 idle 10 / turn 5 / move 5,剩余 80% 归随机动作分类)
  • 屏幕漫游:朝 facing 方向行走,自动检查空间、不走出屏幕(多屏时默认可骑缝跨屏;设置页「锁定在当前屏幕」开启后只在当前所在那块屏内走)
  • 点击 / 拖拽(弹簧跟手 + 甩抛反弹 + Q 弹):点击有随机回应动画(开心 / 害羞 / 傲娇)并「Q 弹」挤压回弹(垂直压扁 55% → easeOutBack 回弹过冲,贴地锚定);拖拽为过阻尼弹簧跟手(不抖不飘、无 overshoot);松手按最后轨迹估速(停顿/慢速 = 温柔放下原地停住)——用力甩出即沿抛物线飞行:撞屏幕边缘按恢复系数反弹、落地摩擦减速至停,每次落地按冲击速度 Q 弹(轻落 0.8 ~ 重砸 0.55);物理与挤压曲线纯函数在 src/shared/physics.ts,浏览器与桌面严格同一手感(prefers-reduced-motion 时跳过挤压)
  • 物理参数化(0.2.5):拖拽抛掷手感全部由配置 physics 段驱动——重力(gravity,0 = 无重力漂浮)/ 碰壁恢复系数(restitution)/ 地面摩擦(groundFriction,0 = 冰面)/ 顶部反弹开关(ceilingBounce)/ 总力度(throwPower)/ 多宠物碰撞开关(petCollision),所有宠物共用(全局默认:设置页改一次对含 pet pack 的全部宠物生效;种类文件顶层可覆盖,见配置节);设置页「物理」区可图形化编辑(6 个控件,与四个全局开关同一套语义:改完点「保存」整包写入用户配置,非法值就地红字提示、宿主也会拒绝)
  • 点击积分(0.2.5):飞行中的宠物被按下(速度 ≥ 400px/s)→ 点击处爆开粒子 + 弹出积分卡片;分数 = 速度/100 × 462/大小(线性,越快/越小分越高——小宠物目标小、更难命中,奖励更高);静止/慢速点击维持普通点击回应动画(prefers-reduced-motion 时跳过粒子)
  • 多宠物碰撞(0.2.5):petCollision: true 开启后,飞行中的宠物撞到其它宠物按动量守恒 + 恢复系数 0.995 弹开(质量 ∝ size²,被撞方从落点以新初速抛出去),浏览器与桌面跨窗口同语义(默认关闭)
  • 碎碎念:宠物时不时自己冒一句——按 eventsRefreshSec.whisper 周期(默认 300 秒)调用当前会话所用的模型生成(人设 = 该宠物自己的 whisperPrompt,没写就回落到所属条目的那份;另追加一句名字声明与时间背景),气泡展示 10 秒;右键菜单「碎碎念」可立即催一句(绕过节流,同一实例的多端一起看到)。默认开启,按宠物可关(pets[].whisperEnabled)
  • 对话:右键「对话」弹窗跟宠物聊天,也能用 /chat <消息> 命令(留空 = 催一句碎碎念)——记忆持久化在 $DSH_HOME/dsh-pet/memory.json(全存不删,每次请求只带最近 chatMemoryRounds 轮),浏览器与桌面共享同一份记忆;对话目标为 /pet 选中的那只,未选则取列表第一只
  • 表情包配图(0.2.9):气泡可以带一张表情包——碎碎念随机抽 1 张(whisperImageEnabled:只是把这张图的描述加进同一次请求,约 +100 字符 / ≈60 token,增量可忽略);对话把整张清单交给模型按语境选(chatImageEnabled:每条消息约 +1.1k 字符 / ≈650 token,约碎碎念配图的 11 倍,随图片数量线性增长)。图片与描述的映射在 memes(键 = 表情包目录里的 <键>.png;素材归属与动画同一套,见「高级自定义」),两个开关默认都开
  • 右键级联菜单:右键宠物弹出(桌面与浏览器共用同一份组件,src/shared/menu.ts)——桌面端根项「打开网站 / 查看余额 / 回到初始位置 / 重载配置 + 动作」、浏览器端「回到初始位置 + 动作」;「打开网站」用系统默认浏览器打开 DSH 网站(等效网页里 Ctrl+点击链接);「查看余额」立即拉余额弹气泡播档位动画(与周期触发同一展示路径);「回到初始位置」停漫游回配置角落;「重载配置」(桌面专属)请宿主重启桌面 Helper——全部桌面宠物窗口按最新配置重建,改完配置文件不必回设置页点保存(与保存同一条重启路径:等旧进程退出再起新的;代价是会话内拖拽落点清空、回配置角落);动作 → 分类 → 具体动画(分类 = 待机/转向/拖拽/点击回应/移动/随机动作分类/余额档位;点播「移动」分类动画会真实行走一段——边界检查/随机距离/起停时段与随机移动完全一致;noMirror 文字类朝右时自动强制朝左)——浏览器端只在宠物命中区拦截右键(preventDefault),完全不进入/改动 DSH 页面自己的菜单。「打开网站」按宿主自动分派:宿主是 DSH 桌面应用时该项自动变「打开软件」,用应用自注册的 dsh://open 协议把桌面应用主窗口唤到前台(已运行前置 / 未运行拉起);dsh web 与独立模式仍是系统默认浏览器打开站点
  • 左右朝向:所有动画 CSS 镜像,人物可朝左 / 朝右
  • 落地对齐:动画统一脚底线,宠物始终站在"地面"上
  • 流畅切换:双缓冲 video 交叉淡入,切换零空白帧
  • 无障碍友好:支持 prefers-reduced-motion
  • 多开:可配置多个宠物同屏,每只独立的 id/大小/位置/余额开关/显示位置(设置页「桌宠配置」添加/删除)
  • 桌面模式(可选):可脱离浏览器住上桌面——透明置顶局部小窗,与浏览器严格同行为(见下节)
  • 余额展示:实时显示余额/额度,按档位播动画 + 头顶联想气泡,每只宠物可独立开关
  • 额外宠物种类(pet pack):在 pet/ 自建「种类」(独立动画池 + 自己的素材),多实例共享,与主宠物严格隔离(见配置节)
  • 自定义动画:main-animation/webm/ 放 VP9-Alpha .webm 即作为新动画,优先于包内素材(macOS Safari 可再放一份同名 .mov 到 main-animation/mov/,会被自动优先使用)

🪟 桌面模式(脱离浏览器,可选)

默认情况下宠物住在 DSH 网页里(浏览器 overlay)。安装后还会自动拉起一个脱离浏览器的桌面形态:

  • 独立透明置顶窗口:为每只桌面宠物各开一个局部小窗口(尺寸 = 宠物包围盒 + 四周外扩余量,为气泡/弹窗预留空间;透明、置顶、跳过任务栏),窗口跟随宠物移动;窗口永不铺满屏幕(全屏透明置顶窗会触发 Windows DWM 视频合成黑屏:需「透明置顶 + 非点击穿透 + 可聚焦且已聚焦 + 完整盖住视频窗」四项齐备,与窗口尺寸无关,详见 runtime/electron-helper/main.js 文件头注释;桌宠悬停时会翻成可交互、show() 也会聚焦,故全屏画布形态仍不做)。与浏览器一致,只有宠物身体命中区可交互,窗口内其余透明像素与窗口外一律点击穿透到下层应用(setIgnoreMouseEvents + 悬停命中翻转)
  • 与浏览器严格同行为(同一份源码两个外壳):宠物功能/文案完全对齐——多开宠物同屏显示、角落+边距定位、同一动画链/点击/拖拽/余额档位动画与富余额气泡;页面配置的显示位置由 display 字段决定,两端宠物内容只可能一致,不会出现"一个有另一个没有"。系统通知是独立于宠物的能力(见配置节 notificationsEnabled),不在此列
  • 共享纯逻辑:待机选择 / 移动几何 / 余额折算 / 配置校验 / 通知映射都在 src/shared/,浏览器 bundle 与桌面 shared-core.js(构建产物,window.PetShared)共用同一份源码,只有最外层的渲染壳不同(React vs 纯 DOM)

桌面模式怎么装 / 关

  • 插件安装:桌面版在应用内「插件管理」页装 dsh-pet(见上方「快速开始(安装插件)」)
  • 依赖 Electron:首次拉起时自动探测(DSH_PET_ELECTRON_PATH 环境变量 → 本机 electron 包 → ~/.dsh/electron/ 落地路径),找不到会通过官方 @electron/get 自动下载到 ~/.dsh/electron/(npm run ensure:electron 可手动触发);Electron 不可用时仅日志告警,不影响浏览器形态
  • 开关 = 每只宠物的 display 字段(pets 必填,四个值):
  • web = 仅浏览器 overlay / desktop = 仅桌面模式 / both = 两者都显示 / none = 都不显示
  • 桌面模式渲染 display 含 desktop 的全部宠物(多开同屏,与浏览器一致);大小/位置各自读自己的配置
  • 在 DSH 设置页「桌宠配置」编辑,保存即时生效;display 缺失/非法即配置错误,代码不做兜底
  • 桌面与浏览器是同一套动画素材(/dsh-pet-7340/thumb/<前缀>/.webm:main 用用户 main-animation/ 目录优先 + 包内素材;额外宠物只查自己的 pet/<前缀>-animation/,同种类多实例共享);配图(表情包)共用同一套素材归属(/dsh-pet-7340/pic/memes/<前缀>/<名>.png:pet/<前缀>-memes/ 独占 → 用户 memes/ → 包内 assets/memes/);配置加载失败会大声报错(红色错误条 + 每 5 秒自动重试),绝不静默兜底

🧍 独立运行(完全不打开 DSH)

上面的桌面形态由 DSH 宿主拉起。独立模式让它不需要 DSH 在跑:把插件自己的宿主半边
(src/host/index.ts 的 apply)跑在一个最小的伪 ctx 上,再起一个本机 HTTP 服务接管路由 ——
路由表仍然只有插件那一份(同一个 handler 同时服务 HTTP 与桌面助手的 bridge 管道)。

npm install -g dsh-pet        # 必须 npm 装;dsh plugin add 装进 profile,bin 不在 PATH 上
dsh-pet-standalone            # http://127.0.0.1:3080/dsh-pet-7340/(占用则顺延)
dsh-pet-standalone --check    # 只体检
dsh-pet-standalone --port 3100

npm run build && npm run standalone   # 仓库里(先构建)
  • 能用:动画链、点击/拖拽/甩抛、右键菜单、多开、自定义动画与表情包、pet pack。
  • 不可用:余额、碎碎念、对话、系统通知——返回带 reason 的结构化失败,不假装成功。
  • 配置:与 DSH 同一份($DSH_HOME/dsh-pet/main-config.jsonc → 包内默认)。
  • 只显示 display 含 desktop/both 的实例;端口默认 3080;Ctrl+C 或 POST /shutdown 退出。
  • 与 DSH 内运行可同时开,但共用 %APPDATA%\dsh-pet-electron-helper,可能互相踩缓存(仅告警)。

⌨️ 斜杠命令

在 DSH 输入框里以 / 触发(与其它插件命令同一入口,命令面板可搜):

命令 说明
/pet [id 或名字] 选择「当前桌宠」——也就是 /chat 的对话目标。留空查看当前选中的是谁;浏览器端支持命令面板的选择框,也可手输 id 或名字(名字重名时必须用 id,报错会列出候选 id)
/chat [消息] 与当前桌宠对话:留空 = 立刻催一句碎碎念(绕过节流,等价于右键菜单「碎碎念」);输入消息 = 正常对话。回复会写进记忆,并以气泡出现在宠物头顶(浏览器与桌面两端都能看到,配图随回复一起)
/balance 手动触发余额显示并立即弹出气泡(与到点自动触发同一条展示路径):服务商有余额/额度接口 = 档位动画 + 余额气泡;未登记接口 / 缺凭证 / 抓取失败 = 文字说明气泡(绝不静默无反应)

> 没选过 /pet 时,命令作用于有效宠物列表的第一只(列表 = config.jsonc 的 pets + pet/ 目录的种类文件,同屏多开则按顺序取首只)。配图开关见配置节 whisperImageEnabled / chatImageEnabled。

⚙️ 配置

配置项 说明
设置页「桌宠配置」 DSH 设置 → 桌宠配置:图形化编辑大小 / 位置 / 边距,支持多开(添加/删除宠物,每只独立配置);全局开关也在设置页——系统通知(点保存才写入)、碎碎念配图 / 对话配图 / 锁定在当前屏幕(随「保存」一起写入);保存即时生效,「同步」把项目内置的 config.jsonc(原文,含注释与全部高级字段)整份写入用户配置,既是恢复默认又留下一份可直接编辑的完整配置
pets(config.jsonc) 默认宠物列表:[{ "id", "name", "size", "balanceEnabled", "whisperEnabled", "workStatusEnabled", "display", "position": { "corner", "marginX", "marginY" }, "whisperPrompt"? }];display 为 web/desktop/both/none(必填,缺失即配置错误);whisperEnabled / workStatusEnabled = 碎碎念 / 工作状态气泡开关(默认:true);whisperPrompt 可选 = 这只宠物自己的人设(见下一行);多只即多开,display 含 desktop 的宠物出现在桌面窗口(与浏览器同屏渲染),首只为「添加宠物」的默认模板
whisperPrompt 碎碎念与对话共用的人设系统提示词:写在 pets[] 条目里 = 该宠物专属,写了就取代所属条目顶层那份;写在条目顶层(或种类文件顶层)= 该条目的默认人设。设置页「桌宠配置」每只宠物都有「人设」输入框(留空 = 跟随条目)。只写正文:实际发出的 system = 它 + 自动追加的一句「你的名字是“<宠物名>”。」+ 一行时间背景(日期/星期/时刻/时段/工作日或周末/节日),没有长度上限,也别在里面重复写名字和日期
chatMemoryRounds 每次对话请求携带的最近历史轮数(默认 5;1 轮 = 1 问 1 答;0 = 不带历史):memory.json 全存不删,此值只决定截取多少进上下文。全局默认(设置页「AI 模型与对话上下文」区一个数字输入框,改一次对所有宠物生效,含 pet pack;种类文件顶层可覆盖)
whisperModel / chatModel 碎碎念 / 对话各自用哪个服务商 + 模型(全局默认:设置页改一次对所有宠物生效,含 pet pack;种类文件顶层可覆盖。设置页「AI 模型」每项一个下拉框,与 DSH 对话框右下角的模型选择器同款:搜索 + 按服务商分组的清单,选项同源)。provider 与 model 都留空 = 跟随当前对话的模型(默认);只填一半即配置错误。填了但调用失败(凭据被删 / 模型下架)会自动回落到当前对话的模型重试一次
whisperImageEnabled(0.2.9) 碎碎念配图开关(布尔,默认开;全局默认,pet pack 可在种类文件里覆盖):开启后每次碎碎念从 memes 池随机抽 1 张,连同那句话一起显示。token:碎碎念本来就每次生成都要调一次模型,配图只多约 100 字符(≈60 token),增量可忽略
chatImageEnabled(0.2.9) 对话配图开关(布尔,默认开;全局默认,pet pack 可在种类文件里覆盖):开启后把整张 memes 清单交给模型按语境选 1 张(可不选;选了池外名称视为没选,标记会原样留在正文里)。token:每条消息约 1.1k 字符(≈650 token),随图片数量线性增长
chatImageLimit 对话配图张数上限(非负整数,默认 10,0 = 不限制;全局默认,pet pack 可在种类文件里覆盖):对话时只把 memes 清单的前 N 张(= 配置里写在前面的那 N 条,想优先发哪几张就往前写)交给模型选图。原因:整张清单是每条消息都要附的,token 随张数线性增长(27 张约 1.1k 字符 ≈ 650 token),限制成前 N 张即可给配图开销封顶。设置页「AI 模型与对话上下文」区可改。只影响对话选图——碎碎念只带抽中的那一张
memes(0.2.9) 表情包映射:键 = 表情包目录里的 &lt;键&gt;.png 文件名(不含扩展名),值 = 该图内容的简要描述(模型据此选图/配文)。图片按素材归属查找(种类独占 pet/&lt;前缀&gt;-memes/ → 用户目录 memes/ → 包内 assets/memes/,与动画同规矩);配置里写了但哪个目录都没有该文件的条目自动失效(删图不必同步改配置);删掉某个键即停用该图
notificationsEnabled 系统通知总开关(布尔,默认开):对话完成 / 生成失败 / 输出截断 / 权限申请 / 用户选择,在窗口失焦时弹系统级通知(桌面右下角)
physics(0.2.5) 拖拽抛掷物理参数(全局默认,所有宠物共用;种类文件顶层可覆盖):gravity 重力 / restitution 碰壁恢复系数(0~1)/ groundFriction 地面摩擦 / ceilingBounce 顶部反弹 / throwPower 总力度 / petCollision 多宠物碰撞开关;缺省取内置默认(1400 / 0.78 / 2.5 / true / 1.0 / false);gravity=0 为无重力,petCollision=true 开启多宠物碰撞

> 说明:插件安装即用,配置均为可选;设置页保存的用户覆盖写入 $DSH_HOME/dsh-pet/main-config.jsonc(用户层,优先于包内默认)。

📄 高级自定义(直接编辑配置文件)

用户数据统一收敛在 $DSH_HOME/dsh-pet/:

层 路径 作用
默认配置(只读) 包内 assets/config.jsonc 完整结构参考:宠物列表 / 动画池(idle/turn/drag/clicks/moves/categories)/ 播放权重
用户配置 $DSH_HOME/dsh-pet/main-config.jsonc 覆盖片段:可整体覆盖 pets / animations / animationWeights,缺省字段回落默认
对话记忆(自动生成) $DSH_HOME/dsh-pet/memory.json 对话历史(user/assistant 正文,全存不删;每次请求只取最近 chatMemoryRounds 轮)。删掉即清空记忆
用户动画(可选) $DSH_HOME/dsh-pet/main-animation/ 放入 .webm(VP9-Alpha)即可作为动画播放,优先于包内素材(main-animation/webm/ 子目录;macOS Safari 的 .mov 放 main-animation/mov/ 子目录)
用户表情包(可选) $DSH_HOME/dsh-pet/memes/ 放入 .png 即可作为配图,优先于包内素材;键(文件名去扩展名)与描述仍需写进配置的 memes
  • 设置页底部「高级配置」显示这些路径;「卸载与存储」列出插件的全部存储位置与卸载命令
  • 自定义动画:把 xxx.webm 放进 main-animation/webm/,在动画池/分类里写 &quot;xxx&quot;,刷新页面即可(无需重启 DSH)
  • 格式:.webm 需 VP9 Alpha 编码(Chrome/Edge/Firefox),与包内素材同规范,普通编码会有黑底。macOS Safari 用的同名 .mov(HEVC-with-Alpha)放 main-animation/mov/,会被自动优先使用;缺 mov 时自动退回 webm(黑底,不会白屏)
  • 修改用户配置后同样刷新页面生效
  • 动画名请对照默认配置填写,避免引用不存在的动画
  • 表情包图片按素材归属查找(与动画同一套):pet/&lt;前缀&gt;-memes/(种类独占,见下节)→ 用户目录 $DSH_HOME/dsh-pet/memes/ → 包内 assets/memes/。往用户目录放 xxx.png,再在 config 的 memes 里写 &quot;xxx&quot;: &quot;这张图的描述&quot;,刷新页面即可用(加图/换图不必再改包内目录,也就不会被 add/更新覆盖);只想去掉某张图,删 config 里对应的键即可(不用动图片文件)

🐾 额外宠物(pet pack)——添加新「种类」

默认只能调整主宠物(config.jsonc / main-config.jsonc 的 pets)。要添加全新种类的宠物(独立动画池 + 自己的素材),在用户数据根下建 pet/ 目录:

$DSH_HOME/dsh-pet/pet/
├─ pig-config.json        ← 额外宠物 pig 的配置(命名词干 = 种类名,实例 id 任意)
├─ pig-animation/         ← pig 自己的动画素材(直接平铺 .webm,仿 main-animation)
│  ├─ 待机.webm
│  └─ 打滚.webm
└─ pig-memes/             ← 可选:pig 自己的表情包(直接平铺 .png,仿用户 memes/)
└─ 吃白饭的大肥鱼.png

每只额外宠物 = 一个 -config.json(配置)+ 一个 -animation/ 目录(素材),同前缀配对,扫描 pet/ 自动发现(浏览器与桌面同时生效,无需重启);-memes/ 目录可选,有则独占该种类的配图(见下节)。

配置文件与 main-config.jsonc / config.jsonc 完全同构——直接复制一份 main 配置、换成自己的动画池,就是一只新宠物。一个 -config.json 定义一个「种类」(动画池 + 素材目录),pets 数组可放该种类的任意多只实例(每只独立 size/位置,共享动画池与素材):

// pet/pig-config.json —— 与 main-config.jsonc 同构的完整配置;animations / animationWeights 必填(不回落全局)
{
&quot;notificationsEnabled&quot;: true,
&quot;pets&quot;: [
{
&quot;id&quot;: &quot;pig1&quot;, // 实例 id(可多只;不必等于文件名前缀)
&quot;size&quot;: 420,
&quot;balanceEnabled&quot;: true,
&quot;display&quot;: &quot;both&quot;, // web / desktop / both / none
&quot;position&quot;: { &quot;corner&quot;: &quot;top-right&quot;, &quot;marginX&quot;: 24, &quot;marginY&quot;: 100 },
},
{
&quot;id&quot;: &quot;pig2&quot;,
&quot;size&quot;: 360,
&quot;balanceEnabled&quot;: false,
&quot;display&quot;: &quot;web&quot;,
&quot;position&quot;: { &quot;corner&quot;: &quot;top-left&quot;, &quot;marginX&quot;: 24, &quot;marginY&quot;: 100 },
},
],
&quot;animations&quot;: {
&quot;idle&quot;: [&quot;待机&quot;],
&quot;turn&quot;: [],
&quot;drag&quot;: [],
&quot;clicks&quot;: [&quot;打滚&quot;],
&quot;moves&quot;: { &quot;default&quot;: { &quot;minDist&quot;: 80, &quot;maxDist&quot;: 360, &quot;margin&quot;: 20, &quot;leadSec&quot;: 2, &quot;tailSec&quot;: 2 }, &quot;actions&quot;: [] },
&quot;categories&quot;: [],
&quot;events&quot;: {
&quot;balance&quot;: [&quot;余额-钱袋满溢&quot;, &quot;余额-金袋叮当&quot;, &quot;余额-钱袋如常&quot;, &quot;余额-数金皱眉&quot;, &quot;余额-袋空如洗&quot;, &quot;余额-分文不剩&quot;],
},
},
&quot;animationWeights&quot;: { &quot;idle&quot;: 80, &quot;turn&quot;: 0, &quot;move&quot;: 0 },
&quot;eventsRefreshSec&quot;: { &quot;balance&quot;: 1800 },
}

规则(与主宠物严格隔离,绝不混用):

  • 素材只查自己的:素材目录名 = 文件名前缀(pet/pig-config.json → pet/pig-animation/),该种类所有实例共用;动画 URL 为 /thumb/&lt;前缀&gt;/&lt;名&gt;.webm,查不到即 404 报错——绝不落到 main-animation 或包内素材。配图同理:pet/&lt;前缀&gt;-memes/ 存在时只查它(/pic/memes/&lt;前缀&gt;/&lt;名&gt;.png 查不到即 404),绝不回落到用户 memes/ 或包内 assets/memes/
  • 动画池不回落全局:animations / animationWeights 是该种类的(结构校验与主配置同一套规则)
  • pets 数组非空、每只字段(id/size/balanceEnabled/display/position)完整合法、数组内 id 唯一——id 随意写、数量随意,与主配置完全一致
  • 用户层的「全局默认」会生效:physics / confineToScreen / whisperImageEnabled / chatImageEnabled / chatImageLimit / chatMemoryRounds / whisperModel / chatModel / eventsRefreshSec 这 9 个是用户级成本 / 偏好 / 环境 / 节奏参数——用户在设置页(写进 main-config.jsonc)改一次就对该种类生效;种类文件顶层写了则用自己那份
  • 所有顶层字段都是整段替换:写了就整段用自己的,缺的子键不会从内置默认补回来(消费端各自兜底:余额周期读不到按 1800、碎碎念按 300)
  • notificationsEnabled 是全局(只读 main 条目那份):种类文件里写了不生效(不报错)
  • eventsRefreshSec 内部两个键的消费端不同:.whisper 按宠物所属条目读(种类文件顶层可覆盖);.balance 只读 main 条目(余额是一个账号一份数据,host 只有一个刷新定时器)
  • 配置非法 / 缺少 -animation/ 目录 / 实例 id 与主宠物冲突 → 加载时显式报错并跳过该宠物(不影响其他宠物)
  • 设置页不列出文件宠物(改文件即生效,刷新可见);设置页保存/同步不会把它们写进 main-config.jsonc
  • 添加/修改/删除 → 刷新页面(浏览器)或重启 Helper(桌面)生效

🗑️ 卸载

# dsh web:--profile 填 web
dsh plugin --profile web remove dsh-pet

桌面应用(Electron 版)在应用内「插件管理」页卸载。

插件在本机落下的全部位置(设置页「卸载与存储」区块也列出这些,且路径按你的机器实时解析):

  • $DSH_HOME/dsh-pet/ —— 插件用户数据:自定义配置 main-config.jsonc、对话记忆 memory.json、自定义动画素材 main-animation/、自定义表情包 memes/、文件宠物 pet/
  • $DSH_HOME/electron/ —— 桌面宠物用的 Electron 运行时(体积较大;删除后下次启用桌面模式会自动重新下载)
  • %APPDATA%\dsh-pet-electron-helper\ —— 桌面宠物窗口缓存与主屏缩放缓存(macOS:~/Library/Application Support/;Linux:$XDG_CONFIG_HOME 或 ~/.config/;可删,会自动重建)
  • %LOCALAPPDATA%\electron\Cache\ —— Electron 安装包下载缓存(macOS:~/Library/Caches/electron;Linux:$XDG_CACHE_HOME 或 ~/.cache/;可删,需要时会重新下载)
  • 插件本体 —— 由 DSH 管理,用上面的命令移除,不要手删

删之前先退出 DSH(桌面宠物随之退出)。缓存类删了无影响;$DSH_HOME/dsh-pet/ 删了会丢配置与对话记忆(想保留就先备份 main-config.jsonc)。

🖥️ 运行效果

宠物实际运行在 DSH Web 界面中的样子:

🎬 效果预览

> 动画为透明背景;GIF 预览中透明部分显示为页面底色,实际播放为透明。

全部动画见仓库:dsh-pet/assets/webm/(VP9-alpha,包内唯一发布的格式)。macOS 的 HEVC-alpha .mov 单独发布在 assets-mov,按「🖥️ macOS 使用 mov」两步放好即自动生效。

📚 完整项目(不止是插件)

这是完整的三件套项目,任何人 clone 仓库都可以从零生成自己的桌面宠物:

① 提示词(配方)    →  ② 素材生成链(引擎)  →  ③ 插件(成品)
AI 生成动画的配方     源视频 → 透明动画的管线    运行在 DSH 里的宠物
  • 仓库:PC2005-cloud/dsh-pet
  • 素材生成提示词:prompts/(10 秒动作提示词 + 系统通知图标提示词,可直接喂给豆包)

🔎 发现更多 DSH 插件

  • 社区插件目录:awesome-dsh-plugin.com
  • DSH 官方仓库:deepseek-ai/DeepSeek-Harness

📄 许可

  • 代码:MIT
  • 素材(动画/提示词/源视频):允许开源使用,禁止商用

常见问题

9 问
答案由本站依据条目字段整理,不引用上游原文
dsh-pet 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:ggxx001/dsh-pet` 即可。对应的 npm 包名是 `dsh-pet`。

dsh-pet 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-pet 安全吗?

低风险。静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。

dsh-pet 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-pet 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.2-rc.1、0.2.2-alpha.2。

dsh-pet 需要什么运行环境?

Node.js >=22.12.0;需要同时安装 @deepseek-ai/cordis@^4.0.4、@deepseek-ai/dsh-agent-default-model@^0.2.0-rc.1、@deepseek-ai/dsh-client-connection@^0.2.0-rc.1、@deepseek-ai/dsh-client-ui-primitives@^0.2.0-rc.1、@deepseek-ai/dsh-client-ui-slots@^0.2.0-rc.1。环境不满足时安装会失败,建议先确认本机版本。

dsh-pet 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-pet 有哪些功能?

97 个透明动画随机无缝衔接、点击 Q 弹与拖拽甩抛物理、屏幕漫游与多宠物同屏、碎碎念与对话可配表情包、透明置顶桌面窗独立运行。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
UI 与外观
按星标排序,可作替代方案

nuwa-skill

nuwa-skill

女娲 DSH plugin 只需输入一个名字,就自动调研、提炼并验证任何人的心智模型、决策启发式与表达 DNA,生成可直接调用的思维视角 S

未标注验证等级 3.8 万 星

awesome-dsh-plugin

awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harnes

L4 · 沙盒安装通过 1.8 万 星

deepseek-balance-whale-widget

DeepSeek-Balance-Whale-Widget

DSH 界面右下角的常驻小鲸鱼余额挂件,实时显示 DeepSeek 账户余额、今日已用与每轮对话消耗,支持拖拽吸附、Q 弹动画与音效,开箱即

L4 · 沙盒安装通过 4,492 星

dsh-better-sidebar

DSH-better-sidebar

面向 DeepSeek Harness 的服务化侧边栏工作台插件,把文件编辑、终端、Git 变更、子代理任务与侧边对话整合进右侧栏与底部面板

L4 · 沙盒安装通过 4,112 星

dsh-deep-whale

dsh-deep-whale

DSH Web 鲸鱼娘皮肤系列(深海女仆工坊 maid-atelier)。

L4 · 沙盒安装通过 2,470 星

deepseek-design

deepseek-design

可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。

L4 · 沙盒安装通过 1,438 星

ggxx001 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-11-04。