Aisland-SJL/dsh-reminder
🔔 Cross-window completion & approval notifications for DeepSeek Harness — popup reminders that bring you back to DSH, Codex/WorkBuddy style.
这是一个 DeepSeek Harness(DSH)插件。本站汇总其 GitHub README、安装信息、维护状态与公开安全信号。
dsh-reminder 🔔
English · 简体中文
DSH 跨窗口提醒插件——你在别的窗口忙时,任务完成或需要许可,它就在屏幕右下角轻轻叫你一声。Codex / WorkBuddy 风格。
✨ 功能
| 🎯 | 功能 | 说明 |
|---|---|---|
| 🟢 | 任务完成提醒 | 每个回合结束弹出「任务完成」:会话名 · 耗时 + 绿色对勾图标 |
| 🟡 | 审批提醒 | 出现等待许可的操作时弹出「等待你的许可」+ 工具名 + 琥珀感叹图标 |
| 🎯 | 任何窗口都弹 | 切到其他应用也照样弹,不用守着页面 |
| 🖱️ | 点击回 DSH | 点通知直接回到 DSH 界面并打开对应会话 |
| ⏱️ | 3-5 秒自动消失 | 不打扰,稍纵即逝(时长可调) |
| 🎵 | 轻柔双音 | D4→A4 双音符提示音,不吓人 |
| 🔁 | 智能去重 | 同一任务 / 同一审批只弹一次 |
| 🛡️ | 只提醒不代劳 | 绝不替用户审批 |
🤔 为什么需要
- 😴 审批没人叫:Agent 卡在等许可,你却不知道 → 现在有琥珀色提醒
- 👀 完成没人说:任务跑完无提示,只能来回切窗口 → 现在有绿色提醒
🚀 快速开始
- 安装:
dsh plugin --profile web add <dsh-reminder>(或npm i dsh-reminder),把dsh-reminder加进 profile 的 bundle 组合,重启 DSH web 进程 - 开权限:设置 → 提醒 →「开启并测试通知」→ 浏览器弹窗选允许,立即收到一条测试通知
- 坐等提醒:切到别的窗口干活,任务完成或需要许可时右下角见
⚙️ 设置
| 设置项 | 默认 | 说明 |
|---|---|---|
| 桌面通知权限 | 未授权 | 一键授权 + 测试通知 |
| 审批提醒 | 开 | 关闭后不弹审批通知 |
| 完成提醒 | 开 | 关闭后不弹完成通知 |
| 通知停留时长 | 3-5 秒 | 自动消失秒数 |
| 失败/取消提醒 | 关(预留) | v0.3 规划 |
🏗️ 架构
DSH 插件 = host Cordis 插件 + Web 客户端同包分发:
- host:注册 reminder 设置命名空间 + 自有 Typert Remote(reminder/getSettings·updateSettings)——插件命名空间不在 Web 设置 API 白名单内,故走自建通道
- client:订阅会话列表与当前会话快照(turn/end、approval/requested 经 mux 流直达浏览器),Notification API 弹窗 + Web Audio 双音
- 只读:绝不修改 DSH 核心行为
🔧 开发
pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # node tests/unit/*.test.cjs(16 项测试)
pnpm run build # esbuild:host ESM + 客户端单文件 CJS(ModuleLoader 握手)+ tsc 声明
- 构建产物:
lib/index.js(host ESM)、lib/client.js(客户端)、lib/types/(.d.ts) - 离线开发:不引入新依赖;@deepseek-ai/* 类型与本机 esbuild/typescript 经
03_local/codes提供(不入 git)
⚠️ 已知约束
- Chrome 页面通知不支持按钮(actions 仅 ServiceWorker 持久通知可用)——关闭方式:自动消失 / 悬停系统 ✕
- 通知权限必须用户手势申请(浏览器安全规定)——设置页按钮一键完成
- 提示音需首次点击解锁(Web Audio 自动播放策略)
📄 许可证
安全与安装证据
该分数只基于公开仓库元数据与本站登记的安装证据,不等同于代码安全审计。
来源可追溯
来自公开插件目录,并链接到公开 GitHub 仓库。
许可证
仓库声明 MIT 许可证。
维护活跃度
最近 180 天内有代码更新。
安装证据
尚未登记可复验的精确安装元数据,请按仓库说明手动检查。
安装生命周期脚本
已检查的包元数据未声明安装生命周期脚本。