← すべての記事

エージェントはコンパイルしたがっている

AIエージェントがコンパイルを始めています。2026年の半ば、スタックのあらゆる層で、同じ分離がさまざまな方向から実装されつつあります。モデルが判断し、モデルではない何かが実行する、という分離です。モデルのループの内側でその場限りに動くのではなく、エージェントは決定論的な成果物——計画、DAG、ワークフロースクリプト——を吐き出し、それを、通常のソフトウェアと同じように再生・再開・監査できるランタイムへと引き渡します。モデルは、雑然とした意図を中間表現へと解析するコンパイラのフロントエンドになりつつあるのです。決定論的なランタイムはバックエンドになりつつあります。そしてライブなエージェンシー(その場でモデルが動くこと)は、探索や新種の障害、そして美意識のために取っておく高価なモードとして、値付けし直されているのです。 {.answer-block}

7月1日、まるでテーゼの宣言のようなタイトルの Show HN が投稿されました。「実行前に意図を決定論的なDAGへコンパイルするコーディングエージェント」というものです。プロジェクトの名は Rigorix。自らを「再現可能で監査可能なAIソフトウェアエンジニアリングのための、決定論的なコーディングエージェントのランタイム」と称する Rust 製のランタイムで、その役割分担をひと言でこう言い切っています。「LLM がコードを生成し、Rigorix が実行を統べる」3。14ポイント、コメントは1件、スクロールで流してしまいそうな投稿です。それでも手が止まったのは、ここ数週間で同じ形が別の方向から実装されるのを見るのが、これで3度目だったからです。そして物語の主役は個々のツールではなく、その「形」なのです。

TL;DR

  • Anthropic は2024年12月に、この分野の定番となる線引きを示しました。ワークフローは「あらかじめ定義されたコードパスを通って」動き、エージェントは「自らのプロセスを動的に方向づける」というものです1。かつてこれは、人間が設計時に選ぶ分岐でした。それが今、実行時へと移りつつあり、選ぶ主体はモデルになっているのです。
  • Claude Code の動的ワークフローでは、モデルが JavaScript のオーケストレーションスクリプトを書き、それを会話の外側でランタイムが実行します。キャッシュされた結果を使って再開でき、過去の実行との差分を取れ、繰り返し呼び出せるコマンドとして保存できます2
  • 同じ形は、さらに3つの方向からも現れています。自然言語のタスクを実行可能なDAGへコンパイルする個人開発のツール(Rigorix)3、コンパイルしていないグラフの実行を拒むフレームワーク(LangGraph)4、そしてエージェントのループを再生可能なワークフローで包み込む、永続実行のインフラ(Temporal)5です。
  • コンパイルがもたらすものは、いつもと変わりません。キャッシュ、差分ビルド、差分の取れる成果物、そして実行前のレビューです。その代償もいつもと同じ。コンパイル時に凍結された判断です。
  • 探索や、これまでにないエラー状態、そして美意識では、いまなおライブなエージェンシーに軍配が上がります。運用上の原則はこうです。最初の実行はリサーチであり、それ以降の実行はビルドになりたがっている、と。

分岐は設計時のものだった。それが実行時のものになりつつある。

ここでの先行研究は、2024年12月19日に公開された Anthropic の「Building Effective Agents」です。この分野の分類法として、いまも標準であり続けています。この文書はワークフローを「LLM とツールが、あらかじめ定義されたコードパスを通じてオーケストレーションされるシステム」と定義し、エージェントを「LLM が自らのプロセスとツールの使い方を動的に方向づけ、タスクの達成方法を自ら制御し続けるシステム」と定義しています。選び方についての助言はこうです。「ワークフローは、明確に定義されたタスクに予測可能性と一貫性をもたらす。一方、柔軟性とモデル主導の意思決定が大規模に必要な場面では、エージェントのほうが優れた選択肢となる」1

18か月のあいだ、この一文はメニューとして読まれてきました。システムを設計するあなたは、1行を書き始める前に、左の列か右の列かを選んだのです。2026年の転回は、そのメニューがパイプラインへと畳み込まれていく、という点にあります。エージェントは、柔軟でモデル主導のパスを、計画の段階でちょうど一度だけ走らせます。そしてそのパスの出力こそがワークフロー——このタスクのために、必要に応じて生成された、あらかじめ定義済みのコードパス——なのです。同じ一つのシステムから、コンパイル時にはエージェントの柔軟性を、実行時にはワークフローの予測可能性を、段階を分けて手に入れられます。

「ワークフローか、エージェントか」という問いには、かつてコンパイラが「柔軟性か、速度か」という問いに答えたのと同じやり方で、答えが出されつつあります。すなわち、成果物によって分離された「その両方」です。

3つのシグナル、ひとつの方向

まず、環境が決定論的になった

ハーネスの層は、エージェントよりも先にそこへ到達していました。フックは、モデルが交渉できない終了コードとともに、ライフサイクルのイベントで発火します。権限のルールは、ツール呼び出しの後ではなく、前に評価されます。2026年におけるエージェントアーキテクチャという規律の全体は、確率的な核を決定論的な殻で包むものであり、その率直な認めどころはこうです——毎回必ず起きなければならないことについては、私たちはモデルに尋ねるのをやめ、境界で強制するようになった、と。決定論はまず、縁の部分から到来したのです。

次に、永続する成果物が会話に勝った

2つ目のシグナルは、セッションを越えて何が生き残るか、です。会話は蒸発します。けれどもチェック、仕様、テストは残り、エージェントはそれらに対して猛烈に最適化していくので、やがてチェックが仕様になるのです。その根底にある教訓はこうです——記録(トランスクリプト)は成果物ではない。成果物こそが本体である。なぜなら、次のセッション、次のエージェント、次のエンジニアが手にできるのは、それだけだからです。検証についてそれを受け入れたなら、実行計画についても受け入れるまでは、ほんのひと足です。永続するチェックが、それを生んだ会話よりも長生きするのなら、永続する計画もまた同じなのです。

いまや、計画そのものが成果物になった

3つ目のシグナルは新しいもので、この記事の主題そのものです。エージェントは、自らの実行をその場で演じる代わりに、第一級の成果物として吐き出し始めたのです。

Claude Code は、これを製品の表層として実装しました。動的ワークフローとは「サブエージェントを大規模にオーケストレーションする JavaScript スクリプト」です。あなたが説明したタスクのために Claude がスクリプトを書き、セッションが応答性を保ったまま、ランタイムがそれをバックグラウンドで実行します。ドキュメントは、何が手渡されたのかを明言しています。「ワークフローは、計画をコードへと移す」と。彼ら自身の比較表でも、「次に何を実行するかを決めるのは誰か」という問いへの答えは Claude ではありません。スクリプトなのです。実行のたびにそのスクリプトはファイルへ書き出され、開いて、過去の実行のスクリプトと差分を取り、編集し、再起動できます。実行を中断して再開すれば、「すでに完了したエージェントはキャッシュされた結果を返し、残りはその場で実行される」のです2

Rigorix は、個人開発の方向から同じ形を築いており、そのアーキテクチャはまるでコンパイラの教科書のように読めます。計画は、意図の分類、次にパラメータの抽出、そしてDAGの生成、という順に進みます。テンプレート駆動のエンジンが、リスクゲート・予算・権限のもとでグラフを実行し、その証跡としてHMAC署名付きの監査エンベロープを残します。その見返りについての定義は正確です。「再現可能とは、同じテンプレートと同じポリシーのもとで、同じ意図が同じ実行構造を生むことを意味する」3

フレームワークは、すでにそこにありました。同じ発想を、API の一つの動詞のなかに隠していたのです。LangGraph はエージェントのロジックを、エッジで結ばれたノード(「エージェントのロジックを符号化する関数」)としてモデル化し、そのドキュメントは要件を太字でこう述べます。「使う前に、グラフを必ずコンパイルしなければならない(You MUST compile your graph before you can use it)」。チェックポインタとともにコンパイルすると、「LangGraph はスーパーステップの境界でチェックポイントを保存」し、これが中途半端に終わった実行を再開可能にするのです4

そしてインフラの層は、下側から到来しました。永続実行のプラットフォームである Temporal は、エージェントの推論ループを、進捗がどのプロセスの外側でも保持されるワークフローで包み込みます。「Temporal はアプリケーションの進捗を追跡し、すべての Activity の結果を保存する」ので、クラッシュしたエージェントはゼロから推論をやり直す代わりに「中断したところから再開」します。2025年7月30日に発表された OpenAI の Agents SDK との統合により、この包み込みは、自分で手作りするパターンではなく、正式にサポートされた道になりました5

個人開発のツール、製品の表層、フレームワーク、インフラ。4つの方向、ひとつの形です。モデルが判断し、成果物が実行する。

コンパイラの比喩を、文字どおりに受け取る

AIについての文章に出てくる比喩は、たいてい飾りです。しかしこの比喩は構造を支える柱です。というのも、いくつもの予測がそこから導き出せるからです。

コンパイラのフロントエンドは、ソースを解析し、意味を検査し、中間表現を吐き出します。これはまさに、これらのシステムが走らせる計画のフェーズそのものです。Rigorix の意図の分類は解析(パース)にあたり、パラメータの抽出は意味解析、DAGの生成はコード生成にあたります。ワークフロースクリプトが中間表現(IR)です。そのあとバックエンドは、バックエンドらしい仕事をします。並列性をスケジュールし、リソースの上限を強制し(Claude Code は1回の実行を、同時16エージェント・合計1,000エージェントに制限します2)、メモ化します。ここから4つの帰結が導かれます。

計画にビルドキャッシュが備わる。 再開のセマンティクスは、差分コンパイルにほかなりません。Claude Code は再開時にキャッシュされたエージェントの結果を返します。Temporal がエージェントの作り手に売り込むのも、失敗した地点からの復旧が、失われた作業を作り直すためにモデルを走らせ直す代わりに、トークンを温存する、という点です5。次の一歩は、内容アドレス指定された計画のステージです。序盤のステージが変わっていないワークフローを再実行すると、make が変更のないオブジェクトを飛ばすのと同じように、それらをスキップするようになるでしょう。

計画に差分が取られる。 ワークフローのドキュメントは、ある実行のスクリプトを過去の実行のものと差分比較するよう促しています2。ひとたび計画がテキストになれば、計画のずれ(ドリフト)は、コードのずれと同じように目に見えるようになります。そして「このマイグレーションのオーケストレーションは前四半期から変わった」ということが、記録の山を掘り返す考古学の作業ではなく、プルリクエストのなかでレビュー可能な出来事になるのです。

計画がレビューの舞台になる。 ワークフローが走る前に、Claude Code は計画されたフェーズを示し、同意を求める手前で「生スクリプトを表示(View raw script)」する選択肢を差し出します2。これは、レビューの向かう先とつながる部分です。私はかつて、エージェントが取って代わったのはレビュアーであって、レビューではないと論じました。人間の仕事は、差分を精査することから、意図を引き受けることへと移ったのです。コンパイルされた計画こそ、その移った先のレビューが行われる成果物です。というのも、実行が何かを費やす前に意図が読み取れる、唯一の場所だからです。1万件ものライブな判断はレビューできません。けれども40行のスクリプトならレビューできます。大規模なエージェントの操作に対する承認は、事後に差分を承認する形から、事前に計画を承認する形へと移っていくはずです。

ずれが引き起こすのは、パッチ当てではなく再コンパイルである。 コンパイル済みの計画が、世界が変わったせいで——API の名前が変わった、依存関係のバージョンが上がった、といった理由で——失敗したとき、間違った一手はDAGを手で編集することです。それはオブジェクトコードにパッチを当てるようなものです。正しいループは、フロントエンドを走らせ直します。同じ意図、新しい環境、新鮮な計画です。永続的なランタイムは、一過性の失敗ならすでにリトライによって成果物の内側で吸収します。環境のずれこそ、コンパイラへとこぼれ落ちてくる種類の失敗なのです。ハーネスは、ビルドシステムがキャッシュを無効化するのと同じように計画を無効化する、ずれの検出器を備えていくでしょう。そして「ずれたら再コンパイルする」ことが、手作業の救出劇ではなく、常設のループになるのです。

それぞれのモードが勝つ場面

観点 ライブなエージェンシー(ループの中にモデル) コンパイルされた実行(ループの中に成果物)
タスクの形 前例のない、未知の地形 既知の形、繰り返される実行
失敗への対処 新種のエラーには新鮮な判断が下される 予期された失敗は決定論的にリトライされる
コストの傾向 毎ステップ・毎実行でフルの推論 計画時に一度だけ推論し、実行は安上がり
監査のしやすさ あとから再構成する記録 前後どちらでも検査できる、スクリプトとログ
再現性 やり直しは、判断のやり直しを意味する 完了した作業をキャッシュしたまま再生する
判断 いま現在のもので、その瞬間に適用される コンパイル時に凍結される
勝つ場面 探索、デバッグ、何を望むかを決めるとき マイグレーション、監査、バックフィル、2度走らせるものすべて

この表は境界であって、順位づけではありません。境界の下にあるものはすべて、これからずっと安く、ずっと信頼できるものになっていきます。境界の上にあるものはすべて、そうあるべきだからこそ、高価なまま残るのです。

コンパイルでは手に入らないもの

3つのものはライブなまま残ります。そうでないふりをすることこそ、このパターンが過大に売り込まれてしまう道なのです。

探索。 不慣れなコードベースや、本当に新しい問題では、計画そのものが発見です。まだコンパイルすべきものは何もありません。判断することこそが仕事だからです。理解する前にコンパイルすれば、自分の無知を自信満々に固めた成果物ができあがり、ランタイムはそれを寸分の狂いなく実行してしまうでしょう。

新種のエラー状態。 コンパイルされた計画が扱えるのは、その作者が予期した失敗です。リトライのポリシーは、予期されたトラブルへの決定論的な答えにすぎません。トラブルが予期せぬものであるとき、決定論的なリトライは修正ではなく、ただのループになります。正しい一手は、フロントエンドへのエスカレーションです。そこでこそモデルは、実際のエラーを見つめて考えることができるのです。

美意識。 ワークフローとは、コンパイル時に凍結された判断であり、凍結された判断は古びていきます。雑に実行された新鮮な判断は、完璧に実行された古い判断に勝ります。古びたほうは、自信たっぷりに失敗するからです。製品がどう感じられるべきか——その決定だけは、誰もコンパイルすべきではありません。

検証の側から持ち越すべき警告もあります。DAGは一つのチェックの舞台であり、計画が省いたものはすべて、静かに「仕事」ではなくなります。目に見えるテストが事実上の仕様になってしまうのと、同じ力学です。コンパイルは、タスクについてのモデルの判断をすべて一つの成果物へと凝縮し、それによって人間の仕事もまた、その成果物を引き受けることへと凝縮されます。計画がコンパイルされても、レビューは消えません。計画の段階へと移り、そして、てこの効く一枚のページを手にするのです。

立場

いま私が拠って立つ原則はシンプルです。どんなタスクでも、最初の実行はリサーチであり、ライブなエージェントに値する。2度目の実行はビルドであり、成果物に値する。Claude Code はその原則を UX として実装しています。Claude にワークフローを一度書かせ、その実行のスクリプトをコマンドとして保存し、あとは永遠に再実行する2。Rigorix はそれをガバナンスとして、Temporal はインフラとして実装しました。LangGraph は何年も前に、誰も宣言文としては読まなかった API の一動詞として、それを実装していたのです。

エージェントがコンパイルしたがるのは、かつてプログラマがそうしたのと同じ理由からです。判断は高価で、貴重です。実行は退屈で、検査可能で、いくらでも繰り返せるものであるべきです。業界は2024年と2025年を、モデルが判断できることの証明に費やしました。2026年の仕事は、モデルが判断を一度だけで済ませられるようにすることなのです。

要点のまとめ

  • 最初の実行はリサーチ、2度目の実行はビルド。 新しいタスクはライブなエージェントで走らせる。それが繰り返された瞬間に、成果物として凍結し、解決済みの問題に新鮮な判断のコストを払うのをやめましょう。
  • まず、退屈な8割をコンパイルする。 リリースの雑務、マイグレーションの一斉処理、翻訳のバッチ、監査のパス——反復が多く、検証が安いものたちです。探索、デバッグ、そして美意識はライブなまま残します。
  • 「ずれたら再コンパイル」のループを取り入れる。 コンパイル済みのワークフローが、世界が変わったせいで壊れたとき、成果物を手でパッチしてはいけません。モデルを送り返し、新しい現実に対して計画を作り直させ、差分をレビューし、もう一度凍結しましょう。
  • 記録ではなく、計画をレビューする。 実行が決定論的になれば、計画こそがシステムのなかで最もてこの効くページになります。マイグレーションのスクリプトを読むのと同じように読みましょう。実際、それはまさにそういうものなのですから。

よくある質問(FAQ)

AIエージェントが計画を「コンパイルする」とは、どういう意味ですか?

それは、エージェントの出力が、ライブな一連のアクションではなく、決定論的で検査可能な成果物——ワークフロースクリプトやDAG——になる、という意味です。モデルは計画の段階で推論を済ませて成果物を吐き出し、モデルではないランタイムが、再生・再開・監査のセマンティクスとともにそれを実行します。Claude Code の動的ワークフロー(モデルが書いた JavaScript スクリプトを、ランタイムが実行するもの)や、Rigorix(自然言語のタスクを実行可能なDAGへコンパイルするもの)が、実際に世に出ている例です。

AIのワークフローとAIエージェントの違いは何ですか?

Anthropic による2024年の定番の定義では、ワークフローは「LLM とツールが、あらかじめ定義されたコードパスを通じてオーケストレーションされるシステム」であり、エージェントは「自らのプロセスとツールの使い方を動的に方向づける」ものです。2026年の更新は、その境界が、2つのシステムのあいだの選択ではなく、一つのシステムのなかの一つのフェーズになりつつある、という点です。エージェントは動的なパスを、計画の段階で一度だけ走らせ、あらかじめ定義されたコードパスを自ら生成するのです。

コンパイルされたエージェントのワークフローは、自律的なエージェントより優れていますか?

繰り返される、形の整ったタスクについては、はい。コンパイルされたワークフローは、1回あたりが安く、キャッシュされた結果で再開でき、実行前にレビューできます。探索や、新種のエラー状態、判断を要する場面については、いいえ。コンパイルされた計画はコンパイル時に凍結された判断であり、そうしたタスクには、その瞬間に適用される判断が要るからです。実務上の線引きは、実行回数によります。最初の実行はライブに保ち、2度走らせるものはすべてコンパイルしましょう。

現在、エージェントの意図を決定論的な成果物へコンパイルするツールにはどんなものがありますか?

2026年7月時点で、確認できる例は4つあります。Claude Code の動的ワークフロー——モデルが JavaScript のオーケストレーションスクリプトを書き、ランタイムがそれを実行し、保存されたスクリプトは再利用できるコマンドになります。Rigorix——オープンソースの Rust 製ランタイムで、自然言語のタスクを、ポリシー・予算・権限の制約のもとで実行されるDAGへコンパイルします。LangGraph——グラフは実行前に必ずコンパイルされねばならず、スーパーステップの境界でチェックポイントが取られます。Temporal——エージェントの進捗を永続化し、失敗した地点から再開する、永続実行のワークフローです。

出典


  1. Anthropic「Building Effective Agents」anthropic.com/engineering/building-effective-agents(2024年12月19日)。ワークフローを「systems where LLMs and tools are orchestrated through predefined code paths」と、エージェントを「systems where LLMs dynamically direct their own processes and tool usage, maintaining control over how they accomplish tasks」と定義し、「workflows offer predictability and consistency for well-defined tasks, whereas agents are the better option when flexibility and model-driven decision-making are needed at scale」と助言している。 

  2. 「Orchestrate subagents at scale with dynamic workflows」Claude Code ドキュメント、code.claude.com/docs/en/workflows(2026年7月アクセス)。動的ワークフローとは「a JavaScript script that orchestrates subagents at scale」であり、「A workflow moves the plan into code」。ランタイムはそのスクリプトを会話の外側で実行し、読み取り・過去の実行との差分比較・編集・再起動が可能なファイルへ書き出す。中断された実行は、完了済みのエージェントがキャッシュされた結果を返す形で再開される。実行は同時16エージェント・合計1,000エージェントに制限される。.claude/workflows/ に保存されたスクリプトはスラッシュコマンドとして実行できる。Claude Code v2.1.154 以降が必要。 

  3. Rigorix OSS、github.com/arman-jalili/rigorix-oss。「Show HN: Coding agent that compiles intent into deterministic DAG before running」として投稿、news.ycombinator.com/item?id=48741332(2026年7月1日)。MIT/Apache-2.0 のデュアルライセンスで公開された Rust 製ランタイムで、「compiles natural-language development tasks into executable Directed Acyclic Graphs (DAGs)」。計画は、意図の分類、パラメータの抽出、そしてDAGの生成を走らせる。実行はテンプレート駆動のDAGエンジン、ガバナンスはリスクゲート・予算・権限、そしてHMAC署名付きの監査エンベロープをカバーする。README はその保証を「the same intent produces the same execution structure under the same templates and policies」と定義している。 

  4. LangGraph Graph API ドキュメント、docs.langchain.com/oss/python/langgraph/graph-api(2026年7月アクセス)。ノードは「functions that encode the logic of your agents」、エッジは次にどのノードが実行されるかを決める。「You MUST compile your graph before you can use it」。チェックポインタとともにコンパイルすると「saves checkpoints at super-step boundaries」となり、再開可能な実行を可能にする。 

  5. Temporal「Production-ready agents with the OpenAI Agents SDK + Temporal」temporal.io/blog/announcing-openai-agents-sdk-integration(2025年7月30日)。Temporal Workflows で包まれたエージェントのループは、進捗を永続的に保持する。「Temporal keeps track of application progress and stores all Activity results」ため、再起動されたアプリケーションは、失われた作業を作り直すためにモデルを走らせ直すのではなく、「picks up where it left off」。 

関連記事

チェックが仕様になる

テストに合わせて作り込むコーディングエージェント——オラクルのスコアはほぼ満点、しかし出荷されたライブラリは死んでいる。チェックが取りこぼしたものは、もはや仕事ではなくなる。

1 分で読める

エージェントが取って代わるのはレビュアーであって、レビューではない

2026年のある論文は、coding agentが人間によるコードレビューを終わらせたと主張します。論文が示すパイプラインを実際に運用してみると、レビュアーという役割は死につつあり、レビューそのものは移動しているのです。

1 分で読める

あなたのエージェントは、あなたが読むより速くコードを書く

今週、5つの研究グループが同じ問題について発表しました。AIエージェントは開発者が理解できる速度を超えてコードを生成しています。負債はあなたの頭の中にあります。

3 分で読める