Starlight-bananice/dsh-status-bar ↗★ 8

@bananiceee/dsh-status-bar

DSH 底栏管理插件:原生底部状态栏超长、内容易被截断;本插件提供接近原生体验的可配置状态栏——16 个信息段任意开关/排序,并带换行、实时 TPS、费用估算等多项实用选项(适配 DSH 0.2.0)。The native DSH bottom status bar is too long and parts get truncated; this plugin delivers a near-native, fully configurable status bar — 16 toggleable/reorderable segments, plus useful options such as wrapping, live TPS and cost estimation (DSH 0.2.0). 适合需要自定义DSH底栏信息段、避免内容截断并查看实时TPS的用户。

パッケージ
@bananiceee/dsh-status-bar
互換性
未検証
バージョン
0.3.0
ライセンス
MIT
最終更新
2026/10/01

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Starlight-bananice/dsh-status-bar

ドキュメント

README 全文を読む ↗

Configuration

All configuration is client-side, stored in browser localStorage under dsh.statusBar.v1, edited via the settings page or the in-composer gear menu.

OptionDefaultMeaning
enabledtrueMaster switch; false hides the bar entirely
wraptrueAllow the bar to wrap onto multiple lines within the input card's width instead of eliding (the bar never runs past the input box's edges in either mode)
segments13 on / 3 off (see below)Ordered list of enabled segments
cost.currencyCNYCurrency for cost display (CNY / USD)
cost.models{}User-maintained model price book (model id → prices + schedule)
calendar.dayRulestrueSplit peak/off-peak by working day vs weekend/holiday; off = clock windows only (the old behavior)
calendar.autoFetchtrueFetch and cache the holiday calendar through the plugin host route
calendar.overrides[]Manual exception dates ({date, kind: off/work/auto, label}); they win over the published calendar

Default segment state: on — status, model, counts, durations, speeds, cache hit, tokens, context, TPS, session time, jobs, queue, errors; off — title, workspace, cost.

Model price book entry (defaults filled in when a model is added — DeepSeek's current published rates per 1M tokens): peak input 2 / cache hit 0.04 / output 8, off-peak input 1 / cache hit 0.02 / output 4, cache write 0; peak/off-peak is on by default with timezone Asia/Shanghai (DeepSeek writes its schedule in Beijing time), peak windows 09:00–12:00 and 14:00–18:00 on working days, and weekends plus public holidays / 调休 rest days off-peak all day. Existing entries are never overwritten, but a v1 config is upgraded field by field: its windows keep their old all-days behavior and the weekend/holiday switches default to on — turn Split peak/off-peak by working day vs holiday off to keep the literal old behavior.

Holiday calendar: DeepSeek decides working days from Chinese statutory holidays and the State Council's 调休 (make-up workday) schedule, which is re-announced every year — so nothing is hard-coded. "Refresh calendar" asks the plugin's own host route /status-bar/api/holidays, which fetches the published dataset (holiday-cn, transcribed from the State Council notices) and caches it at /dsh-status-bar/holidays.json. When the calendar (or a single year) is unavailable the pricing falls back to the weekday rule, the settings page says why, and you can add exception dates by hand.

Environment variables: DSH_HOME (host-side) — base directory for the plugin's local data (default ~/.dsh). No other env vars, no secrets, no tokens.

Segment reference (all 16, toggleable & reorderable):

SegmentShowsSource
Status● running / idle / error dotsession snapshot running / lastAgentError + chat partial / runningCalls
Modelmodel of the latest responsesessionModel projection (host fold of assistant/message events)
Titlesession title (truncated)SessionSummary.displayTitle
Workspaceworkspace dir nameSessionSummary.cwd
Turns & stepsN turns · M stepssessionStats projection (window-fold fallback)
Model & tool timeLLM · tool-call wall timesessionStats
TTFT & decodeavg first token · tok/ssessionStats
Cache hitprompt cache-hit share (2 decimals, capped at 99.99%)tokenUsage
Tokensbilled input/output totalstokenUsage
Contextcontext-window occupancy %contextPressure
Throughput TPSlive generation rate (default on)client fold of the session event window (assistant/live-chunk); block-aware token estimation (~4 chars/token + block/role framing, re-priced at block-end), measured over a trailing 1.5 s window so the figure is independent of stream granularity; switches to the provider-reported rate once exact usage lands, and reports 0 while the session is not generating
Session timewall clock, ticks while runningchat turnTimings
Cost estimate≈¥0.0123 (off by default)sessionUsage projection — each model's usage × its own effective price, with the tier decided by the working-day/weekend/holiday rule at that step's own time, summed across models
Jobsrunning background jobsctx.jobs roster (same source as the desktop's session-header job list)
Queuequeued messagescomposer inbox (useInput → queue)
Errorsfailed/retried/over-limit count (>0 only)chat node fold