DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Ui Shadow Token — DSH Plugin for DeepSeek Harness
← Plugins
U

dsh-ui-shadow-token

Ui Shadow Token

DSH web chat token badge: shadows the assistant-step renderer at slot priority -1 to show each message's input/output token usage

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:haoliangwu/dsh-ui-shadow-token#26c3618d5f06cb8c04a750d1f2f27b3ff4292503
READMECompatibilityVersions

Compatibility and provenance

Ui Shadow Token is published as dsh-ui-shadow-token and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
8/20/2026

Versions

0.1.0stable
8/20/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
8/25/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in models-usage.

Usage@linxin666/dsh-usageUsage statistics plugin for the dsh web GUI: per-provider balance and coding-plan quota detection plus a live token usage ledger, with a dedicated pet bubble for the current providerWhale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinUsage Stats@ychris12138/dsh-usage-statsToken usage heatmap, provider balances, and subscription quotas for the dsh web GUICodex Connectdsh-codex-connectChatGPT OAuth and Codex models for DeepSeek Harness.

README

dsh-ui-shadow-token

DSH web chat token badge — shows each assistant message's input/output token usage in a small pill at the message's top-right corner.

Token usage badge on assistant messages

A web client plugin for DeepSeek Harness. It shadows the keyed conversation.chat.node slot's assistant-step entry at slot priority -1, so every assistant message renders the stock content plus a ⚡ in {input} / out {output} badge in its top-right corner.

The badge reads the finalized message's usage payload (input/output/cache/reasoning tokens) with the same defensive narrowing the in-repo turn-metrics uses; while a message is still streaming and has no settled usage, the badge stays hidden. The stock assistant rendering — markdown, reasoning, tool rows, images — is untouched; only the pill is added.

Install

dsh plugin --profile web add github:haoliangwu/dsh-ui-shadow-token

Built lib/ is committed, so the git install is one line — no prepare script, no allowBuilds permission. Restart dsh --profile web after install (bundle layer stacks compose at boot).

Why slot priority -1

The conversation.chat.node slot is keyed by the node's kind: entryKey = routedNode.kind. The default assistant-step entry registers at priority 0. Keyed slot occupancy throws on same-key same-priority duplicates (fail loud), while a lower absolute priority shadows the default — the ledger sorts ascending and the lowest renders. Our entry registers the same key at priority: -1:

  • every assistant-step render resolves to this plugin's component;
  • the default renderer stays in the ledger as an inert fallback (upstream upgrades keep working; the default simply never renders);
  • any other kind (user, tool, turn-tail, …) is untouched — the default turn-tail footer (Ran for …, TTFT …, tok/s) still renders under the badge.

This is the client-slot alternative to disabled: true + re-registration: the slot declaration, seat dispatcher, and business-node state machines all stay in ui-conversation; the plugin only contributes one keyed renderer.

How it works

  • The badge is pure client rendering. The node half is an empty apply; all behavior lives in ./client, registered as a dsh.client web platform package. No host service, no RPC channel, no model-visible input, no session-log events.
  • Usage is read defensively from the node data. AssistantMessageNode.usage is typed unknown and carries a TokenUsage at runtime (inputTokens / outputTokens / cacheReadTokens / cacheWriteTokens / reasoningTokens). The component narrows it the same way the in-repo turn-metrics.ts does, so a future shape change degrades to a hidden badge, never a crash.
  • The badge text comes from a locale namespace. shadow-token (zh / en) interpolates {input} / {output} placeholders; the locale seat is provided automatically by the registration (PropsLocale mechanism).
  • The bundle id equals the row name. client-modules keys browser registration by the client row's name; the tsdown bundle id and cordis.patch.yml row name are both dsh-ui-shadow-token, or the browser shell throws "loaded without registering".

Build from source

pnpm install
pnpm build         # emits lib/index.js, lib/invariant.js, lib/client.js + sourcemaps
pnpm typecheck     # tsc --noEmit (types resolve via tsconfig paths to the local dsh profile)

lib/ is committed to the repo so git installs work without a build step. After changing source, run pnpm build and commit the updated lib/.

License

MIT