mirage
strukto-ai
The World's First Unified Virtual Filesystem For AI Agents
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:jyd1230/dsh-approval-chime
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
给 DeepSeek Harness 加一个"审批弹窗风铃提醒":每次需要人工确认的审批弹窗出现时,播放一声约 3 秒的清脆风铃声。
人不在屏幕前、或在房间另一头时,不会再错过"确认修改文件"之类的弹窗。
approval/request 事件,自动放行、不阻塞审批链已在 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名>
安装脚本会自动完成:
$DSH_HOME/assets/approval-chime.wavnode_modules(含扁平回退目录)$DSH_HOME/profiles/<profile>/cordis.patch.yml 追加挂载行(幂等)最后一步:完全重启 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() 放行审批链 → 弹窗正常显示/应答
弹窗应答和响铃完全并行,互不阻塞。
Media.SoundPlayer。macOS/Linux 需要换播放机制(PR 欢迎)。cordis.patch.yml)只在启动时加载;改任何配置后都要重启。lib/index.js(全文 150 行左右,无网络请求、无文件读写,只 spawn 播放命令)。enableLog 后每次弹窗会 spawn 一个 powershell 写一行日志,属正常开销;排查完建议关掉。export const inject = ['subprocess'] 不能去掉。补丁层行在启动早期初始化,ctx.get('subprocess') 此时会拿到 undefined 导致静默早退;必须声明注入让 Cordis 等服务就绪。{ prepend: true } 不能去掉。approval/request 是瀑布链,apiproxy(网页弹窗应答者)注册更早且回答时不调用 next(),排在后面的监听器永远执行不到。await 播放完成,否则每次审批都会被拖慢约 3 秒。dsh-approval-chime/
├── install.mjs # 一键安装(幂等)
├── uninstall.mjs # 一键卸载
├── lib/
│ └── index.js # 插件本体(宿主侧,~150 行)
├── scripts/
│ └── generate-chime.mjs # 风铃 WAV 合成器(纯 Node,零依赖)
├── package.json
├── LICENSE # MIT
└── README.md
MIT。风铃声音由本仓库脚本程序化合成,无第三方素材版权问题。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: notification、approval。