DSH Sound 项目封面
DSH Sound
让 DeepSeek Harness 在该提醒你的时候,真的发出声音。
当 Agent 回复完成或需要你确认时自动播放提示音。支持独立开关、自定义音效、即时试听与本地持久化。
为什么需要它
使用 DeepSeek Harness 执行耗时任务时,你往往会切到其他窗口继续工作。DSH Sound 会在两个关键节点把你叫回来:
- 回复完成:Agent 一轮任务执行结束,可以回来查看结果;
- 需要确认:出现审批或提问,需要你做出选择后才能继续。
默认合成音开箱即用,也可以换成你自己的提示音。
功能一览
| 功能 | 说明 |
|---|
| 两类事件提醒 | 分别监听“回复完成”和“需要确认” |
| 独立开关 | 完成音与确认音可以单独开启或关闭 |
| 默认合成音 | 无需准备音频文件,安装后即可使用 |
| 自定义音效 | 为两类事件分别上传并选择自己的音频 |
| 即时试听 | 在设置面板中直接试听当前音效 |
| 本地持久化 | 开关、当前选择和上传音效在重启后保留 |
| 原生设置入口 | 面板集成在 设置 → 通用 → 提示音 |
界面
DeepSeek Harness 通用设置中的提示音面板
DeepSeek Harness 实际界面:设置 → 通用 → 提示音
安装
[!TIP]
推荐通过 npm 安装稳定版本;本地开发时再使用下方的 link: 方式。
进入 DeepSeek Harness 使用的 profile,然后直接从 npm 安装:
cd ~/.dsh/profiles/<name>
pnpm add @yangtianlong/dsh-sound
如果该 profile 使用 npm 管理依赖,也可以运行:
npm install @yangtianlong/dsh-sound
安装命令会自动把包加入 dependencies。接着打开同一目录下的 package.json,把插件加入 dsh.profile.bundles。如果该字段已经存在,请合并内容,不要覆盖原配置:
{
"dsh": {
"profile": {
"bundles": [
"@yangtianlong/dsh-sound"
]
}
}
}
安装完成后,完全退出并重新打开 DeepSeek Harness。
本地开发方式
先克隆仓库:
git clone https://github.com/aloneusername/dsh-sound.git
然后把依赖值换成本地绝对路径,并保持 bundle 名称不变:
{
"dependencies": {
"@yangtianlong/dsh-sound": "link:/absolute/path/to/dsh-sound"
},
"dsh": {
"profile": {
"bundles": [
"@yangtianlong/dsh-sound"
]
}
}
}
再次运行 pnpm install,然后重启 DeepSeek Harness。
使用方法
- 打开 设置 → 通用;
- 找到页面底部的 提示音 面板;
- 分别设置“完成音”和“确认音”的开关;
- 选择默认音,或点击“上传”添加自定义音效;
- 点击“试听”确认效果;
- 点击“重置”可把当前选择恢复为默认音。
“重置”只会恢复当前选择,不会删除已经上传的音频文件。
什么时候会响
| 提示音 | 触发条件 |
|---|
| 完成音 | 会话中的 Agent 从运行状态切换为结束状态 |
| 确认音 | 会话中新增待处理的审批或提问 |
自定义音效
插件通过浏览器的 Web Audio 能力读取音频。可优先使用 wav、mp3、ogg、m4a、aac、flac 或 webm 等常见格式,实际可解码格式取决于系统和 WebView 支持。
音频会经过 Base64 编码后写入本地,建议单个文件不超过 24 MiB。
数据存储与隐私
所有设置和自定义音效都保存在本机:
$DSH_HOME/dsh-sound/
├── state.json
└── sounds/
├── done/<id>.ext
└── attention/<id>.ext
state.json:保存开关状态、当前选择和音效元数据;
sounds/done/:保存完成音;
sounds/attention/:保存确认音;
- 插件的读写接口只接受本机 loopback 请求,不依赖外部音效服务。
常见问题
设置中没有出现“提示音”
确认 package 名称已经同时加入 dependencies 和 dsh.profile.bundles,执行 pnpm install 后完全重启 DeepSeek Harness。
第一次没有声音
先在设置面板点击一次“试听”,或与页面进行一次点击/键盘交互。系统的自动播放策略可能会在首次交互前暂停 Web Audio。
上传后无法播放
换用 wav、mp3 或 ogg 等常见格式,并确认文件不超过 24 MiB。
项目结构
.
├── index.js # 宿主端:配置、音效存储与本地路由
├── client.js # 浏览器端:事件监听、播放引擎与设置面板
├── cordis.patch.yml # DeepSeek Harness bundle 注入配置
├── package.json
└── assets/ # README 封面与真实界面截图
开发检查
node --check index.js
node --check client.js
npm pack --dry-run
License
MIT License