dshbase

插件目录 / Developer / cc-dsh-notifier

cc-dsh-notifier

已验证 · 实测可装 baobaolaodie

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-22最近推送
跨平台平台

功能简介

Windows desktop notifications for Claude Code and DeepSeek Harness sessions. Click any toast to restore the session window — unlike similar tools that only notify without focus actions. Zero external npm dependencies.

✅
我们的评价
可用 — 实测通过,早期项目

Windows desktop notifications for Claude Code and DeepSeek Harness sessions. Click any toast to restore the session window — unlike similar tools that only notify without focus actions. Zero external npm dependencies. 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

cc-dsh-notifier

Windows desktop notifications for Claude Code and DeepSeek Harness sessions
Permission requests · Questions · Waiting for input · Click-to-return

Quick Start License

version 0.1.2 Claude Code DeepSeek Harness Windows 10/11 Node.js 18+ Python 3

English · 中文

cc-dsh-notifier raises a native Windows toast with sound when an agent needs your attention and you are not looking at its window. It serves Claude Code through its hook system and DeepSeek Harness through a small bundle plugin, sharing one daemon pipeline. Clicking a toast returns you to the session window. Zero third-party npm dependencies.

Features

Feature Description
Interruption events Notifies on permission requests, questions, and waiting for input
Focus awareness Suppresses notifications while the session window is focused; notifies only when it is not
Click-to-return SetForegroundWindow targets the session window; browser tabs activate via CDP, with a UIA fallback
Multi-session Each session binds its own window handle; toasts carry the session identity
Localized notifications Toast text follows the Windows display language (auto) or a language setting (zh/en)
DeepSeek Harness The dsh-notifier plugin covers web and tui profiles with one install

Quick Start

Prerequisites

  • Windows 10 or 11
  • Node.js 18 or later
  • Python 3 with the winrt packages: pip install winrt-runtime winrt-Windows.UI.Notifications winrt-Windows.Data.Xml.Dom

Install (Claude Code)

node scripts/install.mjs

The installer backs up ~/.claude/settings.json, injects five hooks, registers the cc-notifier AppUserModelID, and writes the default config. Open a new Claude Code session afterwards.

Install (DeepSeek Harness)

Recommended — download the tarball from the latest release and install it (no repository clone, no credentials):

dsh plugin --profile web add ./baobaolaodie-cc-dsh-notifier-0.1.5.tgz
dsh plugin --profile dsh-tui add ./baobaolaodie-cc-dsh-notifier-0.1.5.tgz

版本说明 / Version note: 顶部徽章 0.1.2 是 root 包版本;上方 tarball 名 0.1.5 是 dsh 插件包版本,两者是两个独立的发布单元(en: top badge = root package, tarball = dsh plugin; independent release units).
Alternative — git install (clones the whole repository, zero config):

dsh plugin --profile web add github:baobaolaodie/cc-dsh-notifier
dsh plugin --profile dsh-tui add github:baobaolaodie/cc-dsh-notifier

GitHub Packages (@baobaolaodie/cc-dsh-notifier) exists as a maintainer convenience channel only: GitHub Packages' npm registry always requires a read:packages token for downloads, even for public packages (verified). Use the tarball or git install instead.

Verified against dsh 0.1.0-rc.6 on Windows 11 (2026-08-16): web and tui profiles, permission/question/waiting-for-input notifications, focus-aware silence, click-to-return, and the tarball install flow.

dsh-TUI · A Windows toast notifier plugin in the dsh-TUI ecosystem.

Verify

npm test

Usage

Claude Code

Start a session and switch away. The system notifies when Claude requests a permission, asks a question, or finishes a turn.

claude
# switch to another window; toasts appear when Claude needs you

DeepSeek Harness

The plugin forwards dsh session events into the same pipeline. Web sessions bind to the browser window; tui sessions bind to the terminal window:

dsh web          # or: dsh --profile web
dsh-tui          # or: dsh --profile dsh-tui

Manual trigger (testing)

node scripts/test.mjs permission-request   # permission-request | ask-user-question | stop | session-start

Toasts are suppressed while the target window is focused, so switch away to observe them.

Configuration

Edit ~/.cc-notifier/config.json (created on install):

Key Default Description
enabled true Set to false to disable notifications globally
dedupWindowMs 0 Deduplication window (ms); 0 = no dedup; >0 merges per session+type
pythonPath empty Absolute path of the toast interpreter (written by the installer); empty = python from PATH
pollIntervalMs 10000 Daemon window-poll period (ms)
windowWhitelist [] Browser process whitelist for dsh web binding/focus (e.g. chrome.exe/msedge.exe)
sound true Set to false to mute toast sound
language auto Toast language: auto (system display language, zh-*→zh, en-*→en, other/failure→en), zh, or en

Architecture

An event-driven pipeline runs only while sessions are active. Claude Code hooks and the dsh plugin both produce the same normalized payloads; a resident daemon decides whether to notify, and a Python agent shows the toast:

%%{init: {'theme': 'base', 'themeVariables': {'fontSize': '14px'}}}%%
flowchart LR
    CC["Claude Code<br/>hooks"] --> NA["notify-agent.mjs<br/>forwarder"]
    DSH["dsh-notifier<br/>plugin · web/tui"] --> NA
    NA -->|"HTTP · localhost"| DM["daemon.mjs<br/>sessions · focus · lifecycle"]
    DM --> TA["toast-agent.py<br/>winrt toast"]
    TA -->|"click"| WIN["session window<br/>SetForegroundWindow · CDP/UIA tab"]
    DM --> ST[("state · logs<br/>%LOCALAPPDATA%")]

    classDef client fill:#3B82F6,stroke:#2563EB,color:#fff,stroke-width:2px
    classDef service fill:#10B981,stroke:#059669,color:#fff,stroke-width:2px
    classDef data fill:#8B5CF6,stroke:#7C3AED,color:#fff,stroke-width:2px

    class CC,DSH,WIN client
    class NA,DM,TA service
    class ST data

The daemon is single-instance: it wakes on demand, exits after 60 seconds of no sessions, and self-restarts when its code changes. Sessions re-register automatically after a daemon restart.

Project Structure

├── scripts/               # Runtime pipeline
│   ├── notify-agent.mjs   # Hook forwarder (Claude Code)
│   ├── daemon.mjs         # Resident process: sessions, focus, dedup
│   ├── toast-agent.py     # Python winrt toast + click handling
│   └── lib/               # Shared modules, win32 bridge, CDP/UIA helpers
├── plugins/
│   └── dsh-notifier/      # dsh bundle plugin (web + tui profiles)
├── test/                  # node:test suite (explicit file list)
├── docs/                  # Installation, usage, troubleshooting (bilingual)
├── dsh-plugin.json        # dsh-ecosystem-spec Community v0.15 declaration manifest
└── package.json           # Zero runtime dependencies

Tech Stack

Layer Technology Purpose
Runtime Node.js 18+ (ESM) Forwarder, daemon, plugin
Notifications Python 3 + winrt Windows toast rendering and activation
Window bridge PowerShell 5.1 + C# helpers Window enumeration, foreground query, CDP/UIA tab activation
Testing node:test Unit + integration tests

Deployment

CI runs on GitHub Actions (test × 6 matrix across Node 18/20/22 on Ubuntu and Windows, plus quality, pr-policy, docs-links, and a summary job). See .github/workflows/ci.yml.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-change)
  3. Commit with Conventional Commits (feat:, fix:, docs:, …)
  4. Open a Pull Request

PRs must pass the full CI suite, including the bilingual documentation mirror check and version consistency checks. See CONTRIBUTING.md.

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 cc-dsh-notifier」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:baobaolaodie/cc-dsh-notifier

Headless(CLI)profile:

dsh plugin --profile headless add github:baobaolaodie/cc-dsh-notifier

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →