用途:在完成改动前,用仓库内自带的 local-ci 开发构建(pnpm local-ci-dev)运行本地 CI,验证对本仓库的修改。
主要能力:以 NDJSON 事件流方式后台启动 CI,监控运行暂停或结束事件,读取输出定位失败,并重试失败的 runner 或从更早步骤重跑。
使用方式:该技能依赖 .pi/extensions/background-shell.ts 提供的两个 pi 原生工具 bash_background(启动命令后立即返回)和 monitor_wait(阻塞直到日志匹配模式或任务退出)。若当前 pi 没有这些工具,需先加载或重载扩展(会话内用 /reload,或重启 pi)。
步骤:1)用 bash_background 后台启动,命令为 pnpm local-ci-dev run --all -q -p --json,返回 taskId、outputFile、pid。由于 stdout 不是 TTY,启动器会自动分离:某步骤暂停时前台进程以 77 退出,worker 保持容器存活以便重试。2)用 monitor_wait 等待暂停或完成,匹配 NDJSON 事件判别符,pattern 为 "event":"(run.paused|run.finish)",timeoutMs 600000。匹配到新行时 stoppedBecause 为 match,run.paused 行含 runner 名与 retry_cmd,run.finish 行含 status: passed|failed;任务退出时 stoppedBecause 为 exit,检查 state 与 exitCode,退出码 77 表示步骤暂停;超时则 stoppedBecause 为 timeout,可再次调用 monitor_wait,它会从上次字节偏移继续。3)成功(run.finish 且 status: passed,或 state: succeeded)即完成。4)失败(run.paused 匹配或 exitCode 77)时用 tail -n 200 <outputFile> 查看完整输出。由于开始前 CI 是通过的,失败由本次改动引起,修复代码后重试失败 runner:pnpm local-ci-dev retry --name <runner-name>;若需从更早步骤重跑:pnpm local-ci-dev retry --name <runner-name> --from-step <N>。重复直到全部通过。
限制:依赖上述 pi 扩展工具;仅适用于该仓库的开发构建;资料未提供其他平台、收费或性能信息。