omh-autopilot について
omh-autopilotは、要件から計画、実装、QA、レビュー、後片付けまで進めるマルチセッション型スキルです。各呼び出しで1つの段階だけを処理し、コンテキストを保ちながら一連の作業を進めます。
主な機能
- 01複数段階の実装ワークフロー
- 02目標ごとの状態管理とアドバイザリーロック
- 03呼び出しごとに1回の実行イテレーション
- 04QAサイクルと3者レビュー
- 05一時停止、再開、段階チェックポイント
活用シーン
- 01機能の構想からレビュー済みコードまで進行
- 02複数セッションにまたがる作業の継続
- 03既存の仕様書や計画からの再開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ witt3rd/ oh-my-hermes --skill omh-autopilotインストール後、Claude Code で/omh-autopilotを入力して読み込まれたか確認します。
同梱ファイルreferences/caller-examples.mdreferences/state-schema.md
詳細
OMH Autopilot — エンドツーエンドの自律型パイプライン
使用する場面
- アイデアから検証・レビュー済みのコードまで、機能をエンドツーエンドで実装する場合
- ユーザーが「autopilot」「build me」「handle it all」「e2e this」と言った場合
使用しない場面
- 単一ファイルの変更や簡単なタスクの場合(そのまま実行してください)
- 1 回の連続したセッションで作業したい場合(autopilot は複数セッションにまたがります)
- 計画(omh-ralplan)または実行(omh-ralph)だけが必要な場合
前提条件
omhプラグインがインストールされている必要があります(~/.hermes/plugins/omh/)
アーキテクチャ:呼び出しごとにフェーズステップを 1 つ実行
autopilot は、呼び出されるたびに状態を読み取り、作業単位を 1 つ実行して終了します。呼び出し元が再度呼び出します。 これにより、ralph ループ中も含め、あらゆる段階でコンテキストを新鮮な状態に保ちます。
Invocation 1: Phase 0 — requirements (or skip)
Invocation 2: Phase 1 — planning (or skip)
Invocations 3-N: Phase 2 — ralph iterations (one per call)
Invocation N+1: Phase 3 — QA cycle [FRESH SESSION]
Invocation M: Phase 4 — validation round [FRESH SESSION]
Final: Phase 5 — cleanup → complete
ループの実行方法については、references/caller-examples.md を参照してください。
手順
ステップ 0:インスタンスを解決してロックを取得する
autopilot は、目標を spec → plan → ralph → QA → 検証の順に進めます。
同じ目標に対して 2 つの autopilot セッションを実行すると、
autopilot、ralph、ralph-tasks の状態が同時に競合します。インスタンスごとの状態と
アドバイザリロックを使用してください。
instance_idを次の順序で解決します:- 確認済みの spec が
.omh/specs/{name}-spec.mdにある場合は、instance_id = "{name}"を使用します。 - それ以外で、プランが
.omh/plans/ralplan-{slug}.mdにある場合は、instance_id = "{slug}"を使用します。 - どちらもない場合は、目標から導出します:
instance_id = kebab(goal)[:60]。
- 確認済みの spec が
- autopilot ロックを取得します:
lock = omh_state(action="lock", mode="autopilot", lock_key="{instance_id}", session_id="{HERMES_SESSION_ID or uuid}", holder_note="autopilot driving {goal_or_plan}")acquired=falseの場合は、held_byを報告し、待機/キャンセル/別の 目標を選ぶオプションを提示します。古い PID は自動解放されます。 - この呼び出し内のすべての
omh_state呼び出し(autopilot、ralph、ralph-tasks)にinstance_idを渡します。 - Phase 2 で ralph に処理を委任する場合は、委任コンテキストにも同じ
instance_idを渡し、ralph サブエージェントが同じスラッグでmode="ralph"ロックを取得するようにします。 - すべての終了時点(一時停止、ブロック、完了、例外)で autopilot ロックを
解放します:
omh_state(action="unlock", mode="autopilot", lock_key="{instance_id}", session_id="{HERMES_SESSION_ID or uuid}")
シングルトンのフォールバック(レガシー)。
instance_idを省略すると、.omh/state/autopilot-state.jsonに書き込み、ロックをスキップします。autopilot を一度に 1 つだけ実行する 場合に限り使用できます。
呼び出しごとの処理:ディスパッチ
state = omh_state(action="read", mode="autopilot", instance_id="{instance_id}")
- 見つからない場合:新規開始 → スマート検出(以下を参照)
- 見つかった場合:
context_checkpointフラグを確認 → true の場合はフラグをクリアして終了(フェーズ境界) - 古さを確認:
state.stale = true→ 警告し、新規開始を提案 - 一時停止を確認:
pause_after_phaseが現在の完了済みフェーズと一致する場合 →phase="paused"を設定して終了 - 現在のフェーズのハンドラーにディスパッチ
スマート検出(新規開始)
autopilot の状態が存在しない場合は、成果物を検出します:
.omh/specs/*-spec.mdに確認済みの spec がある → 状態を Phase 1 で作成.omh/plans/ralplan-*.mdにコンセンサスプランがある → 状態を Phase 2 で作成- ralph が完了している(
omh_state(action="check", mode="ralph", instance_id="{instance_id}")→ phase="complete")→ 状態を Phase 3 で作成 - 何もない → 状態を Phase 0 で作成
アクティブな ralph があるか確認します:omh_state(action="check", mode="ralph", instance_id="{instance_id}") → アクティブな場合は、既存のセッションについて警告します。
omh_state(action="write", mode="autopilot", instance_id="{instance_id}", data={
"phase": "requirements", "goal": "...", "ralph_iteration": 0,
"qa_cycle": 0, "max_qa_cycles": 5, "validation_round": 0,
"max_validation_rounds": 3, "validation_verdicts": {},
"skip_qa": false, "skip_validation": false, "pause_after_phase": null
})
Phase 0:要件
目標:確認済みの spec が存在することを確認します。
status: confirmedの.omh/specs/*-spec.mdを確認 → 見つかった場合はspec_fileを設定し、Phase 1 に進んで終了- 見つからない場合は、入力を評価します:
- 具体的(ファイルパス、関数名、具体的な技術):spec をインラインで生成して先に進みます
- 曖昧:
omh-deep-interviewを読み込み、その手順に従います。このフェーズは対話形式です。
- 状態を更新します:
phase: "planning"、spec_file: "<path>"。終了します。
完全自律で実行する場合:先に omh-deep-interview を別途実行してください。
Phase 1:計画
目標:コンセンサスプランが存在することを確認します。
.omh/plans/ralplan-*.mdを確認 → 見つかった場合はplan_fileを設定し、Phase 2 に進んで終了- 見つからない場合:
omh-ralplanを読み込み、spec を入力としてその手順に従います - 状態を更新します:
phase: "execution"、plan_file、ralph_iteration: 0、context_checkpoint: true。終了します。
フェーズ 2:実行(Ralph の反復)
呼び出しごとに、Ralph の反復を正確に 1 回実行します。
- omh-ralph スキルのコンテキストを使い、
delegate_taskで Ralph の反復を 1 回実行します。delegate_task(goal="[omh-role:executor] Follow the omh-ralph skill procedure: read state, pick the next incomplete task, execute it, verify, update state, exit.", context="<current ralph state + plan file contents>") - Ralph がステップを完了したら、Ralph のステータスを確認します。
ralph = omh_state(action="check", mode="ralph", instance_id="{instance_id}")active=true→ralph_iterationをインクリメントして終了します(呼び出し元が再度呼び出します)。phase="complete"→ 次へ進みます:phase: "qa"、context_checkpoint: trueを設定して終了します。phase="blocked"→ autopilot のphase: "blocked"を設定し、報告して終了します。
フェーズ 3:QA サイクル
呼び出しごとに、QA サイクルを1 回実行します。新しいセッションで開始します(context_checkpoint)。
skip_qa: true の場合 → フェーズ 4 に進んで終了します。
- プロジェクトで実際に使われているビルド/テスト/lint コマンドを使って証拠を収集します(適切なコマンドを特定するため、Makefile、package.json、Cargo.toml、pyproject.toml などを確認します)。
evidence = omh_gather_evidence(commands=["<build>", "<test>", "<lint>"]) evidence.all_passの場合 → 次へ進みます:phase: "validation"、context_checkpoint: trueを設定して終了します。- 失敗がある場合:
qa_cycleをインクリメントします。qa_error_historyで 3 回連続の失敗を確認します。該当する場合 →phase="blocked"にして終了します。qa_cycle > max_qa_cycles(デフォルトは 5)の場合 →phase="blocked"にして終了します。- アーキテクトサブエージェントに診断を委任します(読み取り専用)。
- エグゼキューターサブエージェントに修正を委任します。
- 状態を更新して終了します(次の呼び出しで QA を再実行します)。
フェーズ 4:複数レビュアーによる検証
呼び出しごとに、検証ラウンドを1 回実行します。新しいセッションで開始します。
skip_validation: true の場合 → フェーズ 5 に進んで終了します。
- プロジェクトで実際に使われているビルド/テストコマンドを使って証拠を収集します。
evidence = omh_gather_evidence(commands=["<build>", "<test>"]) - 3 件のレビューを並列で委任します(正確に 3 件=Hermes の同時実行上限)。
delegate_task(tasks=[ {goal: "[omh-role:architect] Architectural review:\n{spec + plan}", context: "{evidence}"}, {goal: "[omh-role:security-reviewer] Security review:\n{changed files list}", context: "{evidence}"}, {goal: "[omh-role:code-reviewer] Code quality review:\n{changed files list}", context: "{evidence}"} ]) validation_verdictsに判定を記録します。- すべてが APPROVE → フェーズ 5 に進んで終了します。
- REQUEST_CHANGES がある場合 → エグゼキューターに修正を委任し、
validation_roundをインクリメントして終了します。 validation_round > max_validation_rounds(デフォルトは 3)の場合 →phase="blocked"にして終了します。
フェーズ 5:クリーンアップ
phase: "complete"を設定します(安全対策 — 中断された場合、再呼び出しでクリーンアップを再試行します)。- 状態ファイルを削除します。
omh_state(action="clear", mode="autopilot", instance_id="{instance_id}") omh_state(action="clear", mode="ralph", instance_id="{instance_id}") omh_state(action="clear", mode="ralph-tasks", instance_id="{instance_id}") - 次を保持します:
.omh/logs/、.omh/plans/、.omh/specs/ - 完了概要を報告します:目標、完了したフェーズ、Ralph の反復回数、QA サイクル数、検証ラウンド数
状態管理
すべての状態は omh_state ツールを介して管理します。アトミック書き込みと古さの処理は自動で行われます。
センチネルの規約
omh_state(action="check", mode="autopilot", instance_id="{instance_id}")
→ {exists, active, phase, stale}
注意事項
- 1 つのセッション内で Ralph をループさせないでください。 Ralph の反復ごとに個別の呼び出しが必要です。コンテキストの枯渇は現実に起こります。
- Ralph を再実装しないでください。 スキルを読み込み、その手順に従ってください。
- フェーズの境界では新しいセッションを開始します。
context_checkpointを遵守してください。 - QA を省略しないでください。 Ralph はタスクごとに検証します。QA では統合時の問題を検出します。
- 仕様が存在しない場合、フェーズ 0 では対話が必要です。 自動実行では、事前に仕様を作成してください。
- サブエージェントは 3 つまでです。 フェーズ 4 では、並列レビューに 3 つの枠すべてを使用します。