DeepSeek Harness 插件

dsh-web-notification-pd90506

Browser system notifications for the DeepSeek Harness web GUI: turn completion and permission/approval asks.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
pd90506/dsh-web-notification
最近更新
2026年8月22日
分类
安全与权限
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/pd90506/dsh-web-notification
插件名:dsh-web-notification-pd90506
作者:pd90506

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-web-notification

Browser system notifications for the DeepSeek Harness web GUI:

  • Task complete — fired when any session's agent transitions running → idle (turn finished).
  • Permission requested — fired when the harness raises an approval/permission ask (tool name + reason + session).

So you can switch tabs or apps and still know the moment DSH needs you — on macOS these arrive as real Notification Center banners, with sound if your browser's notification settings allow it.

Notifications fire only while the page is hidden or unfocused (when you're watching the tab, the GUI's own UI already tells you). Clicking a notification focuses the DSH window. Repeated notifications for the same session replace each other instead of stacking.

host:  agent/status (running→idle) + approval/request (observe-only) events
        -> bounded in-memory queue -> GET /__dsh-web-notification/poll?after=<seq>
client: polls with a monotonic cursor (every tab sees every item)
        -> permission + visibility gate
        -> new Notification("Task complete", { body: "deploy done finished its turn" })

Install

dsh plugin --profile web add https://github.com/pd90506/dsh-web-notification/archive/refs/tags/v0.1.0.tar.gz

Restart the web server so the host half and the served client bundle pick up the plugin. Then grant notification permission for the DSH origin once (e.g. via the browser's site settings for http://127.0.0.1:3080), and make sure macOS System Settings → Notifications → your browser allows banners and sound.

No harness change is needed: cordis.patch.yml mounts the host row, and the web profile's client module loader serves lib/client.js.

How it works

  • The host half listens to two Cordis events. agent/status reports the running → idle edge per session (the turn's end); approval/request is a waterfall event the plugin only observes — it always calls next() and can never block, alter, or answer an approval. Each event becomes a small JSON item (kind, session id, session title, tool name, reason) in a bounded queue (200 items / 60 s TTL).
  • The client half polls the queue over a same-origin endpoint with a monotonic after=<seq> cursor, so multiple open tabs each see every item. It fires a Notification only when permission is granted and the page is not visible.
  • The notification icon is the site's own /favicon.svg, rasterized to PNG in-page.

Permission boundary

  • The plugin registers no model-facing tools, writes nothing to session logs, and adds no prompt sections. Notifications are UI-only and cost zero tokens.
  • The approval listener is strictly pass-through; the harness's own approval cards and policies remain the only decision path.
  • The poll endpoint serves only the notification items above (no message content, no tool arguments) on the same origin as the GUI.

Known limitations

  • Notifications require the DSH page to be open in a tab (the browser shows them while it is hidden, but not after the tab is closed) and Notification permission granted; a denied site permission cannot be overridden from inside the page.
  • Delivery latency is up to the 2 s poll interval.
  • A completion or ask that happens while no page is connected is queued for at most 60 s.

Development

Zero build step: the host half is plain ESM JavaScript (lib/index.js), and the client half is a dependency-free single-file bundle (lib/client.js) in the ModuleLoader handshake format. Edit, reinstall, restart.

Related: omdsh-dev/dsh-notification — turn-completion notifications with per-outcome toggles and keyword rules (this plugin instead covers permission asks and needs no build tooling).

License

MIT