每个生命周期环节都有专属铃声,右下角一个会呼吸的状态点随时告诉你 Agent 在干嘛。不用任何音频文件——所有铃声都是 Web Audio 实时合成的,还能换成你自己的声音。
右下角:会「呼吸」的状态点;每个环节:专属铃声。
一个小插件,三件小事:专属铃声、自定义音源、呼吸状态点。
启动、思考、工具调用、命令完成、等待确认……每一个事件的声音都不一样,用耳朵就能分辨进度。
点右下角小圆点,试听、上传自己的音频文件、一键还原。换上的声音会记住,刷新不丢。
全部由 Web Audio 实时合成:零音频资源、包体极轻、可离线用、可随时调音高节奏。
它不抢戏、不弹窗、不加字,只是用颜色和动作安静地陪着你。
与插件运行时使用同一份配方与渲染逻辑(Web Audio 振荡器实时合成,无音频文件)。音量 0.7,即默认 masterVolume。
从 DeepSeek Harness 源码仓库安装:
pnpm dsh plugin --profile bell add github:Laplace-bit/dsh-bell-notify
如果 PATH 上已经有 dsh:
dsh plugin --profile bell add github:Laplace-bit/dsh-bell-notify
第一次 add 失败是正常的:git 安装要跑 prepare 脚本,pnpm ≥10 会拦截。打开 ~/.dsh/profiles/bell/pnpm-workspace.yaml 加上 pnpm 打印的 onlyBuiltDependencies,再重跑同一条命令。
启动:
pnpm dsh --profile bell
打开页面后先点一下页面任意位置(浏览器音频自动播放策略,点一次即可解锁声音),然后随便跑一个任务,声音和状态点就会一起动起来。
卸载:
pnpm dsh plugin --profile bell remove dsh-bell-notify
Agent 的一举一动都会「响一声」,而且每个环节的声音都不一样。全部可在线试听(见上)。
| 环节 | 默认铃声 | 听起来像 |
|---|---|---|
| 会话启动 | startup | 一声轻柔的上扬,像开机 |
| 开始执行 | click | 短促的一声「叮」,出发了 |
| 开始思考 | notify | 温柔的单音,进入状态 |
| 工具调用 | tick | 清脆的「哒哒」两声,金属质感 |
| 工具完成 | drop | 低低地落定,收尾 |
| 命令执行 | beep | 一声短促的哔,有终端味 |
| 命令完成 | rise | 上扬的双音,搞定 |
| 等待确认 | alert | 高频三连,叫你看一眼 |
| 本轮完成 | success | 上行大三和弦,成就感拉满 |
| 回到空闲 | confirm | 单音缓缓落下,安静了 |
error / failure 两个音效也内置好了,默认没启用,可在配置里按需接上。
在 profile 的 cordis.patch.yml 里改(Cordis 加载时会校验并补默认值):
| 选项 | 默认 | 说明 |
|---|---|---|
enabled | true | 总开关 |
masterVolume | 0.7 | 总音量 0-1 |
muteAll | false | 静音,但状态点照常工作 |
maxQueue | 8 | 等待队列容量 |
maxConcurrent | 3 | 同时播放的声音数(1 = 串行) |
defaultCooldown | 1000 | 规则默认节流窗口(毫秒) |
statusRevertMs | 1000 | 瞬态状态自动回归时长 |
showStatusIndicator | true | 是否显示右下角状态点 |
声音开关、自定义音源替换与文件名都持久化在浏览器本地(localStorage + IndexedDB),点小圆点就能改,刷新不丢。
不是。它是 DeepSeek Harness(dsh)的社区插件,MIT 协议开源,不属于官方发行。
大概率是浏览器的自动播放策略——插件首次加载后需要你先在页面上点击一次,声音才会解锁。
可以。showStatusIndicator: false 关掉状态点,声音照常。
文件字节存在浏览器 IndexedDB,事件到文件的映射存在 localStorage。都在本地,不会上传到任何地方。