DeepSeek Harness 插件

dsh-notify-weekitmo

Unified desktop, browser-title, and sidebar completion notifications for DeepSeek Harness.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
weekitmo/dsh-notify
最近更新
2026年8月20日
分类
通知与集成
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/weekitmo/dsh-notify
插件名:dsh-notify-weekitmo
作者:weekitmo

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-notify

English | 简体中文

![CI](https://github.com/weekitmo/dsh-notify/actions/workflows/ci.yml) ![Release](https://github.com/weekitmo/dsh-notify/releases/latest) ![License: MIT](LICENSE)

DeepSeek Harness 的任务状态通知插件。它在任务运行、完成或异常时,通过系统通知、浏览器 Tab 标题和左侧会话列表提供明确的状态提示。

功能

  • 系统通知:仅在顶层任务全部收敛后发送完成、错误、中止、阻塞或 Token 限制结果;可在设置中单独关闭某一类。
  • 钉钉机器人:配置 Access Token 与 Signing Secret,独立选择“成功 / 完成”或“失败 / 中止”消息,并支持免打扰和结束后错过消息汇总。
  • Tab 状态:空闲时显示最近工作区会话标题;运行中显示 spinner 和会话数;完成或异常后显示未读结果计数。
  • 侧栏状态灯:会话完成且尚未查看时显示绿色圆点;错误、中止、阻塞或 Token 限制显示红色圆点。打开会话后清除。
  • 状态兼容:执行中的会话保留 DSH 自带 loading,等待审批或回答时保留原生警告状态。
  • 可配置:可在 WebUI 的 设置 > 通知 中控制通知权限、Tab 动效、favicon、spinner、侧栏状态灯和结果类型。

架构

dsh-notify 是标准的 Cordis Host/Client 插件,不修改 DeepSeek Harness 核心。它使用 DSH 提供的 Session 事件、Session Projection、Client Runtime 和 UI Slot 扩展点;这里不是 packages/hooks/* 的外部 CLI hooks 适配器。

flowchart TB
  subgraph Host[DSH Host / Cordis]
    Events[Session 事件日志] --> Projection[dshNotify Session Projection]
    Events --> Coordinator[任务完成协调器]
    Agents[agents 状态] --> Coordinator
    Jobs[jobs 状态] --> Coordinator
    Coordinator --> HostFilter{任务已完全收敛?}
    HostFilter -->|否| PendingHost[保留或取消候选]
    HostFilter -->|是| DingQueue[钉钉持久队列]
    DingQueue --> DingTalk[钉钉机器人]
    SettingsApi[同源回环设置接口] --> DingQueue
  end

  subgraph Web[DSH Web Client]
    Projection --> SessionList[sessions.list 投影快照]
    SessionList --> ClientState[pending / published 状态机]
    ClientState --> ClientFilter{任务已完全收敛?}
    ClientFilter -->|否| PendingClient[保留或取消候选]
    ClientFilter -->|是| Unread[最终 AttentionEntry]
    Unread --> System[浏览器系统通知]
    Unread --> Title[document.title 汇总]
    Unread --> Sidebar[侧栏状态灯]
    SessionList --> Running[将运行中子代理折叠到可见父会话]
    Running --> Title
    LocalSettings[localStorage 设置] --> System
    LocalSettings --> Title
    LocalSettings --> Sidebar
    Slot[settings.section UI Slot] --> LocalSettings
    Slot --> SettingsApi
  end

Host 入口通过 ctx.sessionProjections.register(...) 注册投影,并由协调器同时监听 Session、Agent 与 Job 生命周期;Client 入口订阅 sessions.list,每次快照变化都重新评估候选。两端都用可取消的短收敛窗口处理 job settle 后同步 followup 唤醒主 Agent 的竞态。

子代理 Session 带有 origin: 'subagent'。Host 的钉钉出口和浏览器端的系统通知、Tab 未读结果、侧栏状态灯都会在候选进入最终结果前过滤它,因此当前没有“子代理成功通知”开关。运行中的子代理仍折叠进可见父会话的运行计数。

turn/end 只产生待定候选,不直接表示完成。只有顶层主会话已 idle、该任务及其子代理后代没有 running/stopping job、没有运行中的子代理后代、没有 active 自动 goal,并且该轮没有未收敛异步委派时,候选才在短收敛窗口后发布。de_coi_dispatch、后台 subagent/bash、workflow/goal 等仍有未收敛委派的启动轮不会发布;如果同一轮已明确等待并收集全部终态,则该轮仍可作为最终汇总发布,否则由后续主 Agent 汇总轮覆盖旧候选并在收敛后通知。普通 GUI fork 没有 origin: 'subagent',仍是可独立通知的任务。

安装

前置条件:pnpmPATH 中。若未安装 dsh,安装器会优先使用 bun、其次使用 npm 提示安装;只有输入小写 y 才会执行。

一行安装最新稳定版

macOS、Linux 或其他 POSIX shell 使用 curl:

curl -fsSL https://github.com/weekitmo/dsh-notify/releases/latest/download/install.sh | sh

或使用 wget:

wget -qO- https://github.com/weekitmo/dsh-notify/releases/latest/download/install.sh | sh

Windows CMD 克隆仓库后运行批处理安装器;系统询问是否允许执行时请确认:

git clone --depth 1 https://github.com/weekitmo/dsh-notify.git
cd dsh-notify
install.bat

安装后刷新 WebUI。若插件没有自动加载,重启对应的 dsh web 进程后再刷新页面。

固定版本、校验和与源码安装方式见 [安装说明](docs/installation.md)。

启用与使用

1. 打开 WebUI 的 设置 > 通知。 2. 开启需要的通知功能。 3. 如需系统通知,点击 请求授权,并在浏览器提示中允许通知。 4. 如需钉钉通知,在钉钉配置组打开官方文档创建自定义机器人,填写 Access Token 与 Signing Secret,选择需要发送的结果类型后保存。 5. 保持默认配置,或分别调整 Tab 提示、运行中 spinner、侧栏状态灯及结果类型。

钉钉的结果筛选独立于浏览器通知开关。关闭系统通知或本地某类结果,不会关闭已启用的钉钉分类。浏览器通知权限被拒后,网页无法再次强制弹出授权框;请从浏览器地址栏的站点权限设置中重新允许通知。

配置

浏览器侧设置保存在当前站点的 localStorage,默认配置如下:

设置默认
系统通知
系统通知正文最大字符数400(可设置 100–2000)
子代理独立完成通知关(固定;仅跟随父会话运行计数)
Tab 未读结果汇总
Tab 运行中 spinner
Tab 空闲标题动效
空闲 hidden favicon 提示
侧栏绿/红状态灯
五类结束结果全开
未读结果动画跑马灯
钉钉成功 / 完成消息开(配置凭据后生效)
钉钉失败 / 中止消息开(包含错误、阻塞、Token 限制)
钉钉消息免打扰关(默认时段 23:00-08:00)
免打扰结束后错过消息汇总

钉钉凭据与策略保存在 $DSH_HOME/dsh-notify/settings.json,不会写入浏览器 localStorage,API 也不会把凭据回传给页面。凭据管理接口仅接受本机回环地址上的同源 WebUI 请求;通过局域网或公网地址访问 WebUI 时不能修改钉钉配置。免打扰固定按 Asia/Shanghai 判断,支持跨午夜;开启汇总后,期间消息会暂存到同目录的 dingtalk-missed.json,结束时合并为一条通知。普通任务结果也会在发送前短暂写入该持久队列,失败或重启后自动重试;交付采用 at-least-once 语义,极端崩溃窗口可能重复,但不会静默丢失。更换机器人凭据会在保存新凭据前清空旧队列,关闭结果分类也会移除对应待发消息。POSIX 系统使用 0700 目录和 0600 文件权限;Windows 依赖当前用户的文件 ACL,并继续拒绝符号链接和非普通文件。

系统通知正文最大字符数可直接在 dsh-notify 设置页调整,修改后立即生效。

卸载

dsh plugin --profile web remove dsh-notify

刷新页面;若插件仍然存在,重启对应的 dsh web 进程。

相关文档

  • [安装说明](docs/installation.md):固定版本、SHA256 校验和源码安装。
  • [开发说明](docs/development.md):已知限制、本地开发和检查命令。
  • [版本与发布](docs/releasing.md):版本规范与维护者发布流程。

License

MIT. See [LICENSE](LICENSE).