ROYLeXJ/dsh-notify-tray ↗★ 1

dsh-notify-tray

DeepSeek Harness 通知 + 状态栏插件:任务完成、需要输入、需要选择时弹系统通知(macOS / Windows / Linux);macOS 与 Linux(含 UOS、Deepin、麒麟)状态栏常驻小图标,显示任务进度与花费。Windows 没有状态栏,只弹通知。 适合需要实时监控任务进度、Token花费及接收输入提醒的用户。

패키지
dsh-notify-tray
호환성
미검증
Cordis peer 범위
~4.0.5
버전
0.1.3
최근 업데이트
2026. 10. 25.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ROYLeXJ/dsh-notify-tray

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

OptionDefaultDescription
notifyCompleted / notifyFailed / notifyApproval / notifyChoice / notifyInputall onToggle each of the five notification kinds
channelautoauto: the DSH window shows the notification when one is open, otherwise the OS does
suppressWhenFocusedtrueDon't notify while you're looking at that session (switch to another app and you will be)
soundtruePlay a sound with system notifications (macOS chime, Windows toast sound, Linux where the desktop supports it)
traytrueShow the status-bar icon (macOS / Linux, takes effect after a restart; ignored on Windows)
titleStyletextWhat to show next to the whale in the macOS menu bar: text (Pending 1 / Running 2), count (numbers only), icon (whale only)
showSpendInTitlefalseAppend today's spend to the macOS menu-bar label
errorHoldMinutes10How many minutes the icon stays red / shows the × after a task fails (macOS / Linux)

Spend & pricing

OptionDefaultDescription
spendSourceautoUse the DeepSeek account balance when available, otherwise estimate from prices
currencyCNYDisplay currency
balancePollMinutes5How often (minutes) to refresh the DeepSeek account balance
priceSourceautoWhich price to estimate with: auto (price table → custom price → DSH's built-in model catalog → plugin's built-in prices), catalog, custom
customInput / customCacheRead / customOutputemptyCustom price per million tokens; leave empty to disable
customPriceCurrencyCNYCurrency of the custom price
exchangeRate7.21 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

OptionDefaultDescription
planProvidernonenone / custom / deepseek / kimi / glm / opencode / mimo / gemini / grok / claude / gpt / minimax
planIdemptyPreset 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 / planQuotapresetEach can be overridden; leave empty to use the preset
planBalanceemptyPlan / prepaid balance (manual; leave empty when it can be fetched)
planRemainingemptyRemaining quota, e.g. 68% or 1200 requests (a manual value takes precedence over the API)
planResetAtemptyNext reset time (manual)
planApiKeyEnvemptyAPI 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
planQuotaUrlpresetQuota endpoint; leave empty for the preset
planAutoQuotatruePoll the endpoint automatically when there is one
quotaPollMinutes10Quota refresh interval (minutes)

Built-in plan presets (prices are the list prices at the time of writing and may change — all editable):

ProviderPresetsFetched automatically
DeepSeekPay-as-you-goAccount balance GET /user/balance
KimiMembership Go / Plus / Pro / Max / Ultra (CN ¥49–1399, intl. $19–199), legacy Kimi Code, Moonshot pay-as-you-goKimi Code quota GET api.kimi.com/coding/v1/usages (needs the Kimi Code OAuth token, not a Moonshot API key); Moonshot balance
GLMCoding Plan Lite / Pro / Max (CN ¥118 / 538 / 1078, Z.ai $18 / 80 / 168)5-hour and weekly credits GET /api/monitor/usage/quota/limit
OpenCodeGo $10, Go Plus $40, Zen pay-as-you-goNo public endpoint
MiMoToken Plan Lite / Standard / Pro / Max (¥39 / 99 / 329 / 659)No API-key endpoint (console cookie only)
GeminiGoogle AI Plus / Pro / Ultra, API pay-as-you-goNone
GrokSuperGrok Lite / Standard / Plus / Heavy, API pay-as-you-goKey validation only (GET /v1/api-key), no balance
ClaudePro / Max 5x / Max 20x / Team, API pay-as-you-goNo endpoint for regular keys
GPTChatGPT Go / Plus / Pro 5x / Pro 20x / Business, API pay-as-you-goNo endpoint for regular keys
MiniMaxM Plan Go / Explore / Build (CN ¥49 / 119 / 469, intl. $22 / 55 / 132), legacy Coding Plan5-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.