メインコンテンツへスキップ
注目 CMS Multi-Agent Claude Code Orchestration Architecture

なぜGraph、Loop、Harness Engineを追わないのか:CMSはすでにOuter Loopへ移っている

Claude Code、Codex、Grokがinner loopを強化し続ける一方、CMSは2025年からprocess、checkpoint、retry、recoveryを外部control planeへ移していた。新しいEngineを逐一追わない理由はそこにある。

2026年7月19日 8 分で読む 著者:Claude World

ここ数か月、graph engine、loop engine、harness、Agent Teams、nested subagentsが大きな話題になっている。

では、なぜ私たちはこうした仕組みをほとんど議論せず、積極的に共有もしないのか。

答えは単純だ。その多くはプロダクトのinner loopを拡張するものであり、私たちはすでに問題をouter loopへ移しているからだ。

inner loopが重要ではない、という意味ではない。むしろClaude Code、Codex、Grok自体がプロダクトなのだから、agentの思考力やtool利用能力を高め、より多層のsubagentを扱えるようにするのは当然だ。ただし、すでにouter loopを持っていれば、新しいgraph、loop、harnessは能力を初めて解放するものではない。評価し、取り込み、交換できる部品になる。

Inner Loopを磨くのはプロダクトの役割

coding agentの基本的なinner loopは、次のようなものだ。

prompt
  → modelが判断
  → tool call
  → observation
  → 次の判断

現在のClaude Code、Codex、Grokは、このloopに優れたcontext管理、subagent、team、graph、hook、background task、resume体験を加え続けている。

これはプロダクトが担うべき仕事だ。すべての利用者がsupervisor、state machine、checkpoint、failure domainに詳しいわけではない。エンジニアが最初に独自のexecution systemを設計しなくても、仕事を確実に完了できるよう、プロダクト側が複雑さを包み込む必要がある。

しかし、設計経験のあるエンジニアには、もう一段外側の構造が見える。Claude Code、Codex、Grokがtask lifecycle全体を所有する必要はない。それらをworkerとして扱うこともできる。

アーキテクチャの経験があれば、早い段階でOuter Loopへ進める

process、state、retry、idempotency、lock、recoveryを理解していれば、プロダクトが提供するinner loopを自分のouter loopに組み込める。

durable stateを読み込む
  → inner-loop workerを1つ選ぶ
  → 独立processを起動する
  → 実際の結果を検証する
  → checkpointへ書き込む
  → retry、CLIの切り替え、停止、または次のiterationへ進む

この時点でworkflowを所有するのは、特定のLLM sessionではなく外部control planeになる。

modelもCLIも交換でき、processが終了してもtask自体は残る。何が完了し、何が未完了で、どの判断を行い、どこで止まり、次に何をすべきかは、model contextの外側に保存されているからだ。

これがCMS(Claude Multi-Session)の中核である。

CMSはclaude -pを交換可能なWorkerにする

CMSは、すべての知能を巨大なroot promptへ詰め込むものではない。Claude Codeの非対話型-p--print modeを切り出し、外部プログラムから繰り返し起動できるworker protocolとして扱う。

CMS orchestrator
  → checkpointを読み込む
  → claude --printをspawnする
  → workerが限定されたtaskを完了し、reportを出力する
  → orchestratorが結果を検証し、stateを更新する
  → processを終了し、次のiterationで新しいworkerを起動する

workerの内部では、引き続きsubagent、Agent Teams、graph workflowを利用できる。違いは、そのworkerがmission全体を所有しないことだ。scheduling、parallelism、retry、stop condition、CLI routing、resume pointはouter loopが管理する。

CMSは特定のmodelにも依存しない。同じstate contractをClaude、Codex、Geminiへ渡せる。workerがtask stateを読み、構造化されたreportを出力できれば、次のiterationを別のCLIが引き継げる。

CheckpointはProcess間のAPIである

outer loopでは、「前のiterationで多くの作業をした」という会話要約を残すだけでは不十分だ。次のprocessには、少なくとも次の情報が必要になる。

  • 完了済みと未完了の項目
  • 重要な判断と、破ってはいけない制約
  • 現在のblockerと失敗理由
  • 前のiterationで実際に変更した内容と検証結果
  • 次に実行できるaction

CMSは、これらをcheckpointとiterationごとのreportとして保存する。stateの更新にはlock、atomic write、backupを使い、parallel workerによる上書きや、process中断時に不完全なstateが残ることを防ぐ。

そのため、process crashはmissionの消失を意味しない。新しいterminal、新しいprocess、さらには別のCLIからでも、checkpointを起点に続行できる。

CMSの各コマンドは、形の異なる長期Taskを扱う

社内で使っている高度なCMSは、1本の長大なpromptではない。同じprocess、state、recovery contractを共有するコマンド群である。

コマンド用途
/cmsengineering requirementを分解し、planner、builder、tester、reviewer、fixerなどの独立workerへ割り当てる
/cms-auto-cycleiterationごとにfresh processを使い、TDD/acceptance criteriaのcycleを1回完了する
/cms-iterate数十iterationにわたって継続でき、stopとresumeが可能な汎用iteratorを実行する
/cms-auto-explore次の高価値な機会を繰り返し探索、評価、実装、検証する
/cms-review大規模projectをmodule単位でreviewし、発見事項を保存して、段階的に修正と検証を行う

これらに共通するのはagent数ではない。task lifecycleがagent processの外側にあることだ。

このアーキテクチャは最近始めたものではない

私たちは2025年7〜11月の社内構築期間からouter loop architectureを使い始め、現在まで運用を続けている。高度なCMSでは各iterationを独立processへ隔離し、checkpoint、report、resume、backup、parallel control、cross-CLI routingまで扱う。

2026年1月には、オープンソースprojectのDirector Mode Liteを通じて基盤版も公開した。初版にはiteration、checkpoint、resume、status、stop、Stop Hookが含まれ、その後のEvolving Loop/Orchestratorではphase-based stateとfile-based reportを追加した。

公開したのはouter loopの基礎modelであり、完全なprocess-isolated CMSは現在も社内で使う高度版である。

このアーキテクチャ路線は、最近のgraph、loop、harnessをめぐる議論より少なくとも8か月早い。重要なのは特定の機能名ではない。より早い段階で、誰がloopを所有すべきかを捉えていたことだ。

なぜ私たちは新しいEngineを逐一追わないのか

新しいAgent Team、graph engine、harnessによってworkerが高速になり、協調しやすくなり、telemetryが充実するなら、もちろん採用できる。CMSのworker processへそのまま組み込めばよい。

ただし、評価基準は「最新の方法かどうか」ではなく、次の点になる。

  • state contractを改善するか
  • isolation、recovery、observabilityを高めるか
  • failure costを下げるか
  • workerを交換しやすくするか

答えがyesなら取り込む。既存のtopologyへ新しい名前を付けただけなら、そのまま仕事を進める。

最近注目されているinner-loop mechanismを、私たちが一つずつ議論しないのはそのためだ。見落としているわけでも、新しいtoolを拒んでいるわけでもない。outer loopはすでに整っており、そうしたtoolを正しいアーキテクチャ上の位置へ置けばよい。

toolの名前は変わり続け、subagentの層も増え続ける。しかし、成熟したexecution systemが問い続けることは同じだ。

今考えているprocessが消えたあとも、仕事そのものを続けられるか。

CMSの答えは「続けられる」だ。processはworkerであり、checkpointが事実を保持し、outer loopがmission全体を所有しているからだ。

あわせて読みたい:Agent Teamsが存在する前に、私たちはそれを作っていたUserland HackからSDK Nativeへ:CMS移行ロードマップ