| name | check-autopilot |
| description | autopilot daemon の状態確認と異常(Blocked / 認証失効 / stuck)の診断・復旧支援。「check autopilot」「check autopilot |
check-autopilot — autopilot の異常診断・復旧支援
ユーザーが「check autopilot」(全体確認)または「check autopilot #123」(特定 Issue)と
入力したときに実行する。Web モニタのアラート帯からコピーされるショートカットでもある。
手順
1. daemon の状態を取得する
curl -s localhost:8787/board | node -e 'const d=JSON.parse(require("fs").readFileSync(0,"utf8"));
console.log("paused:", d.paused, d.pausedBy||""); if(d.authError) console.log("authError:", d.authError);
console.log("running:", JSON.stringify(d.running));
for (const it of d.items) console.log(`#${it.issue} ${it.status} ai=${it.aiStatus||"-"} hitl=${it.hitl} prs=${(it.prs||[]).map(p=>p.number+":"+p.state).join(",")||"-"} | ${it.title.slice(0,50)}`);
console.log("--- history (直近10) ---");
for (const h of d.history.slice(0,10)) console.log(new Date(h.endedAt).toISOString(), `#${h.issue}`, h.phase, h.outcome, h.note||"");'
- 接続できない場合: daemon が起動していない。
/tmp/autopilot-daemon.pid と
docs/autopilot/README.md の起動手順を案内する。
2. 異常の種類ごとに診断する
認証失効(authError あり / pausedBy=auth)
bin/bot-token --whoami を実行して再現確認。
- SSO 失効なら、ユーザーに
aws sso login --sso-session smalruby --use-device-code の実行を
依頼する(デバイスコード承認はホストのブラウザで人間が行う。Claude は代行できない)。
- 再認証後は daemon が自動で resume する(次の interval で回復を検知)。
Blocked の item(check autopilot #<issue> で特定 Issue を指されたときは必ず)
- Issue の bot コメント(Blocked 理由)を読む:
GH_TOKEN="$(bin/bot-token)" gh issue view <N> --repo smalruby/smalruby3-editor --json title,body,comments
- 実行履歴(/board の history)と、あれば worktree
(
bin/autopilot-worktree path <N>)の状態(git -C <path> status / tmp/autopilot-result-<N>.json)を確認。
- 原因を特定して要約し、次の選択肢を提示する(勝手に実行しない。ユーザーの指示を待つ):
- 原因を取り除いたうえで
🙋 HITL ラベルを外す(→ autopilot が再開: PR あり=address-review / 無し=triage)
POST /inject?issue=<N>&phase=<p> で特定フェーズを再投入
- worktree を作り直す:
bin/autopilot-worktree remove <N> → 次の dispatch で再作成
- 不要なら Status を Icebox / Close へ(GitHub Projects で操作)
実行中のまま長い(running の since が古い)
curl -s 'localhost:8787/log?issue=<N>' で pane ログを確認(watchdog が面倒を見るのが原則。
暴走が明らかなときのみ POST /stop?issue=<N> を提案)。
3. 報告
- 状態の要約(RUNNING/PAUSED、実行中、Blocked 件数、認証状態)
- 異常ごとの原因と推奨アクション(上記の選択肢から)
- 破壊的な操作(stop / worktree remove / Status 変更)は提案のみとし、ユーザーの明示的な
指示があってから実行する
注意
- daemon のポートは既定 8787(
--port で変更されている場合はユーザーに確認)。
- Project の Status/AI Status を直接書き換えない(単一ライターは daemon。人間は GitHub Projects で操作)。
- ログ・コメントに機密(トークン等)を見つけたら、それ自体を出力に転記しない。