Bundle
dsh-usage-widget
DSH plugin: 在左侧栏实时查看 DeepSeek 余额与 Kimi Code 用量(5 小时窗口 + 每周配额)。In-sidebar live usage monitor for DeepSeek balance and Kimi Code quota (5-hour window + weekly).
- Source
- AHui-Lab
- License
- MIT
- Updated
- Updated 2 days ago
Readme
# dsh-usage-widget A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH) plugin that keeps a compact **usage widget inside the left sidebar** of the Web GUI: - **DeepSeek account balance** — `GET https://api.deepseek.com/user/balance` - **Kimi Code quota** — `GET https://api.kimi.com/coding/v1/usages` (5-hour window + weekly quota) The panel is always visible in the sidebar footer, click to collapse/expand, auto-refreshes every 60 s, and offers a DeepSeek / Kimi toggle. > Community plugin, not an official DeepSeek plugin. ## Install Requires a DSH Web/Desktop profile (the plugin targets the browser client). ```bash # from GitHub (repo ships prebuilt lib/, no build step needed) dsh plugin --profile <name> add github:AHui-Lab/dsh-usage-widget # once published to npm dsh plugin --profile <name> add dsh-usage-widget # if no global dsh CLI npx --yes @deepseek-ai/dsh plugin --profile <name> add github:AHui-Lab/dsh-usage-widget ``` Restart DSH, then look at the bottom of the left sidebar for the "用量" entry. ## How the data flows The browser cannot call `api.kimi.com` directly (its CORS preflight rejects the `Authorization` header), so the plugin keeps two data paths: 1. **Host route** `GET /usage-monitor/deepseek|kimi` (registered on the host webserver) proxies the upstream. It prefers the API key the client sends in the `Authorization` header, otherwise falls back to the DSH credentials service / env. 2. **Browser-direct fallback** (used when the host route is unreachable): fetch the upstream directly with a key the user stored in the panel. Works for DeepSeek (CORS allowed); Kimi is CORS-blocked in this mode. ## API keys Keys are **per-machine** and never ship with the plugin: - **Host route mode**: put `DEEPSEEK_API_KEY` / `KIMI_CODING_API_KEY` in `~/.dsh/.credentials.yaml` or the environment (host reads them). - **Browser-direct fallback**: open the panel → gear icon → paste the DeepSeek API Key and the Kimi Code token. They are kept in the browser's `localStorage` only (key prefix `usage-monitor.key.*`) and sent only to the upstream API. > Note: keys are intentionally **not** distributed with the plugin. Each machine configures its own. ## Layout The widget registers into the `sidebar.footer.action` list slot and renders inline inside the sidebar column (full column width, no floating overlay, no overlap with the chat area). All styles are scoped under `data-plugin="dsh-usage-widget"`. ## Development / publishing notes - Host entry: `lib/index.js` (registers the two `/usage-monitor/*` routes; `inject: ["webServer"]`). - Client bundle: `lib/client.js` (ModuleLoader bundle; only `react` + `@deepseek-ai/dsh-client-ui-primitives` from the baseline). - `lib/` is committed so both GitHub and npm installs need no build step. - Environment overrides: `USAGE_MONITOR_DEEPSEEK_REF`, `USAGE_MONITOR_KIMI_REF`, `USAGE_MONITOR_DEEPSEEK_BASE`, `USAGE_MONITOR_KIMI_BASE`. Verify before releasing: ```bash npm run check npm pack --dry-run --ignore-scripts ``` ## License [MIT](LICENSE)
Install
dsh plugin --profile web add github:AHui-Lab/dsh-usage-widget#143076fee6a0ddba141d4055149bc9aad2c5d3a8
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-usage-widget from the hub