跳过主要内容
N

dsh-usage-monitor

noirbright/dsh-usage-monitor

设置页用量仪表盘:从会话日志汇总 token、请求、输出 token 与缓存命中率,含堆叠图,并按供应商、模型或工作区分组列表。

安装

dsh plugin --profile web add github:noirbright/dsh-usage-monitor

README

dsh-usage-monitor

English | 中文

Usage dashboard for DeepSeek Harness. It folds provider-reported token usage out of session logs and charts it in Settings.

Compatibility

Host DSH peers and development dependencies use the open lower-bound range >=0.1.7-alpha.2. The lockfile resolves DSH 0.1.7-rc.2 packages and Cordis 4.0.4. Optional peers let the plugin remain loadable outside the supported set.

package.json#dsh.compatibility.dshReleases records DSH 0.1.7-alpha.2, 0.1.7-rc.1, and 0.1.7-rc.2 as compatible evidence, not an allowlist. Unknown newer Hosts warn once and keep the normal mount path. Only a reproduced failure is blocklisted.

What it shows

  • Tokens, requests, output tokens, and cache-hit rate
  • Stacked chart with Metric (token / request), By (provider / model / workspace), Group (day / week)
  • Week, month, and custom ranges
  • A responsive overview with a full-width token summary, compact secondary metrics, a stacked chart, and token-share cards that follow the current By grouping
  • On narrow screens, the cards collapse to one column and the chart legend scrolls horizontally

Escape closes an open Metric, By, or Group menu and restores focus to its trigger. With no menu open, Escape remains available to the Settings dialog.

Subscription quotas are not fetched.

Installation

Host development dependencies resolve to the rc.2 package set; see Compatibility. Install from GitHub:

dsh plugin --profile web add --force https://github.com/NOirBRight/dsh-usage-monitor/releases/latest/download/dsh-usage-monitor-0.2.20.tgz
dsh web

The repository tracks release-ready lib artifacts, so GitHub installation needs no build-script allowlist. A source checkout can use a link installation after running pnpm run build.

Then open Settings → Usage.

Data

Reads live and persisted logs through the public ctx.sessionQuery.readSession API; sessionPersistence.list supplies cache revisions only. The usage RPC uses the authenticated /api/plugin-rpc/usage-monitor Fetch route. It does not inspect private persistence methods or session file paths. Unreadable sessions are omitted; only folded usage aggregates are returned.

Release

pnpm run check runs the full gate in order: unit tests, TypeScript typecheck, deterministic build-parity (clean temp build vs tracked lib/), package build, and a real npm pack + immutable fixtures/rc1-0.1.7 validation + offline install + Host/client import smoke. The pack check reads only the repository-owned 0.1.7-rc.1 manifest/tarballs, verifies the official tag/commit and registry integrity, preserves versioned parent edges, and uses a fresh pnpm consumer with an invalid registry, offline/no-scripts/no-audit/no-fund settings, empty NODE_PATH, and scoped local-tarball overrides; it uses neither --legacy-peer-deps nor omit/force bypasses. The owner archive is written only below the prefixed temporary directory. It does not rewrite lib/ before comparison, so a stale, missing or hand-edited artifact fails.

For a tag, run pnpm run check:strict (the same test, typecheck, parity, build, and pack order with PARITY_CHECK_HEAD=1; it fails if the committed lib/ still differs from the source — the v0.2.5 drift guard). Keep src as the source of truth and commit the rebuilt lib/.

The Settings → Usage nav icon is a DOM patch via ctx.effect + MutationObserver on document.body; see src/client/nav-icon.ts for the ctx.effect disposer and the accepted Alpha.4 DOM risk.

Release installation (Latest)

Session-log usage dashboard with responsive metric cards, charting, and provider shares. The published pack contains built Host/Client files only; it has no sibling-repository source, workstation path, link:, or workspace: dependency. Pack-check uses a frozen DSH 0.1.7-rc.1 graph; the development lockfile resolves DSH dependencies to 0.1.7-rc.2.

Latest installation (the URL never contains a version):

dsh plugin --profile web add --force \
  https://github.com/NOirBRight/dsh-usage-monitor/releases/latest/download/dsh-usage-monitor-0.2.20.tgz

Fixed-version installation:

dsh plugin --profile web add --force \
  https://github.com/NOirBRight/dsh-usage-monitor/releases/download/v0.2.20/dsh-usage-monitor-0.2.20.tgz

Update, uninstall, and verify:

# Update to the latest Release
dsh plugin --profile web add --force \
  https://github.com/NOirBRight/dsh-usage-monitor/releases/latest/download/dsh-usage-monitor-0.2.20.tgz
# Verify the loaded version
dsh plugin --profile web list
# Uninstall only this plugin
dsh plugin --profile web remove dsh-usage-monitor

Configuration: use the plugin section in Settings for Web UI plugins, or the profile dsh.profile.bundles entry for Host-only plugins. Start with this README's minimal YAML/JSON example and provide credentials/backend addresses explicitly.

Rollback: rerun the fixed v0.2.19 command, verify the profile list, then restart the Web service once. Inspect journalctl --user -u dsh-web.service; never put a source checkout in the production profile.

Release and integrity: v0.2.20 · SHA256.

相关插件