🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Windows 会话提醒 apherchin/dsh-windows-session-notification

DeepSeek Harness
apherchin36 天前有提交已提供中文文档扫描:含敏感能力

会话完成或待处理时弹窗提醒,未看的才通知

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apherchin/dsh-windows-session-notification
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
数据截至 2026/10/01·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 36 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/1) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 25 条)
  • 读取本地文件
    index.mjs:58
    for (const entry of readdirSync(base, { withFileTypes: true })) {
  • 读取本地文件
    index.mjs:65
    return (sessionId) => roots.some((root) => existsSync(join(root, sessionId)))
  • 写入本地文件
    index.mjs:195
    mkdirSync(home, { recursive: true })
  • 写入本地文件
    index.mjs:196
    writeFileSync(paths.badge, JSON.stringify(buildBadgeState(badge)), 'utf8')
  • 读取本地文件
    index.mjs:264
    if (!existsSync(paths.clicks)) return
  • 读取本地文件
    index.mjs:265
    const raw = readFileSync(paths.clicks, 'utf8')
  • 删除本地文件
    index.mjs:266
    rmSync(paths.clicks, { force: true })
  • 读取本地文件
    index.mjs:429
    log(`boot: ${selfPath} mtime=${new Date(statSync(selfPath).mtimeMs).toISOString()} 订阅=${WATCHED_EVENTS.join(',')}(global)`)
  • 发起网络请求
    client.js:257
    void fetch('/api/attention/pending', {
  • 发起网络请求
    client.js:319
    await fetch('/api/attention/focus', {
  • 发起网络请求
    client.js:392
    void fetch('/api/attention/pending', {
  • 发起网络请求
    client.js:476
    const res = await fetch('/api/attention/state')
  • 发起网络请求
    client.js:486
    await fetch('/api/attention/opened', { method: 'POST', body: '{}' })
  • 写入本地文件
    lib/log.mjs:18
    mkdirSync(dirname(file), { recursive: true })
  • 读取本地文件
    lib/log.mjs:19
    if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) {
  • 读取本地文件
    lib/log.mjs:19
    if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) {
  • 读取本地文件
    lib/log.mjs:20
    const text = readFileSync(file, 'utf8')
  • 写入本地文件
    lib/log.mjs:21
    writeFileSync(file, text.slice(Math.floor(text.length / 2)), 'utf8')
  • 写入本地文件
    lib/log.mjs:23
    appendFileSync(file, `${new Date().toISOString()} ${message}\n`, 'utf8')
  • 读取本地文件
    lib/session-title.mjs:59
    if (!existsSync(file)) return ''
  • 写入本地文件
    lib/state-store.mjs:20
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    lib/state-store.mjs:21
    writeFileSync(tmp, JSON.stringify({ unread: Object.fromEntries(unread) }), 'utf8')
  • 写入本地文件
    lib/state-store.mjs:22
    renameSync(tmp, file)
  • 删除本地文件
    lib/state-store.mjs:25
    rmSync(tmp, { force: true })
  • 读取本地文件
    lib/state-store.mjs:40
    const parsed = JSON.parse(readFileSync(file, 'utf8'))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 会话完成弹窗提醒
  • 待处理会话提醒
  • 仅提醒未读会话

DSH 插件:Windows 上跨会话「需要关注」通知——可操作弹窗、分级提示音和任务栏角标,只提醒你没在看的会话。

README

由 DeepSeek 最新模型翻译生成
dsh-windows-session-notification 中文 | English DSH 的跨会话提醒插件:某个会话「完成 / 待回答 / 待审批 / 出错」时,弹一条可点击的 Windows Toast + 分档提示音 + 任务栏角标 —— 只在你没看那个会话时提醒。 ⚠️ 仅支持 Windows:依赖 Windows PowerShell 5.1(系统自带)与 WinRT 通知 API。package.json 里声明了 "os": ["win32"]。 开箱即用:零渠道配置、零账号。明确不做「DSH 退出后仍能收到」——那需要 IM 通道,属于另一类产品。 通知中心里的「待回答」提醒 横幅形态(可点击回到会话)与任务栏 ☝️ 真实截图(2026-09-29)。注意横幅里的应用名是 DeepSeek Harness 并带 DSH 图标 —— 这正是 AUMID 注册的效果;没有它,横幅顶部会显示成 Windows PowerShell。 截图里是「待回答」这一档;「完成 / 待审批 / 出错」走同一套出口,只是文案与提示音不同。 它解决什么 DSH 里同时开着好几个会话时,"哪个跑完了 / 哪个在等我点同意"很容易漏掉。
展开完整文档(README 剩余 1 节)
dsh-windows-session-notification

中文 | English

DSH 的跨会话提醒插件:某个会话「完成 / 待回答 / 待审批 / 出错」时,弹一条可点击的 Windows Toast + 分档提示音 + 任务栏角标 —— 只在你没看那个会话时提醒。

⚠️ 仅支持 Windows:依赖 Windows PowerShell 5.1(系统自带)与 WinRT 通知 API。package.json 里声明了 "os": ["win32"]。
开箱即用:零渠道配置、零账号。明确不做「DSH 退出后仍能收到」——那需要 IM 通道,属于另一类产品。

通知中心里的「待回答」提醒

横幅形态(可点击回到会话)与任务栏

☝️ 真实截图(2026-09-29)。注意横幅里的应用名是 DeepSeek Harness 并带 DSH 图标 —— 这正是 AUMID 注册的效果;没有它,横幅顶部会显示成 Windows PowerShell。
截图里是「待回答」这一档;「完成 / 待审批 / 出错」走同一套出口,只是文案与提示音不同。

它解决什么

DSH 里同时开着好几个会话时,"哪个跑完了 / 哪个在等我点同意"很容易漏掉。本插件在你没盯着某个会话的时候,用一个 Windows 通知把你叫回来:

- 横幅可点击 → 回到对应会话(并尝试把窗口提到前台);
- 分档音:不同性质(完成 / 待回答 / 待审批 / 出错)用不同提示;
- 任务栏角标显示未处理数量;
- 正在看的那个会话不会提醒(这是它的主逻辑,不是 bug)。

触发与抑制规则

| 事件 | 提醒 | 说明 |
| 会话完成 | ✅ | ≥3 个完成会合并成一条("3 个会话已完成") |
| 待回答(agent 提问) | ✅ | 需要你实际回复 |
| 待审批(权限/工具确认) | ✅ | 需要你点同意 |
| 出错 | ✅ | 会话异常结束 |
| 你正在看该会话 | ❌ 不提醒 | 这就是"不打扰"的判据 D2 |
| subagent / teammate 内部会话 | 按各自事件走 | 与主会话同一套判据 |

安装

dsh plugin --profile add dsh-windows-session-notification

包内声明了 dsh.bundle.patch,所以 dsh plugin 会自动把它记进 dsh.profile.bundles。然后重启 DSH(打包版没有「刷新页面」)。

手工兜底(不用 dsh plugin):pnpm add dsh-windows-session-notification,再在 profile 的 cordis.patch.yml 追加

- insert:
- id: attention
name: dsh-windows-session-notification

⚠️ name: 必须写包名,不能写绝对路径(如 D:/.../index.mjs)。实测(Win11 VM + dsh 0.2.0-rc.2):写死本机路径时装载会报 disabling profile plugin row "attention": its declared peer dependencies cannot be validated: UNKNOWN: unknown error, lstat 'D:\' ⇒ 该行被静默 disable、整个提醒功能消失(stderr 只有一行)。改成包名后正常装载。

系统侧会做什么

- AUMID 注册:往 HKCU\Software\Classes\AppUserModelId\DSH.Attention 写显示名与图标(只在 HKCU,不需要管理员)。
没有它,通知横幅顶部会显示成 "Windows PowerShell"。
- URL 协议注册:dsh-attention:open/,供点击横幅回调(scripts/protocol.ps1)。
- 调用方式:宿主 spawn C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe(5.1,不是 pwsh 7 —— pwsh 7 没有 WinRT 类型投影)执行 scripts/.ps1。

运行期状态与排查入口

| 位置 | 内容 |
| $DSH_HOME\dsh-attention\attention.log | 唯一的排查入口:toast 展示结果、viewing 变化、点击回调、降级原因(如 [diag:sessions-unavailable]) |
| $DSH_HOME\dsh-attention\ | 未读集合等持久状态 |

"为什么这条没提醒"最先看日志里那行 done session=… viewing=… -> 不提醒(正在看它)/已提醒。

路由(宿主侧 HTTP)

focus / pending / state / opened(用于客户端上报"当前在看哪个会话"与"待办已清除")。

兼容性

- 实测环境:Windows 11 + DSH 0.1.7-rc.2(桌面壳)与 0.2.0-rc.2(VM 装载测试)。
- host + client 双半边:client 半边注册进官方的 chain 槽位 conversation.composer(select 弃权,零 UI 足迹)。
⚠️ 因此它参与渲染端「每条 client entry 必须 active」的全有全无启动门禁 ⇒ apply 绝不能抛错(已全程 try/catch)。
- 宿主侧 inject: ['connection'];作用域事件用 { global: true } 订阅(否则 approval/request、user-questions/request 收不到)。
- 零 npm 运行时依赖。

测试 ⚠️ 若沙箱禁止命名管道,node --test 会 spawn EPERM 并给出误导性的 # fail 1。逐文件跑(任意 cwd):

Get-ChildItem test -Filter '.test.mjs' | ForEach-Object { node $_.FullName; "exit=$LASTEXITCODE $($_.Name)" }

期望合计 127 pass / 0 fail(attention-core 33 / click-uri 7 / log 4 / payloads 16 / client-slot-contract 17 / event-payload 11 / routes 11 / session-title 10 / state-store 10 / win-notify 8)。

卸载

pwsh scripts/uninstall.ps1 # 撤协议 + 清 $DSH_HOME\dsh-attention\(可选:按锁文件 PID 停遗留进程)

再从 profile 删掉 id: attention 那条(或 dsh plugin --profile remove dsh-windows-session-notification),重启 DSH。

已知限制

- 抢前台只在窗口最小化/隐藏时可靠:窗口只是被别的应用压在后面时,Windows 前台锁会拒绝(日志里能看到 attempt=4 attached=False set=False final=False)。渲染进程里的 window.focus() 路径是可靠的,两条一起用。
- 角标走渲染进程的 Badging API:早期用 badge.ps1 + COM SetOverlayIcon 的方案已证明跨进程必失败(E_FAIL),故退役(脚本保留但不再启动)。
- 分类提示音依赖系统通知设置;勿扰模式下平台会自行静音。

“question”层级,如通知中心中所显示

横幅形式(可点击)加任务栏

真实截图(2026-09-29)。注意应用名显示为带 DSH 图标的 DeepSeek Harness——这正是 AUMID 注册在起作用;没有它,横幅会回退为 Windows PowerShell。
这些展示的是“question”层级;“done / approval / error”使用相同的输出路径,只是措辞和声音不同。

一个用于 DSH 的跨会话通知插件:当会话结束、提问、需要批准或出错时,你会收到一个可操作的 Windows toast、分级提示音和任务栏角标——仅针对你当前未在查看的会话。

⚠️ 仅限 Windows(Windows PowerShell 5.1 + WinRT toast API;已声明 "os": ["win32"])。
零渠道配置,零账号。明确不是“DSH 退出后通知我”的工具——那需要 IM 渠道。

安装

dsh plugin --profile add dsh-windows-session-notification

该包声明了 dsh.bundle.patch,因此 dsh plugin 也会将其记录到 dsh.profile.bundles。之后重启 DSH。

手动方式:pnpm add dsh-windows-session-notification,然后添加到 profile 的 cordis.patch.yml:

- insert:
- id: attention
name: dsh-windows-session-notification

⚠️ name: 必须是包名,绝不能是绝对路径。已在 Win11 虚拟机上用 dsh 0.2.0-rc.2 验证:硬编码路径会让加载器打印 disabling profile plugin row "attention": its declared peer dependencies cannot be validated: UNKNOWN: unknown error, lstat 'D:\' 并静默禁用该行——整个功能仅凭一行 stderr 就消失了。

行为

- 在 done / question / approval / error 时触发;三个或更多完成事件会合并为一个 toast。
- 绝不对你正在查看的会话触发(这种抑制正是重点)。
- 该 toast 是可点击的:它会返回会话并尝试将 DSH 窗口置前。
- 在 HKCU 下注册一个 AUMID(这样横幅会显示真实的应用名称,而不是“Windows PowerShell”),以及 dsh-attention:open/ URL 协议。

故障排查

$DSH_HOME\dsh-attention\attention.log 是唯一的入口点:toast 结果、查看状态变化、点击回调以及每一种降级原因(例如 [diag:sessions-unavailable])。done session=… viewing=… -> 不提醒(正在看它)/已提醒 这一行解释了某个给定事件为何通知或未通知。

测试

Get-ChildItem test -Filter '*.test.mjs' | ForEach-Object { node $_.FullName; "exit=$LASTEXITCODE $($_.Name)" }

预期:127 通过 / 0 失败。在禁止命名管道的 Windows 沙箱中,请不要使用 node --test——运行器会以具有误导性的 # fail 1 失败。

许可证

MIT
预览分享卡片长什么样 ↓apherchin/dsh-windows-session-notification
分享 · DeepSeek Harness Hub
apherchin/dsh-windows-session-notification

会话完成或待处理时弹窗提醒,未看的才通知

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部