实时 DeepSeek API 用量:账户余额与低余额告警(跨阈值浏览器通知)、请求/token 统计(全部/今日/近 60s,按模型与会话下钻)、估算花费——输入框下方统计条 + 设置页用量面板。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:yyb16yyb-hub/dsh-deepseek-usage
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
DeepSeek Harness 插件:实时显示 DeepSeek API 用量信息。
- 💰 账户余额:轮询 DeepSeek
/user/balance(默认每 30s),显示总额/赠送/充值余额与可用状态,支持多 Key 聚合(apiKeys) - 📊 用量统计:通过
llm/streamwaterfall 实时统计请求次数与 token(输入/输出/缓存读/缓存写/思考),支持「全部 / 今日 / 近 60s」三个窗口,并给出缓存命中率 - 💾 历史持久化:每日用量在重启后不丢失(
~/.dsh/deepseek-usage/usage.json),支撑趋势图与 CSV 导出 - 💸 花费估算:按模型单价(内置 deepseek-chat / deepseek-reasoner 默认价目表,可配置覆盖)估算花费,三个窗口分别计算,支持峰谷分时计价(
offPeakHours/offPeakDiscount) - 🖥️ Web UI dock:输入框下方的实时统计条(
conversation.composer.dock槽位),自动刷新 + 手动刷新 - ⚠️ 余额低告警:余额低于阈值(默认 20)dock 变琥珀色、低于阈值 1/5 变红色,并在跨过阈值时发送一次浏览器通知;可开启余额不足时拦截请求(
blockOnLowBalance) - 📋 设置页用量面板(
settings.section槽位):余额卡片 + 各 Key 明细、三窗口用量、面板内配置编辑器(写回宿主并持久化)、历史热力图与 30 天柱状图、按模型单价表、按会话用量明细表,以及 CSV 导出 - 🛠️ 模型工具:
deepseek_usage,agent 可直接查询余额与用量 - ✅ 测试与 CI:vitest 单元测试 + GitHub Actions 流水线(typecheck + test + build)
安装
从 GitHub(推荐)
dsh plugin --profile web add github:yyb16yyb-hub/dsh-deepseek-usage
⚠️ 首次安装需授权构建:pnpm ≥ 10 默认拒绝运行 git 依赖的 prepare 脚本(安装时从源码构建出 lib/)。第一次 add 会失败并提示,把 pnpm 打印的包键加入该 profile 的 pnpm-workspace.yaml 后重新执行:
allowBuilds:
dsh-deepseek-usage: true
建议锁定 commit 以获得可复现的安装:dsh plugin --profile web add github:yyb16yyb-hub/dsh-deepseek-usage#<sha>。
本地目录 / tarball
dsh plugin --profile web add /path/to/dsh-deepseek-usage # 本地目录(预构建好 lib/)
dsh plugin --profile web add ./dsh-deepseek-usage-0.1.0.tgz # pnpm pack 产物
安装后重启 dsh web 生效(client 模块表在启动时扫描)。
卸载:
dsh plugin --profile web remove dsh-deepseek-usage
配置
API Key 按以下优先级解析(每次轮询重新解析,改动即时生效):
- 插件配置
apiKey - dsh 凭据系统(
ctx.credentials):进程环境变量 →~/.dsh/.credentials.yaml→ 项目.env→ 用户.env。在 Web 设置页「模型」里填的 DeepSeek Key 就存在~/.dsh/.credentials.yaml,插件会自动找到,无需额外配置 - 已注册的
llm-deepseek设置节中存储的apiKey(若有)
在 profile 的 cordis.patch.yml 中覆盖插件的行即可配置:
- id: deepseek-usage
config:
apiKeyEnv: DEEPSEEK_API_KEY
apiKeys: [] # 额外 API Key,余额聚合展示
pollIntervalMs: 60000 # 余额轮询间隔(ms,最小 5000)
balanceTimeoutMs: 10000 # 余额请求超时(ms)
showBalance: true
showTokens: true
showCost: true
alertThreshold: 20 # 余额低告警阈值(账户货币单位;0 = 关闭)
blockOnLowBalance: false # 余额低于阈值时拦截 LLM 请求
maxSessions: 200 # 会话明细保留上限(超出按最近活跃裁剪)
offPeakHours: [0,1,2,3,4,5,6,7] # 闲时小时(本地时间,0-23)
offPeakDiscount: 0.5 # 闲时缓存未命中的价格乘数
pricing:
deepseek-chat:
input: 2 # ¥ / 1M tokens
output: 3
cacheRead: 0.5
deepseek-reasoner:
input: 4
output: 16
cacheRead: 1
花费为估算值:默认价目表为常见公开定价,请以 DeepSeek 官方最新价格为准,可通过
pricing或设置面板编辑器覆盖。峰谷计价只对缓存未命中的输入/输出价格打折(与 DeepSeek 官方策略一致),按当前小时计价。
设置面板内的改动(阈值、轮询间隔、显示开关、拦截开关、闲时窗口、单价)经宿主校验后持久化,覆盖
cordis.yml中对应项;密钥(apiKey/apiKeys)永远不会通过编辑器写入或持久化。
Web UI
- 输入框下方统计条:余额 · 今日请求 · token(含缓存命中率)· 今日估算花费 · 更新时间,每 30s 自动刷新(跟随宿主
pollIntervalMs),点击「刷新」立即拉取。 - 余额告警:余额低于
alertThreshold时统计条变琥珀色并显示 ⚠,低于阈值 1/5 变红色;跨过阈值时若浏览器已授权通知权限,会发送一次系统通知。开启blockOnLowBalance后,余额低于阈值时 LLM 请求会直接失败并给出明确原因。 - 设置页「DeepSeek 用量」面板(设置 → 侧边栏底部按钮打开后可见):余额卡片 + 各 Key 明细(多 Key 时)、全部/今日/近 60s 三窗口用量、历史热力图与 30 天柱状图、面板内配置编辑器、按模型单价与用量表、按会话的用量明细表,以及历史/会话的 CSV 导出。
数据来自同源端点 GET /dsh-deepseek-usage(?refresh=1 强制刷新)与 POST /dsh-deepseek-usage/config(编辑器写回)。API Key 只存在宿主机侧,不会进入浏览器;每日历史持久化在 ~/.dsh/deepseek-usage/usage.json。
工具调用
agent 可调用 deepseek_usage:
- 无参数:返回全部窗口的余额 + 用量摘要
scope:total/today/rolling选择窗口
开发
pnpm install
pnpm typecheck # tsc --noEmit
pnpm test # vitest 单元测试(stats + cost)
pnpm build # esbuild → lib/index.js(宿主半)+ lib/client.js(浏览器半)
结构
src/
├── index.ts # 宿主半:apply()、llm/stream 钩子、拦截开关、工具、HTTP 路由
├── balance.ts # DeepSeek /user/balance 客户端与多 Key 轮询器
├── stats.ts # 用量统计(三窗口、按模型/按会话、restore/export)
├── cost.ts # 纯计价逻辑(峰谷分时)——单元测试覆盖
├── persist.ts # JSON 持久化(原子写入,$DSH_HOME/deepseek-usage/usage.json)
├── config.ts # schemastery 配置 schema
└── client/
├── index.ts # 浏览器半:注册 locale + composer.dock / settings.section 槽位
├── api.ts # 共享:端点类型、fetch、配置保存、CSV 导出、格式化
├── UsageDock.tsx # 输入框下用量统计条(含余额告警)
├── UsageSettingsSection.tsx # 设置页面板(余额/账号/用量/历史/编辑器/会话)
└── locales.ts # 中英文案
构建要点
- 宿主半保持
@deepseek-ai/*external,从 profile 的 node_modules 解析(cordis 运行时单例) - 浏览器半按
packages/client/web/src/platform.ts的平台模块表 external(react、cordis、slots 等),其余全部内联;产物以window.__ModuleLoader__.load({ id, factory })包装,由 Web 壳的模块加载器装载
范围说明
- 主题:UI 使用内联样式,继承应用文字颜色并自适应深浅色主题;未消费主题 CSS 变量(当前 harness 未向插件暴露公共主题 token API)。
- 截图:README 暂无界面截图,安装使用后可自行补充。
- 多供应商:刻意不做——本插件只跟踪 DeepSeek 用量;OpenCode Go / Moonshot / Kimi 监控应做成独立插件。
安全提示
余额轮询使用与 LLM 请求相同的 API Key;Key 不会发送到浏览器端,插件也不会持久化密钥(只持久化非敏感的配置覆盖项)。安装第三方插件前请自行审阅源码。
链接
同类插件
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 2955
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 1410
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 1372
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/dsh-at-file★ 238
Codex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
huiliyi37/dsh-tianshu-tui★ 181
DeepSeek Harness 的终端 UI(TUI)。
Nagi-ovo/dsh-visualize★ 134
对话内生成式 UI:模型把交互式 HTML 卡片直接画进会话流,带流式预览与沙箱渲染。