dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Token usage & cost dashboard for DeepSeek Harness — per-project/provider breakdown, estimated spend, call counts, DeepSeek balance.
English · 简体中文
A usage and cost dashboard for DeepSeek Harness (DSH): token and call counts broken down by project, provider and model, cost estimated from your local price config, and your DeepSeek account balance — all on one screen inside Settings → Usage & Cost.
Screenshots use synthetic demo data — no real account information.

24H is a rolling window and is not the same as "today".Today ¥3.42 · 1.2M pill; expand for today's breakdown and balance. Draggable, position remembered.

Requires a DSH build that ships the dsh plugin subcommand (tested on 0.2.1-rc.2).
# replace "desktop" with your profile name (desktop / web)
dsh plugin --profile desktop add github:Zhangw1998/dsh-usage-dashboard
Reload DSH, then open Settings → Usage & Cost.
Uninstall: dsh plugin --profile desktop remove dsh-usage-dashboard
These are deliberate honesty choices, and they matter more than the charts:
| Label | What it is | What it is not |
|---|---|---|
| Estimated cost | Per-token cost estimated from your local price config, including peak/off-peak bands | Not a billed amount — no billing records are read |
| Plan value | Subscription usage valued at list prices, prefixed with ≈ | Not money spent, and never added to estimated cost |
| Unpriced | Models with no rule in the price config | Not zero — unpriced usage is counted separately and never priced at 0 |
| Calls | Calls that carried a usage report | Failed or usage-less requests are not counted, so this can be lower than your provider's dashboard |
| Balance | Account wallet balance | Cannot be used to infer cumulative spend — one balance is shared by many keys/tools |
Everything this plugin does on your machine, in full:
~/.dsh/sessions/**/session.v4.jsonl.zstd (or $DSH_HOME/sessions) to extract per-call token usage. Conversation content is never uploaded and never copied into this plugin's output.DEEPSEEK_API_KEY is configured, it calls https://api.deepseek.com/user/balance with that key. That is the only host it ever contacts, and redirects are refused.~/.dsh/storages/: the scan cache and the price config. No session data is written.No telemetry, no third-party reporting.
Default rules live in pricing.js. To override, edit:
~/.dsh/storages/usage-dashboard-pricing.json
Per-provider peak/off-peak rates, currency and billing mode (token / plan / subscription / unknown) can be overridden. The file is validated before it is applied — invalid config is rejected rather than partially applied.
No dependencies; Node ≥ 22 only.
node --test test/*.test.mjs # 78 tests
node build-client.mjs # re-inline chart-kit.js + view-model.js into client.js
client.js is a build artifact and must stay committed — installing from git performs no build step (prepare covers it anyway).python3 -m http.server 8899
# open http://127.0.0.1:8899/docs/demo.html
usage.js — parses session logs into an hourly fact table (tokens, call counts, cost already computed)view-model.js — the single aggregation layer: time windows, granularity, composable filters, period comparisonchart-kit.js — components and design system (theme tokens only; light and dark follow automatically)client.js — the browser half, generated by inlining the two modules abovehost.js — the host half, registering the /api/usage.dashboard* endpoints— under a project/provider filter instead of a wrong number.deepseek-official (API-key wallet) and deepseek-account (logged-in wallet). Other providers have no balance adapter.MIT