Bundle
@dsh-external/dsh-sound-alerts
Web UI 声音提示:需要授权/提问与任务完成时播放提示音
- Source
- sixtysevenlf
- stars
- 2 stars
- License
- BSD-3-Clause
- Updated
- Updated 11 days ago
Readme
# @dsh-external/dsh-sound-alerts
DSH Web UI 声音提示插件(browser client bundle,`platform: web`)。
当以下事件发生时播放提示音:
| 事件 | 默认声音 | 触发源 |
| --- | --- | --- |
| 需要授权(沙箱/命令审批) | 双音 ×2(急切) | 会话 `pendingInteraction === 'approval'`(`approval/requested` 帧) |
| 需要回答问题(ask_user_question) | 单次双音(柔和) | 会话 `pendingInteraction` 为 `question` / `plan-review` |
| 任务/运行完成 | 三连胜利音 | 会话 `running` true→false(2.5s 复检)或后台会话 `completed` 标记 |
| 任务失败 | 关羽之歌(合成致敬版) | 当前会话 `lastAgentError` 从无到有(`host/agent-error` 帧) |
| goal 完成 | 四音胜利收尾 | 当前会话 goal 投影 phase → `complete` |
默认音全部由 Web Audio 合成(无音频资源);声音在浏览器标签页中播放(含后台
标签页),首次点击/按键后解锁 AudioContext。
## 自定义声音
设置 → 通用 → "声音提示 (Sound Alerts)",每个事件一行:
```
需要授权 [上传] [试听] [清除] 自定义文件名.mp3
```
- **上传**:本地音频文件(mp3/wav/ogg/m4a/flac,≤10MB),以 dataURL 存入
IndexedDB(不占 localStorage 配额,刷新/重启不丢)
- **试听**:有自定义播自定义,无自定义播内置合成音
- **清除**:删除自定义音频,恢复内置音
- **自动回退**:自定义音频加载/播放失败时静默回退内置合成音
播放时音量跟随滑杆;全局 1.2s 防抖避免批量事件轰炸。
## 设置
总开关 + 音量滑杆 + 各事件开关/上传/试听/清除,持久化于
localStorage 键 `dsh-sound-alerts:settings`。
## 诊断
`console.debug('[sound-alerts]', ...)` + `window.__soundAlertsLog`(最近 100 条)。
## 结构
- `src/index.ts` — node half:空 apply(纯 UI 插件,让行出现在 host Loader)。
- `src/client/index.ts` — 浏览器 half:声音引擎 + sessions 监视 + 设置行 + 自定义音频。
- `cordis.patch.yml` — bundle patch:向 Web 装配树插入名录行 `sound-alerts`。
- `dsh.bundle.patch` — 使本包作为 profile bundle 层装配(dependencies + bundles)。
## 构建与安装
```bash
# 依赖(esbuild 构建 client;--legacy-peer-deps 跳过内部 rc 包的 peer 自动安装)
npm install --legacy-peer-deps
# 构建(node half: tsc via scripts/build.sh;client half: esbuild via scripts/build-client.mjs)
bash scripts/build.sh # DSH_CHECKOUT 自动探测($HOME/dsh-harness)
npm run build:client
# 注入器环境内热装配(改 profile package.json + junction + loader.create)
dev_install_package D:/DSH/plugins/dsh-sound-alerts
```
安装后刷新浏览器页面:启动图 `window.__DSH_BOOT__` 会包含本包 client.js,
声音即生效(新名录行需一次刷新,之后 HMR 管内容热更)。
Install
dsh plugin --profile web add github:sixtysevenlf/dsh-sound-alerts
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-external-dsh-sound-alerts from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.