DeepSeek Harness plugin

dsh-deepseek-quota

DeepSeek API quota widget for the dsh web GUI: shows remaining DeepSeek API balance in a floating card pinned to the bottom-right corner (shell.overlay slot).

Jump to install

Source facts

Repository
yingjunnan/dsh-deepseek-quota
Latest update
Aug 22, 2026
Category
Tools & Capabilities
GitHub stars
4
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/yingjunnan/dsh-deepseek-quota
Plugin: dsh-deepseek-quota
Author: yingjunnan

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-deepseek-quota

A DeepSeek Harness (DSH) web GUI plugin: shows your remaining DeepSeek API quota (balance) and today's consumption in a floating card pinned to the bottom-right corner of the page.

![dsh-deepseek-quota 截图](docs/screenshot.png)

> 中文文档在前,英文说明见下文。 / Chinese docs first, English below.

---

中文说明

一个给 DeepSeek Harness(DSH)网页界面用的插件:在页面右下角悬浮显示你的 DeepSeek API 额度(余额)今日消费

功能

  • 右下角悬浮卡片(注册在框架级 shell.overlay 槽位,纯叠加、不遮挡应用)。
  • 显示总余额、可用状态、当前对话费用今日已消费赠送余额充值余额
  • 当前对话费用:宿主侧对每条 assistant/message 按官方价格表计价(含 2026-08-17 起峰谷定价;定价引擎移植自 dsh-web-billing,MIT),通过 GET /api/deepseek-session-cost?sessionId=<id> 返回当前会话累计费用——按持久化日志全量回放,包含安装前(重启前)的历史。把鼠标放到费用后面的圆圈叹号 ⓘ 上,会显示代入真实数值的计算公式(输入/缓存命中/输出 tokens × 单价 = 小计,单价为加权有效价 ¥/M)。
  • 余额每 60 秒自动刷新、对话费用每 5 秒刷新,也可手动刷新。
  • 峰谷时段提示:显示当前处于 DeepSeek 的高峰(09:00–12:00 / 14:00–18:00,北京时间)还是空闲时段(2026-08-17 起),让你知道现在跑模型更贵还是更便宜;随余额每 60 秒刷新。
  • 自动跟随应用浅色/深色主题(使用 --dsw-* 设计变量)。
  • 明确的错误状态:未配置 Key、网络失败、接口报错等。
  • API Key 不出本机:浏览器只访问本地路由(由宿主侧注册)。

安装

需要 pnpm

# 已安装 dsh CLI:
dsh plugin --profile web add dsh-deepseek-quota

# 未安装 dsh CLI(例如通过 npx 启动):
npx @deepseek-ai/dsh plugin --profile web add dsh-deepseek-quota

该包声明了 dsh.bundledsh plugin 会自动把它加进 profile 的 bundle 层(无需手动改配置)。之后:

1. 重启网页应用:dsh web(若无 dsh CLI,用 npx @deepseek-ai/dsh web;bundle 层在启动时读取)。 2. 打开 http://127.0.0.1:3080 并刷新页面。 3. 右下角即出现额度卡片。

> 手动方式:把包放进 profile 的 node_modules,并在 ~/.dsh/profiles/web/cordis.patch.yml 中加一条: > > ``yaml > - insert: > - id: deepseek-quota > name: dsh-deepseek-quota > ``

配置

插件读取的正是 harness 自己在用的那个 Key:DEEPSEEK_API_KEY(通过凭证服务解析;在 设置 → 模型 页面填写,存于 ~/.dsh/.credentials.yaml,或在启动环境中导出)。

今日消费(今日已消费

DeepSeek 官方 API 没有开放用量查询接口,所以插件按优先级使用两种来源:

1. 官方数据(优先)——与平台控制台相同的可按日期筛选的数据。需要配置可选的平台会话令牌:

``sh # 获取令牌:登录 https://platform.deepseek.com,打开 DevTools → Console,执行: # JSON.parse(localStorage.getItem('userToken')).value # 然后把值写入凭证(例如追加到 ~/.dsh/.credentials.yaml): # DEEPSEEK_PLATFORM_TOKEN: <令牌> ``

配置后,宿主侧调用 platform.deepseek.com/api/v0/usage/cost?month=&year= 并取"今天"那一行。卡片显示 今日已消费 ¥X.XX

2. 估算(兜底)——未配置令牌时,宿主侧按余额差值估算(max(0, 当天期初余额 − 当前余额),状态存于 ~/.dsh/storages/deepseek-quota-day.json)。卡片显示 今日约消费 ≈¥X.XX,避免被误认为官方数字。

无需其它配置。

工作原理

部分文件作用
宿主侧lib/index.jsCordis 插件(inject: credentials, webServer),注册 GET /api/deepseek-balance(余额+今日消费+当前峰谷计价时段)与 GET /api/deepseek-session-cost?sessionId=<id>(当前对话费用);订阅 session/event 对每条 assistant/message 计价。
定价lib/pricing.jsDeepSeek 官方价格引擎(政策时间表 + 峰谷定价),移植自 dsh-web-billing(MIT)。
浏览器侧lib/client.jsdsh.client 网页包,把组件注册进 shell.overlay;余额每 60 秒轮询(含峰谷时段徽章)、当前会话费用每 5 秒轮询。
组合层cordis.patch.ymldsh.bundle 补丁层,插入加载项。

开发

git clone <你的仓库>
cd dsh-deepseek-quota
# 修改 lib/index.js(宿主)/ lib/client.js(浏览器侧)
# 本地安装测试:
dsh plugin --profile web add .          # 无 dsh CLI 时:npx @deepseek-ai/dsh plugin --profile web add .

修改 lib/client.js 后需重启 dsh web(无 dsh CLI 时用 npx @deepseek-ai/dsh web)以重新生成引导哈希(rev),再强制刷新页面。

协议

MIT

---

English

A plugin for the DeepSeek Harness (DSH) web GUI that shows your remaining DeepSeek API quota (balance) in a floating card pinned to the bottom-right corner of the page.

Features

  • Bottom-right overlay card (registered into the frame-wide shell.overlay slot — additive, never blocks the app).
  • Shows total balance, availability, current conversation cost, today's consumption, and the granted / topped-up balance.
  • Current conversation cost (当前对话费用): the host prices every assistant/message with the official DeepSeek price table (incl. peak/off-peak since 2026-08-17; pricing engine ported from dsh-web-billing, MIT) and reports the current session's accumulated cost via GET /api/deepseek-session-cost?sessionId=<id> — the whole conversation is replayed from its persisted log, so the figure includes history from before the plugin was installed. Hover the circled next to the value to see the live formula with real numbers (输入/缓存命中/输出 tokens × 单价 = 小计, with the effective blended ¥/M rate).
  • Auto-refreshes every 60 s (balance) / 5 s (conversation cost), plus a manual refresh button.
  • Peak/off-peak indicator (峰谷时段提示): shows whether the current time falls in DeepSeek's peak (高峰), off-peak (空闲), or flat (常规) pricing window (Beijing time 09:00–12:00 / 14:00–18:00 since 2026-08-17), so you can tell when a run will cost more or less. Refreshes with the balance (60 s).
  • Follows the app's light/dark theme (--dsw-* tokens).
  • Explicit error states: missing API key, network failure, provider errors.
  • The API key never leaves your machine — the browser only talks to local routes that the host half registers.

Install

Requires pnpm.

# With the dsh CLI installed:
dsh plugin --profile web add dsh-deepseek-quota

# Without the dsh CLI installed (e.g. running via npx):
npx @deepseek-ai/dsh plugin --profile web add dsh-deepseek-quota

The package declares dsh.bundle, so dsh plugin automatically adds it to the profile's bundle layers (no manual patch editing). Then:

1. Restart the web app: dsh web (or npx @deepseek-ai/dsh web without the CLI; bundle layers are read at boot). 2. Open http://127.0.0.1:3080 and refresh the page. 3. The balance card appears at the bottom-right.

> Manual alternative: install the package into the profile's node_modules and add a loader entry to ~/.dsh/profiles/web/cordis.patch.yml: > > ``yaml > - insert: > - id: deepseek-quota > name: dsh-deepseek-quota > ``

Configuration

The plugin reads the same API key the harness already uses: DEEPSEEK_API_KEY, resolved through the credentials service (set it on the Settings → Models page; it is stored in ~/.dsh/.credentials.yaml, or export it in the launching environment).

Today's consumption (今日已消费)

The official DeepSeek API exposes no usage query endpoint, so the widget uses two sources, in order:

1. Official (preferred) — the same date-filterable data the platform console shows. Configure the optional platform session token:

``sh # get the token: log in to https://platform.deepseek.com, open DevTools → Console, run: # JSON.parse(localStorage.getItem('userToken')).value # then store it as a credential (e.g. add to ~/.dsh/.credentials.yaml): # DEEPSEEK_PLATFORM_TOKEN: <token> ``

With the token set, the host queries platform.deepseek.com/api/v0/usage/cost?month=&year= and picks today's row. The card shows 今日已消费 ¥X.XX.

2. Estimate (fallback) — without the token, the host meters the balance (max(0, day-opening balance − current)), persisted under ~/.dsh/storages/deepseek-quota-day.json. The card shows 今日约消费 ≈¥X.XX so it is never mistaken for an official figure. Note the official usage page can also be filtered to "today" — the platform token unlocks that same data.

No other configuration needed.

How it works

PartFileWhat it does
Host halflib/index.jsCordis plugin (inject: credentials, webServer) registering GET /api/deepseek-balance (balance + today's consumption + the current peak/off-peak pricing period) and GET /api/deepseek-session-cost?sessionId=<id> (current conversation cost); subscribes session/event to price every assistant/message.
Pricinglib/pricing.jsOfficial DeepSeek price-table engine (policy timeline + peak/off-peak), ported from dsh-web-billing (MIT).
Browser halflib/client.jsdsh.client web bundle registering the widget into shell.overlay; polls balance every 60 s (incl. the peak/off-peak badge) and the current session's cost every 5 s.
Compositioncordis.patch.ymlThe dsh.bundle patch layer that inserts the loader entry.

Development

git clone <your-fork>
cd dsh-deepseek-quota
# edit lib/index.js (host) / lib/client.js (browser half)
# install locally and test:
dsh plugin --profile web add .          # without the CLI: npx @deepseek-ai/dsh plugin --profile web add .

After changing lib/client.js, restart dsh web (or npx @deepseek-ai/dsh web) so the boot-graph hash (rev) regenerates, then hard-refresh the page.

License

MIT