概要
Claude Code チームが公開した公式ガイド「Getting started with loops」(2026年6月30日)は、ループを「停止条件が満たされるまで、エージェントが作業サイクルを繰り返すこと」と定義し、実務で使う4種類に分類した。段階が進むごとに人間が手放す範囲が「チェック → 停止条件 → トリガー → プロンプトそのもの」へ広がる。ガイドは「すべてのタスクが複雑なループを必要とするわけではない。まずシンプルな解決策から」と繰り返し釘を刺している。
詳細
4種類のループ
| ループ | 手放すもの | 使うタイミング | 使う機能 |
|---|---|---|---|
| Turn-based | チェック | 探索中・意思決定中の短いタスク | カスタム検証スキル |
| Goal-based | 停止条件 | 完了の姿が分かっている | /goal |
| Time-based | トリガー | 作業がプロジェクト外でスケジュールに沿って発生 | /loop、/schedule |
| Proactive | プロンプトそのもの | 反復的かつ定型化された業務 | 上記すべて+dynamic workflows |
- Turn-based: 普段使いの手動ループ。人間の確認手順を
SKILL.mdに固定し、Claude が自己検証できるようにするとターン数が減る。チェックが定量的なほど自己検証しやすい - Goal-based:
/goalで完了条件と試行上限を定義。評価モデル(evaluator)が停止のたびに条件を確認し、達成またはターン上限までゴールへ差し戻す。「テスト通過数」「スコア閾値」など決定論的な基準が効く - Time-based:
/loopは一定間隔でプロンプトを再実行(ローカル実行、止めれば止まる)。/scheduleはそのクラウド常駐版 - Proactive: イベント/スケジュール駆動で人間が介在しない。auto mode や dynamic workflows を組み合わせ、
/schedule+/goal+ 並列 worktree + judge レビューを1文で構成できる
出力品質を保つ
コードベースを綺麗に保つ/Claude が検証できる手段を与える/ドキュメントに手が届くようにする/コードレビューは別エージェント(新鮮なコンテキストでバイアスが少ない)に任せる。個々の失敗はその場の修正で終わらせず、スキルやドキュメントの更新としてシステム側へ組み込む。
トークン管理
適切なプリミティブとモデルを選ぶ/明確な成功・停止基準/大規模実行前のパイロット/決定論的作業はスクリプト化/必要以上に頻繁に回さない。使用量は /usage・引数なし /goal・/workflows で確認する。
停止条件は測れても収束しない
停止条件が「測れる」ことと、ループが「収束する」ことは別の話である。GMO ペパボの「指摘ゼロになるまで回すレビューループ」は、件数を正しく数えられたのにゼロにならなかった。収束しないループは原因で 3 つに分かれる。
| 壊れ方 | 症状 | 原因 | 対策 |
|---|---|---|---|
| ① 止まらない | 上限まで回り続ける | 停止条件を機械が Yes/No で判定できない | 数値や文字列一致に落とす+反復上限 |
| ② 嘘で止まる | 未達なのに「完了」 | 作る役が自分で採点している | 採点役(evaluator)を分ける(maker-checker) |
| ③ 振動する | 直すたびに新しい指摘 | 停止条件に選んだ量に不動点がない | 不動点のある量を選ぶ |
Ralph Wiggum プラグインは完了判定を <promise> タグの中身と --completion-promise の文字列リテラル比較まで落とす。合言葉も --max-iterations も無いと文字どおり無限に走る。反復上限とコスト上限は、収束設計というより収束に失敗したときの火災報知器である。
不動点とは、もう 1 周かけても状態が変わらない点。停止条件を選ぶときの本当の問いは「その条件を満たした状態にもう 1 周かけて、条件は満たされたままか」になる。テスト全緑・型エラー 0 件・Lighthouse ≥ 90 には不動点があり、レビュー指摘ゼロには無い。収束は次の 3 つを満たすときだけ期待できる。
- 判定器が決定的か(LLM を判定器にするとここが崩れる。ペパボの実測では指摘の約半分がノイズと的外れ)
- 判定器の出力が次の修正の入力になっていないか(レビューは直した箇所が次の観測対象になる)
- 条件を満たした状態にもう 1 周かけても満たされたままか
非決定的な判定器しか使えないタスクの逃げ道は 3 つ。
- (a) 決定的な代理指標に翻訳する — 用語集との突き合わせ、リンク切れゼロなど。測りたいものとずれる代わりに不動点が手に入る
- (b) 量を変えて不動点を作る — 「差分が変化しなくなった」を停止条件にする(例: 毎周 1 コミットして
git diff --quiet HEAD@{1} HEAD) - (c) 収束を諦め、上限と残件リストにする — 5 ラウンドで打ち切り、残った指摘を人間に報告する。これは妥協ではなく、収束しない量を選んだループの設計上の正しい出力
収束しないと分かっているループに要るのは収束条件ではなく止め際の設計である。関係ないリファクタをしない、設計判断が要る指摘は直さず報告する、テスト失敗のリトライは 3 回まで、20 ファイル超のスコープは中断、5 ラウンドで強制終了——どれも「どこで人間に返すか」の線引きになっている。
1 周の中で収束しないなら、収束の対象を周をまたいだ同じ失敗の再発回数に移す手もある。失敗を errors.md などに記録し、同じカテゴリが 3 回出たら CLAUDE.md に再発防止策を書く。再発回数は対策を書けば減ったまま戻らないので、こちらには不動点がある。優先度を frequency × impact × preventability の掛け算で付けると、頻度が低くても重大で防げるものが浮上する。
関連ページ
- AIエージェント設計レイヤー — ループが積み重なりのどこに位置するか
- Claude Code — ループを構成するプリミティブの提供元
- 自律改善システムの設計 — Proactive ループを安全に回す設計原則
- 自己改善エージェント — 「プロンプトを書かない」自己改善ループの先の姿
- マルチエージェント調整パターン — dynamic workflows での並列・judge レビュー
- ループエンジニアリング — 6つの構成部品・4条件テスト・3つの罠を含む規律全体
- グラフエンジニアリング — ループは「単純なグラフ」であり、その先の拡張
- サーキットブレーカーと指数バックオフ — 停止条件の実装
- 作る役と確かめる役の分離(maker-checker) — 「嘘で止まる」を防ぐ採点役の分離
- Claude Opus 5.5 — テキストだけのターン終了を完了とみなさない継続指示
ソース記事
- Claude Code チーム公式ガイド「ループ設計」を読み解く — Turn-based から Proactive まで4段階の委譲 — 2026-07-01
- 停止条件は測れても収束しない — AIエージェントのループ設計と「不動点」 — 2026-09-18(3 つの壊れ方と不動点)