- Home
- Plugins
- UI Enhancements
- dsh-wuwa-pet
dsh-wuwa-pet
oolongblackcoffee/dsh-wuwa-pet
Puts a WuwaTappo desktop pet's bubbles to work: shows the DeepSeek balance, today's spend and a per-turn cost bubble, and keeps an amber reminder bubble up while the agent waits for an answer or an approval. Talks to the pet over CDP, enabling its debug port with a one-time, revertible byte patch.
Install
dsh plugin --profile web add github:oolongblackcoffee/dsh-wuwa-petREADME
dsh-wuwa-pet
把 DeepSeek 的余额 / 今日消耗 / 每轮花费,直接弹在 WuwaTappo 桌宠的头顶上。
一个 DeepSeek Harness(DSH)插件。它不替换桌宠,也不改 DSH 的界面——只是把账算清楚,然后借桌宠的气泡说出来。

它做什么
| 能力 | 说明 |
|---|---|
| 余额胶囊 | 桌宠头顶常驻一条:余额 · 今日已用,随对话自动刷新(默认 60 秒缓存) |
| 每轮消耗弹泡 | 一轮对话结束弹 -¥0.0432 · 12,345 tok,够用 5 秒自动收 |
| 提问 / 授权常驻提醒 | ask_user_question 或权限确认挂起时,琥珀色「等你回答」气泡不会消失,直到你处理完 |
| 峰谷倒计时 | 高峰/谷时切换前提醒,配合官方计价时段 |
| 自带账本 | 不装 dsh-whale-widget 也能算钱:按官方价目表在本地记账(~/.dsh/.wuwa-pet-usage.json) |
| 静音子智能体 | 子智能体的轮次默认不弹泡,避免刷屏 |
金额全部在本地算,不向任何第三方服务器发送数据。
环境要求
- Windows(脚本与桌宠都依赖 Windows)
- DeepSeek Harness(DSH)已安装并能正常登录账号
- WuwaTappo 桌宠(第三方桌宠,本仓库不包含、也不分发它)已安装
- Node.js ≥ 20.11(DSH 自带运行时即可)
- 想算钱还可选装
dsh-whale-widget——不装也能用,只是首次记账没有历史基线
安装
三种方式,按省事程度排序。装完都要重启一次 DSH,之后到 插件 → 已安装 里确认开关是打开的。
A. 预构建包(推荐,免构建授权)
- 到 Releases 下载
dsh-wuwa-pet-1.3.0.tgz - 一条命令装上:
dsh plugin add "C:\Users\你的用户名\Downloads\dsh-wuwa-pet-1.3.0.tgz"
也可以在 插件 → 添加插件 里直接选那个 .tgz 文件。
B. 直接装 GitHub 仓库
dsh plugin add https://github.com/OolongBlackCoffee/dsh-wuwa-pet
如果弹出「需要批准构建(allowBuilds)」,同意即可 —— 本插件没有任何编译步骤,这个批准只是让 pnpm 把依赖装完。
C. 源码 + 目录链接(要改代码时用这种)
1. 拿到代码
git clone https://github.com/OolongBlackCoffee/dsh-wuwa-pet.git D:\dsh-wuwa-pet
2. 挂进 DSH 的 profile
cd $env:USERPROFILE\.dsh\profiles\desktop
# 以「目录链接」方式加入依赖(改动代码即时生效,不必重装)
node "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\pnpm\bin\pnpm.mjs" add "link:D:\dsh-wuwa-pet"
没有全局 pnpm 时,用上面这种「直接跑 pnpm 的 mjs」写法最稳。装在别处就把路径换成你的
pnpm。
3. 在 profile 的 package.json 里登记
编辑 %USERPROFILE%\.dsh\profiles\desktop\package.json,在 dsh.profile.bundles 数组末尾加上包名:
"bundles": [
"……原有条目……",
"dsh-wuwa-pet"
]
同时确认 dependencies 里有 "dsh-wuwa-pet": "link:D:/dsh-wuwa-pet"(上一步的 pnpm add 会自动写入)。
4. 重启 DSH
用 A/B 装的话,
dsh plugin add会自动写好依赖和 bundles,不需要手动改package.json。
第一次加载时插件会自动跑一次 CDP 补丁(见下一节)。如果 WuwaTappo 正在运行,脚本会先关掉它再改、改完再拉起来。
关于「CDP 补丁」(重要)
桌宠的气泡是用 Chromium 远程调试协议(CDP)注入到 WuwaTappo 的页面里的,而 WuwaTappo 默认不开放调试端口。所以插件带了一个小脚本 tools/deploy-cdp.ps1,它在 WuwaTappo 的启动参数里补上:
--remote-allow-origins=* --remote-debugging-port=9222 --autoplay-policy=no-user-gesture-required
并保证参数区长度与原来完全一致(逐字节写入 + 尾部补空格),所以不会破坏程序签名校验以外的任何结构。
-
官方更新会覆盖掉这个补丁 —— 这正是插件默认
autoDeploy: true的原因:每次 DSH 启动加载插件时,脚本会重新检测,没补就补。等价的命令行是:powershell -NoProfile -ExecutionPolicy Bypass -File "D:\dsh-wuwa-pet\tools\deploy-cdp.ps1" -Quiet -
不想让它动你的程序?在插件配置里设
"autoDeploy": false,改为需要时手动跑上面的命令。 -
想彻底还原:
tools\还原CDP.bat(脚本会从*.orig备份写回)。
⚠️ 这一步会修改 WuwaTappo 安装目录里的 exe。脚本自身会留
.orig备份,但请自行确认你接受这一行为;不做这一步,插件只是没有气泡可画,不会影响 DSH。
配置
配置写在 profile 的 cordis.patch.yml(插件条目下的 config):
- insert:
- id: dsh-wuwa-pet
name: dsh-wuwa-pet
config:
autoDeploy: true # 加载时自动补 CDP 补丁
cdpPort: 9222 # 与 deploy-cdp.ps1 注入的端口保持一致
soundOn: true
volume: 0.55
| 键 | 默认 | 作用 |
|---|---|---|
autoDeploy | true | 插件加载时自动跑一次 CDP 补丁(WuwaTappo 更新后免手动) |
cdpPort | 9222 | CDP 端口,必须与启动参数一致 |
tickMs | 2500 | 忙时轮询间隔(毫秒) |
idleTickMs | 8000 | 空闲时轮询间隔 |
balanceTtlMs | 60000 | 余额缓存有效期 |
notifyOnTurnEnd | true | 每轮结束弹消耗泡 |
muteSubagent | true | 子智能体轮次不弹泡 |
notifyOnWait | true | 提问/授权挂起时常驻提醒 |
waitTtlMs | 180000 | 常驻提醒最长存活时间 |
questionTool | ask_user_question | 视为「提问」的工具名 |
soundOn / volume | true / 0.55 | 提示音开关与音量 |
toastMs | 5000 | 普通气泡停留时长 |
数据与隐私
- 余额:通过 DSH 自己的账号通道读取,只在内存里。
- 用量:优先读
dsh-whale-widget的本地账本(若安装);否则用自带账本按官方价目表计算。 - 自带账本落盘在
%USERPROFILE%\.dsh\.wuwa-pet-usage.json,纯本地 JSON,删掉即重置。 - 插件不联网上报、不收集任何遥测。
计价口径(与官方高峰/谷时规则一致):
- 工作日 09:00–12:00、14:00–18:00 为高峰,其余时段、周末与法定节假日为谷时
- 谷时单价(南向价,元 / 百万 token):Flash 输入 0.02、缓存命中 1、输出 4;Pro 为上列三倍
- 金额以官方账单为准,这里是估算
排错
| 现象 | 处理 |
|---|---|
| 桌宠头顶没有气泡 | 看 runtime-diag.json 里 link.connected 是否为 true;为 false 说明 CDP 没连上——先确认 WuwaTappo 是用带调试端口的快捷方式启动的,再跑一次 deploy-cdp.ps1 |
| 余额一直是「—」 | DSH 未登录账号,或账号接口暂时不可达 |
| 金额和我自己算的差一点 | 缓存命中价与时间边界(跨高峰)会导致尾差;以官方账单为准 |
| 端口被占用 | 把 cdpPort 和 deploy-cdp.ps1 -Port 改成同一个空闲端口 |
| 改完代码没生效 | 这是 link: 安装,重启 DSH 即可 |
目录结构
dsh-wuwa-pet/
├── lib/
│ ├── index.js 插件入口:事件、账本、气泡调度、自动部署
│ ├── balance.js 余额读取与缓存
│ ├── pricing.js 价目表与单轮计价
│ ├── ledger.js 与 dsh-whale-widget 账本对账(装了才用)
│ ├── selfledger.js 自带本地账本(聚合 / 对账 / seed)
│ ├── cdp.js CDP 连接与页面发现
│ ├── inject.js 注入/重注入气泡脚本
│ ├── widget.js 注入到桌宠页面里的渲染层
│ └── wait.js 提问/授权挂起检测
├── tools/
│ ├── deploy-cdp.ps1 CDP 补丁(幂等,带 .orig 备份)
│ ├── 一键部署CDP.bat / 还原CDP.bat
│ ├── autostart-launch.ps1 开机自启(自动定位桌宠与 DSH 路径)
│ └── selftest-*.mjs 自检脚本
├── cordis.patch.yml 插件注册
└── screenshots.json 截图清单
自检:
node tools\selftest-selfcost.mjs
node tools\selftest-ledger.mjs
node tools\test-smoke.mjs
变更记录
- 1.3.0 —— 插件加载时自动补 CDP 补丁(
autoDeploy);脚本去个人化(不再写死安装路径);补截图与图标 - 1.2.0 —— 自带计价账本,不再依赖
dsh-whale-widget - 1.1.0 —— 提问/授权挂起时常驻提醒
- 1.0.0 —— 初版:余额胶囊、每轮消耗泡、提示音
免责声明
本项目是非官方第三方插件,与 DeepSeek、WuwaTappo 的开发者均无关联。它会修改 WuwaTappo 安装目录下的可执行文件启动参数,请自行评估风险并做好备份;因使用本项目造成的任何问题由使用者自行承担。请遵守相关软件的服务条款。
License
MIT © 2026 OolongBlackCoffee
dsh-wuwa-pet (English)
A DeepSeek Harness plugin that shows your DeepSeek balance and per-turn cost as speech bubbles above a WuwaTappo desktop pet.
Features
- Persistent balance capsule on the pet's head (balance + today's spend)
- Per-turn cost bubble:
-¥0.04 · 12,345 tok(with sound, optional) - Sticky amber "waiting for you" bubble while an
ask_user_questionor an approval is pending - Peak/off-peak price awareness
- Built-in local cost ledger — no other plugin required (
%USERPROFILE%\.dsh\.wuwa-pet-usage.json)
Requirements: Windows, DeepSeek Harness, Node.js ≥ 20.11, and a WuwaTappo desktop pet (not bundled).
Install (not on npm yet — two supported ways):
# A. prebuilt tarball from Releases (no build step, no build approval)
dsh plugin add "%USERPROFILE%\Downloads\dsh-wuwa-pet-1.3.0.tgz"
# B. straight from GitHub
dsh plugin add https://github.com/OolongBlackCoffee/dsh-wuwa-pet
# C. from source, for hacking on it
git clone https://github.com/OolongBlackCoffee/dsh-wuwa-pet.git D:\dsh-wuwa-pet
cd $env:USERPROFILE\.dsh\profiles\desktop
node "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\pnpm\bin\pnpm.mjs" add "link:D:\dsh-wuwa-pet"
# then add "dsh-wuwa-pet" to dsh.profile.bundles in package.json
Restart DSH once afterwards; the plugin shows up under Plugins → Installed.
The bubble layer is injected over CDP, so WuwaTappo must run with --remote-debugging-port=9222. tools/deploy-cdp.ps1 patches the launcher arguments byte-for-byte (idempotent, keeps a .orig backup) and runs automatically on plugin load (autoDeploy: true). Set "autoDeploy": false to opt out.
Privacy: everything is local; no telemetry, no third-party requests. Costs are estimates — the official bill wins.
License: MIT. Not affiliated with DeepSeek or WuwaTappo.
Related plugins
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui
dsh-web-ui (dsh-web-ui-all)
zhu1090093659/dsh-web-ui