by Aisland-SJL
🌊 Persistent dock & fully-customizable balance/usage panel for DeepSeek Harness — activity heatmap, dual-channel comparison, local-only & privacy-first
# Add to your Claude Code skills
git clone https://github.com/Aisland-SJL/dsh-usageGuides for using ide extensions skills like dsh-usage.
dsh-usage is an open-source ide extensions skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Aisland-SJL. 🌊 Persistent dock & fully-customizable balance/usage panel for DeepSeek Harness — activity heatmap, dual-channel comparison, local-only & privacy-first. It has 51 GitHub stars.
dsh-usage's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Aisland-SJL/dsh-usage" and add it to your Claude Code skills directory (see the Installation section above).
dsh-usage is primarily written in JavaScript. It is open-source under Aisland-SJL on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other IDE Extensions skills you can browse and compare side by side. Open the IDE Extensions category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh dsh-usage against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
A persistent floating dock, a fully customizable balance / token-usage panel, an activity heatmap, and a dual-channel usage comparison for the DeepSeek Harness Web GUI (dsh web).
Your key numbers stay visible at all times — balance glows green (red only when out of credit), rows are separated by hairlines, and a settings gear plus one-click refresh sit in the corner. When the sidebar collapses, the dock folds into a tiny balance pill.
A two-column card layout; every widget has a detail and a compact form, and can be drag-reordered, collapsed, hidden, or pinned.
| Widget | What it does |
|---|---|
| 💳 Balance | Big number on the left, available / topped-up / granted rows on the right; provider switchable |
| 📊 Today | Today's tokens plus input / output / cache-read breakdown |
| 📈 This month | Monthly tokens plus the same breakdown |
| 🎯 Cache hit | Today's and all-time cache hit rates |
| ↔️ Channel share | DSH channel vs Claude Code channel ratio bar |
| 📜 Usage log | Last 14 days per-day list, click to drill into per-model detail |
| 🔥 Activity heatmap | 28-day × 6-band dot grid (dates across, 0–24h down) |
Accent (presets + color picker), background, and panel opacity are adjustable live. Drag-reorder, pin, collapse, hide — every number presents your way, echoing DeepSeek Harness's "everything is a plugin" spirit.
| Feature | Notes | |
|---|---|---|
| 💳 | Persistent dock | Pinned compacts always visible; collapses into a balance pill when the sidebar folds |
| 🎨 | Everything customizable | Widgets: pin / collapse / hide / drag-reorder with a dashed placeholder and glide animation; accent, background, opacity; persisted in localStorage |
| 📊 | Balance & usage panel | Provider picker, balance breakdown, today/month totals in k/M/B units, cache hit, usage log with per-model drilldown |
| 🔥 | Activity heatmap | GitHub-style dots: 28 days × 6 four-hour bands with date labels |
| ↔️ | Channel share | DSH channel vs Claude Code channel (incremental JSONL aggregation of ~/.claude/projects) |
| 🔄 | Background refresh | Refresh at startup, then every 5 minutes: balances, DSH tokens, Claude Code aggregation |
| 🔒 | Local-only security | Three loopback-only GET endpoints; credentials resolved server-side; upstream forced HTTPS with DNS pinning; Claude logs aggregate numbers only — message text never leaves the machine |
UI supports Chinese and English. Credentials come from Harness's ~/.dsh/.credentials.yaml; the plugin never reads, caches, or echoes secrets.
Requires a DeepSeek Harness web profile (@deepseek-ai/dsh >= 0.1.0-rc.6).
dsh plugin --profile web add "github:Aisland-SJL/dsh-usage"
Restart dsh web, hard-refresh the browser, and the dock appears at the bottom-left. Update / remove:
dsh plugin --profile web update dsh-usage
dsh plugin --profile web remove dsh-usage
Balance providers read credential references from ~/.dsh/.credentials.yaml:
DEEPSEEK_API_KEY: sk-your-key-here # official DeepSeek route
OPENROUTER_MANAGEMENT_KEY: sk-or-v1-... # OpenRouter account (Management Key, not the inference key)
ZAI_API_KEY: your-zai-key # Z.ai open platform
Moonshot / Kimi profiles under llm-pi-ai are discovered automatically and reuse their apiKeyEnv. Providers without a public balance API show an explicit "no public balance interface" state — never a guess.
| Provider | Upstream endpoint | Default credential ref |
|---|---|---|
| DeepSeek | GET {origin}/user/balance |
DEEPSEEK_API_KEY |
| OpenRouter | GET {origin}/api/v1/credits |
OPENROUTER_MANAGEMENT_KEY |
| Moonshot / Kimi | GET {origin}/v1/users/me/balance |
pi-ai provider apiKeyEnv |
| Z.ai / GLM | GET {origin}/api/paas/v4/balance |
ZAI_API_KEY |
| Method | Path | Response |
|---|---|---|
GET |
/api/usage/providers |
Provider list, balance scheme, and status summary |
GET |
/api/usage/balance?provider=<id> |
Unified balance snapshot; refresh=1 forces an upstream query |
GET |
/api/usage/usage |
Per-day/per-model token aggregates, cache hit rates, 24-hour buckets (days[].hours), and the Claude Code channel (claude) |
Non-GET requests get 405, non-loopback callers get 403; every response is JSON with Cache-Control: no-cache.
npm install # react/react-dom/jsdom for offline tests only
npm run check # syntax checks for every module and script
npm test # 81 offline tests: balance schemes, token folding, server boundary, client, e2e flows, Claude aggregation
Tests are fully offline — no network, and the real ~/.dsh is never touched (server tests redirect DSH_HOME to a temp dir). Dry-run the real Claude data: node scripts/validate-claude.mjs.
~/.dsh/storages/ hold only aggregated token numbers and fold cursors — no prompts, no replies.