前言¶
DeepSeek Harness(dsh)把模型、工具、技能、会话、界面等都做成插件,官方仓库的口号就是「一切皆插件」。Web 界面本身也是这条链路里的一环:dsh web 起来之后,界面上能挂什么,很大程度上取决于当前 profile 里装了哪些 bundle。
桌面宠物正好踩在这个接口上。社区里已经有不少同类项目,有的会跟着 Agent 的思考/工作/完成状态切动作,有的还会带番茄钟、闹钟。PC2005-cloud 维护的 dsh-pet 走的是另一条路:运行时不读任务状态、不调模型、也不塞业务功能,只在 Web 界面里放一只会呼吸、会走动、能点能拖的宠物。仓库同时把「提示词 → 绿幕视频 → 透明动画 → 可安装插件」整条素材链公开了,不想用默认形象的人可以按同一套流程自己造一只。
本文依据社区目录页、GitHub 仓库(含 README.md、DESIGN.md、插件包 package.json)以及 npm 上的 dsh-pet@0.1.4 交叉核对。社区插件目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有从属关系,安装前仍应回到源码仓库自行检查。
这是什么¶
dsh-pet 是一个面向 DeepSeek Harness Web 界面的趣味插件,由 PC2005-cloud 维护。代码许可证为 MIT(Copyright 2026 PC2005-cloud)。插件包当前版本是 0.1.4,已发布到 npm,包名就是 dsh-pet。GitHub 仓库页面显示 62 颗星(社区目录页同期显示 61,以仓库页面为准)。目录分类为「趣味」,收录日期 2026-08-15,最近一次推送在 2026-08-16。
它解决两件具体的事:
- 即装即用:把一只带透明背景的动画宠物挂到
dsh web的浮动层上,默认出现在右下角。 - 可复现的自制流程:仓库不是只有成品插件,而是提示词、Python 素材链、插件包三件套。clone 之后可以换角色、换动作、换风格,再把生成的 webm 装回插件。
仓库根目录的 GitHub 简介和社区目录页仍写「28 个透明动画」。当前仓库文档(根 README.md、DESIGN.md、插件包 README)以及 dsh-pet/assets/thumb/ 目录里的文件都是 51 个 .webm。下文以仓库内实际资源和文档为准。
核心功能¶
插件自己的 README 把定位写得很明确:不掺天气、系统监控、Agent 状态感知,运行时也不调用 LLM 或外部 API。挂载方式是注册到 DSH 官方的 shell.overlay 槽,属于全应用浮动层,不改 Harness 内核。
已在 README / DESIGN.md 中写明、且能和源码描述对上的能力如下。
动画链,而不是常驻循环待机。 每一段动画(包括待机呼吸)都是播完就结束,然后按概率选下一段:30% 待机、10% 转向、40% 动作、20% 移动。DESIGN.md 里对应的实现是 pickNext():Math.random() 落到 <0.3 / <0.4 / <0.8 / >=0.8 四个区间;若屏幕空间不够走,移动会回退成动作。首尾相接,没有「空档待机循环」。
51 段透明动画。 插件包 README 列出的类型包括:待机呼吸、打瞌睡、玩魔方、哼歌、炸毛、吐泡泡、玩水枪、小提琴、蓝鲸现世、吃白饭、照镜子、舞蹈、写代码,以及放风筝、堆雪人、吃冰淇淋等季节动作。仓库 dsh-pet/assets/thumb/ 里可以核对到全部 51 个 640×360 的播放用 webm,例如 待机呼吸休闲.webm、打瞌睡被惊醒.webm、螃蟹走路.webm,以及三支点击回应和一支拖拽反馈。
朝向、落地和漫游。 素材按对称角色制作,朝右时用 CSS scaleX(-1) 镜像。动画统一脚底线(设计文档写的是 360 画布上脚底 y=330),宠物看起来站在界面「地面」上,而不是漂在半空。移动时动画只提供走路姿态,位移由代码按 video.currentTime 驱动:前后各 2 秒准备/收尾不位移,中间 6 秒走完;出发前会检查屏幕空间,避免走出可视区域。
点击和拖拽。 点击会随机播一段回应(插件 README 写的是开心 / 害羞 / 傲娇三支);拖过约 5 像素判定为拖拽,松手停在拖到的位置。切换用双缓冲两个 <video> 交叉淡入,设计文档强调这样切动作时没有空白帧。插件 README 还写了支持 prefers-reduced-motion。
配置目前几乎走代码默认值。 插件 README 列出了 size(默认舞台宽 462px,高度约 260px)、position(默认右下角)、fullRoot(默认 $DSH_HOME/pet-assets,用于更高分辨率母版)。其中 size / position 标明「暂未下发到浏览器」,原因是 DSH 客户端配置管线限制,安装后改这些项不会生效,只能改源码里的默认值。母版资源需要另行下载,不是开箱自带。
三件套:从提示词到插件¶
根 README 把项目画成三条:
① 提示词(配方) → ② 素材生成链(引擎) → ③ 插件(成品)
AI 生成动画的配方 源视频 → 透明动画的管线 运行在 DSH 里的宠物
对应目录是 prompts/、scripts/ + video/、dsh-pet/。只想用现成宠物,不必碰前两步;只有要换角色或加动作时,才需要走完整链。
1、按配方生成绿幕视频¶
提示词在 prompts/桌面宠物 10 秒动作提示词.md。README 要求用 AI 视频工具生成 51 个 10 秒绿幕视频(项目自用素材由豆包生成,文档同时提到可灵、Runway 等同类工具):
- 比例 16:9,背景纯绿幕
#00FF00 - 人物位置固定:头顶大约在画面 20% 高度,脚底大约在 85% 高度
- 动作全程留在画幅内,首尾帧是标准正面站立
- 每段按秒拆开写动作
源 mp4 不进 git,以控制仓库体积。需要复现时,从 GitHub Releases 的 assets-videos 标签下载,放到 video/:
mkdir -p video && cd video && gh release download assets-videos --repo PC2005-cloud/dsh-pet
2、绿幕视频转成透明动画¶
素材链在 scripts/,按 README 依次跑四步(设计文档写整条链一共 7 个 Python 脚本,其中 make_mask_black.py、fill_nn.py 被第一步调用):
cd scripts
python watermark_step01.py # 水印遮罩填充 → step01/
python chroma_step02.py # 绿幕抠像转透明(HSV 色相)→ step02/
python normalize_step03.py # 归一化 2160×1215 统一站立居中 → step03/
python encode_thumbs.py # 转码 640×360 播放变体 → step04/
依赖是 Python 3、ffmpeg、numpy、scipy。README 写明素材链会使用工作区 .tools/ 下的 ffmpeg。DESIGN.md 记录了几个实际踩过的点:VP9 透明通道必须让 libvpx-vp9 出现在 -i 之前,否则 alpha 会丢成黑底;抠像最终用 HSV 色相(绿相约 70°–170°,并且饱和度/明度达到阈值才抠),而不是简单 chromakey;水平居中用非透明像素的 x 中位数,避免手、道具把包围盒中心带偏。
中间目录 step01–step04 不入库,播放用的 640×360 变体才同步进插件包。
3、同步进插件并本地安装¶
cp step04/*.webm dsh-pet/assets/thumb/
dsh plugin --profile web add file:/path/to/dsh-pet
README 示例写的是 Windows 路径 file:D:/path/to/dsh-pet,换成本机仓库路径即可。注意这里加的是仓库里的 dsh-pet/ 子目录(真正的 npm 包),不是仓库根目录。package.json 声明了 dsh.bundle(patch 文件 cordis.patch.yml)以及 dsh.client.platform: web,所以它只面向 Web profile。
安装与启用¶
社区目录页给出的安装命令原文是:
dsh plugin add github:PC2005-cloud/dsh-pet
目录页同时提示:如需可复现安装,应固定 commit 哈希:
dsh plugin add github:PC2005-cloud/dsh-pet#<commit>
把 <commit> 换成仓库里某个具体提交。插件以当前 dsh 进程的权限运行,安装时可能执行代码,装之前应查看源码和许可证。
插件自己的 README / npm 页面用的是 Web profile,并直接加包名(npm 上已有 0.1.4):
dsh plugin --profile web add dsh-pet
装完后需要重启 dsh web,宠物应出现在界面右下角。卸载对应为:
dsh plugin --profile web remove dsh-pet
两种写法不要混着用错对象:目录页的 github:PC2005-cloud/dsh-pet 从 GitHub 拉整仓;README 的 dsh-pet 走 npm 包。Git 安装若触发 pnpm 的 prepare/prepack,在 pnpm 10 及以上可能还要按 DSH 官方文档把包键写进该 profile 的 pnpm-workspace.yaml 的 allowBuilds。官方说明见 打包与安装插件。
用起来是什么样¶
安装并重启 Web 之后,不需要再配模型、也不需要再跑素材链。宠物按动画链自己切动作;点击会播回应,按住可以拖到别的位置。左右朝向由转向动画翻转 facing,所有动作可以镜像。
如果只是「先看一眼效果」,这条路径最短:用上面的安装命令 → 重启 dsh web → 刷新页面。仓库 README 的 GIF 预览在 dsh-pet/assets/preview/,透明部分在 GIF 里会显示成页面底色,实际 webm 播放才是透明的。
要换自己的形象,按上一节的三步走:按提示词出绿幕视频 → 跑 scripts/ → 覆盖 assets/thumb/ → 用 file: 重新安装。设计文档提到,pnpm 对 file: 依赖是复制而不是实时链接,改完源码或素材后需要 remove 再 add,否则 profile 里仍是旧副本。
适用场景与注意事项¶
适合已经在用 dsh web、只想在界面上放一只纯观赏宠物的人;也适合想用同一套管线做自定义桌宠、但不想从零写 overlay 和抠像脚本的人。它不是 Agent 状态指示器:任务开始、等待输入、出错,宠物都不会跟着变。同类但定位不同的社区项目还有 keleus/deepseek-pet、minybear/DeepSeek-Harness-Pet 等,不要和本仓库的包名、安装命令弄混。
使用前需要接受这些限制:
- 只支持 Web。
package.json里dsh.client.platform为web,CLI / TUI 装了也不会在终端里出现这只宠物。 - 权限与供应链。 插件跑在当前 dsh 进程权限下。目录页的安全提示和源码检查仍然适用;固定 commit 比追踪
main更可复现。 - 素材许可未单独写死。 代码是 MIT;根 README 写「素材(动画/提示词):见仓库说明」,
DESIGN.md里素材协议仍标「待定」。二次分发动画和提示词前,应再看仓库当时的说明,不要默认可以按 MIT 随便再发布素材。 - 体积和依赖。 播放资源打进 npm 包;完整绿幕源视频在 Releases,自制流程还要本机 Python、ffmpeg、numpy、scipy。
- 目录页数字可能滞后。 动画数量以仓库
assets/thumb/为准;星标以 GitHub 仓库页面为准。
小结¶
dsh-pet 做的事情很窄:在 DeepSeek Harness 的 Web 界面里放一只不接业务、不耗模型额度的桌宠,并把「AI 视频 → 透明 webm → 插件」这条链一并开源。现成宠物用目录页或 npm 一条命令就能装;要自己的形象,就按仓库里的提示词和四步脚本走一遍。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-pet/
GitHub:https://github.com/PC2005-cloud/dsh-pet