npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

deepseek-harness-pets

v0.2.3

Published

DeepSeek Harness 桌宠插件:像素鲸鱼/机械章鱼随评测与回合状态在 DSH Web UI 中动起来;宠物资产兼容 Petdex 格式。

Readme

deepseek-harness-pets

English | 简体中文

让 DeepSeek Harness 的状态动起来——官方原生 dsh 桌宠插件。

安装

两条命令(v0.2.2 起已上 npm):

dsh plugin --profile web add deepseek-harness-pets
dsh web

打开 http://localhost:3080——鲸鱼已经在右下角了。完整指南(前置条件、源码安装、手写 patch 行、故障排查):docs/installation.zh.md。


本项目是一个符合 DeepSeek Harness (dsh) 官方原生安装要求的插件:按官方 bundle/profile 机制安装后,一只鲸鱼(官方 DeepSeek Whale SVG,v0.2 艺术层)会常驻 DSH Web UI 的右下角悬浮窗(shell.overlay 插槽,不占用聊天流),随你的评测与回合状态实时换动作、弹气泡——像 Codex 桌宠一样,但零外部依赖。

宠物可通过 cordis.yml 一行配置切换或随机;宠物资产采用 Petdex 标准格式(pet.json + 8×9 spritesheet),将来可直接复用到 Petdex 桌面悬浮端或提交到 petdex.dev 社区画廊。

效果演示:(待像素图就绪后补 GIF——见 皮肤创作指南)


免责声明:本项目是社区驱动的非官方项目,与 DeepSeek(深度求索)无隶属关系。"DeepSeek" 是 DeepSeek AI 的注册商标,此处仅作主题致敬。

包名区分:dsh 官方为 npm 包 @deepseek-ai/dsh(Node.js)。PyPI 上的 deepseek-harness 是与本插件无关的第三方 Python 库,安装时请勿混淆。

核心特性

  • 官方原生安装:标准 dsh bundle(package.json 的 dsh.bundle.patch + cordis.patch.yml),无 fork、无补丁宿主。
  • 右下角常驻悬浮窗:宠物浮在 Web UI 右下角(shell.overlay root 域插槽,跨会话常驻,不占聊天流),基于官方 DeepSeek 鲸鱼 SVG,随回合状态实时换 CSS 动画。
  • 拟真互动四项:点击(跃起 + 随机开心文案,~1.5s 回落)、悬停(放大微倾 + 气泡"嗯?")、随机闲置(idle 时每 20–60s 一次 3s 小动作)、拖拽(自由摆放、clamp 视口内、localStorage 位置持久化,刷新不丢)。
  • 状态实时映射:dsh durable session 事件(turn/step/tool)驱动宠物状态机,评测跑分过程一眼可读。
  • 彩蛋触发:评测完成弹 Score 气泡、跃出水面;检测到 SOTA 特征(v0.1 为文本近似判定)触发限定动画。
  • 宠物切换 / 随机:默认出场是 DeepSeek 标志性大鲸鱼 deepseek-whale;可在 ~/.dsh/settings.yaml(用户设置层)或 profile patch(base 层)换成 random(按 turn id 种子确定性选择,重放一致)或三源发现的任意皮肤;设置面板选择行开发中(见 Roadmap)。注:v0.2 悬浮窗艺术层统一渲染鲸鱼 SVG,其他皮肤的专属视觉待 spritesheet 就绪(见 Roadmap)。
  • 皮肤源优先级:自定义源 > Petdex 社区源 > 内置源——同名皮肤高优先源覆盖,你的自定义皮肤永远赢。
  • Petdex 资产兼容:像素资产即标准 Petdex 宠物包,可 npx petdex submit 上架社区画廊。

宠物状态映射

三层契约:dsh 事件信号 → 插件语义状态 → 悬浮窗 CSS 动画 + 气泡(Petdex 动画行作为 spritesheet 就绪后的资产契约保留)。机器可读版见 mappings/harness-states.json。

| dsh 事件信号 | 语义状态 | 动画行 | 悬浮窗视觉 / 气泡 | |---|---|---|---| | 会话空闲 | idle | idle | 缓慢浮动打瞌睡 / zzZ | | turn/start 后首轮准备 | loading | waiting | 上浮蓄力 / 加载数据中 | | step/start、工具高频活动 | inferring | running | 左右摇摆游动 / 推理中 | | 报告/评分类工具调用 | scoring | review | 审视微旋 / 评分中 | | turn/end 正常完成 | done | waving | 摆动挥舞 / 完成! | | 完成且带 SOTA 文本特征 | sota | jumping | 跃起回弹 / SOTA! | | turn/end 失败/中断 | error | failed | 翻肚灰度 / [ERROR] 请检查日志 |

悬浮窗视觉由 src/pet-art.js 的 OVERLAY_ANIMATIONS 动画表驱动(CSS transform keyframes,v0.2 艺术层为内联鲸鱼 SVG);动画行仍为 Petdex 9 标准行(idle / running / running-left / running-right / waving / jumping / failed / waiting / review)的子集,供 spritesheet 切换点消费。失败信号(status: failed、error、outcome: stopped)任一命中即进入 error。

安装

前置:Node.js ≥ 22,已可运行 dsh web(dsh 0.1.0-rc.5 验证通过)。

方式 A:安装到 dsh profile(官方 bundle 机制,已实测)

# 1) 构建浏览器半边产物 lib/client.js(dsh 的 node 半边按 exports["./client"] 加载它)
cd deepseek-harness-pets && npm install && npm run build

# 2) 登记进 web profile(~/.dsh/profiles/web)
#    package.json 两处:dependencies 加 "deepseek-harness-pets": "link:<本仓库路径>";
#    dsh.profile.bundles 数组末尾追加 "deepseek-harness-pets"
cd ~/.dsh/profiles/web && pnpm install

# 3) 重启 DSH Web(bundle 不热加载)
dsh web

安装后可用 dsh --profile web --dump-config 检查 deepseek-harness-pets 行是否在组合树中; 浏览器打开后 window.__DSH_BOOT__ 应含该条目,/plugins/deepseek-harness-pets/client.js 返回 200,且打开任意会话应看到右下角鲸鱼悬浮窗(idle 浮动 + zzZ 气泡)。

方式 B:dsh plugin add(等价于方式 A 的自动化路径)

dsh plugin --profile web add <git-url|npm包|本地路径>   # dsh 0.1.0-rc.5 实测可用

方式 C:从 npm 安装(发布后可用)

npm install -g deepseek-harness-pets   # 计划中,见 Roadmap

给本仓库打上 GitHub topic dsh-plugin,即可被 dsh 官方插件生态发现。

皮肤源优先级(custom > petdex > bundled)

插件启动时扫描三个皮肤目录,同名 slug 按以下优先级覆盖(离线判定,不依赖网络):

| 优先级 | 源 | 目录 | 说明 | |---|---|---|---| | 1(最高) | 自定义 custom | ~/.dsh/pets/($DSH_HOME/pets) | 你自己放或 hatch-pet 生成的皮肤,可覆盖任何同名皮肤 | | 2 | Petdex 社区 petdex | ~/.petdex/pets/ | npx petdex install <slug> 落地的社区皮肤 | | 3(兜底) | 内置 bundled | 插件包内 assets/pets/ | 随插件分发的 deepseek-whale / deepseek-octo |

合并后的池进入设置可选值与 random 随机池(设置面板选择行开发中,当前经 settings.yaml 消费);某源目录缺失/不可读时该源降级为空,绝不阻断(fail-open)。

注:v0.1 中 custom/petdex 皮肤的选中与优先级判定已生效;v0.2 悬浮窗艺术层统一渲染内联鲸鱼 SVG,外部源与内置皮肤的 spritesheet 像素图待 Host 静态服务与渲染切换点接入(Roadmap)。spritesheet 契约仍由 src/pet-pool.js 的 BUNDLED_ARTWORK 登记表锁定(测试强制登记与实际文件一致,杜绝破图)。

配置(宠物切换 / 随机)

方式一(当前可用):编辑用户设置文档。插件已把 pet 注册为 dsh 用户设置(命名空间 deepseek-harness-pets,Host 侧 schema 校验生效):直接编辑 ~/.dsh/settings.yaml,重启 DSH Web 生效(设置面板选择行开发中,见 Roadmap):

deepseek-harness-pets:
  pet: deepseek-octo   # 缺省不写 = 默认大鲸鱼;random = 按 turn id 确定性随机

方式二:profile patch 行 config(composition base 层):在 ~/.dsh/profiles/web/cordis.patch.yml 里按 id 覆盖:

- id: deepseek-harness-pets
  config:
    pet: random            # deepseek-whale(默认·大鲸鱼) | deepseek-octo | random
    # pets:                # 可选:覆盖皮肤池扫描结果
    #   - deepseek-whale
    #   - deepseek-octo
  • 优先级:用户设置文档 > 行 config(base) > schema 默认 deepseek-whale(大鲸鱼); 删掉用户层字段即回继承 base 层;
  • pet: random 时每个 turn 按其 id 种子确定性选皮,同一会话重放结果一致;
  • 池外皮肤名会被 Host 侧 schema 校验拒绝(注册时 fail loud,命名空间不装);
  • 配置/文档层之外,浏览器侧对池漂移降级回默认并 console.error(fail-open,不阻断会话渲染)。

宠物资产与 Petdex 互通

每只宠物就是一个标准 Petdex 宠物包:

assets/pets/deepseek-whale/
├── pet.json            # Petdex 元数据(slug/帧规格/9 状态行/调色板)
└── spritesheet.webp    # 8 列 × 9 行、每帧 192×208、背景纯品红 #FF00FF(占位待补)

想把这只会动的鲸鱼浮在桌面上?把 assets/pets/deepseek-whale/ 复制到 ~/.petdex/pets/(或 ~/.codex/pets/),装 Petdex 桌面端即可——同一套资产,两种形态。也欢迎 npx petdex submit ./assets/pets/deepseek-whale/ 上架社区画廊(审核约 24 小时)。

皮肤创作指南

放哪里? 三选一(见上文源优先级):

  • 想让皮肤只在自己机器生效且优先级最高 → 放 ~/.dsh/pets/<slug>/;
  • 想用社区现成皮肤 → npx petdex install <slug>(落在 ~/.petdex/pets/);
  • 想给本仓库贡献内置皮肤 → 提 PR 到 assets/pets/。

内置皮肤贡献流程:

  1. Fork 本仓库,在 assets/pets/ 下新建 <你的slug>/ 目录;
  2. 用 Codex 的 hatch-pet skill 生成或手绘 spritesheet,严格遵守 帧规范:8×9 网格、每帧 192×208、背景纯品红 #FF00FF、行序 idle→review;
  3. 复制一份 pet.json 改成你的宠物元数据;
  4. 提 PR。想让宠物进随机池?在 src/index.js 的 DEFAULT_PET_POOL 中同步登记(或用 cordis.yml 的 pets 覆盖)。

创意方向欢迎:不同参数量大小的鲸鱼宝宝、穿格子衬衫的 AI 鲸鱼、更多机械海洋生物……

Roadmap

  • [x] 真实 dsh 环境全链路验收(安装→组合→boot graph→client bundle→设置注册→三层解析,2026-08-15 实测)
  • [ ] 设置面板宠物选择行:浏览器半边注册 settings.general.item 偏好行(defineStore + locale + scope.set,参照 @dshthemes/ui 的 ThemePickerRow 形态)
  • [x] 悬浮窗实机目验(2026-08-15 完成:常驻右下角/悬停/点击瞬态/拖拽持久化刷新恢复/turn 状态流转/loading→动画/console 零报错/聊天流零卡片,Chrome DevTools 实测)
  • [ ] 像素图就绪(spritesheet.webp × 2,社区认领)
  • [ ] Host 静态服务:向 Web UI 提供 custom/petdex 源的 spritesheet(消除占位块)
  • [ ] Host 侧专用事件族:精确判定评测阶段与 SOTA(需 TS declaration merging,迁移到 TS 包)
  • [x] 常驻浮层形态(shell.overlay root 域插槽注入,v0.2 已实施——见 evidence.md #29)
  • [x] 发布到 npm 并登记 dsh-plugin topic(v0.2.0 起在 npm;发布经 GitHub Actions trusted publishing 自动完成——推 v* tag 即验证+发布,零 token,见 CONTRIBUTING 发布流程)
  • [ ] 机械章鱼 octo 上色稿
  • [ ] npx petdex submit 上架画廊

贡献与许可

  • 贡献指南:CONTRIBUTING.md
  • 架构与证据:docs/architecture/(三视图 + 证据置信度)
  • 代码 MIT(见 LICENSE);像素资产版权归各自贡献者,按其 pet.json 声明的许可使用。

故障排查

  • 设置面板没有宠物项:属预期——面板偏好行(settings.general.item 插槽)开发中(见 Roadmap);当前用 ~/.dsh/settings.yaml 或 profile patch 配置。
  • 悬浮窗不出现:先确认 dsh ≥ 0.1.0-rc.5(更早版本无 shell.overlay 插槽);bundle 不热加载,重启 DSH Web;仍无则 dsh --profile web --dump-config 确认 deepseek-harness-pets 行存在,浏览器控制台查 window.__DSH_BOOT__ 是否含该条目、Network 看 /plugins/deepseek-harness-pets/client.js 是否 200(404 多半是没跑 npm run build 或 exports["./client"] 指错),console 无 [deepseek-harness-pets] 报错即说明插槽声明被宿主静默忽略(fail-open 设计,宠物安静不出现)。
  • 悬浮窗位置丢失(回到右下角):属预期——拖拽位置存于浏览器 localStorage(key dsh-pets-overlay-pos),清缓存/换浏览器/隐私模式后回落默认右下角。
  • 设置面板缺项但能启动:~/.dsh/settings.yaml 里该命名空间的值不合法时注册被拒、命名空间不装但启动不会报错(实测容纳性,见 evidence.md #25);改正为池内值或删掉该 section 重启。
  • 换了皮肤但悬浮窗视觉没变:v0.2 艺术层统一渲染内联鲸鱼 SVG,皮肤选中与优先级已生效(slug 见悬浮窗 data-dsh-pet-overlay 属性),专属像素视觉待 spritesheet 切换点接入(见 Roadmap 的像素图与 Host 静态服务)。
  • random 每次不一样:random 按 turn id 种子选择,同一 turn 重放一致;跨 turn 允许换皮(这是特性)。
  • dsh 升级后异常:dsh 处于 developer preview,不排除 breaking changes;本插件验证于 dsh 0.1.0-rc.5(2026-08 本机实测:安装→组合→boot graph→设置注册→三层解析全链路),出新问题时请附 --dump-config 输出提 issue。