dsh-my-plugin
v0.2.0
Published
DSH Web client plugin: one OS-level notification when a session finishes while you are not watching it (not selected, tab hidden, or window unfocused)
Maintainers
Readme
dsh-my-plugin
English | 中文
一个 DeepSeek Harness Web 客户端插件:当会话运行结束时,只要你不在看它——无论是没选中、切到了其他标签页,还是把浏览器切到了后台——就会发出一次操作系统级系统通知。
触发点与侧边栏绿色完成点的置位逻辑共用同一条 running→idle 边沿,两个界面对「完成」的含义因此保持一致。只有你真正在看的会话(已选中且页面在前台)才不通知;一旦你切到其他标签页或其他应用,即使是那个选中会话完成,也会通知你。通知正文优先使用宿主已投影的会话持久标题,否则使用其显示标题。
通知权限在启动时、浏览器仍显示提示框时请求一次。观察器实时读取权限,因此在浏览器设置里稍后授予的权限无需刷新即可生效;被拒绝的权限让观察器保持安静。
安装
将包安装到你启动 Web GUI 所用的 profile:
dsh plugin --profile web add dsh-my-plugin然后向该 profile 的 patch 层($DSH_HOME/profiles/web/cordis.patch.yml)插入一条 dsh.client 行:
- insert:
- id: session-completion-notify
name: 'dsh-my-plugin'@deepseek-ai/dsh-client-modules 会通过包的 dsh.client 声明发现该行并提供浏览器半身,无需其他配置。卸载时移除该行并执行 dsh plugin --profile web remove dsh-my-plugin。
从本地检出安装
dsh plugin --profile web add ./session-completion-notify从 GitHub 安装
Git 安装拉取的是源码而非构建产物。本包直接发布纯 JavaScript、无构建步骤,因此可以直接安装:
dsh plugin --profile web add github:limingboGitHub/dsh-my-plugin行为
- 插件订阅
ctx.sessions.list—— 运行时在每次会话列表变更时重新发布的 store —— 并为每个会话保留上一次观察到的 running 位。 - 首次观察只记录该位,因此加载时已经空闲的会话保持安静。
- 只要用户没在看某个会话(没选中、标签页隐藏、或窗口失去焦点),它的真→假边沿就恰好触发一次通知;已选中的会话仅在页面可见且聚焦时保持安静。
- 同一会话再次运行会开启新一轮观察,所以每次没被盯着的完成都会再次通知。
开发
cd session-completion-notify
pnpm install
pnpm test测试会桩掉浏览器 Notification API,并用一个受驱动的会话列表 store 走完各完成边沿场景,包括 fiber 拆除(HMR 安全性)。
模型体验
无:本包为人类在操作系统的通知面上渲染会话列表状态,不触及 prompt、消息、schema、流或工具结果。
KV Cache effect
无;本包从不组装或发送 provider 请求。
已知限制与暂缓事项
- 部分引擎的权限提示依赖用户手势 —— WebKit、旧版 Chromium 只在用户手势里展示
Notification.requestPermission()的提示框,因此启动时的请求在这些浏览器上可能被静默丢弃,用户也看不到开启通知的入口;侧边栏绿点仍是始终在线的完成提示。在设置页里提供从点击处请求权限的开关暂缓。 - 通知基于边沿而非计数 —— 在一次列表快照内 running→idle→running 的连续状态帧被观察到的是一个折叠后的位,所以一个会话在下次快照前完成又立即重跑可能被漏掉。基于计数的信号需要新的线路面。
许可证
MIT
