Configurable statistics row below the composer via a ${variable} display template — which segments appear and how they are labelled is fully user-defined.
Install
# from a prebuilt release tarball
dsh plugin --profile web add "https://github.com/MannixHu/dsh-statusbar-config/releases/latest/download/dsh-statusbar-config.tgz"
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:MannixHu/dsh-statusbar-config
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
English | 中文
A DeepSeek Harness web UI plugin that makes the conversation statistics row below the composer fully template-driven — JS template-literal syntax ${variable}, write whatever you want, applies live.
It shadows the shipped stats entry in the conversation.composer.dock slot (lower priority wins the cell) with the same data and precision as the official StatsLine; the display content is entirely your template.
Template variables
| Variable | Meaning | Example |
|---|---|---|
${ttft} |
average time to first token, seconds (bare number) | 5.8 |
${tps} |
decode throughput, tok/s (bare number) | 69 |
${cache} |
cache hit percent (no % sign) |
93 |
${input} |
billed input tokens (compact) | 63.7M |
${output} |
output tokens (compact) | 178K |
${turns} / ${steps} |
turns / steps | 12 / 34 |
${llm} / ${tool} |
cumulative LLM / tool time (unit included) | 3m12s |
Units, separators, and any literal text are yours to write in the template; unknown variables stay verbatim; variables without data yet render empty.
Install
dsh plugin --profile web add github:MannixHu/dsh-statusbar-config
Then restart dsh web (the loader graph is frozen at process start).
Configure
Two equivalent ways:
- In the UI — Settings → Plugins → Status bar template card: click a variable chip to insert at the cursor, Enter to save, applies immediately (recommended).
- In
~/.dsh/settings.yaml— thestatus-bar-confignamespace:
status-bar-config:
enabled: true
template: 'TTFT avg ${ttft}s · ${tps} tok/s | Cache ${cache}% | In ${input} tok · Out ${output} tok'
renders:
TTFT avg 5.8s · 69 tok/s | Cache 93% | In 63.7M tok · Out 178K tok
Empty template = default statistics row (the full shipped segments); enabled: false hides the row. The 0.1 per-segment toggles are superseded by the template — legacy yaml boolean keys are ignored; switch to template after upgrading.
Migration
From the 0.1 segment toggles: 0.2 replaces them with the template. Legacy boolean keys in yaml are ignored — rewrite your toggle combination as one template: line; for example, with only ttft/throughput/cacheHit/input/output on:
status-bar-config:
enabled: true
template: 'TTFT avg ${ttft}s · ${tps} tok/s | Cache ${cache}% | In ${input} tok · Out ${output} tok'
From leonardoxr/dsh-status-bar-config: this plugin keeps the same status-bar-config namespace, so your existing settings section loads as-is. That plugin's inject list depends on @deepseek-ai/dsh-client-runtime / dsh-client-ui-slots, which the 0.1.2-alpha reorganization removed; this plugin is rewritten against the post-alpha package graph and needs no inject patch.
Compatibility
- Requires DSH
0.1.2-alpha+ (client graph deps are only packages alive in the alpha reorganization:dsh-client-locale,dsh-client-ui-renderer,dsh-client-ui-settings,dsh-client-ui-conversation). - The built bundle (
lib/) is committed, so installing from git needs no build step and noonlyBuiltDependenciesentry.
Build from source
pnpm install
pnpm check # typecheck + build (lib/index.js host half, lib/client.js browser half)
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 6815
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 6815
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 3318
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 2823
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 1695
A fixed-corner whale widget showing DeepSeek balance, today usage, per-turn cost and random talk lines, with sound effects and a menu.
Devin-AXIS/deepseek-design#deepseek-idesign★ 720
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.