前言¶
用 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