dsh-notify-tray
提供系统通知弹窗与状态栏进度及花费显示 适合需要实时监控任务进度、Token花费及接收输入提醒的用户。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ROYLeXJ/dsh-notify-tray说明文档
阅读完整 README ↗Configuration
Every option can be changed under DSH Plugins → Whale Notify Station → Configure, or written into the profile's cordis.patch.yml:
- id: notify-tray
config:
channel: auto # auto | client | system | both | off
notifyInput: true
spendSource: auto # auto | balance | estimate
planProvider: kimi # provider of your plan, see the table below
planId: cn-pro # preset plan ID; leave empty for "manual"
planApiKeyEnv: KIMI_CODE_TOKEN
prices: # optional: price per million tokens, keyed by "provider/model", model ID or prefix
deepseek-flash: { input: 2, cacheRead: 0.04, output: 8 }
Notifications & status bar
| Option | Default | Description |
|---|---|---|
notifyCompleted / notifyFailed / notifyApproval / notifyChoice / notifyInput | all on | Toggle each of the five notification kinds |
channel | auto | auto: the DSH window shows the notification when one is open, otherwise the OS does |
suppressWhenFocused | true | Don't notify while you're looking at that session (switch to another app and you will be) |
sound | true | Play a sound with system notifications (macOS chime, Windows toast sound, Linux where the desktop supports it) |
tray | true | Show the status-bar icon (macOS / Linux, takes effect after a restart; ignored on Windows) |
titleStyle | text | What to show next to the whale in the macOS menu bar: text (Pending 1 / Running 2), count (numbers only), icon (whale only) |
showSpendInTitle | false | Append today's spend to the macOS menu-bar label |
errorHoldMinutes | 10 | How many minutes the icon stays red / shows the × after a task fails (macOS / Linux) |
Spend & pricing
| Option | Default | Description |
|---|---|---|
spendSource | auto | Use the DeepSeek account balance when available, otherwise estimate from prices |
currency | CNY | Display currency |
balancePollMinutes | 5 | How often (minutes) to refresh the DeepSeek account balance |
priceSource | auto | Which price to estimate with: auto (price table → custom price → DSH's built-in model catalog → plugin's built-in prices), catalog, custom |
customInput / customCacheRead / customOutput | empty | Custom price per million tokens; leave empty to disable |
customPriceCurrency | CNY | Currency of the custom price |
exchangeRate | 7.2 | 1 USD = ? CNY; catalog prices are in USD and converted when displaying CNY |
prices | {} | Per-model price table, highest priority |
The Current API price section shows the model you're using (provider / model) and its catalog price. DSH's pi-ai adapter ships a model catalog (Claude, GPT, Gemini, Grok, Groq, Kimi, GLM, MiMo, MiniMax, OpenCode Go, DeepSeek, …); the plugin reads it directly and falls back to its built-in prices or your custom price when a model is missing. A one-click Copy catalog price into custom price lets you tweak from the catalog value.
Plans
| Option | Default | Description |
|---|---|---|
planProvider | none | none / custom / deepseek / kimi / glm / opencode / mimo / gemini / grok / claude / gpt / minimax |
planId | empty | Preset plan ID (pick it from the drop-down on the settings page; name, price, period, currency and quota description are filled in automatically) |
planName / planPrice / planPeriod / planCurrency / planQuota | preset | Each can be overridden; leave empty to use the preset |
planBalance | empty | Plan / prepaid balance (manual; leave empty when it can be fetched) |
planRemaining | empty | Remaining quota, e.g. 68% or 1200 requests (a manual value takes precedence over the API) |
planResetAt | empty | Next reset time (manual) |
planApiKeyEnv | empty | API key reference used for quota lookups — an environment-variable name, the same one DSH's Models page uses when it saves a key. The plugin only reads it when querying quota |
planQuotaUrl | preset | Quota endpoint; leave empty for the preset |
planAutoQuota | true | Poll the endpoint automatically when there is one |
quotaPollMinutes | 10 | Quota refresh interval (minutes) |
Built-in plan presets (prices are the list prices at the time of writing and may change — all editable):
| Provider | Presets | Fetched automatically |
|---|---|---|
| DeepSeek | Pay-as-you-go | Account balance GET /user/balance |
| Kimi | Membership Go / Plus / Pro / Max / Ultra (CN ¥49–1399, intl. $19–199), legacy Kimi Code, Moonshot pay-as-you-go | Kimi Code quota GET api.kimi.com/coding/v1/usages (needs the Kimi Code OAuth token, not a Moonshot API key); Moonshot balance |
| GLM | Coding Plan Lite / Pro / Max (CN ¥118 / 538 / 1078, Z.ai $18 / 80 / 168) | 5-hour and weekly credits GET /api/monitor/usage/quota/limit |
| OpenCode | Go $10, Go Plus $40, Zen pay-as-you-go | No public endpoint |
| MiMo | Token Plan Lite / Standard / Pro / Max (¥39 / 99 / 329 / 659) | No API-key endpoint (console cookie only) |
| Gemini | Google AI Plus / Pro / Ultra, API pay-as-you-go | None |
| Grok | SuperGrok Lite / Standard / Plus / Heavy, API pay-as-you-go | Key validation only (GET /v1/api-key), no balance |
| Claude | Pro / Max 5x / Max 20x / Team, API pay-as-you-go | No endpoint for regular keys |
| GPT | ChatGPT Go / Plus / Pro 5x / Pro 20x / Business, API pay-as-you-go | No endpoint for regular keys |
| MiniMax | M Plan Go / Explore / Build (CN ¥49 / 119 / 469, intl. $22 / 55 / 132), legacy Coding Plan | 5-hour window remaining GET /v1/coding_plan/remains |
Anything that can't be fetched can be typed in by hand; empty fields are simply hidden. On macOS / Linux the status-bar menu gains a Plan · name · price · remaining row whose submenu shows balance, remaining quota, reset time, the raw details returned by the endpoint, a Refresh quota action and links to the usage / pricing pages.