ds-deepseek-usage
已验证ds-deepseek-usage · v1.1.1 · MIT · Web 界面
DeepSeek account usage monitor (HP/MP) — sidebar module with balance and token usage bars; WeChat scan login via bundled CLI (login-cli.mjs), hourly visible-only sync, and real-time local token increments.
安装
dsh plugin add ds-deepseek-usage 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
ds-deepseek-usage
DeepSeek 账号用量监视插件 —— 为 DeepSeek Harness (DSH) Web/桌面端提供仿游戏风格的 HP/MP 侧边栏模块。
- HP 条 = 账户余额(含赠金/充值拆分)
- MP 条 = Token 用量(点击切换 今日 / 本月,共用同一刻度)
- 同步状态行 = 上次同步时间 + 实时指示灯
功能
- 余额 + 用量同步引擎:每小时(仅页面可见时)拉取平台账号余额、今日/本月 Token 用量与费用
- 扫码登录(内置 CLI):侧边栏点击 ⚡ 扫码登录,host 自动调用随包分发的
login-cli.mjs(微信扫码登录 CLI)完成登录,二维码直接显示在插件里 - 实时本地计数:监听
llm/stream事件,实时累加本次进程内产生的 Token 用量(今日/本月/分模型),平台尚未同步前即可看到增量 - 文件持久化:状态(含登录态)保存在
$DSH_HOME/ds-deepseek-usage.json,重启不丢
架构
| 文件 | 职责 |
|---|---|
index.js |
Host 半区(服务端):同步引擎、CLI 扫码登录(调内置 login-cli.mjs)、token 文件读取/重载、llm/stream 计数、HTTP API /api/ds-usage、文件持久化 |
login-cli.mjs |
内置微信扫码登录 CLI(随包分发,非独立工具;支持 --json-lines/--token-file 等) |
登录方式:侧边栏 ⚡ 扫码登录 → host 调用包内
login-cli.mjs(--json-lines --token-file <DSH_HOME>/ds-deepseek-usage.token)→ 二维码回传显示 → 扫码确认后 token 自动生效。 CLI 随插件包分发,不作为独立工具;如需自定义可用环境变量DS_WECHAT_LOGIN_BIN覆盖。host 每 10 秒也会检查 token 文件兜底。 |client.js| Client 半区(浏览器):通过window.__ModuleLoader__加载,注入sidebar.footer.action槽位渲染 HP/MP 模块 | |package.json| 插件元数据(exports["./client"]声明客户端半区) | |dsh.plugin.json| 展示性插件元数据(可选,随包分发,DSH 无硬性读取) |
数据流
DeepSeek Platform API ──sync──▶ index.js (host) ──state──▶ client.js (浏览器 HP/MP 模块)
▲ ▲
└── 微信扫码登录(auth API) ◀──┘ └── llm/stream 实时计数(本地增量)
数据源接口
GET https://platform.deepseek.com/api/v0/users/get_user_summary—— 余额、累计消费GET https://platform.deepseek.com/api/v0/usage/amount?month=M&year=Y—— Token 用量GET https://platform.deepseek.com/api/v0/usage/cost?month=M&year=Y—— 费用
均为平台私有面板接口,可能随时变动;认证失败码
40002/40003视为登录失效。
安装
方式一:从 npm 一键安装(推荐,终端用户也用它)
插件已声明 dsh.bundle.patch(随包附带 cordis.patch.yml),dsh plugin 装完会自动把它加入 profile 的 bundles 层并激活,无需手改任何配置文件:
# 前置:DSH 已安装(dsh 命令可用)、Node >= 22、pnpm 在 PATH 上(dsh plugin 内部转发给 pnpm)
# 安装到 web profile(最常用)
dsh plugin --profile web add ds-deepseek-usage
# 桌面端:用桌面端 App 自建的 profile 名替换 web 即可
# 本版 dsh CLI 内置的 profile 模板为 web / headless
dsh plugin --profile <你的profile> add ds-deepseek-usage
⚠️ 安装后必须重启 dsh 才生效:
dsh plugin add写入 profile 的 bundles 层,该层只在启动时合成(运行中不监听)。重启前POST /api/ds-usage返回 404 属正常现象。
验证安装与版本:
dsh plugin --profile web ls # 应看到 ds-deepseek-usage@最新版
dsh --profile web --dump-config | grep ds-deepseek-usage # 合成树里应有该插件行
# 重启 dsh web 后:POST /api/ds-usage 请求体 {"method":"state"} 应返回状态而非 404
方式二:手动安装(本地开发/离线)
把本目录放入 DSH 用户目录的共享插件目录:
# Windows 示例;$DSH_HOME 默认是 ~/.dsh Copy-Item -Recurse ds-deepseek-usage "$env:USERPROFILE\.dsh\profiles\node_modules\"在目标 profile(如
web、headless或桌面端自建 profile)的cordis.patch.yml中挂载:# $DSH_HOME/profiles/<profile>/cordis.patch.yml - insert: - id: ds-deepseek-usage name: ds-deepseek-usage
两种方式之后
重启 dsh web / 桌面端(客户端 bundle 在启动时烘焙,刷新页面不生效)。
桌面端(dsh-desktop)会自动把
profiles/node_modules里的用户包 junction 进应用内,无需额外操作。
更新
# 更新到最新版本(依赖范围 ^1.x 会自动拉到最新 1.x)
dsh plugin --profile web update ds-deepseek-usage
# 发布了大版本(2.x)时,需显式重装以更新依赖范围
dsh plugin --profile web remove ds-deepseek-usage
dsh plugin --profile web add ds-deepseek-usage
# 更新后同样必须重启 dsh 生效
dsh web
与安装一致:更新写入的是 bundle 层,重启后才生效。运行中会话的 client 端改动(
client.js)可经 client-hmr 免刷新热替换;host 端(index.js)需重启。
使用
- 未登录:点击 ⚡ 扫码登录,插件内显示微信二维码(host 调用内置 login-cli.mjs 生成),扫码确认后自动登录;也可手动运行
node login-cli.mjs --token-file ~/.dsh/ds-deepseek-usage.token写 token 文件,插件 10 秒内自动生效 - 已登录:
- HP 余额条:悬停查看充值总额/剩余明细
- MP 用量条:点击在 今日 ↔ 本月 间切换;悬停查看每格单位(今日/本月共用同一刻度)
- 同步状态行:绿灯=正常、黄灯=同步中、红灯=同步出错
HTTP API
POST /api/ds-usage,请求体 { "method": "..." }:
| method | 作用 |
|---|---|
state |
取当前状态(客户端轮询用,不触发同步) |
tick |
标记页面可见并尝试同步,返回状态 |
hidden |
标记页面隐藏(暂停按需同步) |
syncNow |
立即同步一次 |
loginStart / loginCancel |
开始/取消浏览器登录 |
logout |
清除登录态 |
开发与调试
node --check index.js # 语法检查
node --check client.js
修改后需要重启 DSH 生效:client 端(client.js)在已运行的会话中可经 client-hmr 免刷新热替换;host 端(index.js)需重启。
常见问题
| 现象 | 处理 |
|---|---|
| 侧边栏看不到模块 / API 返回 404 | 安装/更新后未重启(bundle 层只在启动时合成);或手动安装时 cordis.patch.yml 未挂载 |
| 点击 MP 条只换名称、进度不变 | 已修复:今日/本月共用同一刻度(取两者较大者为单位),切换时进度可见变化 |
| 启用插件后对话报错/无法对话 | 已修复:计数逻辑位于 try/catch 中,观察者错误不会破坏主对话流 |
| 登录失败/二维码过期 | 点击 刷新二维码 重新获取;若提示微信回调失败,稍后重试 |
发布新版本(维护者)
# 1. 在 package.json 中递增 version(如 1.1.0 -> 1.2.0)
# 2. 发布到 npm(使用带发布权限的 .npmrc)
cd ds-deepseek-usage
npm publish --userconfig /path/to/.npmrc-publish
# 3. 提交并推送,与 GitHub 对齐
git add -A && git commit -m "chore: v1.2.0" && git push
终端用户执行
dsh plugin --profile web update ds-deepseek-usage+ 重启即可获得新版本。
许可
MIT