dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Browser notification for the DeepSeek Harness Web UI — get a system notification the moment a session finishes running.
dsh-notify is a small, behavior-only Web client plugin for DeepSeek Harness (dsh). When you hand the model a long task and switch to another tab or application, it raises a browser notification the instant the task completes, so you never have to keep checking back.
running state flips to idle, titled with the session name and a Chinese completion body.dsh web, or dsh --profile web).http://127.0.0.1:<port>, which is a secure context, so the Notification API is available.dsh-notify is an installable bundle. Install it into a profile from npm, a tarball, or straight from this repository.
# from GitHub (this repo)
dsh plugin --profile web add github:you/dsh-notify
# from npm
dsh plugin --profile web add dsh-notify
# from a local checkout or packed tarball
dsh plugin --profile web add ./dsh-notify
dsh plugin forwards to pnpm, so any pnpm spec works. Installing a bundle appends it to the profile's dsh.profile.bundles and applies its patch layer; no manual cordis.yml editing is needed.
GitHub installs need no build step. This repository commits its built
lib/, sodsh plugin add github:you/dsh-notifyworks directly, with no install-time build allowance to grant.
Install, then boot the Web UI and grant the notification permission the first time the browser asks (on your first click or keystroke):
dsh --profile web
Start a task in any session, switch away, and a system notification appears when the model finishes. There is nothing else to configure.
The plugin injects the runtime's sessions service and subscribes to the session list snapshot — the same fact source the sidebar reads. A small fold keeps each session's previous running bit, records the first observation without notifying, and dispatches one notification per running → idle edge, gated by the "are you looking at this session" rule above.
The browser half is a CJS bundle registered through window.__ModuleLoader__.load, which the harness's client module system scans and serves under /plugins/dsh-notify/client.js. The node half is a no-op host plugin body.
pnpm install # install dev tooling
pnpm build # bundle lib/index.js (node) and lib/client.js (browser)
pnpm typecheck # tsc --noEmit
pnpm test # vitest
Build artifacts are committed under lib/ so GitHub installs work without a build step.
dsh-notify/
├── package.json # dsh.client + dsh.bundle.patch manifests
├── cordis.patch.yml # bundle layer: inserts the dsh-notify row
├── tsdown.config.ts # builds the node half and browser half
├── src/
│ ├── index.ts # node half (no-op host plugin)
│ └── client/
│ ├── index.ts # apply / inject
│ ├── watcher.ts # running→idle edge detection
│ ├── notifier.ts # Notification dispatch + permission bootstrap
│ └── types.ts # minimal local runtime views
└── tests/notify.spec.ts
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。