v1.31.2 字段报告:接收后钩子发送 `--gate .` (+ 会话限制处理、错误分类、信任预检、默认跳过)
无错误 v1.31.2 — 重度用户的现场报告(错误 + 功能请求) 环境: macOS (Darwin 25.3),no-mistakes 版本 v1.31.2 (3c09496) 2026-06-27T00:02:18Z — 截至 2026-07-05 的最新更新检查。两个受限存储库:Skill-Life (镜像 ~/.no-mistakes/repos/fd24038ede32.git) 和 Remote-Comp (433465ced6fd.git)。代理后端是 Claude Code CLI。本机没有源代码,因此下面的所有内容都是上游请求;所有证据均来自 ~/.no-mistakes/state.sqlite、~/.no-mistakes/logs/<ULID>/、logs/daemon.log 和 repos/*/notify-push.log。 首先 — 流程在这里正在进行实际工作(在过去一天内在两个存储库中执行了大约 70 次运行),而且接下来的大部分内容都是“它已经非常接近优秀,粗糙的边缘就显得突出”。五个项目,每个都有症状 → 证据 → 从外部最好能确定的根本原因 → 请求的更改。 --- ## 1. 接收后钩子发送 --gate . — 守护进程拒绝了它,并且 axi run 静默地回滚到一个已损坏的 rerun 症状。 在一个从未进行过运行的分支上执行 no-mistakes axi run 会导致失败,错误为 no run started …: no previous run for branch <branch>。具有先前运行的分支似乎可以正常工作 — 这在一段时间内掩盖了此问题。 证据。 两个镜像的 notify-push.log 文件都显示了重复的钩子失败(在每个文件中分别出现 7 次;从 Remote-Comp 的 433465ced6fd.git/notify-push.log 提供的样本): ```
[2026-07-04T20:27:28] notify-push failed for refs/heads/Claude/relaxed-hypatia-cf135c (exit 1)
invalid gate path: .
`logs/daemon.log` 显示了守护进程端的拒绝,以及 ~5 秒钟后客户端的回滚失败:
time=2026-07-04T20:27:28.494-05:00 level=INFO msg="ipc request failed" method=push_received error="invalid gate path: ."
time=2026-07-04T20:27:33.513-05:00 level=INFO msg="ipc request" method=rerun
time=2026-07-04T20:27:33.571-05:00 level=INFO msg="ipc request failed" method=rerun error="no previous run for branch Claude/relaxed-hypatia-cf135c"
在 2026-07-04/05 期间,守护进程日志中出现了 17 次 invalid gate path: . 拒绝和 26 次失败的 rerun 回滚。 根本原因。 钩子模板嵌入到二进制中,使用逻辑 pwd: sh LOG="$(pwd)/notify-push.log" ... set -- --gate "$(pwd)" \ POSIX pwd (逻辑模式) 会在命名当前目录时信任继承的 PWD 环境变量 — 而 . 总是如此。当推送来自 axi run (Go 客户端) 时,钩子的 shell 继承了一个过时的/相对的 PWD,因此钩子发送 --gate . 并被守护进程拒绝。 axi run 然后默默地回滚到 IPC rerun,该操作仅在分支已有运行时才能正常工作。 本地补丁(已在 2026-07-05 进行了端到端验证) — 从钩子自身位置衍生出网关路径,免受继承的 PWD 和守护进程当前目录的影响: sh GATE_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd -P) LOG="$GATE_DIR/notify-push.log" ... set -- --gate "$GATE_DIR" \ (单独使用 `--gate "$(pwd -P)" 也会起作用;第二种形式更严格。) 补丁后,同一分支 …
内容来源: kunchenguid/no-mistakes