alybg / dsh-angelina-pet

已收录

DeepSeek Harness 部署级桌宠:右下角随 Agent 工作状态切换 GIF 动画,气泡实时显示 DeepSeek 余额与语音台词,可拖动、可点击互动,任务完成随机播放语音。

main其他 查看源代码

安装

npx -y @deepseek-ai/dsh plugin --profile web add github:alybg/dsh-angelina-pet

此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 b34d3ca同步于 2026年8月18日

🐳 DSH 桌宠(dsh-pet)

DeepSeek Harness(DSH)部署级桌面宠物插件:一只住在 Web 界面右下角的小宠物, 它会盯着 Agent 干活 —— 待机时休息、思考时潜水、工作时搬砖、回答时放飞纸飞机, 任务完成时骑行庆祝并随机播报一条完成语音,气泡里实时显示 DeepSeek 账户余额语音台词

参考 liyupi/dsh-kun-like-pet 的思路实现, 但为部署级插件(宿主组合层,所有会话/窗口可见),且余额查询完全独立,不依赖任何第三方插件。

✨ 特性

  • 8 种状态动画(10 个 GIF):待机/输入中/思考中/工作中/回答中/等待中/完成/出错,随 Agent 工作状态自动切换
  • 实时感知 Agent 状态:轮询 agents 服务(running/idle)判定任务完成;直连瀑布事件 (tools/executeapproval/requestllm/stream 等)细化「工作中/思考中/回答中/等待中/出错」
  • 独立余额查询:宿主用 credentialsDEEPSEEK_API_KEY + curlapi.deepseek.com/user/balance (30s 缓存),经 /dsh-pet/balance 路由暴露,气泡每 60s 刷新、点击也刷新
  • 语音台词assets/wav/manifest.json 为语音配置的单一数据源(分组 + 台词), 播放语音时气泡显示对应台词(约 10 字/行换行);改台词无需重启(5s 生效)
  • 完成语音:任务完成时宿主系统级播放(PowerShell SoundPlayer,全窗口可闻,与浏览器静音无关)
  • 点击互动:点击桌宠随机播放一条点击语音 + 气泡反应
  • 可拖动:拖动位置用 localStorage 持久化
  • 素材随包携带assets/ 内置于插件包,路径默认包相对,可用配置/环境变量覆盖

🎮 状态 → 动画映射

桌宠状态含义GIF
idle待机(无任务)坐坐
inputting输入/准备中(收到消息、模型调用发起前)看书
thinking思考中(LLM 流进行中,无工具运行)潜水 / 探险(随机)
working工作中(工具执行中)送货 / 购物(随机)
answering回答中(模型流刚结束、回合收尾)纸飞机
waiting等待审批拍照
celebrating任务完成庆祝(Agent running→idle)骑行 + 随机播放 finish 语音
failed请求出错海边

DSH 无法感知用户“正在打字”的瞬间,因此 inputting 定义为「消息进入 inbox / 模型调用发起前」的过渡阶段。 状态 → GIF 映射可在 src/index.js 顶部 DEFAULTS.gifMap 调整,files 数组放多个文件时随机轮换。

🖼️ 动画预览

坐坐 · 待机
看书 · 输入中
潜水 · 思考中
探险 · 思考中(轮换)
送货 · 工作中
购物 · 工作中(轮换)
纸飞机 · 回答中
拍照 · 等待审批
骑行 · 完成庆祝
海边 · 出错

🚀 安装(部署级)

方式一:脚本安装(推荐)

# 在仓库根目录
npm run install:web
# 或指定 profile:node scripts/install.mjs --profile web

脚本会把插件复制到 DSH profile 的 node_modules/dsh-pet、在 cordis.patch.yml 插入行、 并在 profile package.json 声明依赖。然后重启 DSH(宿主组合在启动时装载)。

方式二:手动安装

  1. 把整个项目复制到 <DSH profile>/node_modules/dsh-pet/(如 C:\Users\Admin\.dsh\profiles\web\node_modules\dsh-pet
  2. 在 profile 的 cordis.patch.yml 追加:
    - insert:
        - id: dsh-pet
          name: 'dsh-pet'
    
  3. 在 profile 的 package.json dependencies 追加:"dsh-pet": "file:./node_modules/dsh-pet"
  4. 重启 DSH,刷新页面。

动态插件方式(临时试用)

scripts/build-package.mjs 生成 cordis_define 一键安装载荷:

node scripts/build-package.mjs   # 输出 dsh-pet-install.json(payload)

将载荷交给 cordis_define 工具即可在单会话内试用(动态插件重启后消失)。

⚙️ 配置

素材路径默认指向包内 assets/,可用以下方式覆盖(优先级:行配置 > 环境变量 > 包内默认):

配置项环境变量默认值
gifDirDSH_PET_GIF_DIR<包>/assets/gif
manifestPathDSH_PET_MANIFEST_PATH<包>/assets/wav/manifest.json

示例(cordis.patch.yml 行配置):

- id: dsh-pet
  name: 'dsh-pet'
  config:
    gifDir: 'D:/我的素材/gif'
    manifestPath: 'D:/我的素材/wav/manifest.json'

播放命令(Windows 默认 PowerShell SoundPlayer)可通过 config.playCommand(path) 覆盖 (macOS:afplay;Linux:ffplay -nodisp -autoexit)。

🎙️ 语音台词(manifest.json)

assets/wav/manifest.json 是语音配置的单一数据源:

{
  "formatVersion": 1,
  "entries": [
    { "role": "finish", "file": "finish/部署1.wav", "subtitle": "平稳落地~" },
    { "role": "click",  "file": "click/戳一下.wav", "subtitle": "嗯哼?" }
  ]
}
  • file:相对 manifest 所在目录(assets/wav/)的路径
  • rolefinish=任务完成语音(宿主播放)/ click=点击互动语音(浏览器播放)
  • subtitle:播放时气泡显示的台词(显示台词时隐藏状态文字;与状态同字号)

宿主每 5s 重读 manifest:改台词无需重启;新增语音文件需重启(路由启动时注册)。

📁 项目结构

dsh-angelina-pet/
├── src/
│   ├── index.js            # 宿主半(部署级 ESM 插件)
│   └── client.js           # 客户端半(浏览器 __ModuleLoader__ 模块)
├── assets/
│   ├── gif/                # 10 个状态 GIF
│   └── wav/
│       ├── finish/         # 任务完成语音
│       ├── click/          # 点击互动语音
│       └── manifest.json   # 语音台词清单(单一数据源)
├── scripts/
│   ├── build-package.mjs   # 生成 cordis_define 安装载荷
│   ├── install.mjs         # 一键安装到 DSH profile
│   └── publish.mjs         # 发布到 GitHub(建仓 + 推送)
├── demo/index.html         # 独立动画/语音预览页
├── package.json            # 插件包清单(dsh.client 声明)
├── README.md
└── LICENSE

🖼️ 预览

无需 DSH,直接打开 demo/index.html(或 npm run preview)即可预览全部动画与语音。

⚠️ 素材版权声明

  • assets/ 下的 GIF/WAV 为网络公开的二创/游戏语音素材,版权归原作者及游戏厂商所有, 仅供个人学习交流,请勿用于商业用途;如需商用请自行替换为无版权素材。
  • 若您是权利人且不希望相关内容被展示,请联系删除。

📄 License

代码以 MIT 开源;素材遵循上一条版权声明。

项目文件与信号

以下项目是目录快照中检测到的公开仓库信号。

插件清单已检测
示例已检测

仓库信息

开发语言
JavaScript
许可证
NOASSERTION
最后更新
2026年8月17日 16:55

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。