Shows DeepSeek balance and estimated daily spend, merges external vision-call JSONL records, and adds a per-session dashboard with model statistics, TTFT, cache rate, call logs, cost estimates, filters, and CSV export.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-usage-dashboard-plus
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:1HelloMan1/dsh-usage-dashboard-plus
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A fork of dsh-usage-dashboard with external vision-call accounting: a sidebar-footer widget for DeepSeek Harness (dsh) showing your DeepSeek API balance and today's spend, estimated from session logs.
This is now the only actively maintained usage-dashboard repository. The former dsh-stats-dashboard implementation has been fully merged into Plus; do not install both statistics plugins in the same profile.
What "Plus" adds
- Counts external vision-model calls (e.g.
dsh-vision-fallback's Mimo V2.5 requests) into the today-spend stats via an optional JSONL usage log — the base package only counts calls recorded in DSH session logs. - Bundles a pricing entry for
mimo-v2.5(opencode Zen GO rates) so those calls get a cost estimate out of the box (override viaprices).
Features
- API balance — resolves the DeepSeek key through the DSH credentials service and queries the balance endpoint (cached).
- Today's spend (est.) — scans session logs (and the external usage log) for today's token usage × price table.
- Sidebar footer widget —
余额 ¥xx · 今日 ¥xx, click to open a detail card (calls, tokens, per-model breakdown, pricing notes). - Peak/off-peak pricing schedule — date-gated DeepSeek rate tables (2026-08-17 onward).
- Full usage dashboard — per-provider/per-model calls, latency, TTFT, throughput, input/output/cache tokens, cache rate, and estimated cost.
- Call-log analysis — filter and search by session, provider, and model; inspect recent calls and export filtered rows as CSV.
- Inherited Stats implementation — the
usageDashboardsession projection, 500-row call-log cap, whole-session model aggregates, and replay-safe historical statistics are included in Plus. - No build step — host half (
lib/index.js) + browser bundle (lib/client.js) via thedsh.clientmechanism.
Migrating from dsh-stats-dashboard
- Remove or disable the old
dsh-stats-dashboardplugin from thewebprofile. - Install
dsh-usage-dashboard-plus. - Restart
dsh weband hard-refresh the Settings page.
Plus reads the existing session logs, so historical sessions do not need to be migrated. Do not keep both statistics plugins enabled; the old repository is retained only as a historical source and is no longer maintained independently.
Install
dsh plugin --profile web add dsh-usage-dashboard-plus
# restart `dsh web` — the profile patch layer is not hot-reloaded
The npm package ships dsh.bundle and cordis.patch.yml, so the install command inserts usage-dashboard into the target profile without manual directory copies or patch editing.
Verify:
dsh --profile web --dump-config # expect a usage-dashboard-plus row
Then hard-refresh the GUI (Cmd+Shift+R) — the footer widget appears next to 设置/Settings.
Configuration
All settings live under the usage-dashboard namespace in ~/.dsh/settings.yaml (hot-reloaded):
usage-dashboard:
apiKeyRef: DEEPSEEK_API_KEY # credential ref for balance queries
baseURL: "" # empty → $DEEPSEEK_BASE_URL → api.deepseek.com
prices: # per-model CNY per 1M tokens (input/cacheRead/output)
"mimo-v2.5": { input: 2, cacheRead: 0.05, output: 8 }
priceSchedule: [] # date-gated peak/idle tables
balanceCacheMs: 60000
sessionsRoot: "" # default <dsh home>/sessions
scanWindowMs: 172800000 # only scan session logs modified within this window
externalUsageLog: "" # JSONL log of external model calls
External usage log (externalUsageLog)
dsh-vision-fallback (and other plugins that call models outside the DSH session-log pipeline) can append one JSON line per external call:
{ "ts": 1755000000000, "model": "mimo-v2.5", "inputTokens": 1200, "outputTokens": 320, "cacheReadTokens": 0, "cacheWriteTokens": 0 }
Default path: <dsh home>/vision-fallback/usage.jsonl. Set externalUsageLog: off to disable.
Development
npm test # validates the npm package, dsh.bundle, and cordis.patch.yml
License
MIT — forked from dsh-usage-dashboard (MIT).
Links
More in this category
bowenliang123/dsh-context★ 1791
DSH context insight panel: Context dashboard + /context command + Context browser — one-stop context lifecycle management with categorized composition, content details, evolution trends, compaction/injection events, and stats.
Han-1413141/dsh-cost-meter★ 361
Per-session and daily API cost, budget with usage %, official balance, history dashboard, and one-click official price sync with peak/off-peak pricing.
wssfk12138/dsh-damage-pulse★ 237
Tracks DeepSeek token usage, per-call and session costs, and account balance with cache-aware charge animations in the DSH Web UI.
zh667/TokenLedger★ 202
Sidebar usage panel that attributes tokens to the relay site that served each request, read from your existing provider config: today/month/all-time totals, per-site and per-model breakdowns, a year activity heatmap, and New API / Sub2API / DeepSeek balances.
Ychris12138/dsh-usage-stats★ 167
Multi-provider usage dashboard with provider/model token breakdowns, calendar drill-downs, account balances, and OpenCode Go / Z.ai subscription quota tracking.
PolinniZhong/dsh-personal-center★ 118
Personal center for DeepSeek Harness: cross-session usage statistics, per-model cost estimation, global custom instructions, a global font-size adjuster, a data-driven desktop pet with bitmap & vector skins, and a conversation status overview, all local and offline.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.