前言¶
在 DeepSeek Harness(DSH)的工作流中,长任务跑完后听不见提示、命令卡死时无法自动中断、模型反复生成低效代码导致长时间等待是常见痛点。dsh-attention-beep 插件旨在解决这些问题:通过宿主进程直接播放本机人声提醒,在命令卡死时自动中断并将恢复指引写回工具结果,以及在 spawn 之前拦截已知的性能陷阱写法。
核心功能¶
1. 任务结束与卡死提示¶
插件利用 Windows 的 .NET / WPF 框架和 Get-CimInstance Win32_Process,通过 DSH 宿主进程直接发声。这意味着即使浏览器标签页在后台、被静音或最小化,用户也能听到任务结束、命令卡死、整轮无进展或模型请求权限时的提示音。声音由宿主播放,不经过浏览器。
2. 自动脱困与恢复¶
当 pwsh 命令确认卡住时,插件会自动中断这一次工具调用。同时,它会把“发生了什么、shell 现在什么状态、怎么继续”的恢复指引写回工具结果,让模型在同一轮里能接上任务。默认配置下,中断只针对单次调用,不会取消整轮会话。
3. 命令守卫¶
插件在 spawn 命令之前拦截已知的性能陷阱写法(如 Get-ChildItem -Recurse -Include)。命中规则时,直接以工具错误返回并附上改法(约 0 ms),而不是等待执行几十秒。若确实需要使用原写法,可通过配置 run_in_background: true 绕过守卫。
4. 平台支持¶
该插件仅支持 Windows。三块核心能力(音频播放、进程探针、命令守卫针对 PowerShell 方言)均依赖 Windows 环境。
安装与启用¶
安装命令如下:
dsh plugin --profile web add github:kiterunner1/dsh-attention-beep
注意:安装前必须停止正在运行的 DSH 进程,否则 profiles/<name>/node_modules 可能会写入失败,导致 profile 无法正常工作。
安装完成后,需重启 DSH 才能生效。若需修改宿主代码(lib/*.js),同样需要重启。
配置说明¶
插件的配置在 loader 行的 config 中,默认值参考 cordis.patch.yml。用户层可在 $DSH_HOME/settings.yaml 中按 id 覆盖配置。
常用配置项包括:
* enabled: 是否启用插件。
* watchTools: 监控的工具列表,默认为 [pwsh]。
* warnMs / killMs: 卡死判定的预警和中断时间阈值。
* guardEnabled: 是否启用命令守卫。
* guardAllow: 命令子串放行列表,命中则跳过守卫检查。
声音配置支持 voice:<key>(内置人声)、系统预设或绝对路径的自定义音频文件。
典型用法¶
- 修改提示音:编辑
$DSH_HOME/settings.yaml,配置sound项指向自定义文件。 - 绕过守卫:在工具调用配置中添加
run_in_background: true,强制后台运行,跳过守卫拦截。 - 防止思考时取消:设置
stallAutoResume: false,确保在模型调用ask_user_question等工具等待用户输入时,整轮不会被取消。
适用场景与注意¶
该插件适合在 Windows 环境下使用 DSH 进行自动化开发或调试的用户。安装和调试时请确保源码与许可证符合要求。
总结¶
dsh-attention-beep 通过本机音频反馈和自动化恢复机制,降低了 DSH 任务监控的门槛,提升了长任务和卡死场景下的调试效率。