DeepSeek Harness 插件

KeS1Ke/reminder-dsh

分类 通知与集成 收录于 2026-11-10 npm @kesike/reminder-dsh

为 DeepSeek Harness 提供 Windows 原生系统通知与任务栏角标:任务完成和审批请求时弹出以会话名为标题的系统通知,可在通知里快速回复或允许/拒绝审批,任务栏图标显示未读完成数(需在设置中开启,并要求 PATH 中有 PowerShell 7)。

安装

# npm 包(预构建)

dsh plugin --profile web add @kesike/reminder-dsh

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:KeS1Ke/reminder-dsh

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

DeepSeek Harness 的 Windows 提醒插件提供原生系统通知和任务栏完成角标。在 DSH 的「设置 → 通知」中可分别开关,修改即时生效。

English

要求与安装

  • Windows 10/11 本机交互式桌面会话。
  • 系统通知使用 Windows 自带的 powershell.exe。任务栏角标需要 PowerShell 7,pwsh.exe 须在 PATH 中。
  • Node.js 24.9.0+,DSH >=0.2.2-rc.1 <0.3.0。

原仓库骨架提到的 DSH 0.1.1-rc.2 不支持本版采用的动态配置接口,需要升级。实现依据官方源码 fcc0ad4。

winget install --id Microsoft.PowerShell --source winget
pwsh --version

dsh plugin --profile web add @kesike/reminder-dsh
dsh --profile web

@kesike/reminder-dsh 已发布到 npm;同一版本也可直接从 GitHub 安装:dsh plugin --profile web add github:KeS1Ke/reminder-dsh。

将 web 替换成你实际使用的 profile。首次安装后重启对应 DSH;之后调整提醒开关和间隔无需重启。如果安装 PowerShell 后仍找不到 pwsh,请重启终端和 DSH,使 PATH 更新。

包名 @kesike/reminder-dsh,配置条目 ID dsh-reminder,与 GitHub 仓库名一致。在当前 profile 安装一次即可,不要在每个 agent 里重复安装。

从旧版本升级

0.2.0 之前包名为 @kesike/dsh-taskbar-reminder、配置条目 ID 为 dsh-taskbar-reminder。升级时先卸载旧包,把 profile 的 cordis.patch.yml 中该条目改名为 dsh-reminder(config 内容保留),再安装新包并重启 DSH。如果安装过旧版独立的 dsh-winreminder,也要一并移除,避免重复提醒。系统通知配置位于 popup 下,任务栏配置位于 taskbar 下。

在设置中选择提醒功能

打开设置,在左侧选择 通知。

模块 / 字段 默认值 行为
Windows 任务栏完成角标 关闭 主会话完成后在 DSH 任务栏图标角上显示未查看的完成数量(深色圆底白色数字,同 ChatGPT 角标),切回目标窗口后清除。
目标窗口标题包含 空 自动识别 DSH 窗口;可填写更具体的标题文字。
Windows 系统通知 开启 通过原生通知显示会话标题、任务总结和待处理审批。
在通知中显示任务总结 开启 通知正文显示压缩在 3 行内的任务总结;关闭后只显示会话标题,并不再调用模型总结。
通知发送间隔 10 秒 控制连续发送的最短间隔,可设为 1–300 秒整数。

设置使用 DSH 原生 ConfigForm 和 .volatile() 动态引用,保存到当前 profile 的配置覆盖层,不重新挂载插件。三个开关只改动页面上显示的值,需点击页面底部的「保存」才写入(所有未保存开关合并为一次原子提交),「取消」丢弃这些改动;保存成功后页面底部短暂显示「已保存」,失败时保留未保存的值并显示错误,可重试或取消。目标窗口标题和通知间隔仍由各自输入框旁的按钮保存。只读配置、上层覆盖或网络错误导致保存被拒绝时,同样显示失败反馈。

两个模块独立运行。关闭任务栏角标会立即清除角标并退出后台进程,关闭系统通知会取消尚未发送的提醒和通知上的待决审批操作。重新开启后处理新的完成和审批事件。

模块一:任务栏完成角标

通过 pwsh 调用 Windows 任务栏角标接口,在 DSH 窗口任务栏图标的角上显示未查看的完成数量,不抢占焦点。角标与 ChatGPT/Codex 的任务栏角标同款:深色圆底(#26252D)+ 白色数字,图标填满 Windows 的任务栏角标槽位(该槽位固定为 16px,ChatGPT 用系统原生角标约 18px,已尽量接近),两位数及以上自动扩展为同高胶囊以放得下数字;位置由 Windows 按任务栏方向决定,横向任务栏在图标右下角,竖排任务栏在图标右上角。

每次主会话完成时未查看数加一;多个主会话完成会累计到同一个角标。切回目标窗口(目标窗口成为前台)后角标自动清除,数字同时归零。超过 99 显示 99+。已在前台的目标窗口不显示角标。

角标后台进程会轮询前台窗口,切回后退出;为防止异常残留,最长保留 2 小时。默认识别标题中的 DeepSeek Harness、DSH 或 DSH Local Build 产品名,优先选择属于当前 DSH 后端进程祖先的匹配窗口。如果只能通过标题找到多个窗口,不会任意选择,而是记录提示,要求设置更具体的目标窗口标题。

浏览器使用场景中,DSH 标签页需要是该浏览器窗口当前显示的标签页,窗口本身可以在后台或最小化。若浏览器已经切到别的标签,自动识别通常找不到 DSH;可填写目标窗口标题,但请保证该文字能唯一定位你要提醒的窗口。该模块不能可靠地通过窗口标题区分同名的多个独立 DSH 实例。

找不到窗口、匹配不唯一、缺少 pwsh 或系统策略阻止原生调用时,原因会记录在 DSH 日志中。关闭任务栏模块会请求子进程清除角标并退出;进程异常时由超时上限兜底。

模块二:Windows 系统通知

主会话正常结束并进入空闲后,插件以 DeepSeek Harness 为发送来源提交原生 Toast。顶部显示应用图标和名称,标题显示会话标题(取不到时使用配置的固定标题);开启任务总结时正文最多显示三行任务总结和快速回复框,关闭后只显示会话标题。

点击通知正文会切回 DSH,并打开该通知对应的会话(不是当前停留的会话)。实现方式是通知正文触发本机后台激活:插件先通知后端,GUI 通过长轮询取到会话 ID 并由 uiWorkspace.openSession 导航,再启动 dsh://open 切回桌面窗口。因此点击跳转要求插件后端仍在运行(与通知上的回复、审批按钮一致);后端已退出时点击不会打开 DSH。横幅外观、显示时间和通知中心收录由 Windows 管理,受系统通知与勿扰设置控制。

在通知中输入内容并点击「发送」,Windows 回调会通过本机命名管道将回复交给触发该通知的 DSH 会话。每条通知可回复一次,回复入口在发送后 24 小时内有效,并要求原会话和 DSH 后端仍在运行。遇到回复未确认的提示时,请回到原会话核对后再发送。

当 DSH 请求人工审批时,通知的标题同样是该会话的标题(取不到会话标题时显示「需要审批 · 工具名」),正文首句为「需要审批(工具名):申请原因」,并带「允许」「拒绝」两个按钮。允许仅授予当前请求一次。通知与会话内审批卡片共用 DSH 的待决请求,任一处处理或取消后,旧通知上的按钮便失效。需要查看完整操作时,点击通知正文回到 DSH。

桌面版首次发送通知时,插件在当前用户的开始菜单中注册 DeepSeek Harness Notifications/DeepSeek Harness.lnk,供 Windows 读取通知顶部的应用名称和图标。快捷方式也可用于打开 DeepSeek Harness。

多个主会话同时完成时,按完成事件顺序提交。发送间隔从上一条提交成功后开始计算,修改后立即重算等待时间。原会话关闭会取消该会话尚未提交的提醒。已提交的通知由 Windows 通知中心管理。

AI 任务总结

取本次运行最后一轮的最终文字回复,用完成时的会话模型生成简短中文总结,要求压缩在 3 行以内(约 60 字,且不超过 summaryMaxChars),保留失败、未完成事项和验证限制。部分 Windows 11 版本会忽略 hint-maxLines,因此正文按约 60 字的 3 行预算直接截断。不会使用其他轮次、子会话、思考过程或工具参数。

每次有最终文字回复的正常完成会多一次模型调用,使用 DSH 已配置的提供商和凭据,可能产生额外用量;仅开启任务栏模块时、或关闭「在通知中显示任务总结」时不会发生这次调用。摘要是辅助请求,不追加原会话的用户消息,也不启动新 agent 轮次。

默认等待最多 15 秒、总结最多 60 字符(约 3 行);超长回复只取首尾合计 12000 字符。超时或失败时明确显示“AI 总结暂不可用”并附最终回复摘录;没有最终文字回复时说明原因并使用备用文案。模型摘要不能替代对实际完成情况的检查。

提醒触发条件

两个模块共用主会话完成检测:观察到 running,最后一个 turn/end 为 completed,再进入 idle。子代理(origin: subagent 或 delegationDepth > 0)、取消、报错、阻止执行、输出长度达到上限、历史恢复和重复空闲事件不提醒。普通会话分叉仍算主会话。

这里只表示本轮正常结束并空闲,不保证任务业务目标全部完成。后台工作随后唤醒主会话并再次正常完成时,会产生新的完成事件。

文件配置

在当前 profile 的 cordis.patch.yml 添加覆盖项:

- id: dsh-reminder
  config:
    taskbar:
      enabled: false
      windowTitle: ''
    popup:
      enabled: true
      durationSeconds: 10
      showSummary: true
      title: DSH 任务完成
      message: 主会话已完成本轮任务。
      summaryMaxChars: 60
      summaryTimeoutSeconds: 15

taskbar.enabled、taskbar.windowTitle、popup.enabled、popup.durationSeconds、popup.showSummary 支持热更新。popup.durationSeconds 现在表示连续通知的发送间隔。其余为普通配置,修改时遵循插件重载。summaryMaxChars 为 20–1000(默认 60,超过 60 的部分仍按 3 行预算截断),summaryTimeoutSeconds 为 1–60。

模块目录

src/index.js                 组合两个模块、注册热更新
src/reminder.js              共用主会话完成检测、读取会话标题
src/modules/taskbar/         原生任务栏完成角标、窗口定位、子进程管理
src/modules/popup/           AI 总结、发送队列、会话跳转、Windows 原生通知
lib/index.js                兼容原包入口
lib/client.js               DSH 设置界面的两个模块配置

验证与开发

git clone https://github.com/KeS1Ke/reminder-dsh.git
cd reminder-dsh
npm ci --ignore-scripts
npm test
npm run test:settings-ui
npm run test:popup
npm run test:taskbar

test:popup 发送一条示例系统通知,并将测试回复打印到终端。test:taskbar 需要有可匹配的 DSH 窗口,可通过 npm run test:taskbar -- "具体窗口标题" 指定匹配文字;运行后请切到别的窗口查看角标。

自动测试覆盖真实 Cordis Loader 动态更新、模块独立开关、排队和间隔重算、摘要回退、通知标题取值及子进程行为。chromium 测试通过测试夹具验证「通知」注册、铃铛图标、开关的底部保存/取消与原子写入、输入框反馈和保存失败处理,可用 CHROMIUM_PATH 指定浏览器。Windows 专用测试验证原生通知载荷和 Win32 辅助代码。

提醒发生在 DSH 后端所在 Windows 机器。WSL/Linux 后端、远程 Windows 浏览器连接到别处后端、Windows 服务或无人登录会话不保证有可见提醒。

发布:npm publish --access public --registry=https://registry.npmjs.org。若本机默认 registry 是镜像,必须显式指定官方源。

卸载

dsh plugin --profile web remove @kesike/reminder-dsh

删除手工添加的 id: dsh-reminder 覆盖项并重启 DSH。

许可证

插件代码采用 MIT。官方图标来源和 DeepSeek 许可见 assets/README.md。这是第三方插件,不是 DeepSeek 官方产品。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。