preflight.sh
一个在 AI Agent 运行前执行的 Shell 校验脚本,用于检查环境锁(lockfile 哈希)、Git 工作区是否干净等,防止在漂移环境上运行导致失败。
时间轴 (近 90 天)
预检脚本preflight.sh的核心逻辑是断言五项假设并逐行打印结果,任何失败都以非零码退出;实现细节包括工作区检查用mkdir -p加touch探针并用df -Pm取可用MB数(默认阈值512MB),时钟检查取第一个出站主机的Date头与本地UTC时间对比(默认容差120秒),凭证检查只输出sha256前10位,运行锁用exec 9>"$LOCK"加flock -n 9。
防止Runner环境漂移的方法是:在干净代码树上用 sha256sum package-lock.json > env.lock 生成基线,并编写 preflight.sh 在每次尝试前校验环境锁和Git工作区是否干净。
preflight应在prompt之前运行,而不是在diff之后运行。
preflight能拦住三类失败:过期的lockfile、未提交的改动、在旧状态上重跑,每类损失超过一小时。
全部知识事实 (4)
预检脚本preflight.sh的核心逻辑是断言五项假设并逐行打印结果,任何失败都以非零码退出;实现细节包括工作区检查用mkdir -p加touch探针并用df -Pm取可用MB数(默认阈值512MB),时钟检查取第一个出站主机的Date头与本地UTC时间对比(默认容差120秒),凭证检查只输出sha256前10位,运行锁用exec 9>"$LOCK"加flock -n 9。
50%待验证防止Runner环境漂移的方法是:在干净代码树上用 sha256sum package-lock.json > env.lock 生成基线,并编写 preflight.sh 在每次尝试前校验环境锁和Git工作区是否干净。
50%待验证preflight应在prompt之前运行,而不是在diff之后运行。
50%待验证preflight能拦住三类失败:过期的lockfile、未提交的改动、在旧状态上重跑,每类损失超过一小时。
50%