← 返回列表
⚠ 装前注意
DeepSeek Harnessdsh的花费指示器:Web…
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/15 · 已提供中文文档
DeepSeek Harness 成本仪表:浮动小部件,显示 DeepSeek API 支出与余额、高峰/非高峰费率指针,当余额低于阈值时闪烁红色警报。
综合分
30.7
GitHub 分
30.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add wjingshan/dsh-cost-gauge未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-cost-gauge(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 10:27:31
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-cost-gauge DeepSeek Harness(dsh)的花费指示器:Web 界面左侧靠上的方形浮动窗,实时显示会话花费与余额;半圆表盘指针随北京时间走动,弧色按当日费率带显示(绿=标准 / 黄=高峰,周末全天绿);余额低于阈值时顶部红灯报警;支持拖拽缩放与最小化(状态灯 + 倒计时饼图 + 模型徽标)。 🔀 相关项目:v1.4 起新增的「极简时钟 / 多皮肤」改版线已独立为 dsh-cost-gauge-plus;本仓库保持 v1.0 经典形态(方形指针表)继续开发,两者互不干扰。 截图 | 展开态 | 最小化态 | | --- | --- | | | | 左:展开态(工作日高峰:表盘绿/黄双色、黄色弧段=高峰时段);右:最小化态(费率灯 + 所剩时间饼图 + 会话费/余额 + 模型缩写徽标)。 本次更新(v1.6.0) | 玻璃化前后(左:未开启 · 右:开启 —— 只有压进对话文字的那块变了) | | --- | | | - 全新的玻璃化表现:开启后,浮窗压进「对话内容列」的那一块会变成灰色玻璃: - 标题栏 / 底部「会话花费·余额」:稍微透明(可调); - 中间区域的背景:完全透明 —— 露出底下被模糊的对话内容; - 中间的仪表盘与文字:只保留明度(去掉色相与饱和度 = 灰阶),并且每个颜色的不透明度 = 它的明度(例如明度 80 → 不透明度 80%),所以不同颜色的透明程度各不相同。 - 只作用在压进对话区的那块矩形里:没有进入对话区的部分完全保持原样(连仪表盘的颜色都不变)。做法是在 SVG 滤镜内部按矩形裁切 —— 洞内用变换结果、洞外用原图,洞边按「边缘过渡」羽化。 - 6 个设置项(设置面板里,全部实时生效并记住): | 设置 | 范围 | 默认 | 说明 | | --- | --- | --- | --- | | 磨砂强度 | 0–24px | 9px | 模糊半径,越大越糊 | | 透明强度 | 0–100% | 47% | 中间白雾的浓度,越大越通透 | | 边缘过渡 | 0–40px | 14px | 正常区 ↔ 玻璃区之间的过渡宽度(0 = 硬边) | | 标题/底部透明 | 0–60% | 15% | 标题栏与底部行的透明度(0% = 完全不透明) | | 内容不透明度 | 0–100% | 100% | 在明度之上再乘的系数:100% = 严格按明度,0% = 看不见(全程线性,每档都有效) | | 明度算法 | Rec.709 / HSL / HSV | Rec.709 | 用哪种「明度」定义灰度与不透明度 | - 修复:拖动「内容不透明度」或切换「明度算法」时,重建滤镜会把洞口矩形重置,导致变换消失、要等下一秒才恢复(表现为「拉滑杆没反应 / 不渐变」);现在即时生效。顺带把该滑杆范围从 0–200% 收回到 0–100%。 本次更新(v1.5.3) - 修复:会话花费长时间不动(记账游标越界):会话日志被压缩/重写后 seq 空间会变短,而账本里持久化的 cursor 仍停在旧 seq 空间,于是 snapshotEvents(cursor, 日志末尾) 永远返回空数组,新事件再也折不进账本——表现为「会话花费」长时间不涨、点了归零后一直是 ¥0.00。现在检测到 cursor > session.seq 时自动重建该会话账目,并从当前日志重新回放。 - 修复:表盘指针过了午夜逆时针倒退:dialPosOfHour() 在 00:00–06:00 段方向写反(90 - 15t),指针到弧顶后又折回左端。改为夜间段与白天段同为「左端 → 弧顶 → 右端」单向扫过:夜间 18:00 左端 → 24:00 弧顶 → 次日 06:00 右端,白天 06:00 左端 → 12:00 弧顶 → 18:00 右端;06:00 与 18:00 两处为瞬时跳变。 - 设置面板底部标注当前版本号:宿主 /state 下发 version(读自 package.json),设置面板最下方用 10px 次要色小字显示 dsh-cost-gauge vX.Y.Z;取不到版本时整行隐藏。 本次更新(v1.5.2) | 设置:磨砂强度 / 透明强度 | 磨砂前后(左:未开启 · 右:开启) | | --- | --- | | | | - 磨砂强度 / 透明强度可调(设置面板里两个滑杆,实时生效并记住): - 磨砂强度 0–24px:模糊半径,越大越糊(0 = 只保留通透的白雾); - 透明强度 0–100%:越大越通透、白雾越淡,越能看清底下的内容。 - 标题栏不磨砂:磨砂只作用于标题栏以下,标题栏始终原样不透明 —— 方便一眼定位、随手拖动。 - 边缘改为渐变过渡:磨砂区与普通区之间不再是"一条线",而是随磨砂强度自动加宽(5–18px)的渐变;实现上把"洞口"拆成「横向补集 ∪ 纵向补集」两段渐变遮罩(De Morgan),磨砂层用同一形状做遮罩,两侧同步渐隐。 本次更新(v1.5.1) | 同一位置对比:未开启(左) / 开启磨砂后(右) | | --- | | | - 磨砂终于看得出来:磨砂层原来只有 5% 白色 + blur(12px)——深色对话背景被模糊后还是同样的深色,等于看不出变化。现在改为乳白渐变 + 轻微提亮 + 内描边(blur(9px) saturate(1.2) brightness(1.12)):实测同一块背景区域亮度 29 → 83,而底下文字模糊后仍保留结构(能看出文字位置)。 - 找不到开关? 未开启磨砂时,只要浮窗压住对话文字(遮挡 ≥ 浮窗面积 35%),会提示一次「可在设置里开启『遮挡对话区时磨砂玻璃』」。 - 修复位置卡在左上角:窗口最小化 / 后台标签页里加载时视口宽高为 0,「钳制到窗口内」会把浮窗位置算成 (0,0) 并写进 localStorage;现在视口为 0 时不做钳制。 本次更新(v1.5.0) | 设置:新增「遮挡对话区时磨砂玻璃」开关 | | --- | | | - 窗口尺寸变化时自动让位:拉伸/缩放窗口后,如果浮窗压住了中间对话的文字区,会自动挪进「文字区 ↔ 侧栏」之间的留白:留白够宽就停在留白正中、靠下部分(贴窗口底部;若会压到输入框,则停在输入框正上方 8px),留白不够宽才退回侧栏那一列。 - 优先级:中间文字区(绝不遮挡)> 底部输入框 > 两侧侧栏;同分时保持「偏左往左、偏右往右」并尽量少移动。 - 只在窗口尺寸变化时触发(150ms 防抖),不干扰手动拖拽;竖版小条模式下不参与。 - 何时能停进留白:单侧留白需 ≥ 插件宽 + 16px。默认 216px 宽时约需窗口 ≥ 1658px(中间列 ≥ 1378px,侧栏 280 展开、右侧栏关闭);缩到最小 180px 时约需 1458px。 - 遮挡对话区时的局部磨砂玻璃(新增设置项,默认关闭):开启后,浮窗与对话文字区相交的那一块会变成半透明磨砂(backdrop-filter),能看清被压住的文字;只磨砂真正遮挡文字的部分 —— 停在留白里不会变磨砂。实现为「背景层挖洞 + 磨砂层铺洞」(mask-composite: exclude)。 - 侧栏收起时自动停靠:DSH 自动收起侧栏(或视口很窄)时,竖版小条自动停到侧栏右侧;侧栏展开时停到「会话 / 工作区」标题下方;退出竖版时回到原来的位置(停靠位置不写入本地存储)。 - 竖版小条宽度 48px → 36px,更省空间;点一下仍可展开。 - 内部修正:让位与磨砂判定用的「对话内容区」改为按 --dsh-chat-content-width(面板内居中的内容列)计算,并正确解析 clamp()/calc() 表达式;取不到时依次退回「输入卡宽度 → 整个中间面板」,避免把面板两侧的留白误判成对话区。 本次更新(v1.4.0) | 窗口变窄 → 竖版最小化 | | --- | | | - 窗口自适应(竖版最小化):用 ResizeObserver 观察视口宽度,≤ 779px(即 | | | - 费用计算口径修正:改为回放会话日志、按「事件发生时刻的费率 × 当时的模型」逐笔计价——空闲时段按空闲价、高峰时段按高峰价,两者相加;修掉了旧版"进入高峰后整段历史按高峰价重算(费用翻倍)"的问题。 - 新增「记录 / 归零」两个图标按钮(表盘左上/右上,无边框小图标,悬停显示提示):记录面板支持 总时间 / 年 / 月 / 周 筛选与翻页、柱状图(峰谷/模型堆叠)、明细表格;明细只列有使用记录的时段;范围可切 本会话 / 全部会话;面板可拖动、可覆盖指示器、越界自动拉回窗口内。归零为两步确认,把当前累计作为基线后从 ¥0.00 重新累计(不删历史)。 - 导出 Excel 升级为真正的 .xlsx(OOXML,零依赖手写 zip 写入器,Excel/WPS 直接打开无格式警告):两个工作表 + 首行导出说明;默认文件名 _-.xlsx;可在设置里指定默认保存文件夹(已设置则直接落盘不弹窗),导出后 📂 打开 直接定位到文件。 - 宿主侧记账:每 15 秒回放会话事件日志并持久化到 ~/.dsh/cost-gauge/ledger.json,仪表盘没打开时也在记;记录覆盖会话完整历史。 - 表盘端头修正:黄段(高峰)在内部边界(9:00 / 12:00 / 14:00)按圆头半径内缩 5.43°,圆头外缘正好压线、不再盖住相邻绿段;18:00 端头保持原来的圆头外观。 - 中英双语界面:跟随 DSH 客户端语言设置,取不到时跟随系统/浏览器语言(zh → 中文,其余 → English)。 功能 - 🔲 方形浮动窗:默认停在界面左侧靠上,可按住标题栏拖动,位置自动记忆。 - 📱 窗口自适应:窗口变窄(视口 ≤ 779px,即 底部输入框 > 两侧侧栏。 - 🧊 遮挡对话区的玻璃化(设置里 6 个选项):压进对话文字的那块变成灰色玻璃 —— 标题栏/底部行半透明、中间背景全透明、仪表盘与文字按「不透明度 = 明度」灰化;没进入对话区的部分保持原样。 - 💰 会话花费:按官方峰谷价实时换算当前会话的 token 花费(缓存命中/未命中、输出分桶计价)。 - 逐笔按当时费率计价:空闲时段产生的用量按空闲价、高峰时段产生的用量按高峰价,两者相加;进入高峰不会把之前的空闲用量也按高峰价重算。 - 🧭 费率指针:指针摆向「标准(空闲)」或「翻倍(高峰)」,并显示距下一次切换的倒计时。 - 高峰(翻倍):北京时间周一至周五 09:00–12:00、14:00–18:00 - 空闲(标准):其余时间(含周六、周日全天),价格为高峰的一半 - 🔴 红灯报警:余额低于阈值(默认 ¥10)时,窗口顶部小红灯闪烁报警;余额充足时绿灯。 - ⚙️ 阈值可设:点齿轮即可改报警阈值,立即生效并记住(localStorage)。 - 🗒 每日花费记录(表盘左上角图标):宽面板展示花费记录,支持 总时间 / 年 / 月 / 周 时间筛选与翻页、柱状图(按峰谷或按模型堆叠)、明细表格与合计;范围可切 本会话 / 全部会话;明细只列有使用记录的时段(柱状图仍保留完整时间轴);面板可拖动、可覆盖指示器,越界会自动拉回窗口内。 - ⬇ 导出 Excel:导出当前筛选范围为真正的 .xlsx(OOXML;手写最小 zip 写入器,零第三方依赖,Excel/WPS 可直接打开、无格式警告),含 2 个工作表:按峰谷拆分、按模型拆分;两个表的首行是导出说明(会话名称、计费时间段、时间筛选、上次归零、导出时间);默认文件名 = _-.xlsx(如 花费指示器插件_20260808-20260911.xlsx,全部会话则为 全部会话_...);导出成功后可点 📂 打开 在资源管理器中定位文件。 - 📁 默认保存位置:在设置里指定文件夹后,导出直接落盘、不弹窗;未设置时会弹原生「选择文件夹」对话框并把所选目录记为默认(设置持久化在 ~/.dsh/cost-gauge/ledger.json)。 - ↺ 会话花费归零(表盘右上角图标):两步确认后把当前累计作为基线,之后从 ¥0.00 重新累计(不删除历史记录)。 - 🧮 宿主侧记账(日志回放):宿主每 15 秒回放各会话的事件日志(assistant/message / assistant/attempt 自带 usage 与时间戳,request/header 提供当时的模型),按「事件时刻的费率 × 当时的模型」逐笔计入「日期 × 峰谷 × 模型」并持久化到 ~/.dsh/cost-gauge/ledger.json;llm/retry-started 与相同 turn/step 的重复样本按官方投影口径替换而非累加。因此仪表盘没打开时也在记,且记录覆盖会话日志里的完整历史(不限于插件安装之后)。 - 🌐 中英双语界面:跟随 DSH 客户端语言(设置 → 通用 → 语言),取不到时跟随系统/浏览器语言(zh 显示中文,其余显示英文)。 安装 一键安装(推荐,无需 git) PowerShell 复制整行回车(自动补齐 dsh,无需本机 git): irm https://raw.githubusercontent.com/wjingshan/dsh-cost-gauge/main/install.ps1 | iex 一键安装自动装最新稳定版(GitHub 最新 Release tag,发版后无需改脚本)。想装开发版或锁指定版本,先下载脚本再带参数运行: irm https://raw.githubusercontent.com/wjingshan/dsh-cost-gauge/main/install.ps1 -OutFile install-dsh-cost-gauge.ps1 .\install-dsh-cost-gauge.ps1 -Ref main # 装 main 开发版 .\install-dsh-cost-gauge.ps1 -Ref v1.5.0 # 锁指定版本 仓库尚未推送时可先用本地脚本装(-Source 指定本地目录): powershell -ExecutionPolicy Bypass -File .\install.ps1 -Source .\dsh-cost-gauge 手动安装 推荐:跟 main 分支 —— 插件市场能正常提示并执行「更新」 dsh plugin --profile web add github:wjingshan/dsh-cost-gauge#main 从本地目录安装(链接方式,改 lib/.js 后刷新页面即生效) dsh plugin --profile web add link:/path/to/dsh-cost-gauge 锁版本(不推荐,见下方说明:市场不会自动更新) dsh plugin --profile web add github:wjingshan/dsh-cost-gauge#v1.6.0 dsh plugin --profile web add https://github.com/wjingshan/dsh-cost-gauge/archive/refs/tags/v1.6.0.tar.gz ⚠️ 关于插件市场的「更新」:市场判断 git 安装能不能更新,看的是 commit 有没有变,不是版本号。 - ✅ 想让市场能更新:装分支写法(#main,或省略 ref 的 github:owner/repo)。 - ❌ 别装成固定 tag(github:owner/repo#v1.6.0):市场的更新命令会把同一个 tag 再装一遍,于是必然报「更新命令执行完成,但版本没有变化,原因未能确认」——点重试也不会成功,只能手动改 spec。 - 用 Release tarball 直链安装的市场不会提示更新(锁文件里没有可比较的 commit),需要更新时手动重装。 装完重启 dsh web,刷新页面即可看到左上角浮动窗。 dsh web 配置 余额阈值既可在浮动窗里点齿轮改,也可在 profile 的 cordis.patch.yml 里覆盖: - update: - id: cost-gauge config: threshold: 10 # 余额报警阈值(人民币) baseUrl: 'https://api.deepseek.com' apiKeyEnv: 'DEEPSEEK_API_KEY' refreshSeconds: 30 # 余额查询缓存秒数 覆盖时需完整重述该行需要的全部 config 键(patch 按行整体替换 config,不做深合并)。 发布新版本 改完代码后,用 release.ps1 一条命令完成:提交 → 升版本 → 推送 → 创建 GitHub Release。 .\release.ps1 -Message "feat: 新增 xxx" # 默认 patch(1.0.0 → 1.0.1) .\release.ps1 -Type minor -Message "feat: 新增 xxx" # minor(→ 1.1.0) .\release.ps1 -Version 1.2.0 -Message "feat: 新增 xxx" # 显式版本号 .\release.ps1 -Message "..." -DryRun # 预演(不真正执行) - Release 说明默认从「上一个 tag 以来的提交历史」自动生成,也可 -Notes "…" 自定义。 - 创建 Release 需要 PAT:设置环境变量 GH_TOKEN(fine-grained,仓库权限 Contents 读写),或运行时按提示输入。 - 发版后无需改任何脚本——install.ps1 会自动安装最新 Release tag。 数据与安全 - 余额经官方 GET /user/balance 查询,API Key 只在宿主侧解析(credentials 接缝 / 环境变量),绝不下发浏览器。 - 花费由宿主读取会话的 tokenUsage 投影、按官方峰谷价换算;缓存写入不单独计费(与官方口径一致)。 - 纯 ESM、零运行时依赖:宿主不 import 任何包,浏览器半身是原生 JS(无 React)。 目录结构 dsh-cost-gauge/ ├── package.json # dsh.bundle(宿主)+ dsh.client(浏览器)声明 ├── cordis.patch.yml # 插件行插入(含默认 config) ├── install.ps1 # 一键安装脚本(irm … | iex) ├── release.ps1 # 一键发布脚本(提交+升版本+推送+创建 Release) ├── docs/ │ └── alipay-qr.jpg # 支付宝收款码(README 赞助区引用) ├── lib/ │ ├── index.js # 宿主半身:余额查询 + 花费统计 + 峰谷判定 + /api/cost-gauge/ 路由 │ └── client.js # 浏览器半身:方形浮动窗(指针表 + 红灯 + 拖动 + 阈值设置) └── README.md 反馈与建议 用得顺手、有想法,或者踩到坑了,都欢迎到 Issues 说一声——我会尽量回复。 - 🐛 报 Bug:附上 dsh 版本、插件版本和复现步骤;有截图最好(浮动窗截图最直观)。 - 💡 提建议 / 新功能:直接开 issue 描述使用场景即可,不必先写实现方案。 - ⭐ 觉得好用:点个 Star 就是最实在的支持,也能让更多人看到这个插件。 想直接提交代码的话,建议先开个 issue 对齐思路再发 PR,避免白做。 License MIT ☕ 赞助 如果这个插件帮到了你,欢迎请我喝杯咖啡 ☕ 感谢你的支持! 💙
扫码进群