AI 回复结束时弹出带鲸鱼图标的系统通知
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add SailingBoat-ovo/dsh-notify该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
- 写入本地文件lib/index.js:279
writeFileSync(scriptPath, "\uFEFF" + toastScript(options), "utf8"); - 执行外部命令固定命令lib/index.js:280
const child = spawn("powershell.exe", [ - 读取本地文件lib/index.js:308
if (existsSync(target) && statSync(target).size > 0) return target; - 读取本地文件lib/index.js:308
if (existsSync(target) && statSync(target).size > 0) return target; - 写入本地文件lib/index.js:309
writeFileSync(target, WHALE_PNG_BUFFER); - 发起网络请求lib/client.js:36
whaleBitmapPending = fetch(ROUTES.whale, { cache: "force-cache" }) - 发起网络请求lib/client.js:184
fetch(`${ROUTES.pendingReveal}?_=${Date.now()}`, { cache: "no-store" }) - 发起网络请求lib/client.js:234
win.fetch("/dsh-notify/_report", { - 发起网络请求lib/client.js:267
fetch(`${ROUTES.snapshot}?_=${Date.now()}`, { cache: "no-store" }) - 发起网络请求lib/client.js:525
fetch(`${ROUTES.whale.replace("/whale.svg", "")}/toast-test`, { method: "POST", cache: "no-store" })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 插件:会话里 AI 回复结束时,用 DeepSeek 鲸鱼图标弹系统通知
README
由 DeepSeek 最新模型翻译生成dsh-notify
English · 中文
为 DeepSeek Harness (DSH) 提供系统通知:会话的 AI 轮次结束时,DSH 会弹出系统通知,带上黑鲸标记,并告诉你哪个任务完成了。
preview
工作原理(以及为什么这样设计)
宿主订阅会话日志自身的 session/event 流,对 turn/end 做出反应;浏览器通过 Server-Sent Events 接收这些完成事件,然后弹出通知。
这种拆分是有意为之。早先的版本试过在浏览器里读取客户端投影来检测完成,两次尝试都静默失败了:
| 尝试 | 为什么从未触发 |
| sessions.list.byId[].running | DSH 0.2.x 把 running 留在会话对象上,不再实时刷新列表行,所以 true → false 的边沿从未出现。 |
| sessions.binding(id).session | binding() 返回 this.scopes.get(id)?.binding —— 它只对已经保留的作用域作答,所以根级插件对每个会话都拿到 undefined。 |
两者都是私有内部实现。
展开完整文档(README 剩余 1 节)
dsh-notify English · 中文 为 DeepSeek Harness (DSH) 提供系统通知:会话的 AI 轮次结束时,DSH 会弹出系统通知,带上黑鲸标记,并告诉你哪个任务完成了。 preview 工作原理(以及为什么这样设计) 宿主订阅会话日志自身的 session/event 流,对 turn/end 做出反应;浏览器通过 Server-Sent Events 接收这些完成事件,然后弹出通知。 这种拆分是有意为之。早先的版本试过在浏览器里读取客户端投影来检测完成,两次尝试都静默失败了: | 尝试 | 为什么从未触发 | | sessions.list.byId[].running | DSH 0.2.x 把 running 留在会话对象上,不再实时刷新列表行,所以 true → false 的边沿从未出现。 | | sessions.binding(id).session | binding() 返回 this.scopes.get(id)?.binding —— 它只对已经保留的作用域作答,所以根级插件对每个会话都拿到 undefined。 | 两者都是私有内部实现。session/event 是文档化的接缝 —— dsh-session 包写明 "Persistence is a plugin concern (subscribe to session/event, drain on session/flush)"* —— 而 turn/end 是会话日志自身事件词汇表里的稳定类型。宿主还持有持久化的会话头,所以标题来自事实来源,而不是来自 UI 投影。 行为 - 任何会话中每个结束的轮次都会触发。 - 标题为 任务完成(轮次失败时为 任务出错);正文写明会话名称。 - 图标:DeepSeek 鲸鱼,由宿主在 /dsh-notify/whale.svg 提供,在浏览器里栅格化为 PNG(Windows 通知偏好位图)。 - 点击通知,请求 shell 聚焦该会话。 - 一个 EventSource 自行处理重连。 安装 dsh plugin --profile web add github:SailingBoat-ovo/dsh-notify dsh plugin --profile desktop add github:SailingBoat-ovo/dsh-notify 之后重启 DSH —— node 那一半在启动时加载,只刷新页面不够。 诊断 Settings → General 显示权限状态、"Send a test notification" 按钮,以及实时链路状态: Link: live · 3 completion event(s) received - 测试按钮能用但计数器一直是 0 → 宿主那一半没加载(重启 DSH)。 - 计数器增长但没有通知 → 操作系统/浏览器在压制通知。 端点 | 路径 | 用途 | | GET /dsh-notify/stream | 完成帧的 text/event-stream | | GET /dsh-notify/completions | 最近的完成事件 + 当前序列水位 | | GET /dsh-notify/whale.svg | 鲸鱼标记 | 测试 npm install npm test tests/host-test.mjs(29 条断言)覆盖事件映射(只有 turn/end 算数;标题/cwd/id 兜底;失败信息)、feed(序号单调、历史上限、解绑),以及全部路由,包括 SSE 握手、推送一帧、断开解绑。tests/client-test.mjs(20 条断言)覆盖两个 slot 注册、流接线、通知内容、点击跳转、权限拒绝、设置行渲染。 许可 GPL-3.0-or-later,完整文本见 LICENSE;第三方说明见 NOTICE.md。 工作原理(以及为什么这样设计) 宿主订阅会话日志自身的 session/event,对 turn/end 作出反应;浏览器通过 SSE 收到完成事件后弹出通知。 这个分工是刻意的。此前两版都试图在浏览器里读客户端投影来判断「是否跑完」,两次都静默失效: | 尝试 | 为什么从不触发 | | sessions.list.byId[*].running | 0.2.x 把 running 放在会话对象上,列表行不再实时刷新,因此永远等不到 true → false 边沿。 | | sessions.binding(id).session | binding() 返回的是 this.scopes.get(id)?.binding —— 它只对已被 retain 的 scope 有答案,根级插件对每个会话都拿到 undefined。 | 这些都是私有内部实现。而 session/event 是文档化的扩展点(dsh-session 包里写明「订阅 session/event」是持久化插件的做法),turn/end 是会话日志事件词汇表里的稳定类型。宿主还能读到会话的 header,所以标题取自事实来源,而不是 UI 投影。 行为 - 任何会话的每一轮结束都会通知; - 标题 任务完成(该轮失败则 任务出错),正文带会话标题; - 图标是 DeepSeek 鲸鱼:由宿主在 /dsh-notify/whale.svg 提供,浏览器栅格化成 PNG(Windows 通知偏好位图); - 点击通知让外壳聚焦该会话; - EventSource 自带重连。 安装 dsh plugin --profile web add github:SailingBoat-ovo/dsh-notify dsh plugin --profile desktop add github:SailingBoat-ovo/dsh-notify 装完必须重启 DSH —— 宿主半边在启动时加载,只刷新页面不够。 怎么排查 设置 → 通用 里显示权限状态、「发一条测试通知」 按钮,以及实时连接状态: 连接:已连接 · 已收到 3 条完成事件 - 测试按钮能弹、但计数一直是 0 → 宿主插件没加载(重启 DSH); - 计数在涨、但没弹窗 → 系统/浏览器在拦截通知。 接口 | 路径 | 用途 | | GET /dsh-notify/stream | 完成事件的 text/event-stream | | GET /dsh-notify/completions | 最近的完成记录 + 当前序号 | | GET /dsh-notify/whale.svg | 鲸鱼图标 | 测试 npm install npm test tests/host-test.mjs(29 项)覆盖事件映射(只有 turn/end 算数;标题/cwd/id 兜底;失败信息)、feed(序号单调、历史上限、解绑),以及全部路由(含 SSE 握手、推送一帧、断开解绑)。 tests/client-test.mjs(20 项)覆盖两个 slot 注册、流接线、通知内容、点击跳转、权限拒绝、设置行渲染。 许可 GPL-3.0-or-later,完整文本见 LICENSE;第三方说明见 NOTICE.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
SailingBoat-ovo/dsh-notify
AI 回复结束时弹出带鲸鱼图标的系统通知
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化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,269已汉化DSH
70.8
这是你的仓库?认领条目