前言¶
DeepSeek Harness (dsh) 的设计理念是“一切皆插件”。在开发或运维场景中,智能体任务往往在后台运行,任务完成时开发者可能不在终端旁。如何第一时间获知任务状态是常见痛点。
目前 DSH 生态中存在一些远程监控插件(如 dsh-pocket),它们通常提供完整的 UI 交互。本插件复用同一套成熟模式,但聚焦于“通知”这一单一核心:提供 macOS/Windows/Linux 原生桌面通知,并支持零配置的手机端 PWA/Web Push 配对,让任务完成状态实时同步到手机锁屏。
核心功能¶
本插件提供以下能力:
* 桌面原生通知:在 macOS、Windows 和 Linux 上弹出系统通知,包含任务摘要与耗时。
* 手机扫码配对:通过 PWA 或 Web Push 协议,将手机与电脑配对,接收锁屏通知。
* Cloudflare 快速隧道:一键启动公网隧道,在无公网 IP 或非内网环境下也能使用手机推送。
* 能力拆分:提供 task-notify(桌面)、mobile-push-notify-gateway(网关/隧道)和 mobile-push-notify-push(推送)三个独立模块。
安装与启用¶
安装插件需要使用 dsh plugin 命令,无需手动下载代码。
- 安装插件
dsh plugin --profile web add dsh-mobile-push-notify
- 重启 Web 服务
dsh web
- 查看日志
插件启动后会自动开启一个网关。在终端启动日志中可以看到管理页地址,默认为http://127.0.0.1:3188/admin。
使用方法¶
1. 电脑端通知(零配置)¶
安装并运行后,无需额外设置。当 DSH 中的任务完成(如 turn/end 事件且状态为完成,或 goal/change 且阶段为完成)时,系统会自动发送通知。
* macOS:通知中心横幅 + Glass 提示音。
* Windows:系统 Toast。
* Linux:notify-send。
* 如果系统通知服务不可用,终端会自动响铃作为兜底。
2. 手机配对¶
通过手机访问网关管理页进行配对。
- 在电脑浏览器打开
http://127.0.0.1:3188/admin。 - 局域网配对:确保手机和电脑在同一 WiFi 下,扫描页面上的“局域网配对”二维码。
- 公网配对:点击页面上的“开启公网隧道”。首次使用会自动下载
cloudflared二进制文件,稍后出现公网二维码后扫码。
配对成功后,手机会自动打开 DSH 的官方 Web 界面,保持实时同步。
3. 开启手机推送¶
- 在手机上进入 DSH Web 界面。
- 点击页面右下角的 “🔔 开启任务通知” 按钮,并允许浏览器发送通知。
- iOS 用户注意:建议通过 Safari 打开,点击分享按钮“添加到主屏幕”以 PWA 形式安装,再点击开启通知(iOS 16.4+ 要求 HTTPS)。
- Android 用户:可直接在 Chrome 或 Edge 中安装 PWA 或允许通知。
之后,当任务完成时,手机锁屏会收到包含任务标题、摘要和耗时的通知,点击可直接跳转回 DSH 界面查看详情。
配置说明¶
插件的默认配置已满足大部分场景。如需调整,可通过环境变量或修改配置文件 ~/.dsh/profiles/web/cordis.patch.yml。
常用环境变量¶
| 变量名 | 默认值 | 说明 |
|---|---|---|
DSH_TASK_NOTIFY_ENABLED |
1 |
总开关,设为 0 禁用通知。 |
DSH_TASK_NOTIFY_EVENTS |
completed,error,aborted,goal-completed |
需要触发通知的事件类型。 |
DSH_TASK_NOTIFY_SOUND |
Glass |
macOS 提示音名称,设为 none 可静音。 |
DSH_TASK_NOTIFY_BELL |
0 |
系统通知失败时是否响铃。 |
DSH_TASK_NOTIFY_GATEWAY_PORT |
3188 |
网关监听端口。 |
DSH_TASK_NOTIFY_TARGET_PORT |
自动读取 | DSH Web 服务监听的端口。 |
DSH_TASK_NOTIFY_VAPID_SUBJECT |
mailto:... |
iOS 严格校验的 VAPID 邮箱地址。 |
高级推送¶
插件支持扩展到 Bark 或通用 Webhook。
Bark 配置(需在 ~/.dsh/task-notify.json 或环境变量中设置):
{
"barkKey": "你的 Bark Key",
"webhookUrl": "https://example.com/hook/{{title}}"
}
安全模型¶
理解插件的安全机制有助于在公网环境下安全使用。
- 内网隔离:网关默认将流量反向代理到
127.0.0.1的 DSH Web 服务。因此,不需要将 DSH Web 绑定到0.0.0.0,本地网络更安全。 - 访问控制:管理页
/admin*及推送发送端点仅接受回环请求(Loopback)。配对设备拥有完整控制权限,请勿将配对二维码分享给他人。 - 配对安全:配对 Token 有效期为 10 分钟。配对过程使用一次性 Token,设备可单独撤销,或通过“停止全部配对”清空。
- 公网隧道风险:开启 Cloudflare 隧道会将拥有代码执行能力的 DSH 暴露到互联网。请用完即关。若需长期固定地址,建议配置
DSH_TASK_NOTIFY_PUBLIC_BASE_URL并使用 Cloudflare 命名隧道或自有反向代理。 - 推送加密:Web Push 使用
aes128gcm标准加密,推送服务仅能访问密文。
兼容性¶
- DSH 版本:
dsh >= 0.1.0-rc.5 - Node 版本:
node >= 20 - 权限要求:
exec: 需要osascript,notify-send,powershell等工具。network: 需要webhook访问权限及github.com等域名解析。
License¶
MIT