🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

鲸鱼娘余额监控 wssfk12138/dsh-damage-pulse

DeepSeek Harnessv4.3.0
wssfk121383 天前有提交已提供中文文档扫描:含敏感能力notifyui

DeepSeek Harness Token 余额监控插件:鲸鱼娘待机/扣费/复苏动画、峰谷计费、连续扣费飘字与会话费用统计。

64.6/100
综合分
282
GitHub 星标
2,498
npm 周下载
—/5
用户评分

数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-damage-pulse
npm 源 · dsh-damage-pulse 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-damage-pulse @ 4.3.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:34:30

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 94 处,展示前 63 条)
  • 读取本地文件
    lib/index.js:65
    if ((await lstat(current)).isSymbolicLink()) throw new Error("ARTIFACT_LINK_REFUSED");
  • 删除本地文件
    lib/index.js:75
    await unlink(target);
  • 读取本地文件
    lib/index.js:82
    const stat = await lstat(target);
  • 读取本地文件
    lib/index.js:84
    const bytes = await readFile(target);
  • 写入本地文件
    lib/index.js:89
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:92
    await writeFile(temp, JSON.stringify(value, null, 2) + "\n", {
  • 写入本地文件
    lib/index.js:96
    await rename(temp, file);
  • 删除本地文件
    lib/index.js:98
    await unlink(temp).catch((error) => {
  • 读取本地文件
    lib/index.js:118
    if (!(await lstat(file)).isFile()) throw new Error("ARTIFACT_NOT_FILE");
  • 删除本地文件
    lib/index.js:127
    await unlink(file);
  • 删除本地文件
    lib/index.js:147
    await rmdir(directory);
  • 写入本地文件
    lib/index.js:154
    await mkdir(dirname(target), { recursive: true });
  • 写入本地文件
    lib/index.js:156
    await copyFile(source, temp, constants.COPYFILE_EXCL);
  • 写入本地文件
    lib/index.js:157
    await rename(temp, target);
  • 读取本地文件
    lib/index.js:179
    const stat = await lstat(path);
  • 读取本地文件
    lib/index.js:181
    const journal = JSON.parse(await readFile(path, "utf8"));
  • 删除本地文件
    lib/index.js:553
    await unlink(await confinedPath(dataDir, name));
  • 删除本地文件
    lib/index.js:559
    await unlink(await confinedPath(dataDir, name));
  • 发起网络请求
    runtime/host/billing.mjs:1982
    const raw = await this.dependencies.request(script.request, identity.baseURL, identity.apiKey, current.controller.signal);
  • 发起网络请求
    runtime/host/billing.mjs:2875
    const raw = await this.dependencies.request({
  • 读取本地文件
    runtime/host/core.mjs:777
    source: readFileSync(entry, "utf8"),
  • 写入本地文件
    runtime/host/core.mjs:1140
    writeFileSync(temporary, content, {
  • 写入本地文件
    runtime/host/core.mjs:1144
    renameSync(temporary, file);
  • 删除本地文件
    runtime/host/core.mjs:1147
    unlinkSync(temporary);
  • 写入本地文件
    runtime/host/core.mjs:1219
    mkdirSync(this.dataDir, { recursive: true });
  • 读取本地文件
    runtime/host/core.mjs:1228
    const text = readFileSync(join(this.dataDir, "usage.jsonl"), "utf8");
  • 写入本地文件
    runtime/host/core.mjs:1297
    appendFileSync(join(this.dataDir, "usage.jsonl"), `${JSON.stringify(record)}\n`, "utf8");
  • 写入本地文件
    runtime/host/core.mjs:1417
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    runtime/host/core.mjs:1418
    for (const line of readFileSync(this.file, "utf8").split("\n")) try {
  • 写入本地文件
    runtime/host/core.mjs:1433
    appendFileSync(this.file, JSON.stringify({
  • 读取本地文件
    runtime/host/core.mjs:1969
    text = await readFile(this.path, "utf8");
  • 读取密钥环境变量
    runtime/host/core.mjs:8253
    if (node_process.env.LOG_TOKENS) console.log("|", cst.prettyToken(source));
  • 读取本地文件
    runtime/host/core.mjs:9122
    source = await readFile(join(home, filename), "utf8");
  • 读取本地文件
    runtime/host/manager.mjs:111
    if ((await lstat(current)).isSymbolicLink()) throw new Error("ARTIFACT_LINK_REFUSED");
  • 删除本地文件
    runtime/host/manager.mjs:121
    await unlink(target);
  • 读取本地文件
    runtime/host/manager.mjs:128
    const stat = await lstat(target);
  • 读取本地文件
    runtime/host/manager.mjs:130
    const bytes = await readFile(target);
  • 写入本地文件
    runtime/host/manager.mjs:135
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    runtime/host/manager.mjs:138
    await writeFile(temp, JSON.stringify(value, null, 2) + "\n", {
  • 写入本地文件
    runtime/host/manager.mjs:142
    await rename(temp, file);
  • 删除本地文件
    runtime/host/manager.mjs:144
    await unlink(temp).catch((error) => {
  • 读取本地文件
    runtime/host/manager.mjs:165
    if (!(await lstat(file)).isFile()) throw new Error("ARTIFACT_NOT_FILE");
  • 删除本地文件
    runtime/host/manager.mjs:174
    await unlink(file);
  • 删除本地文件
    runtime/host/manager.mjs:194
    await rmdir(directory);
  • 写入本地文件
    runtime/host/manager.mjs:201
    await mkdir(dirname(target), { recursive: true });
  • 写入本地文件
    runtime/host/manager.mjs:203
    await copyFile(source, temp, constants.COPYFILE_EXCL);
  • 写入本地文件
    runtime/host/manager.mjs:204
    await rename(temp, target);
  • 读取本地文件
    runtime/host/manager.mjs:226
    const stat = await lstat(path);
  • 读取本地文件
    runtime/host/manager.mjs:228
    const journal = JSON.parse(await readFile(path, "utf8"));
  • 删除本地文件
    runtime/host/manager.mjs:1093
    await unlink(temporary).catch((error) => {
  • 读取本地文件
    runtime/host/wechat.mjs:280
    access(this.options.clawbotIndex),
  • 读取本地文件
    runtime/host/wechat.mjs:281
    access(join(dirname(this.options.clawbotIndex), "ilink", "auth.js")),
  • 读取本地文件
    runtime/host/wechat.mjs:282
    access(join(dirname(this.options.clawbotIndex), "config.js"))
  • 删除本地文件
    runtime/host/wechat.mjs:384
    await unlink(join(this.dataDirectory, "pending_qrcode.json"));
  • 写入本地文件
    runtime/host/wechat.mjs:396
    await mkdir(this.dataDirectory, {
  • 写入本地文件
    runtime/host/wechat.mjs:403
    await writeFile(temporary, "{}\n", {
  • 写入本地文件
    runtime/host/wechat.mjs:409
    await rename(temporary, target);
  • 写入本地文件
    runtime/host/wechat.mjs:411
    await writeFile(target, "{}\n", {
  • 删除本地文件
    runtime/host/wechat.mjs:417
    await unlink(temporary).catch(() => void 0);
  • 读取本地文件
    runtime/host/wechat.mjs:484
    buffer = await readFile(path);
  • 执行外部命令来自配置/变量
    runtime/host/wechat.mjs:506
    execFile(invocation.command, [...invocation.args], {
  • 写入本地文件
    runtime/host/wechat.mjs:551
    await writeFile(messageFile, message, {
  • 删除本地文件
    runtime/host/wechat.mjs:578
    await rm(privateDirectory, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-home-paths@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-timer@deepseek-ai/cosmokit@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-app-boot
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 余额监控
  • 待机扣费复苏动画
  • 峰谷计费与会话费用统计
v4.3.22026-10-31
· dsh-damage-pulse 4.3.2 修复 4.3.1 遗漏 DeepSeek Harness 0.2.1-rc.4 兼容声明的问题。 · 4.3.0 与 4.3.1 的 peer 范围从 0.2.1-rc.3 直接跳到 rc.5,中间漏了上游实际发布过的 0.2.1-rc.4。rc.4 宿主按精确版本逐条校验,会把整包判为不兼容并拒绝安装。 · 4.3.2 在 13 条 @deepseek-ai/dsh-* peer 声明中补上 0.2.1-rc.4,现在覆盖 0.2.1-rc.1 到 rc.5。 · 运行代码没有变化,与 4.3.1 相比只有版本常量、peer 声明和 README 说明不同。 安装提示: · 4.3.2 刚发布时会受 pnpm 默认约 24 小时「新版本等待期」影响。只写包名可能仍选到旧版本并被拒,请指定精确版本 dsh-damage-pulse@4.3.2,或直接安装 Release 里完整的 .tgz。 · 已在 0.2.1-rc.5 桌面版隔离 profile 中安装实际 tgz 验证:插件加载、余额查询、Plan 额度页签均正常。rc.4 的兼容声明通过宿主同一套 semver 规则逐条核对。 · 安装或升级后请完整退出程序(含托盘)再启动,在悬浮卡右键的「卸载与更新」核对版本。
v4.3.12026-10-31
· dsh-damage-pulse 4.3.1 本版跟进 DeepSeek Harness 0.2.1-rc.5,并重写中英文 README。 · 兼容 DeepSeek Harness 0.2.1-rc.5。rc.5 会按精确 peer 版本加载插件,4.3.0 会被跳过;4.3.1 只追加该宿主版本,保留此前已验证的兼容段。 · README 收敛为安装、功能介绍、常见问题和社区支持,详细用法保留主图,辅助截图按需展开。 · 高级配置、HTTP 接口、微信兼容层、旧版恢复和源码开发移到 docs/REFERENCE.zh-CN.md 与 docs/REFERENCE.en.md。 · README 截图全部换为 rc.5 桌面版画面;赞助商使用记录与微信赞赏改为直接展示。 · 安装说明改为以 Release 完整包为准,并说明 rc.5 需要 4.3.1。 运行文件与本次 rc.5 桌面验收所用的安装目录逐字节相同。与 4.3.0 发布包相比,客户端只存在换行符差异(Windows 检出的 CRLF),归一化后内容一致;其余运行文件未变。已在 rc.5 桌面版隔离 profile 中安装实际 tgz 验证:插件加载、余额查询、Plan 额度页签和 Esc 关闭层级正常。安装或升级后请完整退出程序再启动。
v4.3.02026-10-25
· dsh-damage-pulse 4.3.0 本版让订阅额度只在确实开通套餐时出现,并跟进 DeepSeek Harness 0.2.1-rc.3。 · 详细用量的「Plan 额度」页签现在只在宿主确认已开通套餐时显示。只有 API key、没有订阅的供应商不再留下空卡片或失败查询。 · 401 / 403 / 404 以及「没有任何额度窗口」的应答都按未接入处理,30 分钟内不重复探测;5xx 与网络故障仍照常报错,不会被误判成「没有套餐」。 · 页签每次打开用量明细时探测一次,肯定结果缓存 5 分钟,否定结果不缓存:刚开通套餐后重新打开窗口即可看到。 · 兼容 DeepSeek Harness 0.2.1-rc.3,peer 范围同时保留此前已验证的版本。 · 保留 4.2.9 的 GLM Coding Plan 额度窗口、自定义余额脚本 display 文案与额度型供应商的滚动窗口布局,以及 4.2.8 的余额查询连接错误修复。 已在 DeepSeek Harness 0.2.1-rc.3 桌面版以实际 tgz 在隔离 profile 中验证:无套餐时页签隐藏、只有消费概览;注入合成套餐快照后页签出现并渲染 5 小时 / 每周的已用、剩余与下次刷新时间;Esc 只关闭最上层窗口。套餐判定使用合成应答,未请求真实套餐接口。安装或升级后请完整退出程序再启动。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-damage-pulse 为 DeepSeek Harness 提供用量、费用与余额监控:查看单次调用、会话累计和历史统计,让鲸鱼娘陪你观察每次 Token 消耗。 安装 · 功能介绍 · 常见问题 · 高级配置与接口 · 更新记录 感谢模型赞助商 Fastai 支持开发。赞助说明 安装 当前源码版本:4.3.2,适配 DeepSeek Harness 0.2.1-rc.1 至 rc.5。 4.3.0 与 4.3.1 缺少 0.2.1-rc.4 的兼容声明,会被该宿主的兼容检查跳过。4.3.2 刚发布时会受包管理器约 24 小时的新版本等待期影响;需要立即安装时请指定版本,或使用 Release 里完整的 .tgz。 在桌面版「插件」页添加包名 dsh-damage-pulse,或下载 Release 中完整的 .tgz 后添加其文件路径。也可用命令行安装 npm 当前发布版: dsh plugin --profile desktop add dsh-damage-pulse 将 desktop 换成实际使用的配置档名。安装后完整退出桌面程序(含托盘)再启动,在悬浮卡右键的「卸载与更新」核对版本。
展开完整文档(README 剩余 1 节)
dsh-damage-pulse

为 DeepSeek Harness 提供用量、费用与余额监控:查看单次调用、会话累计和历史统计,让鲸鱼娘陪你观察每次 Token 消耗。

安装 · 功能介绍 · 常见问题 · 高级配置与接口 · 更新记录

感谢模型赞助商 Fastai 支持开发。赞助说明

安装

当前源码版本:4.3.2,适配 DeepSeek Harness 0.2.1-rc.1 至 rc.5。 4.3.0 与 4.3.1 缺少 0.2.1-rc.4 的兼容声明,会被该宿主的兼容检查跳过。4.3.2 刚发布时会受包管理器约 24 小时的新版本等待期影响;需要立即安装时请指定版本,或使用 Release 里完整的 .tgz。

在桌面版「插件」页添加包名 dsh-damage-pulse,或下载 Release 中完整的 .tgz 后添加其文件路径。也可用命令行安装 npm 当前发布版:

dsh plugin --profile desktop add dsh-damage-pulse

将 desktop 换成实际使用的配置档名。安装后完整退出桌面程序(含托盘)再启动,在悬浮卡右键的「卸载与更新」核对版本。

- 需要指定版本时,使用对应 Release 的预编译 .tgz;不要直接安装仓库 URL、github: 地址、Source code 压缩包或未打包的源码目录,它们缺少运行载荷。
- 页面提示已安装时,先移除再添加完整包;保留配置和历史数据,不用清空账本解决启动问题。
- 官方 API 余额通过 DSH 凭据机制配置 DEEPSEEK_API_KEY;没有余额凭据也可记录用量和费用。

旧版宿主兼容说明保留 0.1.0-rc.5、0.1.1-rc.2、Desktop 2.0.4(0.1.2-alpha.1)、0.1.5-alpha.2 等旧版兼容段,实际范围见 package.json。声明兼容不等于每个版本都逐一实机验收;本次验收使用 rc.5 桌面版。

标准包自带会话金额:优先使用 conversation.session.header.actions;宿主提供 sidebar.workspaces.sessionRow.trailing 时追加注册。旧客户端使用严格 fail-closed 的兼容桥,只有唯一匹配原生会话行时才显示,检测到已有金额或正式席位即停用,避免重复。

旧宿主沿用自身 lock 与依赖,不混装不同预发行版本。更多恢复与源码部署说明见参考文档。

功能介绍

本轮 rc.5 桌面截图使用合成示例数据;Plan 额度与部分 Token 概览使用接口替身展示,不代表真实供应商查询结果。

余额悬浮卡与鲸鱼娘

显示余额、本次输入/输出/缓存 Token、首字与总耗时,以及峰谷状态。余额每 60 秒校准;查询不可用时不显示金额,本地统计继续工作。支持拖动、键盘移动和位置记忆,右键进入各功能面板。

鲸鱼娘会待机、眨眼,并对扣费、缓存未命中、余额耗尽和充值恢复作出反应;可以单独隐藏。动画默认按卡片宽度的 80% 显示,已有自定义比例保留。

查看无余额状态、右键菜单、工作区与角色细节

用量明细、历史统计与 Plan 额度

对话流显示单次用量,输入区显示会话累计;独立明细窗口支持拖动、缩放、时间/模型/项目/对话筛选、列选择及费用构成查询。统计概览提供今日、近 7 天、近 30 天与全部历史的消费、请求、Token 和缓存指标。

「Plan 额度」显示订阅的 5 小时/每周窗口、剩余额度和下次刷新时间;只有确认存在套餐时才出现,仅有 API key 不会显示空页签。

查看统计概览、列设置、费用构成与 Plan 额度

费用浮层为便于阅读已展开完整内容,日常界面内可滚动查看。

计费规则与供应商余额

按 provider + model 判断计费资格,未知模型不套用 Flash 价格;输入、缓存与输出分项计费,推理 Token 不重复叠加。历史保存在本地持久账本,重启后恢复,事件重放不会重复扣费。

可编辑固定价、峰谷价、阶梯与倍率,也可为第三方供应商配置余额查询脚本,显示金额、自定义文字或额度窗口。DeepSeek 默认高峰为北京时间工作日 09:00–12:00、14:00–18:00;周末(含调休上班)与法定节假日全天按谷价。内置价格按生效时间分段,具体价格以官方说明及已加载规则为准。

查看余额脚本与高级设置

脚本返回格式、历史计价和动画比例配置见高级参考。

提醒与微信通知

可设置每日预算、峰谷切换和连续缓存命中异常提醒,通过鲸鱼娘气泡或 ClawBot 微信发送。预算提醒不会阻止或取消请求。业务通知默认关闭,测试消息可独立发送;设置面板提供扫码登录、连接状态、刷新、重连与断开操作。

查看提醒规则与微信示例

模块管理与更新

桌宠、数据概览、通知、计费规则和微信渠道五个模块可独立卸载,状态在重启与升级后保留。默认保留配置和历史;取消保留选项会清除对应模块的数据。整体卸载会停止用量采集。

「卸载与更新」可检查 GitHub Release,并在校验版本、下载来源与 SHA-256 后安装。正常升级保留设置、账本和已卸载模块状态。

常见问题

- 没有余额? 先检查对应供应商凭据与连接;缺少余额凭据不影响用量统计。支持 IPv4 TUN/Fake-IP(198.18.0.0/15),暂不支持 IPv6 或 IPv4-mapped Fake-IP;查询失败时不显示金额或错误码。
- 安装后不出现或仍是旧界面? 完整退出并重启目标 profile,核对插件自身版本;旧源码集成用户检查是否重复挂载。若宿主因启动失败禁用了插件,修复安装后需重新启用。
- 缺少 runtime/manifest.json? 换用 npm 包或 Release 的完整 .tgz,不要直接安装源码。包名安装版本偏旧时,核对 registry 和包管理器新版本等待策略,或使用目标 Release 的 tgz。
- 旧会话没有金额? 重启后等待历史投影补齐;标准包已有会话金额能力,无需手工改宿主源码。异常时附宿主版本、插件版本和错误内容到 Issues。

接口、ClawBot 配置、旧版恢复及源码开发见高级参考。历史修复见 Releases。

社区与支持

欢迎在 LINUX DO 交流。感谢社区贡献者,包括 @gurio-wine(PR #17,桌面卡片位置与鲸鱼娘开关修复)。MIT 许可证。

模型赞助商

Fastai 支持本项目开发,提供多家模型服务。链接含邀请标记,符合条件的充值会为作者提供返利和 Token,用于持续维护。GPT 分组不能保证不降智,建议优先考虑其他分组。 插件安装和全部功能均不依赖中转服务或充值。

微信赞赏,支持项目开发
预览分享卡片长什么样 ↓wssfk12138/dsh-damage-pulse
分享 · DeepSeek Harness Hub
wssfk12138/dsh-damage-pulse

DeepSeek Harness Token 余额监控插件:鲸鱼娘待机/扣费/复苏动画、峰谷计费、连续扣费飘字与会话费用统计。

回到顶部