dsh-session-chime:会话完成与等待确认时的桌面提示音

前言

用 DeepSeek Harness(DSH)跑 Agent 时,常见做法是盯着界面等模型和工具链跑完。任务一长,人往往会切到别的窗口;网页里用 <audio> 做提醒又不可靠——标签页进后台会被节流,还有自动播放限制,页面关掉就彻底没声。

下面介绍社区插件 dsh-session-chime(包名 @local/session-chime):在 Host 进程里监听 Agent 与会话事件,从操作系统音频设备直接出声。会话从「干活」回到空闲时响一种提示;停下来等你回答或批准时响另一种,两种声音刻意区分开,不必一直盯着屏幕。

这是什么

插件不依赖 npm 包,也没有构建步骤。当前 README 写明面向 Windows(经 System.Media.SoundPlayer 播放)与 DSH 0.2.x。SkillHub 上星标数为 0,不代表功能描述,仅作目录事实记录。

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

核心功能

两种提示音

时机 声音 含义
会话把一段工作做完(running → idle) 约 1 秒的双音铃声 本段任务结束,可以发下一条指令
会话停下来等你回答或批准 两声短促高音(约 0.5 秒) 需要回到界面确认

默认 mode: chime 播放合成音;也可改为 speak,用系统语音念配置里的文案。

为何放在 Host 里

插件监听 Agent 状态与 Session 事件,不经浏览器标签页。窗口最小化、页面在后台、甚至关掉浏览器页面,只要 Harness Host 还在跑,提示音仍从本机扬声器出来。

「完成」如何判断

依据 agent/status 从 running 变为 idle:Agent 在处理整批输入期间保持 running,全部处理完才回到 idle,因此表示「一段工作结束」,而不是单次模型调用结束。

两道防抖:

  1. settleMs(默认 1200ms):回到 idle 后再等一小段时间;若马上又变回 running(例如排队后续消息),本次不响。
  2. cooldownMs(默认 2500ms):短时间多次完成只响一次。

另有 minRunMs(默认 500ms):运行时长低于此值的不提示,过滤一闪而过的状态变化。

「在等你」如何判断

依据已落盘的 Session 事实,与哪个应答器抢到请求无关:

  • tool/call 里出现 ask_user_question 或 exit_plan_mode,且对应 tool/result 尚未出现。
  • 审计事件 approval/asked / approval/decided(工具需人工批准;本机默认 danger-full-access 策略为 never 时,这类提示通常不会出现)。
  • 旁听 user-questions/request 与 approval/request 两个 waterfall 事件作为补充通道,只观察、不抢答。

waitingDelayMs(默认 400ms)用于过滤「立刻就被解决」的请求(自动批准、马上取消的提问等)。waitingDedupeMs(默认 3000ms)对同一段时间内的重复等待请求去重。

子代理(subagent / workflow 子会话)默认不包含在完成提示里(includeSubagents: false);子代理本身不能开人工交互,因此不会有「等待」提示。

安装与启用

官方 README 给出的获取方式是克隆仓库,再在 Harness 里以本地 bundle 安装:

git clone https://github.com/neil-ji/dsh-session-chime.git

克隆完成后,在 Plugin Manager 里做本地安装,或让 Agent 通过 install_bundle 指向该目录的绝对路径。装好后在输入框执行 /chime test,应听到一声「完成」铃声;/chime test waiting 为「等你确认」的两声短音。

自测整条链路(静音 WAV,不会打扰你):

node test/selftest.mjs

配置写在 cordis.patch.yml 的 session-chime 段;修改后需重启 Harness 生效。示例片段:

- insert:
    - id: session-chime
      name: '@local/session-chime'
      config:
        enabled: true
        mode: chime
        volume: 0.8
        cooldownMs: 2500
        settleMs: 1200
        minRunMs: 500
        notifyWaiting: true
        waitingDelayMs: 400
        waitingDedupeMs: 3000
        includeSubagents: false

常用字段:enabled 总开关;mode 为 chime 或 speak;volume 约 0.05~1(对自定义 wavPath 无效);notifyWaiting 控制是否在等待用户时响;logFile 可填路径记录每次响或跳过的原因(超过 256 KB 自动清空)。完整字段表见仓库 README。

典型用法

命令在 Harness 输入框直接输入,不要当作发给模型的消息:

命令 作用
/chime 或 /chime status 查看当前设置与上一次响铃时间
/chime on / /chime off 临时开关(仅当前 Host 进程,重启后回到配置文件)
/chime test 立即播放「完成」声
/chime test waiting 立即播放「等你确认」声
/chime volume 0.4 临时改音量
/chime mode chime / /chime mode speak 切换铃声 / 语音播报
/chime waiting on / /chime waiting off 是否启用「等你确认」提示
/chime subagents on / /chime subagents off 是否包含子代理完成提示

典型工作流:安装并确认 /chime test 有声后,把 volume、cooldownMs、settleMs 调到符合自己房间环境的值;若经常离开屏幕等长任务,保持 notifyWaiting: true;若只想知道「整段跑完」,可 /chime waiting off 或配置里关掉 notifyWaiting。

适用场景与注意

适合:在 Windows 上用 DSH 0.2.x 跑 Agent,希望长任务或等人机交互时用耳朵代替盯屏的用户。

注意:

  1. 插件在 DSH Host 进程内运行,与 Harness 同权限;安装前应阅读源码与 MIT 许可证,确认可接受其监听会话事件与调用本机音频的方式。
  2. README 当前只声明 Windows 与 DSH 0.2.x;其他平台或未列版本需自行验证。
  3. 实现上通过常驻 powershell.exe 助手播放 WAV(audio.js),不依赖 npm,也不走工具沙箱子进程——它要的是本机音频设备。
  4. 默认批准策略下「等人批准」的提示可能很少出现;「等你回答」仍依赖 ask_user_question 等工具路径。

结尾

dsh-session-chime 把「一段活干完」和「需要你回来确认」拆成两种桌面声音,并放在 Host 里规避浏览器音频限制。若你在 Harness 上长时间挂 Agent,可以先克隆仓库、本地装进 profile,用 /chime test 验声后再调 cordis.patch.yml。

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

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

Xiaoye