
yanzwzz/dsh-whale-girl-pet
dsh-whale-girl-pet
dsh-whale-girl-pet is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-whale-girl-petRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-whale-girl-pet)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from yanzwzz/dsh-whale-girl-pet, cleaned of badges and images.
🐋 dsh-whale-girl-pet — DeepSeek 娘桌宠
一只住在 DeepSeek Harness Web 界面右下角的「Q 版蓝发鲸鱼女仆(DeepSeek 娘)」桌宠。 她会在你工作时敲键盘、摸鱼时偷懒、任务完成时庆祝,还能报今日 Token 消耗与花费、查天气、喂她吃「TOKEN 小鱼干」。
✨ 功能特色
🖥️ 工作链路(Agent 干活时全程陪伴)
| 场景 | 动画 |
|---|---|
| 🟢 开工 | 「开始工作」:变出悬浮电脑桌 → 站姿开敲 |
| 🔄 工作中轮播 | 「认真工作 / 工作摸鱼 / 工作思考 / 摸鱼被抓」每 10.5s 随机切换 |
| 🎉 收工 | 「工作结束」:伸懒腰 → 比耶庆祝 |
| 😤 忙时点击 | 「工作被打扰」:惊到 → 嫌弃 → 继续干 |
| ⏰ 长任务超时 | 「长时间工作看表」:看表叹气(阈值可调) |
📊 任务完成统计气泡
每轮任务结束自动弹出多行排版,花费按 缓存命中 / 缓存未命中 / 输出 三桶分别列出:
任务完成啦!
用时 2分35秒
消耗 1.2M tokens
花费 ≈¥3.21
· 缓存命中 ≈¥0.28
· 缓存未命中 ≈¥0.02
· 输出 ≈¥2.91
- 用量按 DeepSeek 官方价目估算,按每条用量的事件时间选档:跨换价、跨峰谷的一次任务也能算准
- 峰谷:北京时间工作日 9:00-12:00、14:00-18:00 为高峰(空闲价的 2 倍),周末与中国法定节假日整天按空闲(
lib/usage.js的CN_STATUTORY_HOLIDAYS,按国务院通知逐年扩表) - 2026-09-10 12:00 起 flash 系列调价:空闲 0.02 / 1 / 4(元每百万 tokens),高峰为其 2 倍;pro 维持现价
- 缓存写入按未命中价计(对应官方
prompt_cache_miss_tokens) - 统计包含子代理会话
📈 数据看板 · 分时段花费(📊 按钮)
宠物侧边按钮组的第四枚按钮,点开是一块手写内联 SVG 看板(零图表依赖),回答「钱花在哪段时间」:
两种视图 × 两种指标
| 今日分时 | 近 7 天 | |
|---|---|---|
| 横轴 | 今天已过去的每个北京小时 | 最近 N 个北京日(N 可在设置面板调 1–30) |
| 竖轴 | 该小时花费 / token | 该天花费 / token |
| 切换 | 「花费 ↔ token」一键切换,右侧「⟳」手动刷新 | 同左 |
图怎么读
- 三桶堆叠柱:每根柱按「缓存命中(蓝)/ 缓存未命中(橙)/ 输出(紫)」分三段 → 一眼看出这段时间是"重输入"还是"重输出"
- 结构化坐标:Y 轴 4 档刻度 + 网格线;柱顶数值只标最高的几根 + 当前格(token 视图 ≤12 格时全标),避免 24 格糊成一片
- 高峰底纹:高峰计价时段(价 ×2)铺一层橙色底纹——柱色让给三桶,不再一身兼两职
- 当前时段高亮:当前小时/今天加描边
- 鼠标悬停任意柱有完整 tooltip:金额、token、三桶明细、调用次数、峰谷
汇总格(5 格)
近 24 小时 · 今日 · 均值 · 输入 · 输出
- 均值:写"平均每小时 ¥0.14 / 平均每天 ¥6.84",跟随当前视图与指标自动切换,并对"屏幕上这批柱"取平均(不会出现图里 24 格、均值却按 7 天算的错位)
- 缓存命中率:prompt 侧口径
cacheRead / (input + cacheWrite + cacheRead),直接回答"这段时间省不省" - 每格还带副行:tokens、调用次数、输出花费等
面板随手放
- 默认尺寸 720×480、默认位置视口居中(视口更小则按
视口 − 24自动收窄,不会顶到屏幕边) - 按住头部拖到任意位置;右下角拖拽缩放(300×200 起)
- 位置与尺寸存
localStorage,刷新/重开都记得;双击头部恢复默认尺寸与居中 - 记忆带版本号,改动默认值时会自动作废旧记忆,不会出现"新默认值被老记忆盖住"
数据从哪来
- 实时:宿主侧
ctx.on('session/event')增量折叠,每条事件 O(1),不轮询、不写盘 - 历史:启动时用
sessionPersistence补扫已落盘会话(含重启前的今天早上),面板底部显示"已补扫 N 个会话 · M 条事件" - 去重:两条路径共用「每会话已见 seq 集合 + 调用身份(message.id / seq)」双重去重,先来后到都不重复计数;重试按两次调用计费
- 补扫失败只降级为"仅本次运行统计"并在面板底部说明,不影响其他功能
- 只读接口:
GET /api/whale-pet/usage(可选?hours=1..24&days=1..30),响应no-store,约 10 KB
健壮性:弹层容器经 portalContainer() 校验(非真实 DOM 元素时退回内联渲染,避开 React #200),整个看板包在错误围栏里——看板自身出错只会显示错误文本,绝不会把桌宠打挂。
实现拆成三块:
lib/usage-ledger.js(分时段账本,纯逻辑)、宿主路由/api/whale-pet/usage、浏览器侧client.js内的 SVG 图表与布局 hook。
💰 余额 & 今日用量(💰 按钮)
余额 + 今日消耗 tokens + 今日花费(峰谷分开计费,并按命中/未命中/输出三桶拆分),调用官方余额接口。顺手播一段「翻钱包」动画,结果汇入头顶气泡。
账号登录也能查:配了
DEEPSEEK_API_KEY时走官方api.deepseek.com/user/balance(既有行为);没有 Key 或 Key 失效(401/网络失败)时自动回退到 DSH 登录账号的开放平台钱包(ctx.deepseekAccount.getBalance(),充值余额 + 赠金余额合计)。所以 DSH 只登录 DeepSeek 账号、不配 Key 也能正常显示余额;两条路都没有时气泡会同时提示"没配 Key / 没登录账号"。
今日花费 = 内部统计,含子代理会话与重启前的历史:数字取自分时段账本(实时折叠所有会话 + 启动/按需补扫已落盘会话),而不是"当前在线会话"。所以主会话派发出去的子代理(subagent)开销、以及进程重启前今天已经花掉的部分,都算在内。
💴 会话费用 pill(输入框下方)
与官方 token 用量 pill 同排显示本会话累计费用,点击展开明细弹层:缓存命中 / 缓存未命中 / 输出三桶金额、高峰与空闲各自累计、计价调用数,并带实时「谷 / 峰」徽标。金额与任务完成气泡、余额按钮共用同一套价目与计费口径(lib/usage.js 为唯一内核,whalePetCost 投影供浏览器读取)。
金额含子会话:
whalePetCost投影只折叠本条会话自己的日志,而子代理是独立会话,所以光靠投影会漏掉它们。宿主半侧按会话树(sessionPersistence的parentSession血统)汇总后代会话的开销,经GET /api/whale-pet/subtree-cost提供给前端叠加;明细弹层里单列一行「子会话」。
…


