审批弹窗出现时播放风铃声,提醒你及时确认
24.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jyd1230/dsh-approval-chime该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 75 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 26 处,展示前 20 条)
- 读取本地文件install.mjs:35
if (process.env.DSH_HOME && existsSync(process.env.DSH_HOME)) return process.env.DSH_HOME - 读取本地文件install.mjs:37
if (existsSync(home)) return home - 读取本地文件install.mjs:50
if (!existsSync(wavPath) || FORCE_WAV) { - 写入本地文件install.mjs:51
mkdirSync(assetsDir, { recursive: true }) - 执行外部命令来自配置/变量install.mjs:53
execFileSync(process.execPath, [join(HERE, 'scripts', 'generate-chime.mjs'), wavPath], { stdio: 'inherit' }) - 读取本地文件install.mjs:63
if (!existsSync(profilesDir)) throw new Error('未找到 profiles 目录:' + profilesDir) - 读取本地文件install.mjs:65
for (const name of readdirSync(profilesDir)) { - 读取本地文件install.mjs:68
if (!statSync(dir).isDirectory()) continue - 删除本地文件递归install.mjs:77
if (existsSync(target)) rmSync(target, { recursive: true, force: true }) - 写入本地文件install.mjs:78
mkdirSync(dirname(target), { recursive: true }) - 写入本地文件install.mjs:120
writeFileSync(patchPath, content, 'utf8') - 读取本地文件uninstall.mjs:21
if (process.env.DSH_HOME && existsSync(process.env.DSH_HOME)) return process.env.DSH_HOME - 读取本地文件uninstall.mjs:23
if (existsSync(home)) return home - 读取本地文件uninstall.mjs:31
for (const name of readdirSync(profilesDir)) { - 读取本地文件uninstall.mjs:35
if (!existsSync(patchPath)) continue - 读取本地文件uninstall.mjs:37
const lines = readFileSync(patchPath, 'utf8').split(/ ? /) - 写入本地文件uninstall.mjs:54
writeFileSync(patchPath, out.join('\n').replace(/^ +/, ''), 'utf8') - 读取本地文件uninstall.mjs:66
if (existsSync(target)) { - 删除本地文件递归uninstall.mjs:67
rmSync(target, { recursive: true, force: true }) - 删除本地文件uninstall.mjs:76
rmSync(wav)
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 审批弹窗风铃提醒插件(Windows):每次需要人工确认的审批弹窗出现时,播放约 3 秒的清脆风铃声。
README
由 DeepSeek 最新模型翻译生成dsh-approval-chime 🐋🔔
给 DeepSeek Harness 加一个「审批弹窗风铃提醒」:每次需要人工确认的审批弹窗出现时,播放一声约 3 秒的清脆风铃声。
人不在屏幕前、或在房间另一头时,不会再错过「确认修改文件」之类的弹窗。
- ✅ 零外部依赖:纯 Node 实现,声音由插件内置脚本现场合成(五声音阶风铃)
- ✅ 只响给「真弹窗」:监听宿主 approval/request 事件,自动放行、不阻塞审批链
- ✅ 宿主侧播放:声音由 DSH 进程播放,浏览器最小化/在后台也照常响
- ✅ 防抖动:1.5 秒内连续多个弹窗只响一次(可配置)
- ✅ 一键安装 / 一键卸载,幂等可重复执行
已在 DSH 0.1.0-rc.6(web profile)/ Windows 10/11 实测通过。
一、安装
需要:Windows + Node.js 18+(DSH 自带即可)。约 1 分钟。
展开完整文档(README 剩余 1 节)
dsh-approval-chime 🐋🔔
给 DeepSeek Harness 加一个「审批弹窗风铃提醒」:每次需要人工确认的审批弹窗出现时,播放一声约 3 秒的清脆风铃声。
人不在屏幕前、或在房间另一头时,不会再错过「确认修改文件」之类的弹窗。
- ✅ 零外部依赖:纯 Node 实现,声音由插件内置脚本现场合成(五声音阶风铃)
- ✅ 只响给「真弹窗」:监听宿主 approval/request 事件,自动放行、不阻塞审批链
- ✅ 宿主侧播放:声音由 DSH 进程播放,浏览器最小化/在后台也照常响
- ✅ 防抖动:1.5 秒内连续多个弹窗只响一次(可配置)
- ✅ 一键安装 / 一键卸载,幂等可重复执行
已在 DSH 0.1.0-rc.6(web profile)/ Windows 10/11 实测通过。
一、安装
需要:Windows + Node.js 18+(DSH 自带即可)。约 1 分钟。
1. 下载本仓库并解压(或 git clone)
git clone https://github.com/<你的用户名>/dsh-approval-chime.git
cd dsh-approval-chime
2. 一键安装(默认安装到 web profile)
node install.mjs
指定其它 profile:
node install.mjs --profile <profile名>
安装脚本会自动完成:
1. 合成风铃并保存到 $DSH_HOME/assets/approval-chime.wav
2. 把插件包复制到 profile 的 node_modules(含扁平回退目录)
3. 往 $DSH_HOME/profiles/<profile>/cordis.patch.yml 追加挂载行(幂等)
4. 输出重启提示
最后一步:完全重启 DSH(关闭控制台窗口后重新运行 dsh web),否则补丁层不会加载。
验证是否成功
触发一次需要确认的操作,例如让 AI 修改工作区之外的文件、或执行一条沙箱授权命令。审批弹窗出现时应响起风铃(约 3 秒)。
二、使用说明
装好之后不需要任何操作——只要出现需要人工确认的界面,就自动响铃:
- 文件修改/写工作区外文件等需要「允许/拒绝」的审批弹窗 → 响铃
- 选项式提问卡片(ask_user_question)和计划审批卡片(exit_plan_mode)→ 响铃
- 已经被「总是允许」授权的操作(不再弹窗)→ 不响铃(符合直觉:没弹窗就不提醒)
两条通道(审批 / 提问)走的是宿主里不同的机制,插件各挂了一个监听器;监听器在宿主级,因此对这台 DSH 上的所有会话、所有浏览器标签页生效——确认框出现在哪个网页都会响。
配置项(可选)
打开 $DSH_HOME/profiles/<profile>/cordis.patch.yml,找到 id: approval-chime 的行,修改 config:
| 字段 | 默认值 | 说明 |
| chimeWav | 安装时写入 | 风铃 WAV 绝对路径;改为空串 '' 可临时静音 |
| powershell | C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe | 播放器宿主,一般不用改 |
| throttleMs | 1500 | 连续弹窗的节流间隔(毫秒) |
| enableLog | false | 是否写调试日志 |
| logPath | '' | 日志绝对路径(enableLog: true 时必填,需可写) |
修改后重启 DSH 生效(补丁层在启动时加载)。
换声音
node scripts/generate-chime.mjs 我的新风铃.wav
然后把行配置里的 chimeWav 改成新路径即可。想调音色/时长/音量,编辑 scripts/generate-chime.mjs 顶部的常量(音高 NOTES、错落时间 STARTS、衰减 DECAY_TAU、总时长 DURATION、音量 MASTER),重新生成。
卸载
node uninstall.mjs # 保留风铃 WAV
node uninstall.mjs --remove-wav # 连声音文件一起删
然后重启 DSH。也可以手动操作:删掉 cordis.patch.yml 里 id: approval-chime 的 insert 块、删掉两个 node_modules/dsh-approval-chime 目录。
三、工作原理
审批弹窗出现 │ ▼ 宿主 approval/request 瀑布事件 │ (本插件 prepend 在链头) ▼ fire-and-forget 启动 powershell │ SoundPlayer.PlaySync(风铃.wav) ← 约 3 秒 ▼ 立即 next() 放行审批链 → 弹窗正常显示/应答
弹窗应答和响铃完全并行,互不阻塞。
四、注意事项 ⚠️
1. 仅支持 Windows。播放依赖 PowerShell 5.1 的 Media.SoundPlayer。macOS/Linux 需要换播放机制(PR 欢迎)。
2. 必须重启 DSH 才生效。补丁层(cordis.patch.yml)只在启动时加载;改任何配置后都要重启。
3. 声音由系统默认输出设备播放,音量跟随系统音量;如果听不到,先检查扬声器/音量,再用「验证是否成功」一节的方法排查。
4. 插件本体是宿主级代码,具备该 profile 的全部能力——安装前建议过目 lib/index.js(全文 150 行左右,无网络请求、无文件读写,只 spawn 播放命令)。
5. 调试日志默认关闭。开 enableLog 后每次弹窗会 spawn 一个 powershell 写一行日志,属正常开销;排查完建议关掉。
6. 已知坑位(开发者必读):
- export const inject = ['subprocess'] 不能去掉。补丁层行在启动早期初始化,此时 ctx.get('subprocess') 会拿到 undefined,导致静默早退;必须声明注入,让 Cordis 等服务就绪。
- { prepend: true } 不能去掉。approval/request 是瀑布链,apiproxy(网页弹窗应答者)注册更早,回答时不调用 next(),排在后面的监听器永远执行不到。
- 播放必须 fire-and-forget,监听器里绝不能 await 播放完成,否则每次审批都会被拖慢约 3 秒。
7. 升级/回滚:本插件无运行时状态,直接覆盖包目录 + 重启即可。
五、目录结构
dsh-approval-chime/
├── install.mjs # 一键安装(幂等) ├── uninstall.mjs # 一键卸载 ├── lib/ │ └── index.js # 插件本体(宿主侧,~150 行) ├── scripts/ │ └── generate-chime.mjs # 风铃 WAV 合成器(纯 Node,零依赖) ├── package.json ├── LICENSE # MIT └── README.md
六、许可证
MIT。风铃声音由本仓库脚本程序化合成,无第三方素材版权问题。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
jyd1230/dsh-approval-chime
审批弹窗出现时播放风铃声,提醒你及时确认
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7