dsh 插件:离开 dsh 页面时可收到桌面通知,点击回到对应会话。Windows / WSL 原生…
29.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TianzeLuo/dsh-away-notify该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-away-notify @ 0.1.3
✓Node 引擎要求 >=22.5 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 09:36:23
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
- 写入本地文件lib/host.js:254
mkdirSync(dirname(LOG_PATH), { recursive: true }); - 写入本地文件lib/host.js:255
appendFileSync(LOG_PATH, `${JSON.stringify({ time: Date.now(), level, message, detail })}\n`); - 读取本地文件lib/host.js:805
if (existsSync(spoolDir)) writeFileSync(join(spoolDir, 'stop'), String(Date.now()), 'utf8'); - 写入本地文件lib/host.js:805
if (existsSync(spoolDir)) writeFileSync(join(spoolDir, 'stop'), String(Date.now()), 'utf8'); - 写入本地文件lib/host.js:829
mkdirSync(spoolDir, { recursive: true }); - 删除本地文件lib/host.js:832
rmSync(join(spoolDir, 'stop'), { force: true }); - 写入本地文件lib/host.js:846
writeFileSync(join(spoolDir, 'config.txt'), config, 'utf8'); - 发起网络请求lib/client.js:751
const pending = fetch(PRESENCE_PATH, { - 发起网络请求lib/client.js:963
const res = await fetch(PRESENCE_PATH, { - 发起网络请求lib/client.js:1006
fetch(PRESENCE_PATH, { - 发起网络请求lib/client.js:1100
fetch(PRESENCE_PATH, { - 读取本地文件lib/notifier.js:163
return readFileSync('/proc/version', 'utf8'); - 读取本地文件lib/notifier.js:174
return existsSync(candidate) ? candidate : 'powershell.exe'; - 读取本地文件lib/notifier.js:187
if (existsSync(p)) return p;
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 离开页面桌面通知
- 点击通知回到会话
README
由 DeepSeek 最新模型翻译生成dsh-away-notify
像 Codex 那样提醒你:只有当你没在看 dsh 页面时,任务完成 / 出错 / 等待审批 / agent 提问 / goal 完成才弹桌面通知,点击通知能回到对应会话。
零运行时依赖、零构建,dsh plugin add 装完即用。
部署形态
| 部署形态 | 通知通道 |
| dsh 原生跑在 Windows | powershell.exe → WinRT Toast |
| dsh 跑在 WSL 里 | 调 Windows 侧 powershell.exe → WinRT Toast |
| dsh 跑在普通 Linux 桌面 | notify-send(缺失则降级为只记日志) |
⚠️ Windows 用户请先看 docs/windows.md。 插件检出与 $DSH_HOME 不在同一盘符时,dsh plugin add 会静默装出一个永远不会加载的插件——退出码还是 0。仓库里带了一键安装器替你兜住这件事,见 Windows 原生。
安装
Windows 原生
先读 docs/windows.md(跨盘符会把插件装坏,而且没有任何报错)。
展开完整文档(README 剩余 1 节)
dsh-away-notify 像 Codex 那样提醒你:只有当你没在看 dsh 页面时,任务完成 / 出错 / 等待审批 / agent 提问 / goal 完成才弹桌面通知,点击通知能回到对应会话。 零运行时依赖、零构建,dsh plugin add 装完即用。 部署形态 | 部署形态 | 通知通道 | | dsh 原生跑在 Windows | powershell.exe → WinRT Toast | | dsh 跑在 WSL 里 | 调 Windows 侧 powershell.exe → WinRT Toast | | dsh 跑在普通 Linux 桌面 | notify-send(缺失则降级为只记日志) | ⚠️ Windows 用户请先看 docs/windows.md。 插件检出与 $DSH_HOME 不在同一盘符时,dsh plugin add 会静默装出一个永远不会加载的插件——退出码还是 0。仓库里带了一键安装器替你兜住这件事,见 Windows 原生。 安装 Windows 原生 先读 docs/windows.md(跨盘符会把插件装坏,而且没有任何报错)。用仓库里的安装器,它会跑正常命令、校验结果、并修好 pnpm 弄坏的东西: cd powershell -NoProfile -ExecutionPolicy Bypass -File scripts\install-windows.ps1 WSL / Linux dsh plugin --profile web add github:s11phere/dsh-away-notify 直接从 GitHub 装(pnpm 会自己去 clone,不需要本地检出)。要装你改过的版本,就把最后的 spec 换成检出目录的绝对路径:dsh plugin --profile web add /path/to/dsh-away-notify。 装完之后 重启 dsh web,并刷新浏览器页面。 新增 bundle 只有启动时才会被读进 dsh.profile.bundles;浏览器半部(client.js)也需要刷新页面才会加载。profile 的 cordis.patch.yml 是热监视的,改配置不用重启。 验证是否挂上(不启动服务): dsh --profile web --dump-config | grep -A2 dsh-away-notify 首次接线自检 先确认「通知通道」本身是通的,不必等真实的回合结束: node scripts/selftest-notify.mjs "标题" "正文" 它会实际弹一条 Toast,并回读 Windows 通知中心来客观确认落地。再要看插件侧的日志(已加载 / 已抑制() / 已撤回通知),在 profile 的 cordis.patch.yml 里临时打开 notifyOnLoad 与 debug,步骤与接线成功的标志见 docs/windows.md 的「通知通道自检」——确认通路后记得把这两项关掉。 出问题了先看故障排查:不弹 / 点了回不去 / 提醒赖着不走都有对照表。 配置 在 profile 的 cordis.patch.yml 里按 id 覆盖(该文件被热监视,但新增 bundle 后首次仍需重启): - id: dsh-away-notify config: 五类触发 onTurnComplete: true onTurnError: true onTurnAborted: true onTurnMaxTokens: true onApproval: true onQuestion: true onGoalComplete: true 行为 suppressGoalRounds: true # /goal 中间轮次静默 rootsOnly: true # 子代理会话不打扰 cooldownMs: 10000 # 同会话同类型最小间隔 presenceTtlMs: 45000 # 在场状态有效期 previewMaxChars: 140 # 正文摘要截断长度 sound: true # 系统提示音 openOnClick: true # Toast 可点击回跳 persistent: true # 通知一直停留,直到点它或切回 dsh dismissOnReturn: true # 切到某会话时撤回它自己的通知(按会话比对,不误伤别的会话) includeToken: true # URL 带鉴权 token(取舍见 docs/security.md) useProtocolHandler: true # 注册 dshnotify: 协议,点击优先聚焦已有窗口 titleTag: true # 给标题加 [dsh:],多实例时精确聚焦对应窗口 spoolDir: '' # 点击请求与焦点助手的工作目录;留空 = /.focus-spool focusWindowMarker: 'DeepSeek Harness' # 用窗口标题里的这个串识别 dsh 窗口 focusTtlMs: 90000 # 「待跳转会话」有效期 titlePrefix: 'DSH' appName: 'DeepSeek Harness' appId: 'DeepSeek Harness' # Windows 通知来源名 webUrl: '' # 留空则自动探测 debug: false # 写文件日志 notifyOnLoad: false # 加载时发自检通知 appName 目前没有接线(声明了但无处读取),改它不会有效果;要区分通知来源请改 appId。 includeToken 的取舍(token 会进本机通知历史)见安全说明。 功能 - 五类触发(可分别开关):回合完成、出错 / 中断 / 达到输出上限、等待审批、agent 提问、goal 完成 - 一直停留:通知用 Windows 的 scenario="reminder" 发出,不会被系统几秒后收走——它待在屏幕上,直到你点它、或切到它对应的那条会话。撤回是按会话的:待在 dsh 里看别的会话不会误撤后台会话的通知(早期版本会,已修) - 两级前台抑制:见下方在场判定 - 不做静音黑洞:在场状态带 45 秒 TTL,标签页崩溃 / 浏览器被关掉后自动视为「离开」,不会永久静音 - 点击回跳:Toast 可点击,优先回到已有的那个 dsh 标签页,并自动切到出事的那条会话;浏览器窗口最小化时也回得去(最小化的 Chromium 窗口对 UI Automation 一个标签都不暴露,脚本会先把窗口还原、再选标签页)。点击后约 0.1-0.2 秒就把对应窗口提到前台,代价是多一个常驻的小助手进程。原理与实测见 docs/click-focus.md - 多实例也认得准:同一台机器上并存 Windows 原生与 WSL 的 dsh 时,浏览器标题带按端口区分的 [dsh:] 后缀,点击通知仍会聚焦到出事的那一个实例;细节与回退开关见 docs/windows.md - 防刷屏:同会话同类型通知有冷却时间;同一件事反复触发是替换而不是叠加(同 tag+group 的通知在 Windows 上是替换语义);子代理会话默认不打扰;/goal 自动推进的中间轮次默认静默,只在目标完成 / 阻塞时提醒 - 原生 Toast 细节:正文标注会话标题与结果摘要,带系统提示音,并带一个可点的操作按钮 - 可以被别的插件接管:谁建的会话谁说了算——其它插件能声明「这条会话别打扰」以及「点它的通知时在右栏打开哪个 tab」,away-notify 不认识任何具体插件、也不做标题匹配,见给其他插件的接口 在场判定 状态按标签页记录(每个标签页一个 clientId,存在 sessionStorage),而不是按会话——所以同一标签页从会话 A 切到会话 B 时,新上报会直接覆盖,A 立刻恢复提醒,不必等 TTL 过期。 | 情况 | 行为 | | 没有任何「新鲜 + 可见 + 有焦点」的标签页 | 提醒(视为离开) | | 有,且能确定它在看哪个会话 | 只抑制该会话,后台会话照常提醒(理想模式) | | 有,但拿不到会话 id | 抑制全部(保守降级,等价于「不在页面上才弹」) | 换句话说:切到别的标签页(页面不可见)或切到别的应用(窗口失焦)→ 一律提醒。 打开浏览器 DevTools 会让页面失焦(document.hasFocus() 变 false),插件会判为「离开」——这是预期行为,不是故障;此时在控制台查到的 mode 可能是 away。 上报字段、拿不到会话 id 时的自动升级、以及自查当前判定结果的控制台片段,见 docs/implementation-notes.md。 文档 | 文档 | 内容 | | docs/windows.md | Windows 安装避坑(跨盘符会装坏)、升级提醒、通知通道自检、纯 ASCII 约束、多实例共存 | | docs/troubleshooting.md | 故障排查:不弹 / 点了回不去 / 提醒赖着不走等现象的对照表 | | docs/click-focus.md | 点击回跳原理:dshnotify: 协议、常驻助手、UI Automation 选标签、点击延迟账、会话跳转 | | docs/plugin-api.md | 给其它宿主插件的 awayNotify 接口:抑制会话、按规则静音、改写点击落点(右栏揭示) | | docs/security.md | includeToken 的取舍:token 会进本机通知历史 | | docs/implementation-notes.md | 架构图、模块划分、在场判定机制、针对 dsh 0.1.6 / 0.1.7 的实现要点、测试约定 | | docs/known-limitations.md | 完整的已知限制(会话跳转 / 聚焦 / 通知 / 进程资源 / 框架行为) | | docs/verification-windows.md | Windows 原生端到端验证记录:环境、覆盖矩阵、真实日志证据、两个 Windows 独有缺陷 | 开发 policy.js / presence.js / suppress.js / notifier.js 都不依赖 DSH 运行时,可以脱离 dsh 单测: node --test 新增会触发通知或注册协议的用例时,请沿用 apply(ctx, config, deps) 的 spawn 注入通路——不要再靠「写个假的 powershell.exe 让系统去执行」(Windows 只认 PE 映像,不认 shebang);假 ctx 的服务读取严格性、跨插件接口如何验证,见测试约定。 改动后建议在真机跑一遍 node scripts/selftest-notify.mjs 确认通知通道,再重启 dsh 手动过一遍「离开 → 收到通知 → 点击回跳」。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
TianzeLuo/dsh-away-notify
dsh 插件:离开 dsh 页面时可收到桌面通知,点击回到对应会话。Windows / WSL 原生…
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1