前言¶
用 DeepSeek Harness(DSH)跑 Agent 时,常见做法是盯着界面等模型和工具链跑完。任务一长,人往往会切到别的窗口;网页里用 <audio> 做提醒又不可靠——标签页进后台会被节流,还有自动播放限制,页面关掉就彻底没声。
下面介绍社区插件 dsh-session-chime(包名 @local/session-chime):在 Host 进程里监听 Agent 与会话事件,从操作系统音频设备直接出声。会话从「干活」回到空闲时响一种提示;停下来等你回答或批准时响另一种,两种声音刻意区分开,不必一直盯着屏幕。
这是什么¶
- 名称:dsh-session-chime(Harness 内显示为
@local/session-chime) - 维护者:neil-ji
- 分类:客户端(SkillHub 目录归类)
- 仓库:github.com/neil-ji/dsh-session-chime
- 目录页:skillhub.cn/plugins/neil-ji/dsh-session-chime
插件不依赖 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,因此表示「一段工作结束」,而不是单次模型调用结束。
两道防抖:
- settleMs(默认 1200ms):回到 idle 后再等一小段时间;若马上又变回 running(例如排队后续消息),本次不响。
- 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,希望长任务或等人机交互时用耳朵代替盯屏的用户。
注意:
- 插件在 DSH Host 进程内运行,与 Harness 同权限;安装前应阅读源码与 MIT 许可证,确认可接受其监听会话事件与调用本机音频的方式。
- README 当前只声明 Windows 与 DSH 0.2.x;其他平台或未列版本需自行验证。
- 实现上通过常驻
powershell.exe助手播放 WAV(audio.js),不依赖 npm,也不走工具沙箱子进程——它要的是本机音频设备。 - 默认批准策略下「等人批准」的提示可能很少出现;「等你回答」仍依赖
ask_user_question等工具路径。
结尾¶
dsh-session-chime 把「一段活干完」和「需要你回来确认」拆成两种桌面声音,并放在 Host 里规避浏览器音频限制。若你在 Harness 上长时间挂 Agent,可以先克隆仓库、本地装进 profile,用 /chime test 验声后再调 cordis.patch.yml。