DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Plugin Desktop Notify — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-desktop-notify

Plugin Desktop Notify

为 DeepSeek Harness 提供上下文感知的桌面通知:回合完成、等待授权、等待回答;按情况提供任务摘要,客户端在前台时不打扰。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:LeeRolling/dsh-plugin-desktop-notify#ef4b32e7540f1b0e9aec33078ab57e7ddc213c0e
README兼容性版本

兼容性与来源证明

Plugin Desktop Notify 以 dsh-plugin-desktop-notify 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/11

版本

0.1.0stable
2026/10/11

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 r

README

dsh-plugin-desktop-notify

上下文感知的桌面通知插件,给 DSH 补上官方客户端缺失的通知能力。

已验证环境:DSH Desktop 0.2.0-rc.2(Electron 44)· Windows 11 · desktop profile。 页面 origin 是 dsh-app://app/(安全上下文),通知权限由桌面壳自动授予, new Notification() 直接出 Windows 通知中心 Toast,显示名 DeepSeek Harness, 声音用 Windows 自带提示音(silent 保持默认 false,不加自定义音效)。

它解决什么

客户端最小化、或被别的窗口盖住时(比如你正在看浏览器 / ComfyUI),你既看不到 「需要你授权」的审批卡片,也不知道回合什么时候跑完了。本插件在这两类时刻弹一条 系统通知,并且正文里带上任务摘要,让你一眼知道要做什么。

情况通知标题正文
需要授权执行命令(pwsh / bash 等)有任务需要授权工具名 + 该操作用途(审批理由,已剥掉 escalate sandbox to <mode>: 机器前缀)
需要授权改文件(write / edit 等)有文件需要修改工具名 + 该操作用途
其它工具需要确认有任务需要你确认工具名 + 审批理由
模型提问等你回答有问题需要你回答问题原文
回合结束任务已完成会话名 + 提示回客户端看结果

什么时候不打扰你

  • 客户端在前台(窗口获得焦点、页面可见)时:一律不弹,只在 UI 里照常显示;
  • 子代理(subagent)会话的回合结束:不弹,只有主会话完成才提醒;
  • 冷启动时本就处于 idle 的会话:不弹,只有观测到 running: true -> false 这个真实边沿才提醒;
  • 同一事件 1.5 秒内重复投递:只弹一次。

用法提醒:先在客户端发消息,再立刻切走。回合是从你按下发送开始的, 切走之后事件才会发生在你不在场的时候;反过来(先切走再回来打字)会把你带回前台, 按设计就不弹了。

安装

dsh plugin --profile desktop add link:<本目录>
# 或从仓库装:
dsh plugin --profile desktop add github:LeeRolling/dsh-plugin-desktop-notify

本目录已声明 dsh.bundle.patch + dsh.client,装完重启客户端生效。 因为装的是 link:,改 lib/client.js 后重启即可,无需重装。

卸载

dsh plugin --profile desktop remove dsh-plugin-desktop-notify

结构

package.json            dsh.bundle.patch + dsh.client.platform=web
cordis.patch.yml        向 profile 插入一行 host 加载项
lib/paths.js            诊断文件位置(可覆盖,无机器相关绝对路径)
lib/index.js            宿主半:常驻诊断通道(报告接收 + 自检开关 + trace 轮转)
lib/client.js           浏览器半:三个 watcher + 分类 + 通知
test/client.test.mjs    假 DOM 冒烟测试(npm test,不需启动 DSH)
tools/trace.mjs         读 trace 打印摘要

浏览器半订阅三个客户端事件:

事件用途
approval/request审批瀑布,只观察不消费(return next() 原样放行)
user-questions/request模型提问瀑布,同上
api-session/status会话 running 状态,取 true -> false 边沿 = 回合结束

诊断通道(长期保留)

浏览器里发生的事对外部完全不可见,所以两个半之间有两条专属通道,永久开启, 以后任何时候通知行为不对,先看这里,不用改代码、不用加日志:

端点方向作用
POST /api/desktop-notify/report浏览器 → 宿主上报每个决策:事件是否到达、被哪道闸拦下、new Notification() 是否抛异常、环境快照
GET /api/desktop-notify/selftest浏览器 → 宿主返回自检开关状态、trace 与开关的实际路径

文件在哪

默认写在 <DSH_HOME|~/.dsh>/desktop-notify/trace.jsonl,用环境变量 DSH_DESKTOP_NOTIFY_TRACE 可以整体改到别处(自检开关 selftest.flag 始终与 trace 同目录)。目录不存在时自动创建, 代码里没有任何写死的机器路径。把 DSH_DESKTOP_NOTIFY_TRACE 设成 off(或 0 / false / none / no)则完全关掉写入,端点与自检仍然可用。

trace 自轮转:超过 512 KB 自动裁掉前半、只保留最近 256 KB(按行边界裁,JSONL 始终可解析), 长期开着也不会涨到失控。

怎么读

kind含义
host-apply宿主半装载(pid / Electron / Node 版本 / trace 路径)
client-apply浏览器半装载,附环境快照(origin / 安全上下文 / 权限 / hidden / hasFocus)
event事件真的到达了浏览器半
suppressed被闸门拦下,reason 是 window-in-front / duplicate / no-permission-api
shown通知真的弹了(forced:true 表示自检强制弹)
threwnew Notification() 抛异常,message 是原因
apply-failed浏览器半装载时就抛了(典型原因:DSH 升级把服务或事件改名)——这条能避免"插件装着但永远不响"被误判成没装好
node tools/trace.mjs          # 统计 + 最近 15 条
node tools/trace.mjs --all    # 全量

自检

在同目录放一个 selftest.flag(即 <DSH_HOME|~/.dsh>/desktop-notify/selftest.flag), 下次页面加载 2 秒后,会无视前后台强制弹一条标题为「通知自检」的 Toast —— 用来区分 「代码没跑」和「系统不显示」。自检完记得删掉,否则每次加载页面都会弹。

测试

npm test

假 DOM + 假 Notification + 假 fetch,把浏览器半当成普通模块跑一遍:15 项断言覆盖三个事件、 分类、前台抑制、去重、子代理静默、冷启动边沿、点击(window.focus)与自检强制弹出。 不需要启动 DSH。

验收记录

时间场景结果
2026-10-01通道自检(强制弹,忽略前台)✅ 截图确认,trace shown forced:true
2026-10-01回合结束 + 会话摘要(真实路径)✅ 截图确认,trace shown forced:false,标题「任务已完成」,正文含会话名
2026-10-01前台抑制(真实场景)✅ trace suppressed window-in-front
2026-10-11重启后 trace 落到新路径✅ host-apply 记录 ~/.dsh/desktop-notify/trace.jsonl,traceEnabled:true
2026-10-11提问类通知(真实触发)✅ trace event 抓到完整问题正文;当时正在看客户端 → suppressed window-in-front(按设计不弹)
待测等待授权(命令类 / 文件类)⏳ 复用同一段 raiseOnce + 分类逻辑,冒烟测试已覆盖

已知限制

  • 「点击通知切回客户端」依赖 window.focus(),是尽力而为;Electron 不保证把窗口 提到最前。preload 暴露的 dshDesktop 里没有 focus/flash 接口,要 100% 保证就得改 app.asar 的主进程代码,会被客户端更新覆盖,暂不做。
  • 只有客户端进程还活着才可能收到通知;完全退出客户端就收不到。

致谢与来源

用了别人的,就说出来。 这个插件的实现是新的,但接口规范、事件契约和部分工程写法 都来自下面这些项目,逐条列清楚。

一、直接借用

  • DeepSeek Harness(MIT) —— 宿主平台与插件规范本身。
    • 宿主半 export default { inject, apply } 的形状、cordis.patch.yml 的 insert 行格式, 来自它的 loader / bundle 约定;
    • 浏览器半 window.__ModuleLoader__.load({ id, factory }) + exports.apply / exports.inject 这套包装样板,是照它自带的 @deepseek-ai/dsh-client-ui-approval 产物写的 —— 这是加载器的硬性接口,不是可以自由发挥的地方。
  • DSH 自带包 @deepseek-ai/dsh-client-ui-approval / -user-questions / -session(MIT) —— 本插件订阅的三个客户端事件 approval/request、user-questions/request、 api-session/status 的名字与语义,都是从这几个包读出来的;本插件只是订阅者。
  • AwesomeHou/dsh-plugin-marketplace(MIT) —— ctx.webServer.register({ kind: 'exact', path, handler }) 与 readJsonBody() / json() 这组 HTTP 小工具的写法,以及 cordis.patch.yml 里 - insert: 的格式, 参考了它的实现。

二、同类先例(思路不新,必须说明)

写这个插件时并没有参考它们的代码(顺序是:先读 DSH 源码 → 先写完插件 → 之后才在 插件市场里搜到同类),但这个方向早就很挤。公开时说明清楚,以免被误认为首创:

  • omdsh-dev/dsh-notification —— 回合结束通知, README 明写 "Only notify when the task is out of view",即前台抑制;
  • Aisland-SJL/dsh-reminder —— 完成 + 等待批准 + 点击回窗口 + 提示音;
  • MuziIsabel/dsh-win-notify —— Windows 原生 Toast + 审批/提问 + 聚焦感知抑制;
  • 610la/dsh-notification-center —— 完成 / 报错 / 等待批准 + 多种音效 + 设置页。

三、本插件自己的部分

  • 上下文分类与摘要提取(标题随情况变化:授权 / 改文件 / 提问 / 完成);
  • 常驻诊断通道(report 端点 + JSONL trace + 自动轮转 + 自检开关);
  • 假 DOM 冒烟测试。