dsh-sound-alerts:在 Host 上为智能体状态播放声音提示

前言

用 DeepSeek Harness(DSH)跑长任务时,浏览器标签不一定在前台:任务跑完、上下文被压缩、或智能体在等你回答澄清问题时,单靠页面状态很容易漏掉。@zaykoff/dsh-sound-alerts 在 Host 进程所在机器 上播放短音频提示(本地 Web GUI 场景即你的 PC),与浏览器标签是否获得焦点无关。下面按插件定位、触发条件、安装与配置说明用法。

这是什么

@zaykoff/dsh-sound-alerts 是 DSH 的 bundle 插件,维护者为 ZaykoFF(Alexander Zaykov),在社区目录中归类为客户端。它在三种智能体状态下发出可配置的短音效:任务完成、上下文溢出开始压缩、以及智能体提问后等待你的回答。

三种提示与触发来源

插件监听 DSH 会话 API / 事件,对应关系如下(默认音效路径见表)。

情况 触发 默认声音
智能体任务完成(running → idle) api-session/status sounds/task_done.wav(三下轻敲,dong-ding-ding)
上下文溢出:历史压缩开始(token 压力自动化、上下文窗错误恢复、/compact) session/event,type 为 compaction/start sounds/cache_overflow.wav(两下低沉闷响)
智能体提出澄清问题并等待回答 session/event,type 为 tool/call(ask_user_question;备用:user-questions/request 瀑布流处理审批类问题) sounds/question.wav(两声短促轻 tick)

内置音效由 scripts/make_sounds.py 生成:短鼓点式敲击,单次时长约 1 秒内,峰值约 -12 dBFS,意在低调、无长残响。同一类提示在 minIntervalMs 内不会重复播放。子智能体会话默认不发声(includeSubagents: false)。

各平台播放行为

  • Windows:优先用 PowerShell SoundPlayer 播放 .wav;文件不可用或非 .wav 路径时,用 [console]::beep 按相同节奏播放静音替代敲击。
  • macOS:afplay。
  • Linux:依次尝试 paplay、aplay;文件缺失时不发声(无 beep 回退)。

环境与版本要求

  • DSH:>=0.2.2-rc.1 且 <0.3.0(与 package.json 中 engines.dsh 一致)。
  • Host 操作系统:Windows、macOS 或 Linux(见上节播放方式)。

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;插件随 DSH Host 进程运行,权限与当前 dsh 一致。

安装与启用

任选其一(版本以资料为准:@zaykoff/dsh-sound-alerts@1.4.2):

  1. 让 Harness 智能体通过 plugin_manager 工具的 install_bundle,目标设为 @zaykoff/dsh-sound-alerts@1.4.2。
  2. 在终端执行(需 pnpm 在 PATH 上):
dsh plugin --profile <profile-name> install @zaykoff/dsh-sound-alerts@1.4.2

安装后 bundle 会插入 agent-sound-alerts 插件项并默认启用;在 profile 的 cordis.patch.yml 里改该项的 config 即可。若要用本地开发目录而非发布包,可通过 plugin_manager → install_bundle 指定目录绝对路径(以 link: 安装,改磁盘文件后可在下次 profile 重组时生效,无需重启)。

配置说明

在 profile 的 cordis.patch.yml 中配置 agent-sound-alerts 条目。profile 层会整体替换该条目的 config(不按字段合并 bundle 默认值);未写的键会回退到插件内置默认,因此可以只写部分字段:

- id: agent-sound-alerts
  config:
    enabled: true            # 总开关
    includeSubagents: false  # 是否为子智能体会话也播放
    minIntervalMs: 1000      # 同一类提示的最小重复间隔
    testOnStart: false       # true 时插件激活后依次播放三种提示
    testGapMs: 2500          # 自检时各提示之间的间隔
    debugLogFile: false      # true 时写诊断到 debug.log(或自定义路径)
    # sounds 可整段省略,使用内置鼓点;也可用绝对路径覆盖单个 .wav,或 false 关闭某类提示:
    # sounds:
    #   taskDone: 'D:\Sounds\done.wav'
    #   cacheOverflow: false
    #   question: 'D:\Sounds\question.wav'

调试时可设 testOnStart: true,确认 Host 上三种节奏是否都能听到;Windows 上若要自定义音效,路径需为 .wav 才走文件播放。

适用场景与注意

适合长时间开着 DSH、需要离开键盘或切换窗口、但仍想感知「跑完了 / 要压缩了 / 在等你答」的开发者。不适合期望在远程纯浏览器端(无 Host 音频)听到提示的场景——声音只在 Host 机器上播出。

子会话默认静音,若你依赖子智能体同样提醒,需显式设 includeSubagents: true。Linux 下缺少音频文件时不会回退 beep,需保证 sounds/*.wav 存在且 paplay/aplay 可用。

参考链接

DSH 生态强调「一切皆插件」;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。若你的 profile 已有多项 patch,记得在 agent-sound-alerts 的 config 里保留所需字段,避免误关 enabled 或把自定义 sounds 写漏。

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

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

Xiaoye