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

@bananiceee/dsh-status-bar

可配置的底部状态栏管理工具 适合需要自定义DSH底栏信息段、避免内容截断并查看实时TPS的用户。

包名
@bananiceee/dsh-status-bar
兼容性
待验证
版本
0.3.0
许可证
MIT
最近更新
2026年10月1日

安装

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

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