TRIGGERS 多场景同时命中时只读第一条,漏了后续路由
症状
你看到什么?
用户说"审计五件套"来审计一个 Excel 文件。这是一个数据录入项目,TRIGGERS.md 有两条路由同时命中:
- “审计五件套 / 跑审计” → 加载
audit-four-piece.md - “数据录入项目” → 加载
audit-four-piece-data.md、excel-com-audit.md、data-cross-verify.md
但实际操作中只读了第一条(通用版),漏了数据版三条。用户提醒"我记得优化过你的记忆啊,为什么还做不到"——因为之前已经修过这个问题,但触发匹配逻辑没改彻底。
后果:跑完审计流程后,数据特有的坑(收支=明细交叉验证、实发=应发检查、Excel COM 修复模式)全部没做。
根因
到底为什么出问题?
- 匹配策略是"命中即停":扫到第一个匹配行就停下来加载了,没继续往下扫
- 没有 OR → AND 的思维转换:多条路由匹配同一任务时,取的文件应该是并集(AND),不是第一个命中(OR)
- TRIGGERS 表设计有盲区:通用路由和专用路由分开写,但加载逻辑没做合并
- 事后没自检:加载完文件后没问自己"用户说的是审计+Excel,我有没有读 Excel 相关的路由?"
修复
怎么做?
匹配策略改为"全量扫描 + AND 合并":
例如用户说"审计这个 Excel":
自检问题(加载完文件后问自己):
- 用户提到了哪些关键词?
- TRIGGERS.md 里有多少行匹配了这些关键词?
- 我有没有全部读?
怎么避免
下次怎么不踩?
- 扫全表不早停:触发匹配时遍历 TRIGGERS.md 全部行,收集所有匹配项
- AND 合并取并集:多条路由的文件列表取并集,去重后全读
- 自检三板斧:
- 用户说了什么关键词?
- 还有什么场景也匹配这个关键词?(翻 TRIGGERS 全表确认)
- 全量加载了吗?
- 用户纠正过的地方加红线:这个坑已经被纠正过了,TRIGGERS.md 里"审计五件套"行的文件列表已更新为全量