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

@hellosz/dsh-pets

v0.3.1

Published

DeepSeek Harness pet companion — Codex Pets style floating pet with notification broadcasting and a pet_say tool

Readme

DSH Pet Companion 🐾

把 OpenAI Codex Pets 的宠物陪伴体验带进 DeepSeek Harness(DSH)Web GUI 的 Cordis 插件。

用宠物的行为状态代替进度条 —— 你的皮卡丘/小火龙会用动画告诉你 agent 正在思考、等你确认、还是完成了待你审查。

pikachu preview

它解决了什么问题

AI coding agent 跑长任务时(几分钟到十几分钟),你无法直观知道它现在在干什么:

| Agent 状态 | 宠物表现 | 你该做什么 | | --- | --- | --- | | 思考中 / 写代码 | 原地跑动动画 | 去喝杯咖啡 ☕ | | 等待你确认 / 审批 | 停下来盯着你看 | 回 DSH 响应 | | 完成待审查 | 端坐/专注姿态 | 去看 diff | | 出错 | 灰蓝色沮丧抖动 | 检查错误 | | 空闲 | 呼吸/眨眼,偶尔挥手跳跃 | 陪它玩 😄 |

这正是 Codex Pets 的核心设计哲学:"agent 正在做什么"比"agent 是什么动物"更重要

特性

  • 🖼️ 内置 10 只宠物:皮卡丘、小火龙、妙蛙种子、杰尼龟、胖丁、伊布、梦幻、波加曼、木木枭、敲音猴
    • idle 动画来自 PokeAPI 第五世代官方动画帧(或 Pokémon Showdown 动画)
    • 其余 8 个状态由经典精灵程序化派生(翻转/弹跳/挥手/沮丧/呼吸/跑动/审查)
  • 🎬 9 状态动画:idle / running / waiting / review / failed / waving / jumping / running-left / running-right
  • 📍 浮动宠物:注册到 shell.overlay,右下角常驻,可拖拽、点击弹菜单、一键隐藏;状态气泡与配置菜单跟随宠物
  • 💬 性格与口头禅:每只宠物都有独立性格、台词和动画节奏("交给我吧,皮卡!"/"烧起来了!")
  • ⚙️ 设置页:Settings → 宠物伙伴,切换宠物、缩放滑块(0.6x–2.5x)、开关
  • 📦 petdex 兼容宠物包格式pet.json + 8×9 spritesheet(每帧 192×208)——社区标准,未来可直接导入 petdex.dev 上 4500+ 个社区宠物
  • 🔌 零侵入:只监听 DSH 现有事件(emit 模式),不阻塞、不篡改任何流程

快速开始

前置条件

  • Node.js ≥ 22
  • 已安装 DeepSeek Harness CLI:npm install -g @deepseek-ai/dsh
  • 已安装 pnpmdsh plugin 内部会调用 pnpm;可执行 corepack enable

安装插件

dsh plugin --profile web add @hellosz/dsh-pets
dsh web

如果使用 npx 启动 dsh,则对应命令为:

npx @deepseek-ai/dsh plugin --profile web add @hellosz/dsh-pets
npx @deepseek-ai/dsh web

安装后验证:

dsh --profile web --dump-config | grep -A2 'dsh-pets'

浏览器打开 http://localhost:3080,皮卡丘会出现在右下角。

卸载:

dsh plugin --profile web remove @hellosz/dsh-pets

架构

dsh-pets.mjs                 # Host 入口(bundle 主入口):状态引擎 + pet/state、pet/asset 路由 + pet_say 工具
cordis.patch.yml             # dsh bundle patch:向 profile 插件树插入本插件行
lib/client.js                # Client 预构建产物:window.__ModuleLoader__.load 工厂
plugin/
├── pet-companion.host.js    # 动态插件 Host(会话内 cordis_define 用,与 dsh-pets.mjs 功能一致)
└── pet-companion.client.js  # 动态插件 Client(会话内 cordis_define 用)
packs/<id>/
├── pet.json               # petdex 元数据(10 只)
└── spritesheet.png        # 8×9 spritesheet
scripts/generate-packs.js    # 从 sprites/ 源素材生成宠物包(ImageMagick)
sprites/                     # 源素材(PokeAPI / Showdown 精灵)
docs/                        # 预览图

状态优先级waiting(审批) > failed(错误) > review(回合结束) > running(思考/工具/子代理) > idle

数据流:Host 监听 agent/statusagent/turn-stoppingagent/errorapproval/requesttools/execute|resultsubagent/start|endworkflow/start|end → 推导状态 → 通过 webServer 暴露 GET /pet/stateGET /pet/asset → Client 每 600ms 轮询 pet/state → 播放对应动画行。

宠物包格式(petdex 兼容 v1)

  • pet.json{ id, displayName, description, spritesheetPath }
  • spritesheet.png8 列 × 9 行,每帧 192×208,行序固定:

| 行 | 状态 | 帧数 | 用途 | | --- | --- | --- | --- | | 0 | idle | 6 | 呼吸/眨眼 | | 1 | running-right | 8 | 向右跑 | | 2 | running-left | 8 | 向左跑 | | 3 | waving | 4 | 打招呼 | | 4 | jumping | 5 | 跳跃 | | 5 | failed | 8 | 出错 | | 6 | waiting | 6 | 等待 | | 7 | running | 6 | 原地跑 | | 8 | review | 6 | 审查 |

重新生成宠物包

# 依赖 ImageMagick 6+
node scripts/generate-packs.js

素材来源与致谢

  • 皮卡丘/小火龙经典精灵与第五世代动画帧:PokeAPI/sprites(社区广泛使用的游戏素材镜像)
  • 动画参考:Pokemon Showdown 动画精灵(sprites/ 目录已备)
  • 宠物包格式规范:petdex(Codex 宠物社区标准,MIT)
  • 产品逻辑参考:OpenAI Codex Pets(running / waiting for input / ready for review 三状态范式)

Roadmap

  • [ ] 导入 petdex.dev 社区宠物包(manifest API 直连)
  • [ ] 多会话多宠物(并发任务各自一只)
  • [ ] 宠物孵化玩法(按你写的语言/风格出宠物,致敬 hatch-pet)
  • [ ] 浏览器端配置持久化(localStorage)

License

MIT