dsh-notify-kde:DSH 跑完与待办时 KDE 桌面通知 + 手机震动

前言

用 DeepSeek Harness(DSH)跑长任务时,窗口不一定在前台:一轮对话结束、模型在等你回答、或工具调用卡在审批,若没有任何提醒,只能反复切回客户端看状态。社区里有人用桌面通知或手机推送补这一环;dsh-notify-kde 把 KDE Plasma 的桌面通知和 KDE Connect 的 ping 接到 DSH 的会话事件上,逻辑来自维护者 Ahrunda 的 pi-notify-kde 移植版,触发时机与节流沿用原版,只是把 pi 事件换成了 DSH 事件。

这是什么

dsh-notify-kde(GitHub:Ahrunda/dsh-notify-kde)是 DSH 的客户端类插件:在需要你知道会话状态变化时,弹一条 KDE 桌面通知,并通过 KDE Connect 把同一条消息推到已配对手机(通知 + 震动)。维护者为 Ahrunda;许可证 MIT;当前 package 版本 0.1.0,要求 DSH >=0.2.1-rc.2、Node >=22。插件目录页:skillhub.cn/plugins/Ahrunda/dsh-notify-kde(社区独立站点,与 DeepSeek / 幻方无官方从属关系)。

什么时候会提醒

下面行为均来自插件 README 中的默认策略表。

时机 默认行为
一整轮真正跑完(含子代理树全部落定) 弹「✅ 跑完了 · 时长」+ 最后回复摘要
出错 / 被阻塞 / 达到 token 上限 弹「⚠️ 出错了」或「⏸ 停下来了」;错误不受 30 秒阈值限制
模型提问(ask_user_question)或方案待确认(exit_plan_mode) 等 8 秒还没答才提醒
工具调用等你批准 立即提醒「⏳ 等你批准 · 工具 — 原因」
你回来打字 撤回当前会话那条桌面通知

子代理自己的会话不单独提醒,完成由父会话「树落定」统一播报。桌面通知默认 8 秒后自动消失(notify-send -t),同一会话新通知会替换旧的(-r)。手机侧是 kdeconnect-cli --ping-msg;没有 kdeconnect-cli 或手机不可达时,桌面通知照发,正文可注明「手机未送达」。

依赖与环境

依赖 用途
Linux + KDE Plasma(有会话 DBus) 桌面通知
notify-send / gdbus(libnotify) 弹通知 / 撤回
kdeconnect-cli + 手机端 KDE Connect 推手机;需已配对且此刻可达

只支持 Linux/KDE;Wayland 下不能靠点击通知聚焦到对应 DSH 会话。手机上的 ping 是通知 + 震动,不能在锁屏上直接批准或回答。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码并确认 MIT 许可证。安装命令须与 README 一致,不要自行拼接 github:owner/repo 形式。

从 GitHub(CLI,web profile)

dsh plugin --profile web add https://github.com/Ahrunda/dsh-notify-kde

桌面端 DSH

侧栏 插件 → 安装,输入:

https://github.com/Ahrunda/dsh-notify-kde

说明:桌面 profile 由 Electron 应用独占管理,dsh plugin --profile desktop add ... 会被拒绝;本地路径安装要通过插件页完成。

若以后发布到 npm

dsh plugin --profile web add dsh-notify-kde

桌面端在插件页输入包名 dsh-notify-kde。

安装后重启 DSH,在任意会话发:

/notify-kde test

桌面应弹出约 8 秒通知,手机同时震一下。

配置与命令

配置分两层:cordis.patch.yml 里的部署默认 config,以及用户覆盖文件 $DSH_HOME/notify-kde.json(/notify-kde on|off 只写 enabled)。

常用键示例:

{
  "enabled": true,
  "locale": "zh",
  "minDurationMs": 30000,
  "uiPromptDelayMs": 8000,
  "approvalDelayMs": 0,
  "desktopTimeoutMs": 8000,
  "kdeconnect": true,
  "kdeconnectDevices": [],
  "includeSnippet": true,
  "snippetChars": 140,
  "suppressWhenAborted": true,
  "suppressSubagentSessions": true
}

与日常相关的几项:minDurationMs 默认 30000,短于 30 秒的完成默认不提醒,设为 0 则每次完成都提醒;uiPromptDelayMs 默认 8000,避免你正在打字时被震;includeSnippet: true 会把最后回复首行送到手机锁屏,敏感场景请关掉。

/notify-kde 子命令:

命令 作用
/notify-kde 或 /notify-kde status 当前配置、DBus、上次手机投递结果
/notify-kde test 立刻桌面 + 手机测试
/notify-kde on / off 总开关(写 notify-kde.json,先备份 .bak)

排查

日志在 $DSH_HOME/notify-kde.log,每次投递有 desktop: sent ... 或失败原因。

不经过 DSH 也可测链路(在插件目录下):

node tools/smoke.mjs --no-phone     # 只测桌面
node tools/smoke.mjs --no-desktop   # 只测手机
node tools/smoke.mjs                # 两条都测

桌面没弹:确认 echo $DBUS_SESSION_BUS_ADDRESS 非空。手机没震:先 kdeconnect-cli -a --id-only 看可达设备;部分机型锁屏后省电会杀 KDE Connect,需在手机端加白名单。

适用谁、注意什么

适合在 KDE Plasma + Linux 上长期挂 DSH、又希望「跑完 / 待答 / 待批」时能离开屏幕的开发者。不适合非 KDE 桌面或没有 KDE Connect 配对的场景。

DSH 生态理念是「一切皆插件」;本插件是社区维护的客户端扩展,不是 DSH 内置能力。使用前确认环境与依赖齐全,并理解插件会读取会话事件以生成通知文案。

链接

  • 目录页:https://www.skillhub.cn/plugins/Ahrunda/dsh-notify-kde
  • 仓库:https://github.com/Ahrunda/dsh-notify-kde
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜