dsh-mobile-notify:DSH 任务完成后推送到手机

前言

在 DeepSeek Harness(DSH)里跑长任务或 goal 多轮续跑时,人往往不在窗口前。任务何时结束、在哪个目录、助手最后说了什么,只能事后打开客户端翻日志。常见做法是定时切回 DSH 看状态,或把关键步骤写进脚本自己打点——前者费注意力,后者和 DSH 会话模型脱节。

下面介绍社区插件 dsh-mobile-notify(维护者 zjhaaa042-cloud):在智能体彻底停下来时,通过 HTTPS 把一条结构化通知推到手机,支持 ntfy、Bark、钉钉、企业微信、飞书、Server酱、PushPlus、Telegram、Qmsg酱和通用 webhook,无需自建推送服务器。插件归类为 DSH 生态目录中的「联网工具」;仓库在 GitHub 上星标为 0,版本 1.0.0,许可证 MIT。

这是什么

dsh-mobile-notify 是纯 Host 侧 DSH 插件:订阅宿主持久事件(turn/end 或 agent/status 变为 idle),过滤后渲染文案,再向所选渠道发一次 POST。不注入客户端代码、不往会话日志写事件、不轮询;发送失败只写日志,不影响会话本身。

典型通知内容包含:结束原因(完成 / 出错 / 中止等)、会话标题、工作目录、本回合耗时、回合序号、可选的助手回复摘要和时间戳。

核心功能

十个推送渠道

各渠道只需配置对应密钥或 webhook,由插件构建请求并判定 HTTP 与业务码是否成功。渠道与 channel 取值如下(细节见仓库 docs/channels.md):

渠道 channel 主要必填项
ntfy ntfy ntfyTopic
Bark bark barkKey
钉钉 dingtalk webhookUrl(可选 dingtalkSecret 加签)
企业微信 wecom webhookUrl
飞书 feishu webhookUrl(可选 feishuSecret)
Server酱 serverchan serverchanSendKey
PushPlus pushplus pushplusToken
Telegram telegram telegramBotToken、telegramChatId
Qmsg酱 qmsg qmsgKey
通用 webhook webhook webhookUrl(可选 webhookHeaders)

README 以 ntfy 为推荐入门:手机安装 ntfy App,订阅一个随机主题名即可,免注册。

默认少打扰

  • trigger 默认 idle:仅在 agent/status 落到 idle(没有 driver 仍在调度)时推送;同一 goal 连续多轮通常只收到一条。
  • 子代理默认不推:includeSubagents 默认为 false。
  • 去重:按每个会话最后已通知的 turn/end 去重;idle 还会跳过超过 120 秒的陈旧结束,避免插件刚加载时误报历史任务。
  • 若需要每回合都知悉,可将 trigger 设为 turn-end。

配置与界面

共 26 项配置,均有默认值,可在 cordis.patch.yml 的 config: 段覆盖;从 GitHub 或 npm 安装时,建议在 profile 的补丁层按插件 id mobile-notify 覆盖,而不是改 node_modules 内文件(见 docs/configuration.md)。常用项包括:

配置 默认 说明
enabled true 总开关
channel ntfy 推送渠道
notifyOn all all / completed / error
minTurnDurationMs 0 仅通知耗时不低于该毫秒数的回合
includePreview true 是否附带助手最后回复摘要
previewMaxChars 200 摘要长度上限
dryRun false 只构建请求不发送

插件依赖 Node ≥ 18(DSH 桌面端需满足;自带 fetch)。

安装与启用

前置条件

DSH 桌面端在运行。安装 spec 需能访问 github.com(或使用本地路径 / 压缩包等其它 spec,见仓库 README)。

从 GitHub 安装(推荐)

在 DSH 中让智能体执行,或在插件管理页填写等价操作:

plugin_manager  action=install_bundle  target=github:zjhaaa042-cloud/dsh-mobile-notify

返回 application: "applied" 表示安装成功。target 也可写为 git+https://github.com/zjhaaa042-cloud/dsh-mobile-notify.git、仓库浏览器地址,或 github:zjhaaa042-cloud/dsh-mobile-notify#v1.0.0 等形式。从 git 安装时无需在插件目录手动 npm install;pnpm 会把依赖 @deepseek-ai/schemastery 装进 profile 的虚拟 store。

装好后到 设置 → 插件 填写 channel 及各渠道密钥。

更新与卸载

改配置或代码后更新需两步,否则可能报 ambiguous-install:

plugin_manager  action=remove_bundle    target=dsh-mobile-notify
plugin_manager  action=install_bundle   target=github:zjhaaa042-cloud/dsh-mobile-notify

卸载:

plugin_manager  action=remove_bundle  target=dsh-mobile-notify

若采用本地路径安装(link:),须先在插件目录执行 npm install,再用 target=<本地绝对路径> 安装;否则可能出现 did not activate / failed to import。用户任务要求不以 git clone 作为读者必做步骤;需要改源码时请参阅仓库 README「方式二」。

典型用法:ntfy 约两分钟

第 1 步:在手机安装 ntfy App,订阅主题(例如 dsh-7f3a91c2,勿用过于好猜的名字;公共 ntfy.sh 主题可被猜到即订阅)。

第 2 步:完成上一节安装。

第 3 步:在 profile 的 cordis.patch.yml 中覆盖配置(示例来自 README):

- insert:
    - id: mobile-notify
      name: 'dsh-mobile-notify'
      config:
        channel: ntfy
        ntfyTopic: 'dsh-7f3a91c2'   # 改成你订阅的主题名

改完后按「更新插件」两步重装,再让 DSH 跑一个任务验证手机是否收到通知。

团队协作若只需主线结束才响,保持 includeSubagents: false;只关心长跑结束可设 minTurnDurationMs: 60000 等。

适用场景与注意

适合:本地或远程挂着 DSH 跑重构、测试、多轮 goal,希望在手机(或钉钉 / 飞书群)上被动收到「任务已停」摘要,而不改 DSH 客户端本身。

运行边界:

  • 通知由当前 DSH 进程发出;关闭 DSH 后不会推送(窗口最小化可以)。
  • 插件装在哪个 profile,对该 profile 下所有工作区生效;其它 profile 需单独安装。
  • 插件以 DSH 进程权限访问网络并持有你配置的 webhook / token;安装前请阅读 源码 与 MIT 许可证,仅配置你信任的渠道与密钥。
  • Telegram 等渠道需本机网络能访问对应服务;Qmsg 等走第三方,需自行评估合规与稳定性。

排错:收不到通知时,仓库提供 npm run send -- https://ntfy.sh <主题> 做单发验证;更多见 docs/troubleshooting.md。

DSH 社区插件目录托管在独立站点 SkillHub,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本插件是其中一条「任务结束 → 手机通知」的联网能力补充。

链接

羽毛球分组比赛记分
小程序二维码

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

小夜