对话完成或需要你操作时弹出通知,点击即可跳回对应对话
32.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Jxxxxx729/dsh-win-notify该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 19 条)
- 写入本地文件index.js:112
mkdirSync(SPOOL_DIR, { recursive: true }); - 写入本地文件index.js:113
mkdirSync(PAYLOAD_DIR, { recursive: true }); - 读取本地文件index.js:129
if (existsSync(LOG_FILE)) { - 读取本地文件index.js:131
if (statSync(LOG_FILE).size > MAX_LOG_BYTES) truncateSync(LOG_FILE, 0); - 写入本地文件index.js:131
if (statSync(LOG_FILE).size > MAX_LOG_BYTES) truncateSync(LOG_FILE, 0); - 写入本地文件index.js:136
appendFileSync(LOG_FILE, `${line}\n`, 'utf8'); - 读取本地文件index.js:293
const names = readdirSync(PAYLOAD_DIR).filter((entry) => entry.endsWith('.xml')); - 读取本地文件index.js:300
modified = statSync(file).mtimeMs; - 删除本地文件index.js:309
unlinkSync(entry.file); - 执行外部命令来自配置/变量index.js:333
child = spawn(POWERSHELL, argv, { windowsHide: true, stdio: ['ignore', 'ignore', 'pipe'] }); - 写入本地文件index.js:368
writeFileSync(file, xml, 'utf8'); - 读取本地文件index.js:391
if (candidate && existsSync(candidate)) return candidate; - 读取本地文件index.js:400
if (!existsSync(REGISTER_SCRIPT) || !existsSync(ACTIVATE_SCRIPT)) { - 删除本地文件index.js:576
unlinkSync(file); - 删除本地文件index.js:594
unlinkSync(file); - 删除本地文件index.js:788
unlinkSync(flag); - 发起网络请求client.js:39
return fetch(`${BASE}/log`, { - 发起网络请求client.js:103
response = await fetch(`${BASE}/next`, { - 读取本地文件test-client.mjs:12
const source = readFileSync(path.join(here, 'client.js'), 'utf8');
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 插件:在 Windows 通知栏提示对话完成、等待选择、等待授权或需要登录,点击通知直接跳回对应对话。Toast 以 DeepSeek Harness 应用身份发出。
README
由 DeepSeek 最新模型翻译生成dsh-win-notify
在 Windows 通知栏提醒你 DSH 的状态变化,点击通知即可跳回对应对话。
DeepSeek Harness(DSH)桌面端的 Host + Web 双半插件,仅支持 Windows。
支持的通知:
| 时机 | 通知标题 | 点击后 |
| 一轮对话正常结束 | 对话已完成 | 跳回该对话 |
| 一轮对话异常结束(报错 / 被阻塞 / 超长截断) | 对话异常结束 | 跳回该对话 |
| 弹出需要你选择的问题 | 需要你的选择 | 跳回该对话 |
| 弹出需要你授权的操作 | 需要你的授权 | 跳回该对话 |
| 需要登录 DeepSeek 账号 / 登录过期 | 需要登录 DeepSeek 账号 | 打开 DSH |
通知以 DeepSeek Harness 的名义显示(Windows 应用 ID com.deepseek.dsh),带上应用图标,不经过 PowerShell 的身份。
安装
三种方式任选,装完都只需「刷新一次 GUI 页面」让 Web 客户端半加载,之后启停插件都不必再刷新。
展开完整文档(README 剩余 1 节)
dsh-win-notify
在 Windows 通知栏提醒你 DSH 的状态变化,点击通知即可跳回对应对话。
DeepSeek Harness(DSH)桌面端的 Host + Web 双半插件,仅支持 Windows。
支持的通知:
| 时机 | 通知标题 | 点击后 |
| 一轮对话正常结束 | 对话已完成 | 跳回该对话 |
| 一轮对话异常结束(报错 / 被阻塞 / 超长截断) | 对话异常结束 | 跳回该对话 |
| 弹出需要你选择的问题 | 需要你的选择 | 跳回该对话 |
| 弹出需要你授权的操作 | 需要你的授权 | 跳回该对话 |
| 需要登录 DeepSeek 账号 / 登录过期 | 需要登录 DeepSeek 账号 | 打开 DSH |
通知以 DeepSeek Harness 的名义显示(Windows 应用 ID com.deepseek.dsh),带上应用图标,不经过 PowerShell 的身份。
安装
三种方式任选,装完都只需「刷新一次 GUI 页面」让 Web 客户端半加载,之后启停插件都不必再刷新。
A. 预构建包(最快,不克隆仓库)
从 最新 release 下载 dsh-win-notify.tgz,在 DSH「插件」页用包文件 / URL 安装:
https://github.com/Jxxxxx729/dsh-win-notify/releases/latest/download/dsh-win-notify.tgz
装好后出现条目 dsh-win-notify,启用即生效:插件会自己注册 dsh-win-notify: 协议、创建 %LOCALAPPDATA%\dsh-win-notify\ 状态目录。
B. 从源码(改代码 / 跟进开发时用)
git clone https://github.com/Jxxxxx729/dsh-win-notify.git "$env:USERPROFILE\dsh-win-notify"
然后在 DSH「插件」页用本地 bundle 目录安装 $env:USERPROFILE\dsh-win-notify(目录里有 package.json 和 cordis.patch.yml)。
C. 插件市场
已向 awesome-dsh-plugin 提交条目(PR #8736);合并后可在 DSH 插件市场里按 notify 分类直接安装。
要求:Windows 10/11 + DSH 桌面版(通知身份依赖桌面应用的 AppUserModelID com.deepseek.dsh)。在非桌面版(纯 dsh web)里仍会发通知,但点通知只能打开 DSH 而无法靠应用标识显示图标。
工作原理
1. Host 半监听 session/event 的 turn/end、user-questions/request、approval/request、deepseek-account/ 事件。
2. 命中后渲染一条 Toast XML 并调用 runtime/show-toast.ps1(WinRT ToastNotificationManager)发出通知;Toast 的 activationType="protocol" 指向 dsh-win-notify:open?s=<会话 id>&k=<类型>。
3. 点击通知 → Windows 调 runtime/activate.vbs:把 {sessionId, kind, at} 写入 spool 目录,并启动 / 聚焦 DeepSeek Harness。
4. Web 客户端半每 1.2 秒 GET /dsh-win-notify/next 取走这条记录,调用官方 uiWorkspace.openSession(sessionId) 把界面切到该对话。
配置
在 profile 的 patch 里给 dsh-win-notify 条目加 config:
- id: dsh-win-notify
config:
skipWhenFocused: false # 窗口在前台时也提醒 activationTtlMinutes: 120 # 超过这个时间的点击记录直接丢弃 sessionSummaryLength: 140 # 通知正文里摘要的最大字符数 notifyOnTurnComplete: true notifyOnTurnFailure: true notifyOnQuestion: true notifyOnApproval: true notifyOnSignIn: true
appPath 一般不用填:插件会自己找 DeepSeek Harness.exe。
状态与日志
- 目录:%LOCALAPPDATA%\dsh-win-notify\
- spool\ 点击记录(客户端取走即删)
- payload\ 已发送的 Toast XML(保留最近 80 个)
- notify.log 日志
- 自检:GET http://<GUI 地址>/dsh-win-notify/status 返回当前配置、spool 待处理数与日志路径。
- 通知自检(不依赖任何对话事件):在 %LOCALAPPDATA%\dsh-win-notify\ 里新建空文件 selftest.flag,再到「插件」里把 dsh-win-notify 关掉再打开;重新激活时会立刻发一条「通知自检」通知,用来确认「插件 → powershell → 通知栏」整条链路。
- 排查用日志行:
- toast queued kind=... title=...:插件收到了事件并已生成 payload;
- toast exited code=0:powershell 正常结束(脚本内部还会往同一个 notify.log 追加一行 shown);
- toast exited code=1 或 stderr=...:发送失败,stderr 与脚本写的 error: ... 会给出原因。
注册表
插件启动时,会为当前用户注册 dsh-win-notify: 协议(HKCU\Software\Classes\dsh-win-notify),命令指向 wscript.exe //nologo <插件目录>\runtime\activate.vbs "%1" <spool 目录> "<DeepSeek Harness.exe>"。
这一步只写 HKCU,不需要管理员权限。
注意
- Windows「专注助手 / 勿扰模式」会压掉通知,需要允许 DeepSeek Harness 的通知。
- 只对用户会话提醒,子代理(subagent)会话结束不提醒。
- 如果 GUI 地址或端口变了无需改配置:客户端半用的是同源相对路径。
- user-questions/request / approval/request 是 waterfall 事件,内置 UI 应答者一旦认领就不会再往下走,所以本插件用 { prepend: true } 抢在它之前只观察并立刻 return next(),不参与决策;这也是修改这两个监听器时最容易被忽略的一点。
- 改动 client.js 后需要刷新一次 GUI 页面才会生效(Host 半可以用插件启停热重载,浏览器半不会自动重载)。
- 浏览器半可以离线自测:node test-client.mjs(用假的 window / fetch / uiWorkspace 覆盖补前缀、解归档、dispose 停止轮询四种情况)。
- 发通知用的是非 detached 的 powershell.exe 子进程并接住 stderr、记录退出码。早先试过 detached: true + stdio: 'ignore':桌面端重启后那种子进程会静默地不执行脚本(日志里只有 toast queued、没有 shown,通知也不弹),而且没有任何报错可查。不要改回 detached。
- 路由用 ctx.inject(['webServer'], (hostCtx) => ...) 挂载:桌面端冷启动时插件可能比 webServer 服务先加载,直接 ctx.get('webServer') 会拿到 undefined,一旦错过就再也不会重试,点击跳转和客户端轮询会一起失效。
- 通知与点击链路里的路由基名固定为 /dsh-win-notify/;protocol 配置只影响 Windows 协议名,不会让已打开的页面失联。
更新记录
- 1.0.1(2026-10-22):修复桌面端重启后「别的对话需要授权/选择却没有通知」以及点击跳转失效的问题。
- 原因一:发通知原先用 detached: true + stdio: 'ignore' 的 powershell 子进程,桌面端重启后这类子进程会静默地不执行脚本 —— 日志里只有 toast queued、没有 shown,也没有任何报错可查。现改为非 detached 子进程,接住 stderr 并记录退出码。
- 原因二:插件可能比 webServer 服务先加载,ctx.get('webServer') 拿到 undefined 后就再也不会重试,客户端轮询与点击跳转一起失效。现改用 ctx.inject(['webServer'], ...) 在服务就绪时挂载路由。
- 另新增 selftest.flag 自检通知(见「状态与日志」),用来单独验证「插件 → powershell → 通知栏」这条链路。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Jxxxxx729/dsh-win-notify
对话完成或需要你操作时弹出通知,点击即可跳回对应对话
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目