Tools & Capabilities

dsh-usage-stats

xushuojie/dsh-usage-stats · ★ 0

xushuojie

Token usage statistics plugin for the DeepSeek Harness web UI .

License
MIT
Added
2026-08-17
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:xushuojie/dsh-usage-stats

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. dsh-usage-stats
  2. Screenshots
  3. Requirements
  4. Install
  5. Publish (for maintainers)
  6. How it works
  7. License

dsh-usage-stats

Token usage statistics plugin for the DeepSeek Harness web UI.

Adds a 用量统计 entry to the sidebar footer, directly above the 设置 (Settings) button:

  • Today total at a glance — the trigger shows a fuzzy figure of today's token usage (in 千 / 万 / 百万 / 千万 / 亿), with the exact value on hover.
  • Stats modal — a summary (uncached input / output / cache read / cache write, session count) plus a per-session breakdown list, with time filters 全部 / 今日 / 24h / 7 天 / 30 天.
  • Durable ledger — the per-session tokenUsage projection disappears when a session is deleted; this plugin keeps its own copy in localStorage (dsh.usageLedger.v1) so historical totals survive session removal. Best-effort: falls back to in-memory when storage is unavailable.

Screenshots

Sidebar footer entry (above the Settings button):

Sidebar footer entry

Usage stats modal:

Usage stats modal

Requirements

  • @deepseek-ai/dsh web profile (any recent 0.1.0-rc.x)
  • Peer packages: react, @deepseek-ai/cordis, @deepseek-ai/dsh-client-runtime, @deepseek-ai/dsh-client-locale, @deepseek-ai/dsh-client-ui-primitives, @deepseek-ai/dsh-client-ui-slots (the dsh web profile already ships these).

Install

⚠️ Name collision warning: the npm package name dsh-usage-stats is already taken by an unrelated project ("Lightweight usage analytics ..."). This plugin is published as @xushuojie/dsh-usage-stats — double-check the name before installing, so you don't pull in the wrong package.

  1. Install the package where the profile can resolve it

    From the npm registry (after publish):

    cd "$(dsh home)/profiles/web"      # e.g. ~/.dsh/profiles/web
    pnpm add @xushuojie/dsh-usage-stats
    

    Or directly from GitHub (works right now, no registry needed):

    pnpm add github:xushuojie/dsh-usage-stats
    

    For a local checkout instead:

    pnpm add file:/path/to/dsh-usage-stats
    
  2. Register the loader entry in the profile's patch layer ($DSH_HOME/profiles/web/cordis.patch.yml — the file the boot message tells you to edit, not cordis.yml):

    - insert:
        - id: usage-stats
          name: '@xushuojie/dsh-usage-stats'
    
  3. Restart dsh web (plugin roster + boot manifest are composed at startup).

Publish (for maintainers)

Requires an npm account logged in against the official registry (this machine is configured with the npmmirror mirror, which does not accept publishes):

npm login                                    # once
npm config set registry https://registry.npmjs.org
cd dsh-usage-stats
npm publish                                  # publishes @xushuojie/dsh-usage-stats

The package is scoped to your npm username, so it can never collide with the unrelated dsh-usage-stats package. If you want to republish under a different scope, rename name in package.json, the loader entry, and the client bundle id accordingly.

How it works

  • lib/client.js is a window.__ModuleLoader__.load(...) client bundle (the DSH web client-plugin format), declared via dsh.client in package.json.
  • It registers into the sidebar.footer.action list slot (rendered above the Settings button) with order: 10, bound to its own usageStats locale namespace.
  • Data source: the standard useSessions list snapshot's per-session projectionValues.tokenUsage, merged into the durable ledger.

License

MIT