dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
· 把 DeepSeek 官方余额与 OpenCode Go 三个用量窗口(5 小时 R / 本周 W / 本月 M)合并进同一个悬浮胶囊,另带一个同名设置页。
中文 · English · 更新日志 · 反馈
*An unofficial DeepSeek Harness plugin that shows your DeepSeek balance and OpenCode Go usage (Rolling / weekly / monthly) in one floating pill, with click-to-refresh, border-flash feedback, drag-to-snap and a hover popover.*
浮窗与悬停浮层
其它
require('react'),由宿主提供)。前置:DeepSeek Harness 桌面版(应用自带 node / pnpm,无需另装)。本插件按 DSH 官方插件规范编写,不需要手写 profile 的 package.json / cordis.patch.yml,也不要在 profile 目录里跑 pnpm。
在 DSH 里打开 插件管理页 → 「安装插件」对话框 → 粘贴下面任一 spec → 安装(对话框调用 pnpm,一次只能装一个):
方式 · 粘贴的 spec GitHub 直装(推荐) · github:verneuil/dsh-opencode-go-usage npm 安装 · dsh plugin --profile web add @verneuil/dsh-opencode-go-usage 固定某个版本 · github:verneuil/dsh-opencode-go-usage#v3.0.5(换成任意已发布 tag) Release 包 · https://github.com/verneuil/dsh-opencode-go-usage/releases/download/v3.0.5/dsh-opencode-go-usage-3.0.5.tgz Release 直链(始终最新) · https://github.com/verneuil/dsh-opencode-go-usage/releases/latest/download/dsh-opencode-go-usage.tgz 离线 tgz · file:D:/你的路径/dsh-opencode-go-usage-3.0.5.tgz
命令行等价写法(dsh plugin 会把声明了 dsh.bundle 的依赖自动加进 profile 的 bundles,无需手写 patch):
dsh plugin --profile web add github:verneuil/dsh-opencode-go-usage装完按页面提示刷新(替换已安装的 JavaScript 模块代需要重启 DSH)。
cordis.patch.yml,符合要求。设置 → 插件 → OCG 余量查询。设置页分三个标签:用量数据(默认)/ 浮窗管理 / API Key;
标签栏右侧常驻 恢复默认设置,任何标签下都能一键写回。
页面顶部标题右侧是 GitHub 图标 + 当前版本号(如 v3.0.5),点击图标打开本插件仓库。
用量数据
自动 / ¥ 人民币 / $ 美元;下方小字显示当前汇率、汇率更新时间与刷新结果。模型:X(总配额:Z,消耗:Y,剩余:W);金额按参考模型的 Go 档月度配额 × 本月已用百分比折算。浮窗管理
DS余额 / OCG配额剩余 —— 决定左侧那一行取哪份数据(DS 余额包含赠金)。DS余额 / OCG配额剩余 —— 可只显示其一、两个都显示,或都不显示(此时浮层只留三条进度条);点击下拉范围之外会自动收起。API Key
共同行为
因为自带设置页,宿主侧调用了官方的 settings.configure({ auto: false }) 关掉自动生成的表单页,避免出现两个重复的配置界面。
五张均为界面示意渲染:按插件的真实样式与宿主主题令牌生成。设置页两张取自「用量数据」标签(含配额参考模型选择、金额显示计价币种、套餐配额一行小字);总览图含悬停浮层的最新形态(账户余额行 + 配额剩余行 + 三条进度条,固定宽度 232px,金额右对齐)。
浮窗 · 浅色 · 浮窗 · 深色 · 设置页 · 浅色 · 设置页 · 深色 ·
形态与配色总览(更新中 / 成功 / 失败 / 三档配色 / 极简模式 / 最精简形态 / 关掉余额后变窄)
GET https://opencode.ai/zen/go/v1/usage # OpenCode Go 用量
Authorization: Bearer <OpenCode Go API Key>
GET https://api.deepseek.com/user/balance # DeepSeek 官方余额
Authorization: Bearer <DeepSeek API Key>
GET https://opencode.ai/v2/docs/console/go # OpenCode Go 模型清单 + 各模型月度配额(服务端渲染表格)
GET https://open.er-api.com/v6/latest/USD # USD/CNY 汇率(主源,免密钥)
GET https://api.frankfurter.app/latest?from=USD&to=CNY # USD/CNY 汇率(备源,免密钥)用量接口返回 { usage: { rolling, weekly, monthly } },每个窗口含 status / percent(已用百分比)/ resetsAt;余额接口返回 balance_infos[](优先取 CNY 行)。插件界面默认显示「已使用」,可切换为「剩余」;内部始终以「已用」为基准。 宿主半侧负责拉取与解析(两把 Key 都不出宿主进程),客户端只读宿主写入的配置投影。
模型清单与汇率跟随刷新一起更新:手动刷新(按钮 / 点击浮窗)强制重抓,自动刷新按 模型表 24 小时 / 汇率 1 小时复用缓存;两者都抓不到时回退到内置快照(go-data.js,生成于 2026-10-22:29 个官方模型 + 汇率 6.689327),并在界面上点名报错。配额折算取的是模型表里的 Go 档月度配额。
Key 来源(两侧各自独立,按优先级):
OPENCODE_GO_API_KEY(其次 OPENCODE_API_KEY),DeepSeek 取 DEEPSEEK_API_KEY。部分 · 位置 · 说明 Bundle 清单 · package.json · dsh.bundle.patch + dsh.client(platform web、immediately)+ icon + locale/*.json 显示元数据 Loader patch · cordis.patch.yml · 插入一行 id: opencode-go-usage(本行 id 同时是设置表单的 ns) 宿主半侧 · index.js · export const Config(schemastery)+ apply(ctx, config);拉取、解析、写回快照、自动刷新 客户端半侧 · client.js · window.__ModuleLoader__ 惰性工厂;只 require('react'),注册进 shell.overlay(浮窗)与 settings.section(设置页)
设置页覆盖了常用项;下表中的字段也可以直接改本行 patch 的 config。
字段 · 说明 apiKey · OpenCode Go 的手动 API Key(secret)。留空则自动使用 DSH 凭据库 deepseekApiKey · DeepSeek 的手动 API Key(secret)。留空则自动使用 DSH 凭据库 refreshMinutes · 自动刷新间隔(分钟,默认 5);一轮同时刷新余额与用量 widgetVisible · 浮窗显示开关 showBalance · 浮窗左侧是否显示余额那一行(默认关) pillBalanceSource · 浮窗左侧余额数据:deepseek DS 余额(默认)/ quota OCG 配额剩余 tipShowBalance、tipShowQuota · 悬停浮层里两行余额是否显示(默认都开;都关则浮层只留进度条) quotaRefModel · 配额参考模型 ID(默认 deepseek-v4.1-flash,可选项来自官方模型表) currencyMode · 金额计价币种:auto 自动(默认)/ cny 人民币 / usd 美元 percentMode · 用量进度口径:used 已使用(默认)/ left 剩余 widgetAnchorX/Y、widgetOffsetX/Y · 浮窗锚定(拖动时由客户端写入;默认窗口左上角 11 / 50) refreshRequest · 手动刷新计数(点击浮窗时由客户端递增) refreshTick · 宿主每轮拉取前自增的「更新中」信号(客户端只读,用来点亮边框反馈) minimalMode · 极简模式:三环嵌套(余额取整显示在环旁,默认开) keyStatus、keyHint、usageError、lastUpdated、usage · OCG 用量的派生快照(宿主写入,客户端读取) balanceKeyStatus、balanceKeyHint、balanceError、balance · DeepSeek 余额的派生快照(宿主写入,客户端读取) goModels、goModelsAt、goModelsSource、goModelsError · 模型清单与配额的派生快照(source = live 实时 / snapshot 内置快照) fxUsdCny、fxAt、fxRateDate、fxSource、fxError · USD/CNY 汇率、汇率数据日期与采集时刻的派生快照
shell.overlay(replaceRisk: none,点击穿透层,条目自行 opt-in 指针事件);用自有 id 注册,属于「加在既有条目旁边」,不替换任何官方条目。conversation.composer.dock,不复刻官方组件。--dsw-alias-*:令牌改名最多让外观退化,不会让渲染崩溃;无字面色值。dsh-client-ui-primitives):这类包随时会变,且普通 JS 插件没有类型检查;浮窗的控件全部自写。TypeError 让整条目静默不激活。remote.settings.describe() 读取;写回在 HMR 事务之外提交(避免 HMR transactions cannot be nested)。-- 或把空值持久化。api.deepseek.com(账户余额)、opencode.ai(用量与官方模型表)、open.er-api.com 与 api.frankfurter.app(汇率,仅在选择「自动」币种时)。redirect: "error"),避免凭据被转发到其它主机。usageError 里给出可读文本)。sk-****5590)。auto 时中文 ¥、英文 $),不改变任何实际账单。MIT © 2026 verneuil
问题与建议请开 Issue,欢迎 PR。版本变更见 CHANGELOG.md。