dsh-balance-whale:DSH 界面里的小鲸鱼余额挂件

前言

在 DeepSeek Harness(DSH)里跑智能体或长会话时,账户余额往往要另开页面或手动刷新才能看到。社区里已有类似「余额鲸鱼挂件」的思路;dsh-balance-whale 是维护者 CLxingxi 的独立实现:同一个 npm 包同时提供 Host 半(读余额、跟踪工作状态、记账、供图)与 Browser 半(挂件本体),通过 bundle 一行挂起,不必手写组件配置。

下面介绍它是什么、能做什么,以及如何装进 profile 并启用。

这是什么

插件包名 dsh-balance-whale,GitHub 仓库 CLxingxi/dsh-balance-whale,当前版本 1.0.0,MIT 许可证。要求 DSH >=0.2.0-rc.1。

挂件常驻 Web 界面右下角,实时展示 DeepSeek 账户余额;余额只由 Host 通过 ctx.deepseekAccount.getBalance() 读取,凭据不会进入页面。参考了 MeteorNOX/DeepSeek-Balance-Whale-Widget 的思路,本仓库是完整重写而非 fork。

核心功能

余额与状态

Host 暴露同源、仅回环的 HTTP 接口(10 秒短缓存,refresh=1 可绕过):

方法 路径 说明
GET /api/balance-whale/state[?refresh=1] 余额、钱包拆分、账号链接、工作状态、账本摘要
GET /api/balance-whale/skins 皮肤清单
GET /api/balance-whale/assets/<skin>/<file> 皮肤图片(清单内文件,2 MiB 上限)

Browser 半注册 shell.overlay 槽位,用里程表式数字滚动显示金额;空闲时按配置轮询,工作时 Host 会把轮询间隔缩短到不超过 8 秒。

表情与气泡

表情随工作状态自动切换:idle、working、happy、worried、excited、sleep、error 等。状态来自 Host 事件(如 api-session/status、tools/execute、agent/error)以及余额涨跌、拖动与点击。

气泡对开工、本轮消耗、余额变化、未登录、换皮肤等事件排队展示(最多 3 条);安静时每 4–9 分钟可随机闲聊一句。

皮肤与音效

自带手绘 SVG 皮肤「深海经典鲸」,不依赖外部图片。立绘类皮肤需自行放入 assets/<id>/(skin.json + 各心情图),可用 tools/prepare-skins.py 裁切、居中并生成配置;选择结果存在 localStorage。

音效由 WebAudio 现场合成,无音频文件依赖;首次用户手势后解锁 AudioContext,卡片内可开关并记住偏好。

记账

每次 Host 真实读余额时与上次比较:减少记为消费,增加记为充值。消费计入「今天」「本轮启动」及刚结束的一轮(含 60 秒延迟窗口)。卡片展示今日已用、上一轮消耗、本次启动累计、近 7 天柱状图与最近几笔变化(可带工具名)。账本持久化在 $DSH_HOME/balance-whale/ledger.json,保留 60 天。

交互手感

支持拖拽吸附左右边缘(靠近底部贴底)、左吸附时水平镜像、QQ 弹式的呼吸与点击反馈、主题跟随 --dsw-alias-* token。键盘:Enter/空格 刷新,←/→ 换边吸附。

安装与启用

本包是 DSH bundle:cordis.patch.yml 插入一行 balance-whale,同时挂起 Host 与 Browser,无需手写组件列表。

1. 让 profile 依赖它。 编辑 ~/.dsh/profiles/<profile>/package.json(桌面端 profile 名一般为 desktop),在原有 dependencies 与 dsh.profile.bundles 中追加 dsh-balance-whale:

{
  "dependencies": {
    "dsh-balance-whale": "github:CLxingxi/dsh-balance-whale"
  },
  "dsh": {
    "profile": {
      "bundles": ["dsh-balance-whale"]
    }
  }
}

2. 在 profile 目录安装依赖:

cd ~/.dsh/profiles/desktop
pnpm install

3. 重启 DSH,右下角会出现小鲸鱼。

本地开发时,可把依赖改为 "link:/绝对路径/dsh-balance-whale",bundles 保持不变,改完重启生效。

可选配置

在 profile 的 bundle 条目上为 balance-whale 增加 config(省略则用默认值):

- id: balance-whale
  name: 'dsh-balance-whale'
  config:
    size: 96            # 鲸鱼尺寸 px,64..160
    refreshSeconds: 30  # 空闲轮询秒数,10..600(工作时自动缩短到 ≤8 秒)

典型用法与自检

换皮肤: 点击挂件卡片中的「皮肤」展开选择器;自带「深海经典鲸」即可用。自定义立绘:将资源放进 assets/<skin-id>/ 后重启,或用:

python tools/prepare-skins.py --list
python tools/prepare-skins.py --check
python tools/prepare-skins.py --skin my-skin --name "我的皮肤" --accent "#FF8800" \
    --frame idle=raw/idle.png --frame happy=raw/happy.png

心情名包括 idle / happy / work / excited / worried / sleep / error,缺失帧回落到 idle。

不启动浏览器做冒烟测试(Node ≥ 18):

node tools/balance-whale-smoke.mjs

脚本验证 Host 路由、账本数学、皮肤发现与交互模拟等;包目录不在默认位置时设置 BALANCE_WHALE_DIR=<包目录>。

适用场景与注意

适合长期在 DSH Web 界面工作、希望余额、消耗与 Agent 状态一眼可见的开发者。插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证;assets/ 下自行添加的立绘授权由你或原作者负责,不在 MIT 覆盖范围内。

DSH 生态强调「一切皆插件」;社区目录 skillhub 上的 dsh-balance-whale 页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-balance-whale 把余额读取、记账与可拖拽挂件收进一个 bundle,装依赖、写 bundles、重启即可使用。详情与 Issue 见 GitHub 仓库,目录页见 skillhub.cn/plugins/CLxingxi/dsh-balance-whale。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye