DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

harienlook /

harienlook/dsh-notify-bridge

Verified

DeepSeek Harness plugin: native desktop notifications plus Discord bot forwarding for approvals, scheduled tasks, todo digests, goal notices and token usage.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@d26d3074

dsh-notify-bridge

DeepSeek Harness(DSH)通知与 Discord 转发插件:自带独立通知引擎(桌面通知 / 提示音 / 标题标记 / 审批快捷按钮),并把审批、定时任务、待办摘要、/goal 开始提示转发到 Discord Bot,每条已执行提醒自动附本次任务 Token 用量。

完全独立实现,不依赖 dsh-notify-me;两者可共存,互不影响。

功能 · 安装 · 配置 · Discord 准备 · 控制面板 · 健康页 · 代理排查 · Token 口径 · 开发

功能

能力 说明
🔔 独立通知引擎 审批/提问/计划复核、回复完成自动弹窗:桌面通知 + WebAudio 提示音 + 标签页标题 ●/✓ 标记;审批弹窗带「同意 / 拒绝」按钮
🛡️ 审批桥 页面有实时客户端时走 DSH 原生卡片;页面关闭时发 Discord 卡片,点击真实结算为 allowed-once / rejected;超时 unavailable、中断 cancelled
⏰ 定时任务提醒 转发 DSH 原生 schedule 的单条和批量提醒(提醒本身不附 Token,任务尚未执行)
✅ 任务完成 turn/end 推送完成摘要并附本次任务 Token;定时任务执行完成后同样附 Token
📋 待办摘要 每天固定时间读取 dsh-memory-evolve 的待办文件,只发未完成项,空列表不发
🚀 /goal 开始提示 检测 goal/change 的 create,发「任务开始执行」
🧮 Token 用量 每条已执行提醒末尾追加「本次任务 / 会话累计 / 本日」,数据来自 assistant/message.usage 并用 DSH tokenUsage 投影校正
🎛️ DSH 设置页 设置 → 通知设置 双 Tab:通知提醒(本插件的原生通知设置)、Discord(Token/频道/代理/转发开关等)
🎮 Discord 控制面板 Bot 就绪后发一条按钮面板(状态 / Tokens / 任务 / 记忆包),不用斜杠命令
📦 记忆包 把 ~/.dsh/memories 打包成 ZIP 发到频道(SUMMARY.md + manifest.json + 原始 Markdown)
🔗 多通道 Discord webhook、Bark、Gotify、飞书、ServerChan、WxPusher、自定义 webhook(HMAC 签名)
🩺 健康页 /__dsh-notify-bridge/:Bot/代理/审批/待办/最近日志/自测按钮

通知引擎(独立实现)

设置 → 通知设置 → 通知提醒 由插件自带引擎驱动,无需安装其他通知插件:

  • 触发源:DSH uiSession 的待处理交互(审批 / 提问 / 计划复核)与 sessionStatus.completionUnread 完成标记;订阅会话列表快照做去重与标题解析。
  • 提醒方式:右上角页内 toast(审批类带「同意/拒绝」,直接调用 DSH 的 answer('allowed-once' | 'rejected'))、系统通知(Windows 通知中心)、WebAudio 双音提示(无需音频素材)。
  • 标题标记:待处理 ●、完成未读 ✓,读掉自动恢复。
  • 离席判定:窗口失焦 / 页面隐藏 / idleMinutes 无输入算离开;background 策略只在离开时提醒,smart 跳过当前会话,always 总是提醒。
  • 子代理静音:默认忽略子代理会话的完成提醒。
  • 配置存储:localStorage[dshNotifyBridge.config],与 dsh-notify-me 的配置完全隔离。

安装

要求:DSH Desktop 0.2.2-rc.1(桌面/Web 均可),Node ≥ 20;Discord Bot Token、频道 ID、你的用户 ID。

方式一:直接从 GitHub 安装(推荐)

在 desktop profile 的 package.json 中加依赖和 bundle:

{
  "dependencies": {
    "dsh-notify-bridge": "git+https://github.com/harienlook/dsh-notify-bridge.git"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-notify-bridge"]
    }
  }
}

然后在 profile 目录执行 pnpm install,重启 DSH Desktop(含托盘退出)。

方式二:本地工作区 link(开发用)

"dsh-notify-bridge": "link:<你的工作区>/dsh-notify-bridge"

方式三:从 Releases 的 tgz 安装

到 Releases 页面下载 dsh-notify-bridge-0.1.0.tgz:

cd ~/.dsh/profiles/desktop
pnpm add ~/Downloads/dsh-notify-bridge-0.1.0.tgz

安装后必须把 dsh-notify-bridge 加入 dsh.profile.bundles,并完整重启 DSH。

配置

重启后打开 DSH 设置 → 通知设置。

通知提醒 Tab(即时生效)

字段 说明
启用提醒 总开关
提示音 / 音量 WebAudio 双音提示,独立音量
审批快捷按钮 toast 上显示「同意 / 拒绝」
回复完成 background 离开页面才提醒;smart 当前会话不提醒;always 总是提醒
页面在前台也提醒需要操作 默认只在离开时提醒待处理
当前会话的等待不提醒 请求就在眼前时不弹
子代理会话不提醒 子代理完成默认静音
通知语言 auto / 简体中文 / English
离开判定(分钟) 多久无输入算离开,0 只按焦点
自动关闭通知 present 页面可见时几秒后关闭;always / never
点击通知切换会话 点击系统通知后聚焦并切到对应会话
测试按钮 立即弹测试「需要操作」/「回复完成」通知

Discord Tab(保存后重启生效)

字段 说明
Bot Token 粘贴后写入 ~/.dsh/notify-bridge/discord.json,不回显;留空表示不修改
频道 ID 通知、控制面板、审批卡片发到这里
你的用户 ID 只有你能点审批按钮、使用查询
服务器 ID(可选) 按钮面板不需要;保留用于清理旧命令
代理 系统代理用户填 http://127.0.0.1:7897;直连留空;不支持 socks5
审批模式 auto:页面在线走原生,关闭走 Discord;always:总是 Discord
转发开关 回复完成 / 审批 / goal / 定时任务 / 待办摘要
待办时间 24 小时制 HH:MM
Token 时区 本日统计和待办日期

保存后配置写入 ~/.dsh/notify-bridge/config.json,页面会提示重启 DSH Desktop 生效。

设置页 API 只允许 loopback 访问;Token 单独存 discord.json,不返回前端、不进日志。

Discord 准备

  1. Developer Portal → New Application → Bot → Reset Token,复制 Token。
  2. OAuth2 → URL Generator:scope=bot,permissions=52224(View Channels + Send Messages + Embed Links + Attach Files),邀请到服务器。
  3. 复制频道 ID(右键频道 → Copy Channel ID,需开启 Developer Mode)。
  4. 复制你的用户 ID(右键头像 → Copy User ID)。
  5. 在 设置 → 通知设置 → Discord 粘贴 Token / 频道 ID / 用户 ID。

插件不会把 Token 回显到设置页、日志、状态或健康页。

代理与网络(重要)

discord.proxy 默认空字符串,意思是直连。插件不会自动读取 Windows「系统代理」、Clash 配置、PAC 或 HTTP_PROXY/HTTPS_PROXY,也不会扫描本机端口。

你的网络 推荐配置
能直连 Discord(海外/公司网络) proxy 留空
Clash/Surge 开了 TUN / 增强模式 / 虚拟网卡 proxy 留空通常可用(TCP 被透明接管)
只开了 Windows「系统代理」或本地 HTTP 端口 proxy 填 http://127.0.0.1:7897(换成你的端口)
完全无法直连、也没有代理 需要先准备一个可用的 HTTP 代理
  • 只支持 HTTP/HTTPS 代理;socks5:// 不支持,Clash 请填「混合端口」或「HTTP 端口」。
  • 非法代理不会静默改直连:Bot 不启动,健康页和日志报 proxy 错误。
  • 环境变量 DSH_NOTIFY_BRIDGE_PROXY 可作为兜底(显式配置优先)。
  • 判断标准不是「代理软件开着」,而是「到 Discord 的 TCP 能不能通」。

Discord 控制面板

Bot 就绪后自动发送/更新一条面板消息:

📋 DSH 控制面板
[状态] [Tokens] [任务] [记忆包]
  • 状态:Bot、代理、会话、待审批、Tokens、待办数量。
  • Tokens:本任务 / 本会话 / 本日,最近 5 个会话。
  • 任务:当前任务摘要(目标、最近回复、Tokens)。
  • 记忆包:把记忆 ZIP 发到当前频道(普通消息,请只发私有频道)。

默认不注册任何斜杠命令,也不需要输入 /status;registerCommands: false 时启动会清理旧命令。按钮和面板只受 ownerUserId 限制;allowedChannelIds 为空时允许 Bot 所在的所有频道,建议显式配置。

健康页与自测

http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/
http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/health
http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/logs?limit=50

健康 JSON 里的 clientDebug 是设置页客户端心跳:为空表示 client bundle 没有执行;stage = registered 表示设置页已注册。设置页不出现时先看这个字段。

代理排查

健康页的 Proxy 卡片会显示来源和错误:

  • off:直连。Bot 连不上时,填 http://127.0.0.1:端口。
  • config · http://...:来自 discord.proxy。
  • env · http://...:来自 DSH_NOTIFY_BRIDGE_PROXY。
  • error: ...:按错误修正;socks5:// 改成 http://,PAC 改成显式 HTTP 端口。

代理只作用于 Discord REST/Gateway,不影响 DSH 本体、模型请求或其他插件。

Token 口径

  • 单步:assistant/message.usage 的 inputTokens(DSH 已是 uncached)、outputTokens、cacheReadTokens、cacheWriteTokens。
  • 同一 turn:step 以最后一次样本替换,避免流式重复。
  • 任务:从最近一条普通用户消息(或 /goal create)开始累计,直到下一条普通用户消息。
  • 会话:优先用 DSH sessionProjections.snapshot(session, [tokenUsage]) 校正,含插件启动前的历史。
  • 本日:插件按 tokens.timeZone 聚合,写入 ~/.dsh/notify-bridge/state.json。
  • 未执行的定时任务、待办摘要、/goal 开始提示不附 Token。

稳定性与安全

  • 审批 prepend: true,只结算一次;超时/中断/发送失败都 fail-closed。
  • Bot 支持 Gateway resume、心跳 ACK、断线指数退避、429 retry_after。
  • 状态文件原子写(tmp + rename + 0600),去重 TTL 7 天、上限 512 条。
  • Token/secret 不落日志/健康页;config.json、discord.json 按 0600 写。
  • 健康路由和设置 API 只允许 loopback;设置 POST 需要 x-dsh-notify-bridge: config 头。
  • 设置页保存后不会热重载 Bot:重启 DSH Desktop 生效,避免半配置状态。

已知边界

  • Discord 侧需要能访问 discord.com(本机通常需要代理,见上)。
  • /goal 开始提示依赖 DSH goal/change 事件;其他插件替换 goal 命令时可能收不到。
  • 「记忆包」按钮把 ZIP 发到当前频道(普通消息),公开频道不要点。
  • 系统通知本身只做提醒与聚焦;带「同意/拒绝」的快捷按钮在页内 toast 上。

开发

npm install
npm test        # 8 组测试:approval / discord / todo / proxy / settings / client / smoke / boot
npm pack --dry-run

目录结构:

  • lib/index.js:host 插件入口(事件订阅、审批桥、待办、转发、Token 统计)。
  • lib/client.js:设置页 + 独立通知引擎(不依赖其他插件)。
  • lib/discord/:Bot Gateway/REST 客户端。
  • lib/settings.js / lib/health.js:设置与健康页路由。
  • test/:Node 原生测试(无第三方框架)。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit d26d30741805

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout