DSH Plugin Store
← Back to home

hashdiana

dsh-token-usage

No description

Stars
2
Language
TypeScript
Created
Aug 13, 2026
Updated
Aug 13, 2026
Other
GitHub repo

Introduction

dsh-token-usage

A clearer, prettier token-usage bar for the DeepSeek Harness web UI.

GitHub stars License: MIT DSH Plugin

🌐 δΈ­ζ–‡ Β· English

The shipped DeepSeek Harness web UI squeezes token usage into one cramped line of text under the composer. dsh-token-usage replaces it with a glanceable chip bar plus a details panel with the full breakdown β€” and it follows your theme, light or dark.

🎯 Token usage shouldn't have to be decoded β€” it should be readable at a glance.

Screenshots

dsh-token-usage bar under the composer

The token-usage bar under the composer.

dsh-token-usage details panel

The details panel β€” click the bar to open it.

Contents

Highlights

  • Context at a glance β€” a thin occupancy bar that turns green β†’ amber β†’ red as you fill the context window.
  • Input, output, and cache, separated β€” billed input splits into cache-read / cache-write / uncached, with the cache-hit rate shown up front.
  • Speed where you need it β€” decode throughput (tok/s) and average first-token latency (TTFT) right on the bar.
  • A details panel on click β€” context composition (system / tools / messages), a stacked input split, and session turn / step / model / tool time.
  • Natural edge fades β€” the panel's top and bottom edges fade and blur while there's more to scroll, and vanish at the ends.
  • Theme-adaptive and bilingual β€” styled only with --dsw-* tokens (light/dark), shipped in Chinese and English.

What it shows

The bar under the composer shows these chips, left to right:

ChipMeaning
ContextUsed / window tokens, with a color-coded occupancy bar
InputTotal billed input (cache read + cache write + uncached)
OutputProvider-reported output tokens
Hit rateCache-read share of billed input
tok/sDecode throughput over usage-reporting steps
TTFTAverage first-token latency

Clicking the bar opens a panel with context occupancy + composition, the input-split stack, throughput / TTFT, and session counts. The whole line hides itself when there is no data yet.

Install

From GitHub (recommended):

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hashdiana/dsh-token-usage

From a local checkout:

npx -p @deepseek-ai/dsh dsh plugin --profile web add <path-to-this-repo>

Then restart the profile:

dsh web

The Git path ships the built lib/ (see Build & develop), so no build script runs at install time.

Uninstall / Disable

Temporarily disable without uninstalling β€” add to $DSH_HOME/profiles/web/cordis.patch.yml:

- id: dsh-token-usage
  disabled: true

Restart dsh web; the default stats line returns. Remove those lines to re-enable.

Build & develop

pnpm install
pnpm typecheck   # tsc -b
pnpm build       # tsc -b + tsdown β†’ lib/index.js (host) + lib/client.js (browser)
pnpm test        # vitest: folds, locale parity, jsdom render, slot registration/dispose

The client bundle is emitted as window.__ModuleLoader__.load({ id, factory }); CSS Modules are hashed by lightningcss and injected as a <style data-plugin="dsh-token-usage"> tag. Commit lib/ β€” Git installs consume the built output, not src/.

How it works

  • Pure client plugin β€” the host half is an empty apply(); the browser half ships via exports["./client"].
  • Slot β€” registers into conversation.composer.dock (cell id: "stats", priority: -1), shadowing the shipped text line; the registration is withdrawn with the plugin fiber.
  • Data β€” reads the durable projections tokenUsage, contextPressure, contextBreakdown, and sessionStats; a window fold serves only as the no-projection fallback.
  • Locale β€” owns the tokenUsage namespace, Chinese and English.

License

MIT