DeepSeek Harness Hub
← 返回列表

alybg/dsh-angelina-pet

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness 部署级桌宠:右下角随 Agent 工作状态切换 GIF 动画,气泡实时显示…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/18 · 已提供中文文档

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

综合分
28.9
GitHub 分
28.9
用户评分
★ Stars
3
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add alybg/dsh-angelina-pet
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-fs@deepseek-ai/dsh-shell
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🐳 DSH 桌宠(dsh-pet)

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

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

✨ 特性

- 8 种状态动画(10 个 GIF):待机/输入中/思考中/工作中/回答中/等待中/完成/出错,随 Agent 工作状态自动切换
- 实时感知 Agent 状态:轮询 agents 服务(running/idle)判定任务完成;直连瀑布事件
(tools/execute、approval/request、llm/stream 等)细化「工作中/思考中/回答中/等待中/出错」
- 独立余额查询:宿主用 credentials 取 DEEPSEEK_API_KEY + curl 调 api.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. 把整个项目复制到 /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/,可用以下方式覆盖(优先级:行配置 > 环境变量 > 包内默认):

| 配置项 | 环境变量 | 默认值 |
| --- | --- | --- |
| gifDir | DSH_PET_GIF_DIR | /assets/gif |
| manifestPath | DSH_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/)的路径
- role:finish=任务完成语音(宿主播放)/ 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 开源;素材遵循上一条版权声明。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群