suleymanyaryev/dsh-notification-badge ↗★ 0

dsh-notification-badge

Desktop, browser and webhook notifications plus an app-icon attention badge for DeepSeek Harness — know when your agent finishes a turn, hits an error, or waits for your approval. 适合运行耗时任务的用户,在AI完成、报错或等待审批时及时接收提醒。

패키지
dsh-notification-badge
호환성
미검증
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 10. 18.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:suleymanyaryev/dsh-notification-badge

Configuration

Override the row in your profile's cordis.patch.yml:

- id: notify-badge
  name: dsh-notification-badge
  config:
    minTurnDurationMs: 10000        # only notify for turns ≥ 10s
    webhookUrl: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
    notifyOnApproval: true
    desktop: true
    browser: true
    badge: true
    badgeMode: count                # count | dot
    title: 'DSH'
FieldTypeDefaultMeaning
notifyOnIdlebooleantrueNotify when a turn finishes
notifyOnErrorbooleantrueNotify on agent/error
notifyOnApprovalbooleantrueNotify when a tool call awaits approval
minTurnDurationMsnumber5000Skip notifications for quick turns
desktopbooleantrueNative desktop notification on the server host
browserbooleantrueBrowser Notification popups in the Web UI
browserOnlyWhenHiddenbooleantrueSuppress popups while you are looking at the window
webhookUrlstring''Optional POST target (Slack-compatible payload)
titlestring'DeepSeek Harness'Title for desktop and browser notifications
soundstring'Glass'macOS: a system sound name (looked up in ~/Library/Sounds, /Library/Sounds, /System/Library/Sounds) or an audio file path (absolute, or relative to ~/Library/Sounds); '' is silent
windowsAppIdstring''Windows: AppUserModelID the toast is attributed to; empty uses the posting process's registered identity
badgebooleantruePut the attention count on the application icon
badgeDesktopOnlybooleantrueOnly badge in the desktop shell (a browser tab has no app icon)
badgeModecount | dotcountNumber of sessions, or an unnumbered dot
badgeMaxCountnumber99Highest number rendered
badgeOnIdlebooleantrueCount a finished turn
badgeOnApprovalbooleantrueCount a session waiting on you (including one already waiting at load)
badgeClearOnFocusbooleantrueClear the badge when the window is focused or visible again

Every field is declared .volatile(), so the values are live: the dsh-settings document serves them, and a change applies without a reload. webhookUrl is role('secret'), so its value is stripped before settings cross the wire to the browser.

Webhook payload

{
  "text": "Agent finished — done in 2m 14s",
  "summary": "Agent finished",
  "body": "done in 2m 14s",
  "level": "info",
  "ts": "2026-08-21T12:34:56.000Z"
}