DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Guzi2005 /

Guzi2005/dsh-whale-combo

Verified

鲸鱼娘合并数据卡:DSH Web 插件,毛玻璃余额/缓存/峰谷状态卡 + 深蓝扣费弹幕(合并 dsh-whale-widget 与 dsh-damage-pulse 的数据)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@b0568ab9

dsh-whale-combo — 鲸鱼娘 · 合并数据卡

npm version license GitHub

dsh-whale-combo icon

一个 DeepSeek Harness(DSH)Web 插件:在右下角 dsh-whale-widget 的鲸鱼娘旁边,显示一张深色毛玻璃横向状态卡(余额 / 今日 / 缓存命中 / 峰·谷),并在每次计费时从她 头顶向上发射深蓝色扣费弹幕。界面在 shell.overlay 浮层里,原生 React 渲染,可在插件页启用 / 停用 / 卸载。

截图来自实际运行中的 DSH 客户端:鲸鱼娘头顶的深蓝扣费弹幕。

特性

  • 毛玻璃拟态卡片:backdrop-filter 模糊 + 半透明底色(约 26%)+ 顶部高光 / 内阴影 / 外投影, 不画整体描边(避免小尾巴接缝出现拼接线),尾巴是独立玻璃质地。
  • 三组极简图标 + 统一字号数值:
    • 钱包 ¥余额(薄荷绿)
    • 柱状图 ¥今日(白)
    • 数据库 缓存命中率(浅蓝)
    • 右侧 峰 / 谷 玻璃徽章:峰=红字红底,谷=绿字绿底(同色系),悬停有北京时间口径说明。
    • 「本轮消耗」收在整卡的悬停提示里,不占卡面位置。
  • 扣费弹幕:
    • 深蓝色(未命中的一条为灰色),金额 21px / 未命中 25px、标签 13px、字重 900;
    • 从鲸鱼娘头顶向上发射,队列发送、互不重叠,右对齐且「−」号成列;
    • 发射沿用 cubic-bezier(.2,.72,.3,1) 的「弹射」缓动,出现时从小到大;
    • 每条扣费事件只发一次:按扣费事件流的 seq 游标增量读取,不回放、不轮播。
  • 不双份界面:默认隐藏 damage-pulse 自带的悬浮卡,也不提供显示入口,屏幕上只有一个余额面。
  • 两根透明度拉杆(☰ 菜单,复用 whale-widget 自己的菜单行与滑杆组件):
    • 「毛玻璃透明度」6%–85%:底色、玻璃高光(sheen)与尾巴一起变化;
    • 「整体透明度」0–100%:整条 bar 淡入淡出,0 时只留约 2% 微光(视觉上接近消失); 拖动任一根时卡片会自动弹出一次以便实时预览,偏好记到浏览器本地。
  • 🎵 LET ME GO 🎵 开关(☰ 菜单,默认关):只读思考块、只取真正的句首(块首 / 标点或换行之后), 用纯前端文本算法(不消耗 token)截取 ≤8 个英文单词 / 汉字的短句;英文小写开头会自动转成大写; Let me > Now > I > 其它 优先;Hmm / Yes! / Excellent! 这类单字感叹也不漏。 命中后两端加 🎵、用扣费弹幕同款样式右对齐完整展示;先进入歌词缓冲队列(按优先级、去重、上限 40 条), 再约每 550ms 释放一条;任务结束后最多再唱 5 秒,然后清空缓冲。
  • 角色库(小方块,一键切换):☰ 菜单里的角色不再用下拉菜单,改成一行可点击的小方块缩略图 (36px、轻微圆角,选中项描边);点一下立即换角色。末尾的「+」方块沿用上游的裁剪 / 导入流程, 重建了角色导入。内置两个预设:DeepSeek bot、长征 bot(去掉黑底、透明背景, 首次运行自动导入为上游角色,之后与手动导入的角色同等对待)。
  • 菜单精简:☰ 菜单只保留角色、大小、音效与提示、气泡全局开关、吸附与翻转; 移除了「资源管理」按钮,以及「避让滚动条」「隐藏菜单按钮」两项设置(☰ 按钮常显)。
  • 稳定定位:卡片锚定在鲸鱼娘头部右上方(尾巴尖靠近她的头);使用冻结锚点,鲸鱼娘的呼吸/浮动 不会带着卡片抖动,只有拖动她或缩放窗口才重新锚定。

卡片细节

交互

操作 效果
左键点击鲸鱼娘 开 / 关合并气泡
点击气泡本身 立即刷新数据
右键气泡 / Esc / 点空白处 关闭气泡
鲸鱼娘右上角 ☰ dsh-whale-widget 的菜单:角色方块(点击切换 / +导入)、大小、🎵 LET ME GO 🎵、毛玻璃透明度、整体透明度、音效、吸附…
☰ 菜单 · 🎵 LET ME GO 🎵 开关歌词弹幕(默认关;只读思考块的真句首,≤8 词短句,缓冲后匀速发射)

依赖

本插件是界面层:角色与数据来自另外两个插件,需一并安装(本插件不包含它们的任何源码或素材)。

插件 用途 缺失时
dsh-whale-widget 鲸鱼娘角色本体、.dshwv-img 点击目标、/dsh-whale/* 数据 退化为右下角 ¥ 小圆钮开合气泡
dsh-damage-pulse /api/token-monitor/balance、today-spend、usage-summary、charge-events 余额 / 今日 / 缓存 / 弹幕显示 --,峰谷仍按北京时间本地计算

数据来源(合并规则)

字段 主来源 回退
余额 damage-pulse GET /api/token-monitor/balance?provider=deepseek-account whale-widget /dsh-whale/balance.json
今日消费 damage-pulse GET /api/token-monitor/today-spend whale-widget todayUsage
本轮消费 whale-widget /dsh-whale/last-turn.json 最近一条扣费事件金额
缓存命中率 damage-pulse GET /api/token-monitor/usage-summary?range=today --
峰 / 谷 whale-widget balance.json.isPeak 本地北京时间计算(工作日 9–12、14–18)
弹幕 damage-pulse GET /api/token-monitor/charge-events?since=<seq>(1s 增量轮询) —

所有请求都是同源只读接口,不新增外部网络调用。

安装

先装依赖插件,再装本插件:

# 1) 依赖(如果还没装)
dsh plugin --profile <profile> add dsh-whale-widget dsh-damage-pulse

# 2) 本插件(npm)
dsh plugin --profile <profile> add dsh-whale-combo

然后刷新页面 / 重开客户端。

也可以从源码 / 本地目录安装:

git clone https://github.com/Guzi2005/dsh-whale-combo.git
dsh plugin --profile <profile> add link:<clone 后的绝对路径>

或者在 设置 → 插件 → 安装本地包 里选择本目录。

卸载:Plugin Manager 移除本 bundle 即可。

实现

文件 作用
index.js Host 半身:只拥有插件行身份,无副作用(不复制上游任何代码/素材)
client.js 浏览器半身:注册到 shell.overlay,渲染卡片 / 弹幕 / 兜底小圆钮;内含菜单增强与角色库(预设图片以 data URL 内嵌,ROLE_PRESET_DATA)
assets/preset-*.png 角色预设素材(DeepSeek bot / 长征 bot,去黑底透明 PNG;仅供 client.js 内嵌来源,不进 npm 包)
cordis.patch.yml bundle patch:插入 Host 行
locale/{zh,en}.json 插件页标题 / 描述
icon.png 插件图标(384×384 PNG,透明底,218 KB)

浏览器半身是手写的 window.__ModuleLoader__ 模块,不需要构建步骤,只依赖 shell 自带的 react。

集成契约:鲸鱼角色节点选择器为 .dshwv-root .dshwv-img(dsh-whale-widget 0.4.x)。 角色库复用上游的角色系统:GET/POST /dsh-whale/roles.json 读写角色、/dsh-whale/role-image.png?id=… 取图像、 localStorage['dshw-role'] 记住选择;点击方块时优先点击上游自己的角色面板项(走它的 applyRole + 命中图重算), 面板列表未刷新时回退为直接换 img.src 并记录选择(下次加载由上游接管)。 歌词弹幕读取会话 DOM:[data-conversation-scroll] 里最后一个 [class*="markdown"] 块的增量文本 (纯前端算法,不占 token);宿主若调整这两个选择器,需要同步 client.js 里的 readStreamNote。 菜单增强也依赖它的 DOM:向 .dshwv-menu .dshwv-menuview 注入角色方块行 / .dshwv-menu-row + .dshwv-range, 并按行文本移除「资源管理 / 避让滚动条 / 隐藏菜单按钮」,保留(隐藏的)上游角色行以复用其隐藏导入按钮。 若上游大版本改了这些类名或菜单文案,只需同步 client.js 里的 WHALE_SELECTOR / MENU_DROP_PREFIXES / 注入逻辑。

说明与限制

  • 卡片保持深色毛玻璃与固定配色(按设计稿定制,不使用主题 token)。
  • 卡片 z-index 高于鲸鱼娘(10001),所以不会被她的头发盖住;弹幕在最上层(10002)。
  • 视觉在运行中的 DSH 客户端里截图核对过;不同窗口尺寸下的位置由锚点公式自动计算。

致谢

本插件的「鲸鱼娘」与「精确计费数据」分别来自下面两个同样以 DSH 插件形式存在的第三方项目。 它们各自保留完整版权与许可,本仓库不包含它们的源码或美术素材:

  • dsh-whale-widget — 鲸鱼娘角色、☰ 菜单、 /dsh-whale/* 数据接口。代码 MIT;assets/ 下的美术素材按原样随插件分发、不适用 MIT、不授予再许可, 因此本插件只通过它的 DOM 契约(.dshwv-root .dshwv-img)与 HTTP 路由协作,不复制任何素材。
  • dsh-damage-pulse — 余额 / 今日消费 / 缓存命中率 / 扣费事件流,以及「缓存感知」的计费口径。

感谢两位作者的出色工作 🐋

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit b0568ab96407

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout