Passer au contenu principal
L

dsh-balance

lemcae/dsh-balance

Solde du compte DeepSeek et estimation des dépenses de la session en cours dans une puce de la barre supérieure et une carte de paramètres, avec actualisation automatique tenant compte des pauses, un tableau de prix officiel modifiable, un outil de modèle `deepseek_balance` et une interface bilingue.

Installer

dsh plugin --profile web add github:lemcae/dsh-balance

README

dsh-balance

English | 中文

awesome · DSH plugin

A Host + Web Client composition plugin for deepseek-harness (dsh): queries the DeepSeek Open Platform account balance and estimates the current session's spend. Installable via dsh plugin add.

1786767329895

1786767316204

1786899004009

Features

  • Balance: queries the official GET https://api.deepseek.com/user/balance using the harness's own DEEPSEEK_API_KEY credential (the key travels only over a bounded node subprocess's stdin — never in command lines, logs, or UI).
  • Session spend estimate: folds the provider-reported token usage from the session log (uncached input / cache-hit input / output) and prices each step with the official peak/off-peak table (peak 9:00–12:00 and 14:00–18:00 Beijing time). Estimate only — the official bill is authoritative.
  • Top-bar chip (session header): 余额 ¥x | 会话 ≈¥y, click to refresh; hover (500 ms) shows a detail tooltip below the button, horizontally centered and viewport-clamped.
  • Settings page (设置 → DeepSeek 余额): balance rows, an auto-refresh on/off switch, refresh-interval selector (15 s … 5 min or custom), UI-language selector (auto follows the host UI / 中文 / English), and an editable price table (off-peak / peak per model). Changes persist in the settings document across restarts.
  • Model tool: deepseek_balance returns balance + the calling session's estimated spend.
  • Pause-aware refresh: after 2 refresh cycles without a new user or assistant message the auto-refresh pauses (5-minute detection cadence); it resumes when a new conversation appears. Auto-refresh can also be switched off manually (Settings switch or /dsh-balance auto-refresh off); while off, no queries are issued.
  • Self-contained: no host-repository changes are required to deploy (communication rides the built-in commands Remote namespace).

Installation

Standard (bundle install, recommended):

dsh plugin --profile web add @lemcae/dsh-balance

The installer adds the package to the web profile's dependencies and bundle list; after restarting dsh web, the loader applies the in-package cordis.patch.yml automatically. Verify:

  • Open any session → the 余额 ¥x | 会话 ≈¥y chip appears in the header with a hover detail tooltip;
  • 设置 → DeepSeek 余额 shows the full card (balance, interval, language, price table);
  • Ask the model to call the deepseek_balance tool.

Manual install (same mechanism, bypassing the installer): edit $DSH_HOME/profiles/web/package.json — add "@lemcae/dsh-balance": "<latest version>" (as on npm) to dependencies and "@lemcae/dsh-balance" to the dsh.profile.bundles array — then run pnpm install in that directory and restart.

Peer dependencies are the official @deepseek-ai/* packages (^0.1.0-rc.5 line, covering rc.5 and rc.6; @deepseek-ai/cordis ^4.0.1) plus react, provided by the host.

Usage

  • Chip: shows 余额 ¥x | 会话 ≈¥y; click to refresh; hover for details (breakdown, model, 更新于, refresh cadence / pause note).
  • Settings: 设置 → DeepSeek 余额 — balance rows, 自动刷新间隔 (15 s … 5 min or custom), 自动刷新开关, 界面语言 (auto / 中文 / English), price-table editor (保存 persists), peak-hours hint.
  • Command (also usable from the command palette): /dsh-balance [refresh | interval <毫秒> | prices <JSON> | language <auto|zh-CN|en> | auto-refresh <on|off>].
  • Tool: deepseek_balance (no arguments).

Configuration

Settings namespace dsh-balance:

FieldDefaultMeaning
autoRefreshtrueEnable/disable the auto-refresh timer (/dsh-balance auto-refresh on|off)
refreshIntervalMs30000Active auto-refresh interval (5 000–600 000 ms)
languageautoPlugin UI language:auto (follow host UI), zh-CN, or en
pricessee source{ models: { deepseek-v4-flash, deepseek-v4-pro, default } }, each model { offPeak, peak } rates in CNY per 1M tokens

Prices are picked by Beijing hour: peak for 9:00–12:00 and 14:00–18:00, offPeak otherwise.

Known Limitations and Deferred Work

  • Estimate vs. bill: the spend is computed from the local session log and may differ from the official bill (provider-side caching policy, unlogged requests, model renames, price changes). Edit the price table in Settings to keep it current.
  • Unknown models are priced with the default entry (v4-flash rates).
  • Subagents have their own session ids and are not included.
  • Compaction: a compacted session resets event seqs; the incremental fold may keep pre-compaction totals (acceptable for an estimate).
  • Session-log noise: every auto-refresh runs a slash command, appending command/run + command/done events; pause-downshifting reduces this.
  • Pause recovery latency: while paused, the client probes once per PAUSED_REFRESH_MS (5 min); a new conversation resumes the active cadence at the next probe, so recovery can lag by up to that interval.
  • Balance is cached 10 s; the tool and chip may share one API call per cycle.

Model Experience

Request context and condition

What the model sees

The tool schema deepseek_balance (zero parameters) plus its description, which states it queries the official balance endpoint with the harness credential and returns the session spend estimate.

Token effect

Zero direct tokens; the tool result is data-dependent (payload with balance, consumption, prices, idle state).

KV Cache effect

Prefix-stable: tool name, description, and schema are constant; the result varies per call, which does not invalidate prefix reuse.

Plugins associés