dsh-meow:在浏览器里用合成喵声提示 Harness 状态

前言

用 DeepSeek Harness(DSH)跑 web 会话时,界面不一定一直在前台:需要点批准、补输入、或一轮结束/error 时,若只靠视觉,很容易错过。常见做法是盯窗口或自己设系统通知,但和 DSH 里「确认 / 提问 / turn 结束」这几类事件并不一一对应。

dsh-meow 是社区维护的 DSH web 插件(维护者 nonmean,SkillHub 分类为「趣味换装」),在浏览器里于四个时刻播放短促的合成喵声,并在 Settings → General 提供总开关与细项。声音由 Web Audio API 现场生成,不随插件附带音频文件。

这是什么

  • 定位:DSH web 插件,宿主侧监听 Harness 事件,浏览器侧播放喵声并注册设置项。
  • 仓库:github.com/nonmean/dsh-meow;目录页:skillhub.cn/plugins/nonmean/dsh-meow。
  • 当前版本(package.json):0.2.0,许可证 MIT。
  • 兼容说明(README):在 DeepSeek Harness 0.2.1-alpha.1、Cordis 4.0.5-alpha.1、macOS 与 Node 24 上构建验证;engines.dsh 与 @deepseek-ai/dsh-* 的 peer 范围需与所跑 DSH 版本一致,否则 0.2 起的兼容性预检可能禁用该 bundle。

DSH 生态强调「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

四个触发时刻

README 用下表归纳宿主观测点与喵声性格(合成参数不同,非固定 mp3):

时刻 宿主观测点 喵声特点
需要确认 approval/request 瀑布流前置监听 上扬、偏亮
需要输入 user-questions/request 瀑布流前置监听 较柔的三角波感
出错 turn/end,reason 为 error 低、长
任务完成 turn/end,reason 为 completed 偏满足、略高

实现细节(资料原文):approval 监听前置,仅在真的会走 answerer 时响;自动拒绝 approval 的会话保持静音。question 监听同样前置并通过 next() 委托,只观察、不由浏览器 answerer「占住」请求。

设置与配置

安装并刷新后,打开 Settings → General,找到 Meow notification sound:

  1. 总开关:启用 / 禁用全部喵声。
  2. 分时刻勾选:确认、输入、错误、完成各一项。
  3. Include subagent sessions:默认关闭,子 agent 会话的 turn 结束不会喵(避免委托任务刷屏)。
  4. 音量滑块。
  5. Test:立即试听。

配置写入插件自有文件 $DSH_HOME/dsh-meow.json(默认 ~/.dsh/dsh-meow.json),切换选项无需重载 profile。

安装与启用

仓库已提交构建产物 lib/,从 GitHub 安装无需本地 build。官方命令如下。

从 GitHub 安装:

pnpm dsh plugin --profile web add git+ssh://git@github.com/nonmean/dsh-meow.git

本地目录链接(将路径换成你的 checkout):

pnpm dsh plugin --profile web add link:/path/to/dsh_meow

上述命令会把 dsh-meow 追加进 web profile 的 bundle 列表并挂载 cordis.patch.yml;浏览器端经 package.json 的 dsh.client 声明注入,无需单独 roster 行。

重启 dsh web(若 profile HMR 已加载新行也可只 reload 页面),并对浏览器 硬刷新,以便拉取新 client bundle;之后在 General 下应出现 Meow 设置行。

卸载:

pnpm dsh plugin --profile web remove dsh-meow

典型用法

  1. 按上一节安装并重启 / 硬刷新。
  2. 在页面内 点击或按键一次(浏览器自动播放策略要求用户手势后 AudioContext 才可运行)。
  3. 打开 Settings → General → Meow notification sound,打开总开关,点 Test 确认有声。
  4. 按需勾选四个时刻;若主会话委托子 agent 且不想在子会话结束时喵,保持 Include subagent sessions 关闭。
  5. 正常使用 DSH:出现需批准、需回答、turn 以 error/completed 结束等场景时,浏览器会按队列播放对应喵声。

工作原理(简要)

  • 宿主(lib/index.js):观测上述四个时刻,维护有界、按类型去重的队列;提供同源 JSON 路由 GET /meow/state、POST /meow/state、GET /meow/events?since=N。
  • 浏览器(lib/client.js):约每 700 ms 轮询 /meow/events,对每个排队事件播放一次合成喵;并注册 Settings 行。首次轮询会 adopt 宿主游标且不播放,避免刷新页面重放旧 backlog。
  • 路由拒绝跨站调用(Sec-Fetch-Site: cross-site)。

适用场景与注意

适合:长时间开 DSH web、希望用轻量声音区分「要我确认 / 要我输入 / 出错 / 做完」的开发者;偏好无二进制音频资产、仅信 Web Audio 合成的情况。

注意:

  • 插件在 当前 dsh 进程权限 下运行;安装前请自行查看源码与 MIT 许可证。
  • 完全无声时:先在页面内交互一次,再用 Test(见 README Troubleshooting)。
  • Settings 行缺失:重启 dsh web、硬刷新,并确认 bundle 在 web profile 的 dsh.profile.bundles 中。
  • 喵太频繁:关闭部分时刻,或保持 Include subagent sessions 关闭。
  • README 说明:仅在 整轮 turn 以 error 结束 时喵,不会对可恢复的单次 tool error 单独喵;若反复 error 结束,即插件设计的信号。

Node 要求(package.json):^22.19.0 || >=24.0.0;DSH:^0.2.1-alpha.1。

结尾

dsh-meow 把 Harness 四类关键状态变成浏览器里的合成喵声,设置集中在 Settings → General,持久化在 ~/.dsh/dsh-meow.json。若你需要在 web 侧「听得出要不要回到窗口」,可按 README 安装并调好分时刻开关与音量。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜