Starlight-bananice/dsh-status-bar ↗★ 8
@bananiceee/dsh-status-bar
可配置的底部状态栏管理工具 适合需要自定义DSH底栏信息段、避免内容截断并查看实时TPS的用户。
安装
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.
| Option | Default | Meaning |
|---|---|---|
enabled | true | Master switch; false hides the bar entirely |
wrap | true | Allow 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) |
segments | 13 on / 3 off (see below) | Ordered list of enabled segments |
cost.currency | CNY | Currency for cost display (CNY / USD) |
cost.models | {} | User-maintained model price book (model id → prices + schedule) |
calendar.dayRules | true | Split peak/off-peak by working day vs weekend/holiday; off = clock windows only (the old behavior) |
calendar.autoFetch | true | Fetch 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):
| Segment | Shows | Source |
|---|---|---|
| Status | ● running / idle / error dot | session snapshot running / lastAgentError + chat partial / runningCalls |
| Model | model of the latest response | sessionModel projection (host fold of assistant/message events) |
| Title | session title (truncated) | SessionSummary.displayTitle |
| Workspace | workspace dir name | SessionSummary.cwd |
| Turns & steps | N turns · M steps | sessionStats projection (window-fold fallback) |
| Model & tool time | LLM · tool-call wall time | sessionStats |
| TTFT & decode | avg first token · tok/s | sessionStats |
| Cache hit | prompt cache-hit share (2 decimals, capped at 99.99%) | tokenUsage |
| Tokens | billed input/output totals | tokenUsage |
| Context | context-window occupancy % | contextPressure |
| Throughput TPS | live 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 time | wall clock, ticks while running | chat 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 |
| Jobs | running background jobs | ctx.jobs roster (same source as the desktop's session-header job list) |
| Queue | queued messages | composer inbox (useInput → queue) |
| Errors | failed/retried/over-limit count (>0 only) | chat node fold |