READMESource: main@38edbfb4
dsh-event-bus · 事件总线(插件)
宪法写「自动执行只有两态:事件触发/令文触发,禁 cron」。但旧执行件 事件触发器.py 把根写死
<workspace>(本机无此目录),事件台账 89021 条停在 2026-10-18——总线事实上已停摆 11 天。
本插件把总线原生做进 Host。
机制
- 定时轮询(默认 20 秒)事件源:
追加(行数)、新文件(文件名集合)、mtime(时间戳)。 - 第一轮只建基线不派发,避免开机风暴。
- 命中规则 → 派发 → 写
scripts/事件触发台账.jsonl;失败再写失败事件.jsonl(24h 去重)+issue log.jsonl立案。
安全边界(比旧件更紧)
- 只认
argv数组,不碰命令字符串——无 shell,无重定向、无管道注入; argv[0]必须是python3,argv[1]必须落在本工作区scripts/下;- 规则标
启用:false一律不派发; - 台账与失败回流都是 tmp+mv 原子写+回读。
工具 ql_bus
| action | 干什么 |
|---|---|
探活 |
轮询周期、心跳次数、上次心跳/上次派发、纳管与未纳管条数 |
规则清单 |
每条规则标“纳管/未纳管及原因”,纳管的列出 argv |
台账 |
事件台账末五条 |
试派发 |
按源名手动跑一次(同样过白名单),用于验证链路 |
配置
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
pollSeconds |
20 |
轮询周期(≥5) |
autoDispatch |
true |
自动派发;关掉后只保留手动试派发 |
root |
自动 | 工作区根 |
已做的规则治理(2026-10-29)
- 规则 1(槽位季评)停用:目标脚本写死旧根跑不动,命令还含 shell 重定向;停因写进规则里留档。
- 规则 2(新脚本提醒)补 argv:
python3 scripts/能力注册表器.py --季评提醒,旧命令串保留作档案。
诚实边界
- 轮询是秒级窗口:两次 poll 之间产生又消失的中间态会漏(旧件同样漏)。
- 只纳管 argv 规则:写
命令字符串的规则需要先补argv才会被派发——这是安全取舍,不是漏。 - 派发进程跑在 Host 里:单条命令超 120 秒会被杀;长任务请自己在脚本里转后台。
No comments yet. Be the first to write one.