DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-notify-kde

d

dsh-notify-kde

Manifest valid

KDE desktop notification plus a KDE Connect phone ping when DSH finishes a turn, needs approval, or waits for an answer.

hasBundlePatch

dsh-notify-kde

DSH 需要你的时候,弹一条 KDE 桌面通知,同时通过 KDE Connect 把同一条消息推到手机。

这是 pi-notify-kde 的 DSH 移植版:触发时机、文案、 节流和手机重试逻辑都沿用原版,只把 pi 的事件换成了 DSH 的会话事件。

什么时候提醒

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

子代理自己的会话不单独提醒:它的完成由父会话的「树落定」统一播报,避免一个任务响很多次。

桌面通知默认 8 秒后自动消失(notify-send -t),同一会话的新通知会替换旧的(-r)。 手机收到的是 kdeconnect-cli --ping-msg:一条通知 + 震动。KDE Connect 没有「推送任意通知」 的 DBus 接口,ping 就是它的等价物。

依赖

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

没有 kdeconnect-cli 或手机不可达时,桌面通知照发,正文里会注明「手机未送达」。

安装

从 GitHub(无需 npm 账号)

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

桌面端:侧栏 插件 → 安装,输入:

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

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

/notify-kde test

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

从 npm(如果以后发布到 npm)

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

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

从本地目录(开发/未发布)

  1. 打开 DSH 侧栏 插件 → 安装。
  2. 在安装输入框里填本目录的绝对路径(例如 /path/to/DSHPlugin); 如果输入框只收文件,就填打包生成的 dsh-notify-kde-0.1.1.tgz。
  3. 安装后确认 notify-kde 是启用状态,然后重启 DSH。
  4. 发 /notify-kde test 验证。

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

配置

配置分两层,后者覆盖前者:

  1. cordis.patch.yml 里这一行的 config(部署默认值);
  2. $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,
  "ignoreAgentPresets": []
}
键默认说明
minDurationMs30000跑完提醒的最短回合时长;0 = 每次完成都提醒
uiPromptDelayMs8000提问/方案确认等多久还没答才提醒;0 = 立即
approvalDelayMs0审批等多久才提醒
desktopTimeoutMs8000桌面通知停留毫秒数;0 = 交给通知服务器决定
urgencynormallow / normal / critical;critical 不会自动消失
coalescetrue同一会话用同一个通知 id 替换旧通知
dismissOnReturntrue你发消息时撤回当前会话的通知
includeSnippettrue通知正文带最后回复的首行摘要
kdeconnecttrue是否推手机
kdeconnectDevices[]设备 id 白名单;空 = 所有已配对且可达的设备
kdeconnectRefreshWhenOfflinetrue没设备可达时让 kdeconnectd 重扫并轮询
annotatePhoneFailuretrue手机没送达时在桌面通知里注明
suppressWhenAbortedtrue你按 Esc 中断的那一轮不提醒
suppressSubagentSessionstrue子代理会话不单独提醒
ignoreAgentPresets[]完全忽略这些 agent preset 的会话,例如 Aurabot 的 aurabot-private

/notify-kde 命令:

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

让 Aurabot(QQ 大肥鱼)不提醒

Aurabot 每个 QQ 会话都跑在自己的 agent preset 上,一轮经常超过 30 秒,所以会被当成“跑完了”。 把这些 preset 加进忽略列表:

/notify-kde ignore aurabot-private aurabot-private-long aurabot-social

也可以直接跑一次性脚本(写 ~/.dsh/notify-kde.json,重启 DSH 生效):

node tools/ignore-aurabot.mjs

反过来取消:

/notify-kde unignore aurabot-private

排查

日志在 $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 非空;插件会尝试从 /run/user/<uid>/bus 补上。notify-send 缺失时日志会写 notify-send failed。
  • 手机没震:先 kdeconnect-cli -a --id-only 看有没有可达设备。小米/HyperOS 等 省电策略会在锁屏后杀 KDE Connect,手机根本不在网络上——这只能在手机端加白名单。
  • 一直不提醒:短于 30 秒的完成本来就不提醒;把 minDurationMs 设成 0, 或看日志里有没有 desktop: sent。

已知限制

  • 只支持 Linux/KDE;notify-send 和 kdeconnect-cli 是硬依赖。
  • 不能点击通知聚焦到对应会话:Wayland 下可靠地找到并激活正确的窗口超出本插件范围。
  • ping 是「通知 + 震动」,不是可交互通知;手机上不能直接批准或回答。
  • includeSnippet: true 会把最后回复的首行送到手机锁屏;敏感场景请关掉。

从 pi-notify-kde 的映射

pi 事件DSH 事件
agent_settledturn/end + 子代理树计数
ui_prompt_starttool/call 且工具名是 ask_user_question / exit_plan_mode
审批approval/asked / approval/decided
用户输入user/message(source.kind === 'user')

License

MIT

Comments

Loading…

From the same category

reactive-resume

DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.

Tools & CapabilitiesManifest valid

★ 41.7k

↓ 215/wk

MIT

Aug 24, 2026

dsh plugin --profile web add dsh-plugin-reactive-resume

by dsh-market

The plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场

Tools & CapabilitiesManifest valid

★ 10.1k

↓ 361.7k/wk

MIT

TypeScript

Nov 1, 2026

dsh plugin --profile web add dshmarket

by Tencent

Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.

Tools & CapabilitiesManifest valid

★ 9.9k

↓ 12.3k/wk

MIT

TypeScript

Nov 1, 2026

dsh plugin --profile terminal add @wxg-prc-cpg/browser-skill-dsh-plugin

by yjh051108

dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).

Tools & CapabilitiesManifest valid

★ 7k

MIT

JavaScript

Sep 18, 2026

dsh plugin --profile web add @dsh-external/dsh-super-injector

by superdesigndev

OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn

Tools & CapabilitiesManifest valid

★ 7k

NOASSERTION

Python

Nov 2, 2026

dsh plugin --profile web add treg-dsh

by Q00

Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode,

Tools & CapabilitiesManifest valid

★ 6.3k

MIT

Python

Nov 1, 2026

Index only — not installable