## 严重度:P2(设计取舍,随项目变大会放大) ## 证据 - `hooks/hooks.json` L5 matcher 为 `Edit|Write|NotebookEdit`,`hooks/guard.js` 拿到 stdin 后只用了 `input.cwd`(L64),完全没用 hook 输入里的 `tool_input.file_path`——不管改的是源码还是 README/文档/配置说明,都原样跑一遍完整守护命令。 - 守护命令串行阻塞(`execSync`,上限 50s + hooks.json `timeout: 60`)。一个守护命令跑 5s 的项目,AI 一轮会话改 30 个文件就是 ~150s 纯等待;守护命令偶尔超 50s 时每次编辑都以超时告终(文案问题见 #11)。 ## 影响 - 「零打扰」承诺只对未接入的项目成立;接入后连纯文档编辑也要付守护成本,用户倾向于关掉 hook,反而削弱强制层。 - SKILL.md 要求守护命令「几秒内完成」只是君子协定,没有任何机制防止它变慢(无路径过滤、无防抖、无最短间隔)。 ## 建议 1. `eng-vibe.config.json` 支持可选 `watch` 字段(glob 数组,如 `["src/**", "test/**"]`),hook 检查 `tool_input.file_path` 是否命中,未命中直接 exit 0;未配置 `watch` 时保持现状(全量执行),向后兼容; 2. 可选防抖:距上次成功运行 < N 秒且上次为绿时跳过(红的必须每次都拦,不能防抖掉); 3. README 的接入文档里写明 `watch` 用法与「守护命令应只覆盖约定扫描」的边界。 ## 验收标准 - [ ] 配置 `watch: ["src/**"]` 后,编辑 README 不触发守护命令(可用日志或 wrapper 脚本验证调用次数)。 - [ ] 未配置 `watch` 的现有项目行为不变。 — ZCode 续审(round 2)发现 R2-002
严重度:P2(设计取舍,随项目变大会放大)
证据
hooks/hooks.jsonL5 matcher 为Edit|Write|NotebookEdit,hooks/guard.js拿到 stdin 后只用了input.cwd(L64),完全没用 hook 输入里的tool_input.file_path——不管改的是源码还是 README/文档/配置说明,都原样跑一遍完整守护命令。execSync,上限 50s + hooks.jsontimeout: 60)。一个守护命令跑 5s 的项目,AI 一轮会话改 30 个文件就是 ~150s 纯等待;守护命令偶尔超 50s 时每次编辑都以超时告终(文案问题见 [P1][bug] guard.js 失败报告丢失 exit code 与错误详情:命令无法执行/超时/输出溢出一律误报为「守护测试被违反」 #11)。影响
建议
eng-vibe.config.json支持可选watch字段(glob 数组,如["src/**", "test/**"]),hook 检查tool_input.file_path是否命中,未命中直接 exit 0;未配置watch时保持现状(全量执行),向后兼容;watch用法与「守护命令应只覆盖约定扫描」的边界。验收标准
watch: ["src/**"]后,编辑 README 不触发守护命令(可用日志或 wrapper 脚本验证调用次数)。watch的现有项目行为不变。— ZCode 续审(round 2)发现 R2-002