前言¶
在 DeepSeek Harness(dsh)里跑长对话或定时任务时,人往往不能一直盯着浏览器:回合结束、需要点批准、模型抛错,或者自动化脚本发现异常,这些时刻才需要回到 dsh。常见做法是反复刷新页面或另开监控,既打断手头事,也容易漏掉「等你输入」的窗口。下面介绍社区插件 dsh-ping-me(维护者 JoblessJoe):用 ntfy 把通知推到手机,且设计为 只发不收,外部无法通过通知通道向智能体回写指令。
这是什么¶
dsh-ping-me 是 dsh 的联网类插件(npm 包名 dsh-ping-me,当前资料中版本 0.1.3,MIT 许可证)。它在 dsh 侧监听回合与自动化相关事件,经 ntfy 向已订阅 topic 的设备推送标题、摘要和「Open dsh」入口;审批与提问仍在 dsh Web 里完成,手机只负责提醒。
与可双向注入会话的 ntfy 类方案(README 中对比的 dsh-ntfy-remote)不同,本插件 只发布、不订阅,topic 上收到的内容不会进入 agent。
核心功能¶
资料中列出的通知类型如下。
| 类型 | 触发时机 | 声音 |
|---|---|---|
| 回合完成(含回复摘要) | 你发起的回合结束 | 普通 |
| 需要批准 / 有问题 | 等待 approval 或 ask_user_question;问题与选项会出现在通知里 |
响亮 |
| 失败 | 错误、输出上限、策略拦截;用户主动 Stop 不推送 | 高 |
| 自动化告警 | 自动化任务调用 ping_me 报告问题 |
高 |
| 可选:进行中状态 | 回合运行中就地更新(如 thinking、running bash),结束后变为完成通知 | 静默 |
其他行为(README 原文):
- 每条通知带 Open dsh,在浏览器打开 dsh(仍需你的 dsh 登录);地址从使用 dsh 的浏览器检测。
- 通知带 会话标题,便于区分多个 agent;子 agent 不单独推送,由父会话汇总。
- 过长回复会截断以适配 ntfy 约 4 KB 限制,末尾注明完整内容在 dsh 中查看。
自动化专用工具 ping_me:
- 签名:
ping_me({ title, message, urgent? }),message可为 markdown,urgent设为最高优先级。 - 仅在 自动化任务发起的回合 中可用;普通聊天里调用会被拒绝并记入日志,避免滥用。
- 默认 每小时最多 10 次 ping;自动化回合的「一切正常」回复默认不推送,失败与提问仍会通知。可在设置中开启「Automation runs finished」以推送每次自动化结束。
- 每次
ping_me(含拒绝)写入~/.dsh/ping-me/log.jsonl。
安装与启用¶
插件面向 dsh 的 web profile(下面示例 profile 名为 web,请换成你实际承载 Web GUI 的 profile 名)。官方安装命令为:
npx @deepseek-ai/dsh plugin --profile web add dsh-ping-me
若从源码开发环境调用 dsh,README 说明可将 npx @deepseek-ai/dsh 换成 pnpm dsh。
安装后 重启 dsh 一次,在界面打开 Plugins → dsh-ping-me。要求 dsh 0.2.0 及以上(package.json 兼容声明为 >=0.2.0-rc.2)和 Node 20+;无额外构建步骤,运行时依赖含 qrcode(用于设置页二维码)。
也可在任意 dsh 会话里让 agent「help me set up dsh-ping-me」;插件内的 ping_me 工具会指向随包提供的 SETUP-GUIDE.md 做逐步检查。
连接手机¶
无需 ntfy 账号:插件生成随机 topic(96 位随机,视为密钥,勿分享;设置页 New topic 可轮换)。
- 安装 ntfy 客户端(Android、iPhone、F-Droid)。
- 订阅 topic:Android 在插件卡片选 Android 并用相机扫二维码后在 ntfy 中 Subscribe;iPhone 无法在 QR 中直接打开 app,需在 app 内点 + 手动输入卡片上的 topic 名,Use another server 保持关闭后 Subscribe。
- 在插件卡片点 Send test notification 验证。
Android 若收不到通知:允许 ntfy 通知权限,并将电池策略设为 Unrestricted。
高级: 可填自托管 ntfy 服务器或 ntfy.sh 保留 topic;访问 token 存入 dsh 凭证库且不再显示。
典型用法:Schedule + ping_me¶
dsh 的 Schedule 在指定时间向会话投递 prompt。README 示例意图如下:每天固定时间检查日志,仅在有备份失败时调用 ping_me 并附上证据,一切正常则不 ping。
Every day at 8:00 Europe/Berlin: check ~/app/logs/backup.log for the last 24 h. If a backup failed, call ping_me with the evidence. If everything is fine, don't ping.
这样「每日巡检正常」保持安静,只有异常才响铃。
安全、限制与适用注意¶
安全(README 摘要):
- Push only:无订阅、无回帖按钮向 agent 写回。
- topic 泄露则他人可读你的通知(可能含 agent 回复);设置 API 经 dsh 登录态的
/api层,仅已登录浏览器可改配置。
限制:
- ntfy.sh 免费档约 250 条/天;开启「进行中状态」每条更新计一条,在 ntfy.sh 上建议关闭或改用自建服务器。
- 无「dsh 进程死亡」专用告警(ntfy.sh 无法可靠取消延迟消息);进行中状态上的「Updated HH:MM」若不再变化,可人工判断 dsh 是否已停。
- 无法区分「模型长时间思考」与「挂死」(流式输出不在插件可见事件内)。
- 批准与问答必须在 dsh 回答,不能从手机回复——这是 push-only 的取舍。
使用前请知悉: 插件以当前 dsh 进程权限运行,会向配置的 ntfy 服务器发网请求;安装前建议查看 GitHub 源码 与 MIT 许可证,确认 topic 与通知内容是否符合你的隐私要求。
维护者在 README「Tested」一节记录:在 Linux、dsh 0.2.1、本地 27B 模型与 ntfy.sh 上逐项验证过聊天完成、提问、批准、Schedule + ping_me、普通聊天拒绝 ping_me、进行中状态与用户 Stop 等行为;npm test 覆盖通知规则、ping_me 拒绝与上限、push-only 保证等。
结尾¶
dsh-ping-me 把 dsh 里「该你回来」的时刻推到手机,自动化里用 ping_me 做「有问题才响」,并坚持单向推送,降低 topic 被滥写回 agent 的风险。社区目录页:skillhub.cn/plugins/JoblessJoe/dsh-ping-me;源码与完整说明:github.com/JoblessJoe/dsh-ping-me。