审批询问与回合结束时播放声音提醒
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add anne43983959/dsh-audio-cue该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 审批询问声音提醒
- 回合结束声音提醒
DSH 宿主插件:审批询问与一轮对话结束时播放声音提示(含两次实测事故复盘)
README
由 DeepSeek 最新模型翻译生成dsh-audio-cue
DSH(DeepSeek Harness)宿主插件:审批询问与一轮对话结束时播放声音提示。
纯宿主半、零外部依赖;不注册工具、不注册服务、不碰任何现有文件。
从 GitHub 安装(0.2.x / 0.1.7 线需要 --config.store-dir,见下方说明)
dsh plugin --profile web add github:anne43983959/dsh-audio-cue
装完重启对应实例生效 —— 宿主模块与客户端 bundle 都在启动时装载。
它监听什么
| # | 事件 | 派发方式 | 作用 |
| ① | approval/request | waterfall | 审批询问音 —— 订阅者必须放行 next(),否则会否决整条审批链 |
| ② | session/event → event.type === "turn/end" | emit | 回合结束主路径(拿得到 session,可挡掉子代理收工那一声) |
| ③ | agent/turn-stopping | serial | 回合结束兜底:延迟 2 s,且只在主路径没送来 turn/end 时才出声 |
展开完整文档(README 剩余 1 节)
dsh-audio-cue
DSH(DeepSeek Harness)宿主插件:审批询问与一轮对话结束时播放声音提示。
纯宿主半、零外部依赖;不注册工具、不注册服务、不碰任何现有文件。
从 GitHub 安装(0.2.x / 0.1.7 线需要 --config.store-dir,见下方说明)
dsh plugin --profile web add github:anne43983959/dsh-audio-cue
装完重启对应实例生效 —— 宿主模块与客户端 bundle 都在启动时装载。
它监听什么
| # | 事件 | 派发方式 | 作用 |
| ① | approval/request | waterfall | 审批询问音 —— 订阅者必须放行 next(),否则会否决整条审批链 |
| ② | session/event → event.type === "turn/end" | emit | 回合结束主路径(拿得到 session,可挡掉子代理收工那一声) |
| ③ | agent/turn-stopping | serial | 回合结束兜底:延迟 2 s,且只在主路径没送来 turn/end 时才出声 |
| ④ | tools/execute → ask_user_question | waterfall | 提问音 —— 同样必须放行 next() |
为什么回合结束要挂两条:② 能按 session.header.origin === "subagent" 过滤子代理,但走 scope carrier;③ 首参是字符串所以没有 scope 过滤、必然可达,却拿不到 agent 身份。于是 ② 当主路径、③ 当兜底 —— 兜底先看「这段时间主路径有没有送来 turn/end」,送到了就不出声。
这份代码里有两次实测事故,改之前请先读
事故一:watcher 弄死了审批链(v0.1.0)
approval/request 是 cordis 的 waterfall 事件:
// dsh-user-approval/lib/index.js:176
ctx.waterfall(scopeTarget(req.agent, req.agent), "approval/request", req, () => Promise.resolve("unavailable"))
而 waterfall 的语义是「listener 最外层先跑;不调用 next() 即否决整条链,含内置行为」(cordis/lib/index.js:311-325)。初版的 listener 签名只有 (payload),next 被丢掉、返回 undefined,于是:
观察者不调 next() ⇒ 返回 undefined ⇒ OUTCOMES 归一化成 "unavailable" ⇒ dsh-sandbox 抛 "sandbox escalation requires approval, but no approval channel is available"
后果:提权被拒、审批面板永不出现、整条 GUI 审批通道形同虚设 —— 而插件日志里一行错都没有。
实测:本插件在册时两次提权 outcome=unavailable;摘除后同样的调用立刻 allowed-once ×2。
同一个文件里 turn/end 与 approval/asked 也挂错了 —— 它们是 session.append 的日志记录类型,不是总线事件,ctx.on("turn/end") 永远收不到。
事故二:从来就没响过(v0.1.0 → v0.1.2)
初版 play() 用 detached: true + powershell 5.1 在宿主进程里 spawn 播放。它确实被调用过(否则不会截断审批瀑布),但从未出过声,而且失败被 try/catch 吞干净。
v0.1.1 试图修事件源,却只写了失败路径的日志 —— 结果下一轮排查把「没有失败日志」误读成「play() 从未被调用」,白白多绕一轮。
v0.1.2 同时改两处后出声:去掉 detached、播放器换成 pwsh 7 绝对路径(失败自动回退 powershell 5.1),并把成功路径也写进日志。
⚠️ 两处是同时改的,没做单变量对照;任何一处改回去都要重测。
完整时间线见 CHANGELOG.md。
配置
配置写在 profile 的 bundle patch 层(本插件自带的 cordis.patch.yml,或 profile 的 cordis.patch.yml 覆盖):
| 键 | 默认 | 说明 |
| enabled | true | 总开关 |
| approval | true | 审批询问响 |
| ask | true | 提问(ask_user_question)响,与审批同一声 |
| turnEnd | true | 一轮结束响 |
| ignoreSubagents | true | 子代理会话的回合结束不响 |
| fallbackTurnStopping | true | 回合结束兜底路径开关 |
| fallbackDelayMs | 2000 | 兜底延迟(毫秒) |
| selfTest | false | 自检音:装载后自动播一声,仅用于排查「宿主进程能不能出声」 |
| selfTestMs | 2500 | 自检音延迟(毫秒) |
怎么读日志
实例日志里所有行都以 [dsh-audio-cue] 开头:
| 日志行 | 含义 |
| v0.1.3 已加载… + players=[…] | assets: approval=true turnEnd=true | 插件在册、播放器与素材就位 |
| play >> session/event:turn/end | 回合结束声已触发(正常每轮一行) |
| play >> approval/request | 审批声已触发 |
| spawn failed (…): <原因> | 播放器起不来(ENOENT / EPERM …) |
| player exit=<非0> / fallback -> … | 第一个播放器失败,已自动换另一个 |
| subagent turn/end skipped | 子代理会话被挡掉(正常) |
| turn-stopping fallback skipped(…) | 主路径活着,兜底按设计让位(正常) |
| event agent/turn-stopping → 兜底出声 | 主路径不可达,兜底补了一声 |
安装(三种方式)
① GitHub(推荐)
dsh plugin --profile web add github:anne43983959/dsh-audio-cue
② 本地源码(开发用)
dsh plugin --profile web add link:<本仓库绝对路径>
③ 0.1.7 线 / 0.2.x 若报 ERR_PNPM_UNEXPECTED_STORE 带上该 profile 的 pnpm store 目录(值取 node_modules\.modules.yaml 的 storeDir)
dsh plugin --profile web add github:anne43983959/dsh-audio-cue --config.store-dir="<storeDir>"
注意 --profile 必须写在 plugin 之后。 卸载 / 回滚:dsh plugin --profile web remove dsh-audio-cue。
自检
node scripts/smoke.mjs
离线跑,不出声:断言四条事件源都在位,且每一处 waterfall 订阅都放行了 next()。改完代码务必跑一次。
素材
| 用途 | 文件 | 大小 | 音色 |
| 审批 | assets/approval.wav | 418,322 B | clean UI confirmation chime(2.37 s) |
| 回合结束 | assets/turn-end.wav | 302,250 B | glassy bright crisp short ascending |
两段均为 44.1 kHz / 16-bit / 立体声 WAV,取自 BudgetPixel 免费音效库(原始 URL 见 git 历史)。换素材只需替换 assets/ 下的同名文件,重启实例生效。
兼容
- dsh.compatibility.runtime: >=0.1.1-rc.1 <0.3.0
- 用到的四个事件名在 DSH 0.1.5 / 0.1.7 / 0.2.0 三代内核里都存在(agent/turn-stopping 在 0.2.0-rc.2 上核实过;换版本请先 grep 一次再信任)。
- 纯宿主半,没有客户端 bundle —— 不受客户端模块 id / 座位契约变化影响。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
anne43983959/dsh-audio-cue
审批询问与回合结束时播放声音提醒
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。