前言¶
DeepSeek Harness (DSH) 在运行智能体任务时,通常会在后台持续执行。如果仅仅依赖浏览器原生的通知机制,当页面处于后台标签页、最小化窗口或关闭标签页时,通知往往会丢失。这意味着开发者可能错过任务结束的信号、需要人工决策的时刻,或者任务失败的报错信息。
dsh-notify-linux 解决了这个问题。它通过 DSH 的主进程发送系统级通知,确保无论浏览器窗口状态如何,桌面通知和提示音都能准时送达。
插件简介¶
dsh-notify-linux 是一个为 DSH 设计的 Linux + GNOME 平台插件,由开发者 Wlaeg 维护。其核心价值在于:当 DSH 完成一轮任务、需要用户选择、等待工具调用批准,或发生错误时,通过 notify-send 发送桌面通知,并通过 paplay 或 canberra-gtk-play 播放提示音。
核心功能¶
该插件通过 DSH 的主进程进行通知分发,具备以下能力:
- 事件监听与通知:监听四种事件类型,每种类型均可独立配置:
turnEnd:任务回合结束。question:模型请求用户进行选择。approval:工具调用等待人工批准。error:执行步骤或整轮任务失败。
- 系统级通知:使用
notify-send(依赖 libnotify)发送通知,通知标题和内容包含会话信息(工作区 · 会话 ID)。 - 声音提示:使用
paplay播放提示音,当paplay不可用时,回退使用canberra-gtk-play。 - 浏览器回退机制:当系统通知能力不可用时,使用 Web Notification 和 Web Audio 作为降级方案,确保通知不丢失。
- 灵活配置:所有开关(包括主开关、事件开关、系统通知开关、声音开关等)均可通过 DSH 设置页面的「任务通知」导航项,或直接编辑 JSON 配置文件进行管理。
安装与启用¶
这是一个 DSH Cordis 插件包。请通过 DSH 的插件管理器进行安装。
在终端中执行以下命令,将插件指向本地目录或 Git 仓库:
# 方式一:指向本地目录
plugin_manager install_bundle /home/wlaeg/文档/deepseek-harness/default-workspace/dsh-notify
# 方式二:指向 Git 仓库
plugin_manager install_bundle https://github.com/Wlaeg/dsh-notify-linux
安装完成后,插件即处于激活状态。为使浏览器端(设置页面、Toast 弹窗)生效,请刷新 DSH 的 Web UI 页面。
配置与使用¶
配置文件¶
所有配置选项存储在单个 JSON 文件中:
$DSH_PROFILE_DIR/dsh-notify-linux
该文件默认位于 ~/.dsh/profiles/web/dsh-notify-linux.json。配置文件采用原子写入模式,可以直接编辑并保存。
设置页面¶
在 DSH 的设置页面中,导航至「任务通知」部分。这里包含主开关、四个事件类型的独立开关、系统通知/声音开关、主题选择以及「测试」按钮。设置页面支持中英文本地化。
环境要求与注意事项¶
系统依赖¶
- 平台:Linux + GNOME(已在 Manjaro GNOME、Wayland 环境下验证)。
- 运行环境:Node.js 版本需大于等于 22。
- 外部工具:
notify-send(来自 libnotify)。paplay(来自 pulseaudio-utils)或canberra-gtk-play(来自 libcanberra)。- 声音文件路径:
/usr/share/sounds/freedesktop/stereo。
注意事项¶
- 后台运行:通知由 DSH 主进程发送,因此即使浏览器页面关闭,通知依然有效。
- 语言:当前通知字符串为中文。
- 插件替换:若要替换已安装的插件副本(例如修改源码后),必须重启 DSH 的宿主进程。仅刷新 Web UI 页面是不够的,旧的路由和处理器会继续运行。
- 依赖可选性:插件具备优雅降级能力。如果系统缺少
notify-send或paplay,插件不会阻塞任务执行,而是回退到浏览器端的 Web Notification 和 Web Audio。
总结¶
dsh-notify-linux 通过系统级的通知机制,解决了 DSH 在后台运行时信息反馈不及时的问题。它提供了清晰的四种事件反馈,并支持灵活的配置,适合需要在 Linux 环境下长时间运行 DSH 任务的开发者使用。