DeepSeek Harness (DSH) 的插件生态允许通过命名空间扩展功能。当开发或调试智能体时,跟踪轮次结束或处理权限请求至关重要。dsh-macos-notify 插件通过在 macOS 通知中心显示横幅,解决了在开发或调试智能体时需要跟踪轮次结束或处理权限请求的问题。
核心功能¶
该插件分为 Host 半和浏览器半。Host 半负责监听 agent 事件并调用 macOS 原生通知,浏览器半则提供设置页供用户配置。主要功能包括:
- 原生 macOS 通知中心横幅:使用
/usr/bin/osascript调用系统原生通知。 - 触发时机:在 agent 轮次结束或权限请求到达时触发。
- 独立设置页:提供一个独立的“通知”设置分区,而非简单的卡片。
- 自定义配置:支持为每种触发操作(如轮次完成、轮次失败、权限请求)单独配置提示音、标题和内容。
- 变量替换:支持在标题和内容中使用变量,如
{turn}(轮次编号)、{tool}(工具名)、{error}(错误信息)。 - 横幅测试:提供测试按钮,可预览横幅效果,验证配置是否正确。
安装¶
安装过程无需构建步骤,因为构建产物(lib/)已纳入版本管理。
dsh plugin --profile web add github:WShihan/dsh-macos-notify
配置与使用¶
设置页配置¶
安装插件并组合了设置提供方(例如 @deepseek-ai/dsh-settings-file)后,设置面板会出现一个独立的 通知 页。你可以在此进行以下配置:
- 通知时机:设置轮次结束、权限请求或仅通知自己的会话时的开关。
- 操作配置:针对每一种触发操作(如
completed,error,approval),配置其提示音、标题和内容。 - 测试:点击“测试”按钮可立即发送一条横幅,预览当前的提示音和文本效果。
代码配置¶
也可以通过 cordis.yml 或 $DSH_HOME/settings.yaml 进行配置。支持的配置项包括:
notifyOnTurnEnd:是否在每个轮次结束时通知(默认true)。notifyOnApproval:是否在权限请求时通知(默认true)。topLevelOnly:是否仅通知顶层会话(默认true)。sounds.<操作>:设置每种操作的提示音(支持 macOS 系统提示音,如Glass,Ping,Basso,或none静音)。messages.<操作>.title/messages.<操作>.message:设置横幅的标题和内容,支持变量替换。
变量说明¶
标题与内容支持以下变量:
{turn}:已关闭轮次的编号。{tool}:需要授权的工具名。{error}:失败信息(仅轮次失败操作)。{reason}:询问方给出的原因(权限请求操作)。
注意事项¶
- 依赖设置提供方:设置页的控件需要
macos-notify命名空间,而这需要设置服务支持。安装后需确保组合了如dsh-settings-file等设置提供方才能看到设置页。 - 通信方式:Host 半与浏览器半通过命名空间通信,互不知道对方的代码。
- 未知事件处理:插件不认识的轮次结束原因会退化为“轮次完成”,沿用该操作的提示音与文本。
- 构建产物:
lib/目录已纳入版本管理,安装时无需运行构建脚本。