使用 dsh-pet 在 DeepSeek Harness 中添加桌面宠物

前言

DeepSeek Harness(dsh)把模型、工具、技能、会话、界面等都做成插件,官方仓库的口号就是「一切皆插件」。Web 界面本身也是这条链路里的一环:dsh web 起来之后,界面上能挂什么,很大程度上取决于当前 profile 里装了哪些 bundle。

桌面宠物正好踩在这个接口上。社区里已经有不少同类项目,有的会跟着 Agent 的思考/工作/完成状态切动作,有的还会带番茄钟、闹钟。PC2005-cloud 维护的 dsh-pet 走的是另一条路:运行时不读任务状态、不调模型、也不塞业务功能,只在 Web 界面里放一只会呼吸、会走动、能点能拖的宠物。仓库同时把「提示词 → 绿幕视频 → 透明动画 → 可安装插件」整条素材链公开了,不想用默认形象的人可以按同一套流程自己造一只。

本文依据社区目录页、GitHub 仓库(含 README.mdDESIGN.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。

它解决两件具体的事:

  1. 即装即用:把一只带透明背景的动画宠物挂到 dsh web 的浮动层上,默认出现在右下角。
  2. 可复现的自制流程:仓库不是只有成品插件,而是提示词、Python 素材链、插件包三件套。clone 之后可以换角色、换动作、换风格,再把生成的 webm 装回插件。

仓库根目录的 GitHub 简介和社区目录页仍写「28 个透明动画」。当前仓库文档(根 README.mdDESIGN.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.pyfill_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 中位数,避免手、道具把包围盒中心带偏。

中间目录 step01step04 不入库,播放用的 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.yamlallowBuilds。官方说明见 打包与安装插件

用起来是什么样

安装并重启 Web 之后,不需要再配模型、也不需要再跑素材链。宠物按动画链自己切动作;点击会播回应,按住可以拖到别的位置。左右朝向由转向动画翻转 facing,所有动作可以镜像。

如果只是「先看一眼效果」,这条路径最短:用上面的安装命令 → 重启 dsh web → 刷新页面。仓库 README 的 GIF 预览在 dsh-pet/assets/preview/,透明部分在 GIF 里会显示成页面底色,实际 webm 播放才是透明的。

要换自己的形象,按上一节的三步走:按提示词出绿幕视频 → 跑 scripts/ → 覆盖 assets/thumb/ → 用 file: 重新安装。设计文档提到,pnpm 对 file: 依赖是复制而不是实时链接,改完源码或素材后需要 removeadd,否则 profile 里仍是旧副本。

适用场景与注意事项

适合已经在用 dsh web、只想在界面上放一只纯观赏宠物的人;也适合想用同一套管线做自定义桌宠、但不想从零写 overlay 和抠像脚本的人。它不是 Agent 状态指示器:任务开始、等待输入、出错,宠物都不会跟着变。同类但定位不同的社区项目还有 keleus/deepseek-petminybear/DeepSeek-Harness-Pet 等,不要和本仓库的包名、安装命令弄混。

使用前需要接受这些限制:

  • 只支持 Web。 package.jsondsh.client.platformweb,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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜