深掘 · 小互解説

最近話題沸騰の Loop Engineering とは結局何なのか

Anthropic エンジニアによる「ループエンジニアリング」方法論の詳説。AI を一文ずつ手で指示するのをやめ、自分で回り続けるループシステムを設計する
概要
  • Loop Engineering は Addy Osmani、Boris Cherny、Peter Steinberger が 2026 年 6 月の同じ週にそれぞれ独立して行き当たり、名付けたもの。AI を手で指示するのをやめ、AI を自動で指示するシステムを設計する——自分は「AI を操作する人」から「AI を駆動するシステムを設計する人」へ変わる
  • 一つのループは五つのステップで構成される。タスクの発見、実行の受渡、独立した検証、状態の永続化、自動的な定期実行。どのステップが欠けても、それぞれ名前のついた失敗モードが対応する(うなずきループ/健忘ループ/手動ループ/盲目ループ/もつれループ)
  • 最も重要で最も飛ばされやすいのが検証。AI に自分の出力を採点させると自画自賛になる。別の独立した agent を粗探しの専門家として立て、コードは壊れている前提で、コードを読むだけでなく実際にページを操作してスクリーンショットを撮らせる必要がある
  • Stripe の Minions パイプラインは毎週 1300 を超える機械が書いた PR をマージする。信頼性は決定論的な制約(linter を強制実行し、agent は回避できない)から来るもので、より大きなモデルからではない
  • ループは静かに四つのコストを積み上げる。検証債、理解の劣化、認知の放棄、Token 請求の爆発。四つは互いに強め合い、最後に一斉に噴出する。門番は常に人間の判断力だ
1発端 · 命名

一週間のうちに、三人が同じことに行き当たった

2026 年 6 月の同じ週のうちに、Google Chrome エンジニアの Addy Osmani、Anthropic の Claude Code 責任者 Boris Cherny、OpenClaw の作者 Peter Steinberger は、互いに口裏を合わせたわけでもないのに、同じことに行き当たった。彼らはもう手で AI を指示してはいない。「AI を自動で指示するシステム」を設計していたのだ。

Loop Engineering(ループエンジニアリング)が語るのは、一つのアイデンティティの転換だ。あなたは「キーボードの前に座り一文ずつ AI に指示を出す人」から、「自分で AI に仕事を割り振れるシステムを設計する人」へ変わる。この一文の重みは、すべて「自分自身を置き換える」という点に乗っている。
なぜ見る価値があるか。Steinberger の「agent を指示するのではなくループを設計せよ」という投稿は 800 万閲覧を突破した。Cherny の言い方は「私が今書いているのは loop だ、私の仕事は loop を書くことだ」。Osmani は 6 月 7 日にこれを Loop Engineering と名付け記事にした。三つの言葉は同じ動作を指している。あなたが設計するものが、agent の一つの振る舞いから、agent を駆動するシステム全体へと変わったのだ。そして Stripe はすでにこのパターンで、毎週 1300 を超える機械が書いた PR をマージしている。
8,000,000+
Steinberger の「agent を指示するのではなくループを設計せよ」という投稿の閲覧数
6 / 7
Osmani がこれを Loop Engineering と名付け記事にした日付。翌日 Substack にも同期

なぜよりによってこの週に現れたのか

三人は相談していないのに、同じ週に同じ言葉へ手を伸ばした。これは偶然ではなく、周囲のツールが静かにある一線を越えたからだ。三つの条件が同時に成熟した。coding agent はすでに、無人で非自明なタスクを完遂できるほど信頼できるようになった。スケジューリングの原語がちょうど主流のツールに現れた。一回の実行コストは、繰り返し走らせても無駄に思えないところまで下がった。部品が揃えば、「それらを組み合わせる」という動作は、すべての人にとって同時に自明になる。

名前は実践に何ヶ月も遅れてやってくる。誰かが Loop Engineering と呼ぶ前から、人々はとっくにループを書いていた。ちょうど「generator/evaluator の分離」に名前がつく前から、チームはコードを書く agent にコードを審査する agent を配していたように。この法則は覚えておく価値がある。次の新語はモデルのリリースからは来ない。ある能力が、かつて思いもよらなかった組み合わせを日常に変えるほど安くなった、その瞬間から来るのだ。

2位置づけ

四つの層の最上段に立つ

これらの「XX エンジニアリング」は互いに取って代わるものではなく、一層ずつ積み重なっている。各層が扱うものは下の層より一回り大きい。一文から、一つのコンテキストウィンドウへ、一回の実行へ、最後は自分で回り続けるループへ。各層をクリックして、何を担い、エラー時にどれだけ大きく弾けるか見てほしい。

Loop · ループエンジニアリング最上段の層
何を扱うか:harness の上にスケジューリングを置き、自分で何度も走らせる。核心の問い:どうやって無人で繰り返し回すか。下の層より三つの動詞が増えた。定時で走る(時間が来れば自分で目覚める、人がボタンを押さなくていい)、サブ agent を分ける(一つが変更を起草し、もう一つが専ら粗探しする)、自分の出力を次のラウンドに食わせる(昨日の発見をファイルに書き、今朝読み戻して続ける)。エラーの爆発半径:誤りが state file に書き込まれ、翌日に既定の事実として読み戻され、それに沿って積み上げられ、何ラウンドも伝播してから発覚することがある。
Harness · 単発実行の装備arm one run
何を扱うか:一回の agent 実行に装備を揃える。どのツールを使えるか、どの操作を許すか、エラー時にどう復旧するか、どの状態を完了とみなすか。核心の問い:この一回の実行に何を持たせるか。一回の実行を武装させるが、その実行を自動で繰り返させはしない。エラーの爆発半径:agent が誤読に従ってファイルを一度書き換えるが、run は終わり diff は見える。人が review した後に初めてリリースされる。
Context · コンテキストエンジニアリングthe window now
何を扱うか:今この瞬間ウィンドウに何を置くか。何を検索し、どう要約し、どの古い情報を消すか。核心の問い:モデルに何を見せれば解けるか。ノイズで埋まったウィンドウは、どんなに良いプロンプトも無駄にする。エラーの爆発半径:自信たっぷりの誤答も、間違いに気づけばコンテキストを消すだけでよい。
Prompt · プロンプトエンジニアリングthe words you write
何を扱うか:モデルに書くその一文。言い回し、例、役割、語調。核心の問い:モデルに何を伝えるべきか。境界は一回の対話。厄介なのは、毎回そこに人が座ってプロンプトを手渡すことを前提にしている点だ。エラーの爆発半径:一回の対話でその場で見える。プロンプトを書き直せばよい。

同じ一つのバグ(agent がある関数の戻り値を誤読した)を四つの層に置いて見よう。上に行くほど、発覚は遅く、代価は大きい。ループ層になると、この誤読は state file に書き込まれ、翌日に事実として読み戻され、それに沿って一層ずつ積み上げられ、誰かが見に行く頃には、その誤った前提はもう耐力壁になっている。

これがループエンジニアリングで最も覚えておくべき直感だ。誤りの代価は、それが人に発覚するまで生き延びたラウンド数に等しい。そしてループは構造上「ラウンド数を最大化する」機械なのだ。後に出てくるものすべて——evaluator、人手の関門、予算上限——存在する唯一の目的は、「ミスをする」から「発覚する」までの距離を縮めることにある。

3五つのステップ

一周五ステップ、どれが欠けても決まった形で壊れる

「ループ」を空転と取り違えてはいけない。各ラウンドで具体的なことをやる。やる価値のある仕事を見つけ、agent に渡し、正しいか検証し、状態を保存し、次の一手を決める。五ステップのどれが欠けても、ループは回らないか、その場で空回りするか、しかも名前のついた形で壊れる。

発見 受渡 検証 Noと言える 永続化 定期実行 loop 自分で回るシステム
五ステップが時計回りに円を描き、定期実行がこのラウンドでやり残した仕事を明日のラウンドへ食わせる · 検証は一周の中で唯一「ノー」と言えるステップ

以下では Osmani が自分で組んだ「朝の triage ループ」を例に、各ステップが何をやるか、そしてそれを飛ばすとどのループに変わるかを順に見ていく。

1
発見Discovery
triage skill が昨日落ちた CI、まだ開いている issue、最近マージされた commit を読み、このラウンドで何をやるべきか自分で見つける。肝心なのは、agent に自分で仕事を探させること、リストを手渡されるのではなく。このステップがループ全体の品質の天井を決める。拾い上げた仕事に価値がなければ、残りの四ステップをどんなに見事にやっても無駄だ。
飛ばすと → 盲目ループ:依然としてあなたが毎朝手で「このバグを三つ直せ」と割り振る。「やる」は自動化したのに「探す」は自動化していない。そして「探す」こそが、しばしば最も高くつく部分だ
2
受渡Handoff
仕事をスケジューリングシステムから、作業する agent の手へ渡す。やる価値のある発見ごとに、独立した git worktree を一つ開き、複数の agent がそれぞれのディレクトリでコードを書き、ファイルを取り合わない。仕事のブロックをきれいに切るほど、後の検証とマージが楽になる。
飛ばすと → もつれループ:いくつかの agent が並行しながら全員が同じディレクトリを書き換え、変更が衝突し、merge が誰にもほどけない乱麻になる。単 agent では問題に見えず、五つの agent を一緒に走らせたその朝に初めて露呈する
3
検証Verification
⊘ 一周の中で唯一「ノー」と言えるステップ
最も手抜きしやすく、最も省けないステップ。一つ目のサブ agent が修正を起草し、二つ目のサブ agent に審査させる。指示は別物で、ときにはモデルすら替える。コードを書いた agent は自分の答案を甘く採点する。専ら粗探しする方は、前者が自分を納得させて通したものを捕まえられる。本当のチェックのないループは、自分にうなずくだけの agent にすぎない。
飛ばすと → うなずきループ:最も多い失敗。各ラウンドで自己承認し、機械の速度で「一見問題なさそうな誤り」の山を築く。数百ラウンド走って一度も「ノー」と言わなかったのは、どんな本物の仕事量に対しても統計的にあり得ない。それこそチェックが全くなかった証拠だ
4
永続化Persistence
結果を、この対話を生き延びる場所に落とす。connector で PR を開き、チケットを更新し、片付かないものは inbox へ、そして state file が進捗を記す。ループの記憶はコンテキストウィンドウだけに置いてはいけない。markdown やかんばんに書いたものは忘れない。
飛ばすと → 健忘ループ:良い仕事を発見し、やり、そしてやったことを忘れる。結果が消去されるコンテキストウィンドウにしかないからだ。翌日また同じ仕事を発見し、ときには一度目の成果と衝突するやり直しまでする。毎朝同じ場所から始まり、何の蓄積もない
5
定期実行Scheduling
「一ラウンド」を「一つのループ」に変えるのがこれだ。triage は毎朝自動で走り、state file がやり残した発見を翌日へ繋ぎ、翌日は自分で続きをやる。Osmani の言葉:ループを本物のループにするのは automation であって、あなたが一度走らせただけの実行ではない。
飛ばすと → 手動ループ:四ステップは良いが、自動化していないだけ。それはループではなく、あなたが手で走らせ、そして再び走らせるのを忘れるスクリプトだ。組んだ日のデモは鮮烈だが、注意が逸れた途端に静かに止まる。最後の実行が、デモされたその日になる

この五ステップは選べるチェックリストではなく、互いに依存し合う一つの全体だ。規律のあるチームは五ステップ全部を装着する。慌てたチームは前二ステップ(発見+受渡)だけ装着する。この二つは目に見える出力を生むからだ。後の三ステップが生むのは「安全」で、最も省かれやすい。

4六つの部品

ループを組むには、六つの部品を揃える

五ステップは「一ラウンドで何が起きるか」、六つの部品は「回すには手元に何が要るか」を語る。両者は一対一で対応する。発見は skills、受渡は worktrees、検証は sub-agents、永続化は memory、定期実行は automations に頼る。各カードをクリックして、何を解決するか見てほしい。

① Automations 自動化 定期実行
スケジュールやトリガーにぶら下げ、ループを自分で動かす。これがなければ、手元にあるのは一回の実行であってループではない。スケジューリングは二種類。ローカル(マシンを起動しておく必要がある)とクラウド(電源を切っても回る)。トリガーすべきは名前のついた skill であって、cron job に貼り付けた指示の塊ではない。
② Worktrees 分離ディレクトリ 受渡
git 内蔵の仕組み。一つのリポジトリで互いに干渉しない複数の作業ディレクトリを開く。価値は並行度とともに上がる。二つの agent が同時に同じファイルを書くのは、二人のエンジニアが同じ行にコミットするのと同じくらい厄介だ。これは並行を「走るが乱れる」から「走って、きれい」に変える。
③ Skills / SKILL.md 発見
プロジェクトの知識を一つのファイルに固める。agent は毎ラウンド、コンテキストを推論し直さなくて済む。Osmani はそれが節約するコストを intent debt(意図の負債)と呼ぶ。新しいセッションを開くたびに「このプロジェクトは何か、ルールは何か、落とし穴はどこか」を説明し直す累積コストだ。skill は再利用でき、保守できる。プロンプトの壁はできない。
④ Connectors 外部システム接続 永続化 / 発見
MCP(Model Context Protocol、AI が外部ツールを呼ぶ標準インターフェース)を基に組んだ継ぎ手で、ループを外につなぐ。issue tracker、データベース、staging API、Slack。ローカルのファイルシステムしか見られないループは、とても小さなループだ。あるツールで書いた connector は、しばしばそのまま別のツールに移して使える。
⑤ Sub-agents 生成と評判を分ける 検証
書く方と判定する方を二つの agent に分ける。一つの agent が選手と審判を兼ねれば、審判は自分をひいきする。直感に反するが、独立した審判を厳しく調整する方が、作者を自己批判的に調整するよりずっと容易だ。だからループは agent を一つ余分に養ってでも、一つの agent に自分自身を審査させない。
⑥ Memory / state file ディスク上の状態 永続化
一回の対話の外に生きる永続状態。一つの markdown ファイルか一枚のかんばん。コンテキストウィンドウが消去されれば agent は何も覚えていない。今日を昨日につなぐには、記憶はディスクに落ちていなければならない。agent は忘れるが、repo は忘れない。記憶はコンテキストではない。コンテキストはこのラウンドで見えたもので、更新すれば消える。記憶はラウンドをまたぎ日をまたいで残る。
worktree とは何か

何人かの料理人が同時に下ごしらえするとき、一人ひとりに独立したまな板を渡すようなものだ。各自が切り、互いに手が触れない。一枚のまな板を共用すれば衝突する。worktree は、並行する各 agent に自分だけのまな板を配ることだ。

六つの部品が揃えば、ループは骨格を得る。自動化が動かし、worktree が共食いを防ぎ、skill が重複労働を避けさせ、connector が外を見させ、sub-agent が自己修正させ、memory が記憶させる。だが骨格を組むのは始まりにすぎない。同じこの六つの部品で、二人が正反対のものを組み上げられる。これが最後の節の話だ。

5核心 · 検証

最難関のステップ:なぜ AI に自分を採点させてはいけないか

ループの最難関は、agent を走らせることでは決してない。その中に「ノー」と言えるものを一つ置くことだ。そしてコードを書いたその agent こそ、最も「ノー」と言いそうにない者なのだ。

核心の発明 · generator / evaluator の分離

① なぜ必然的に自分を褒めるのか。ある agent に、たった今生み出したものを採点させると、たとえ人が一目で品質が並だと見抜けても、自信たっぷりに褒める傾向がある。Anthropic エンジニアの Prithvi Rajasekaran が長時間稼働アプリを作る中で観察した。これは知能の問題ではない。このコードを書いた文脈には、すでに「なぜこう書くべきか」の理由が詰まっている。だから agent が自分の出力を見るとき、見えているのは結果ではなく、ここまで自分を説得してきたその筋道なのだ。ループに入れるとこの悪癖は増幅される。「これで十分か」の判定を毎回、書き終えたばかりの agent が下す。それは一ラウンドずつ自分にうなずき、長く走るほど真の品質から離れていく。

② 解法は作者を変えることではなく、審判を替えることだ。generator をより自己批判的に調整する、この道は通じない。作者に自分の視点から飛び出せと要求することはできない。できるのは、別の独立した agent を立てることだ。ゼロからコードを見て、まったく異なる指示を持ち、自己説得を一切まとっていない。独立した懐疑者を調整する方が、作者を自己批判的にするよりずっと容易だ。発想は GAN(敵対的生成ネットワーク)から来ている。一つのネットワークが造り、一つが粗探しする。コードに移せば、一つが書き、一つが審査する。

③ コードを読むだけでは足りない、実際に手を動かす。evaluator がコードを読むだけなら、判定するのは「これが正しく見えるか」であって「これが正しく動くか」ではない。フロントエンドのタスクで、Rajasekaran は evaluator を Playwright MCP につなぎ、QA のように実際にページを開き、ボタンを押し、スクリーンショットを撮り、DOM を検査させた。判断の根拠は「この JSX は問題なさそう」から「ボタンを押したら、ページが遷移した、スクショはこれ」に変わる。ついでに下層のモデルも替える。同じモデルに指示だけ替えても、しばしば同じ盲点を引きずる。コミュニティでよく使われる一つのキャリブレーション:evaluator に、コードは壊れている前提で、そうでないと証明されるまで疑わせる。デフォルトの立場は信頼ではなく懐疑であるべきだ。

④ maker-checker:最後の一打を誰が下すか。Claude Code は /goal でこの構造を一つの原語にした。条件を一つ与え、条件が満たされるまで走らせる。肝心なのは、各ラウンドの終わりに、条件が達成されたかを真新しい小型で高速なモデルが判定すること。作業中のそのモデルではない。これは銀行で何十年も使われてきた maker-checker の原則だ。

generator / evaluator の分離

銀行で高額送金を入力する人と、その送金を照合する人は、必ず別の二人でなければならない。このルールは銀行業で何十年も使われ、maker-checker と呼ばれる。これをループに移す。コードを書く agent と「通ったか否か」を下すモデルは、必ず二つで、後者はゼロから始め、あなたが書き間違えた前提に立つ。

Generator · コードを書く
コンテキストは「なぜこう書くか」の理由で埋まっており、見えているのは自分を説得した筋道
↓  draft 下書き
Evaluator · 独立 agent
モデルを替える · コードは壊れている前提 · Playwright MCP で実際にページを操作・スクショ・DOM 確認、意図でなく挙動を判定
REJECT + 理由を逐条 ↩
generator に差し戻して書き直し
PASS ✓
次の関門へ
真新しい小型モデルが stop condition を判定
作業中のモデルが判定するのではない · この一打こそ maker-checker

evaluator を設定に落とすとこうなる。その一行一行が上の四つを実行している。役割を替え、壊れている前提、手を動かして検証、理由を逐条述べる。

.claude/agents/reviewer.md , 敵対的レビュー agent
ROLE: Adversarial code reviewer.(敵対的レビュアー)
ASSUME: this code is BROKEN until proven otherwise.
       # コードは壊れている前提、反証されるまで
DO NOT praise. Find what fails.  # 褒めるな、どこが壊れるかだけ探せ

CHECK, in order:        # 順番にチェック
  1. Does it run? (execute, don't read)   # 動くか:実行する、読むだけにするな
  2. Tests: run them, paste real output.  # テストを走らせ、実際の出力を貼れ
  3. Edge cases the author skipped.       # 作者が飛ばした境界ケース
  4. Does behavior match the ticket?      # 挙動がチケットと一致するか

USE Playwright MCP: open the page, click,
    screenshot, inspect the DOM. Judge behavior, not intent.

VERDICT: PASS only if every check holds.
         Otherwise REJECT + list each reason.
         # 全て通って初めて PASS、さもなくば REJECT し理由を一つずつ列挙
停止条件 , 真新しい小型モデルが判定
/goal all tests in test/auth pass and the lint step is clean
# 「test/auth が全て通り、かつ lint がクリーン」になるまで走る
# 注意:/goal は条件が満たされるまで走る、/loop(一定間隔で再実行)とは別物

ループの下限は、その evaluator が決める。generator の水準はループが何を生み出せるかを決め、evaluator の水準はそれが何を生み出さないかを決める。生成と評判を構造上分け、evaluator を懐疑者に調整し、手を動かして検証させ、最後の一打を真新しいモデルに委ねる。この四ステップを合わせて初めて、ループに「ノーと言える」能力が育つ。

6実例

一人の朝と、Stripe の毎週 1300 個の PR

二つの本物のループ。規模は極端に違うが、骨格は同じだ。一つのトリガーが開始を押し、一群の制約がそれを軌道に縛り、末尾に一つの人手の関門が座る。「あなたが眠っている間に走れる」は、モデルがどれだけ強いかではなく、この骨格がどれだけ安定しているかだ。

ケース A · 一人一台

Osmani の朝の triage

  • 毎朝、一つの automation が自分で起動する
  • triage skill が昨日落ちた CI、開いている issue、最近の commit を読む
  • 呼ぶのは一つの skill であって、スケジュールに貼った指示の塊ではない
  • 発見ごとに worktree を一つ開き、一つのサブ agent が起草し、もう一つが skill とテストに照らして審査する
  • connector が自動で PR を開き、チケットを更新する
  • 片付かないものは inbox で人を待ち、state file が明日を昨日に繋ぐ
ケース B · 企業規模

Stripe の Minions

  • 毎週 1300+ 個の PR をマージ、一行も人が手で書いていない
  • トリガーはとても軽い:Slack で bot を @ する、または emoji リアクションを付ける
  • 本当の仕込みはモデルが目覚める前にある:一つの決定論的オーケストレーターが先にコンテキストを組み立てる
  • サンドボックスは EC2 上の Devbox、「家畜であってペットではない」、使い捨て、千の agent が同時に走っても衝突しない
  • その 1300 個の PR も依然として人が review する:人は去っていない、コードを書く机から review の机へ移っただけだ

Stripe の最も直感に反する点:Minions はより強いモデルの上に建てられていない。オープンソースツール Goose の一つの fork だ。その核心の主張は、信頼性は制約の質から来るもので、モデルの大きさからではない、ということ。アーキテクチャ上、決定論的な関門(青)と創造性のある LLM ステップ(緑)が噛み合い交互に並ぶ。確定したロジックで解けることは、決して確率モデルに委ねない。この線をどこに引くかが、ループが信頼できるか否かを決める。(この実例は Stripe エンジニアの Steve Kaliski が How I AI ポッドキャストで明かした。)

決定論的ステップ(非 LLM、ルール固定)LLM ステップ(創造的)
Human trigger
Slack で @bot、または emoji リアクションを付ける
決定論的オーケストレーター
リンクを走査、Jira を取得、Sourcegraph + MCP で関連コードを特定、LLM に自分でコンテキストを探させない
LLM
材料が揃ったら、コードを書く
ハードコードの関門
linter を強制実行、agent は回避できない
LLM
lint を直す
ハードコードのステップ
git commit
Human review
毎週 1300 個の PR、依然として人が審査

「あなたが眠っている間に走る」は結局何に頼るのか

ローカルの /loop もデスクトップの定時タスクも、マシンを起動しておく必要があり、電源を切れば止まる。マシンを切っても走らせるなら、正解は Cloud Routines か GitHub Actions の定時トリガーだ。三つの方式がそれぞれ一区間を担う。

スケジュール方式実行場所マシン起動必須?セッション必須?最短間隔ローカル読込可?
ローカル /loop自マシン必要必要1 分
デスクトップ定時タスク自マシン必要不要1 分
Cloud Routines / CIクラウド不要不要1 時間不可

要点はどれが良いか選ぶことではなく、この二つは別の能力だと理解することにある。ローカル定期実行 =「私がいる間に何ラウンドか多く走らせる」、クラウド定期実行 =「私がいない間も走らせる」。ローカル再実行を「無人運転」の全部だと思い込むのが、最もよくある誤解だ。ノートパソコンの蓋を閉じれば、自律だと思っていたそのループは静かに止まる。成熟したループはしばしば両方を使う。ローカルが身近で緊密なチェックを担い、クラウドが夜通しの全体スキャンを担う。

ついでに一言:コマンドは Claude Code のもの、能力はそれに縛られない

この記事のコマンドは Claude Code の書き方だが、能力はそれ独自のものではない。Codex は別の名前で同じ六つの器官を提供する。定期実行、条件が満たされるまで走る、並行分離、サブ agent、外部接続、明示的な skill 呼び出し。あるツールで書いた connector は、しばしばそのまま別のツールに移して使える。どのツールチェーンに替えても、問うべきはいつも「六つが全部そろっているか」であって、「このコマンドはどこのものか」ではない。

7手を動かす

ステップ・バイ・ステップ:最初のループを組む

Stripe のあのパイプラインは終点であって、起点ではない。最初のループは、ほとんどシステムに見えないほど小さくあるべきだ。時間が来れば何かを見に行く小さな代物。以下の五ステップはそのまま真似でき、各ステップにコマンドと設定が付き、最後に六要素を揃えた最小の完全なループになる。

v2.1.72
Claude Code が /loop コマンドをサポートし始めたバージョン
v2.1.139
/goal(条件が満たされるまで走る)をサポートし始めたバージョン

① /loop を一つ起こす

v2.1.72 以降で使える。同じ一つのタスクを間隔で再実行する。スコープは session、繰り返しタスクは 7 日後に期限切れ、自マシンで走り、電源を切れば止まる。三つの使い方:

/loop , 三つの使い方
/loop 5m check the deploy   # 固定:5 分ごとに一回
/loop check the deploy      # agent が自分でペースを決める
/loop                       # .claude/loop.md のタスクを読む

② skill で自動発見:まず triage

一行を再実行するだけではループとは言えない。プロンプトを与え、毎朝三つのものを見て、対処する価値のあるものを列挙させる。「定時 + 自動発見」で初めてループの入門だ。発見のロジックは skill に書くこと、スケジュールに書かないこと。cron job の指示は誰も更新せず腐っていく。SKILL.md は保守でき、再利用できる。

.claude/skills/morning-triage/SKILL.md
NAME: morning-triage
WHEN: invoked each morning by automation.
      # 毎朝 automation から呼び出される
READ:
  - CI runs that failed since yesterday   # 昨日から落ちている CI
  - issues opened in the last 24h         # 過去 24 時間に開かれた issue
  - commits merged since the last run      # 前回実行後にマージされた commit
JUDGE: for each item, is it worth acting on?
       Skip noise. Keep only actionable findings.
       # 一つずつ判断:対応する価値があるかノイズか? 着手できるものだけ残す
OUTPUT: write findings + status to
        ./state/triage.md (one row per finding).
        # ./state/triage.md に書く、1 件 1 行

③ state ファイルを一つ加える

結果をチャット窓に残すな。発見ごと、どこまで処理したかを、一つの markdown ファイル(または一枚の Linear かんばん)に書く。agent は忘れるが、repo は忘れない。

./state/triage.md , このループの記憶
| finding         | source    | status   |
|-----------------|-----------|----------|
| auth test flaky | CI #4821  | fixing   |
| null deref      | issue 92  | PR open  |
| stale dep       | commit a3 | inbox    |

④ /goal 評価器を加える

最も肝心で、最も飛ばされやすいステップ。/goal(v2.1.139 以降)は一つの条件が満たされるまで走り、条件が達成されたかを別のモデルが判定する。/loop とは違うことに注意:/loop は一定間隔で再実行、/goal は達成まで走り、停止条件を真新しい小型モデルが判定する。前節の reviewer.md(コードは壊れている前提、手を動かして検証、理由を逐条述べる)を添えて、各ラウンドで粗探しさせる。

/goal , 客観的に判定できる停止条件を与える
/goal all tests in test/auth pass and the lint step is clean
# 「test/auth が全て通り、かつ lint がクリーン」になるまで走る、真新しい小型モデルが判定

⑤ --worktree で並行分離を加える

--worktree(または -w)で各バックグラウンド agent に独立した worktree を開く。一つの worktree に一つのタスク、複数の agent が同時にコードを書いてもファイルを取り合わない。

発見ごとに独立した worktree
claude --worktree fix/auth-test  "draft the fix"
claude --worktree fix/null-deref "draft the fix"

最初のループの六要素チェックリスト

チェックして、自分が揃えたか見てほしい。前二つが回るか否かを決め、後四つが回り始めて問題が起きても誰も見ないか否かを決める。初心者が最もよくやる誤りは、前二つだけ装着すること。結果は、誰も見ず、誰も止められず、しかも自分にうなずき続けるループだ。

発見ソース動作の可否
時間が来たら何を読むか? CI / issues / commits / inbox
state ファイル動作の可否
どのディスクファイルがラウンドをまたぐ記憶を保存するか?
独立検証放置リスク
「ノー」と言える独立した agent があるか?
worktree 分離放置リスク
並行する各 agent に自分のディレクトリがあるか?
Token 上限放置リスク
一回の予算と一日の上限を設けたか? 誰が止めるか?
人間 review の関門放置リスク
どのステップが一時停止してあなたを待つか、全自動で走り抜けず?

六要素を揃えた最小のループ

チェックリストをコードに落とす。下のこの一段は、一息で読み切れるほど小さいが、本物のループに必要な器官をすべて備えている。ただ縮小しただけだ。六つのコメントが六要素と一対一で対応する。

.github/workflows/triage.yml , 完全な最小ループ
# 1. 定期実行 , 本物のトリガー一つ
on:
  schedule:
    - cron: '0 6 * * *'   # 毎日 06:00、クラウドで走る

# 2. 発見 , 一つの skill を呼ぶ、指示の塊ではなく
run: claude --skill morning-triage

# 3. 永続化 , 状態をディスクに
#    skill が ./state/triage.md を書き repo に commit

# 4. 受渡 + 検証 , 発見ごとに worktree 一つ、達成まで走る
for finding in $(parse ./state/triage.md); do
  claude --worktree "fix/$finding" \
    --goal "tests pass and lint is clean" \
    "draft a fix for $finding"
done

# 5. 検証 , 各ラウンド後に真新しいモデルが stop を判定、
#    さらに reviewer agent が専ら粗探し

# 6. 人間 review , 残しておくその扉
#    PR は開くだけで自動マージしない;判断に迷うものは ./inbox/ へ

六つすべて揃えば、どんなに小さくても本物のループだ。どれか一つでも欠ければ、それは前節の五つの失敗のどれかが、装いを変えただけのものになる。最初のループは小さい方がいいが、「ノー」と言うチェックと人間 review の関門だけは満載にしなければならない。

8代価

ループはこっそり四つの勘定を記す

自分で走れるループは、同時に自分で間違える能力のあるループでもある。元気に走るほど、静かに間違える。四つの代価がそれが動いている間に静かに積み上がり、どれも当場で警報を鳴らさない。

検証債 理解の劣化 認知の放棄 Token 爆発 相互強化 同時噴出
検証されていない出力が理解を蝕み、理解の遅れが放棄を招き、放棄がループをより長く走らせ、より多く費やさせ、さらに多くの未検証の出力を生み、検証債に戻る

具体的な場面で四つがどう段階的に発火するか見よう。ループが一晩で 20 個の PR を開き、テストは全緑、表面上は大勝利だ。だがそのうち 3 つに、テストでカバーできない小さなバグが潜んでいる。

独立した evaluator がなく、病んだ 3 つもマージされた → これが 検証債
あなたは読まずに 20 個をマージし、頭の中のコードの地図が 20 個分遅れた → これが 理解の劣化
ループがこんなに順調だから、翌朝あなたはいっそ見なくなる → これが 認知の放棄
一晩中サブ agent を分け、何度もリトライし、請求は見積もりの三倍 → これが Token 爆発

埋められたあの 3 つの誤りは、今やあなたが完全には読み解けなくなったコードベースに横たわり、もう見ない人によって「守られて」いる。本番環境でどれか一つが頭をもたげるまで発覚しない。四つの代価は、それぞれ独立したリスクのリストではなく、同じ一つの失敗から生えた四つの顔だ。互いに養い合い、最後に一斉に満期を迎える。

門番の方法はそれぞれ違う。

検証債
独立した evaluatorを配する。作業する agent と同じではないものに、「動く」と「正しい」の間のあの隙間で粗探しさせる
理解の劣化
毎日抜き取って数件読む。「何を変えたか、なぜこう変えたか」を自分に説明させる。説明できなければ、地図が遅れている
認知の放棄
最低一つ、人が押さねばならない関門を残す。ループは実行できても、決定はできない。せめて「これは間違いだと言える」能力だけは守れ
Token 爆発
初めて無人で走らせる前に一回の予算 + 一日の上限 + 最大リトライ回数を設けておく。空転するバグに一晩分の枠を焼かせるな

四つは一つの特徴を共有する。ループが走っている間、それらはすべて静かだ。ループエンジニアリングの最も魅力的な点は、一人にチームの仕事をさせること。最も危険な点も同じところにある。チームは自分で自分と言い争うが、一人にループを山ほど足すと、誰も議論しないエコーチェンバーに容易に変わる。門番は常に人間の判断力だ。

9結び

あなたは依然としてエンジニアだ、ボタンを押すだけの人ではない

同じ一つのループを、二人が組めば、正反対の場所へたどり着ける。そして違いはループそのものにはない。

ある人はループを、自分がすでに熟知したことの上でより速く走らせる。彼はコードを読み、方向に確信があり、ループが増幅するのは彼が元々持っていた判断だ。別の人は同じループを、二度と理解しなくて済むように使う。半年後、前者はより強くなり、後者は自分で読み解けない機械の門番になる。

ループは「品質がツールで決まる」たぐいのツールではない。それは強いがゆえに、あなたが持ち込んだものをそのまま増幅する。理解を持って臨めば理解を増幅し、怠惰を持って臨めば怠惰を増幅する。それは忠実な掛け算の記号で、掛けられるのはループを組んだその人だ。

ループは生成をほぼ無料にする。コード、計画、PR、修正、ほとんどタダで手に入る。残された希少なものは判断だ。どの計画が正しいか、どの行で止めるべきか、どの出力が走らせれば問題なくとも根本では間違っているかを知ること。ループは百の選択肢を生成できるが、本当に選ぶことはできない。あるいは「もっともらしく見える」基準で選び、「実際に正しい」基準では選ばない。この二つの間の隙間こそ、エンジニアが存在する理由だ。だからループエンジニアリングは判断を切り下げたのではない。判断を要さない仕事をすべて剥ぎ取り、判断を残された唯一のものにしたのだ。エンジニアの価値は、「タイプが速い、API を多く暗記している、ボイラープレートを厭わない」から、「どの道が正しいか、どの行で止めるべきか、どの出力が走らせれば正しくとも根本では間違っているかを知る」へ移った。

build the loop, but build it like someone who intends to stay the engineer, not just the person who presses go.Addy Osmani『Loop Engineering』2026 年 6 月
出典:本稿は HuaShu「Orange Book」オープンガイド『Loop Engineering: Stop Asking Me What It Is』(v260615, 2026 年 6 月) の会議体まとめ稿に基づく解説。フレームワークと原文は Addy Osmani に帰属;generator/evaluator の発見は Anthropic の Prithvi Rajasekaran に帰属;Stripe Minions の企業事例(毎週 1300+ PR)は Stripe エンジニアの Steve Kaliski が How I AI ポッドキャストで明かした。コマンドのバージョン番号(/loop は v2.1.72 から、/goal は v2.1.139 から)およびスケジューリングパラメータは各ツールの公式ドキュメントに準拠し、バージョンにより変わる可能性がある。