誰が何をしているのか。1 回の自動開発(run)はどう進むのか。2 枚の図で紹介します。
AuteDev は 4 層の登場人物で回っています。いちばん下のローカル LLM たちがアプリを作ります。その仕組み(フレームワーク)を育てているのは Claude Code で、方針を決めるのは人間です。
仕様書を受け取り、下のエージェントたちに順番に仕事を振ります。行き詰まったエージェントは、別のモデルに自動で交代させます。run の最後には、できあがったアプリと一緒に利用手順書も自動で作ります。
10/1 から作り方を変えました(「案 B」。経緯は下の 02 で):アプリ作りは既製エージェントに任せ、AuteDev は仕様の分析・API規約・テスト・検証に専念。10/2 からは Qwen3.8-Flash-Next を Strata で動かし、2 つ目のアプリは Qwen3.8-27B が同時に作ります。2 つのアプリがそろって落ちるテストは、仕様書の決めていない値がないか、リーダーに「定義をお願い」します。
モデルは基本的に 1 つずつ、5 枚の GPU にまたがって載せ、役割が替わるたびに入れ替えます。アプリ作成のときだけ、Strata(GPU 1 枚)と Qwen3.8-27B(GPU 2 枚)が同時に動きます。クラウドの AI は使いません。
9 月までの AuteDev は、仕様の分析からコーディング、テスト、修正まで、全部を自分の工程でこなしていました(下の折りたたみにある「案 A」)。ところが INVADERS では約 40 回走らせても PASS がゼロ。止まった原因の多くは、できあがったアプリではなく、AuteDev が途中で自分で作るもの(テストのバグなど)でした。
そこで 9/30〜10/1 に、既製のコーディングエージェントに AuteDev の仕様書と API規約(設計図)を渡して作らせる比較実験をしました。すると 16〜27 分で、AuteDev 本体が約 3 時間かけたのとほぼ同じ出来のアプリができました。一方、設計図を渡さないと時間がかかり、出来も不安定に。つまり AuteDev の強みは「作る」ことではなく、仕様の分析・設計・検証のほうだと分かったのです。
この結果を受けて、10/1 から作り方を切り替えました。これを「案 B」と呼んでいます。AuteDev は仕様の分析・設計(API規約)・受け入れテスト作りと答え合わせに専念し、アプリそのものは既製のコーディングエージェント(OpenHands)が 2 つ、別々に作ります。成績のよいほうのアプリが受け入れテストに全部通れば PASS です。
ポイントは、2 つのアプリがそろって落ちたテストの扱いです。別々に作ったアプリが同じところでつまずくなら、悪いのはアプリよりも、テストか仕様書のほうかもしれません。そこで AuteDev はテストをすぐ直さず、まずリーダーに「○○の定義をお願いします」と聞き返します。
2 つは同時に、仕様書と API規約だけを見て作る(制限時間 30 分)
定義依頼は 最大 3 ラウンド。それでも通らなければ NOT PASS で、別のモデルが原因を分析した「次の run へのメモ」を残す
※ 定義では、たとえば「インベーダーの数」や「残りの命」を直接セットする操作を API規約に足すことがあります。ゲームクリアやゲームオーバーのような、長く遊ばないとたどり着けない場面をテストで作るためです。ただし足せるのは原因(数・位置など)だけで、「ゲームオーバー」という結果そのものはセットできません。結果へ移るのは、いつもの操作に任せます。10/2 の v188 からは、こうした操作を最初の設計の段階で用意します。
※ 全部のテストの半分以上が両方のアプリでそろって落ちたときは、アプリではなくテストの土台(準備や後片付け)の不具合を疑います。
同じ失敗を繰り返したら 別のモデルに交代。それでも進まなければ run 終了(NOT PASS)
利用手順書は LLM を使わず、仕様書・設計・実際に生成されたコードから確かめられることだけをプログラムで書き出します(起動方法は実際のコードから取るので、「書いてあるとおりにしたら動かない」が起きにくい)。
※ 実際のワークフローには、テスト計画の監査、ハーネス復旧、スコープ確認など 20 を超える工程があります。上の図は主な流れだけを抜き出したものです。
NOT PASS なら、Claude Code がログと「次の run へのメモ」を分析します。そして「特定のアプリ専用ではない、一般的な直し方」でフレームワークを修正し、版を上げて次の run を回します。節目では Claude Fable にもレビューを頼みます。この繰り返しで、版番号は 180 を超えました。作ったアプリにはそれぞれアプリ ID が付き、どの run で作ったかを記録しています。
その日々の結果は、開発ログで日々更新しています。