Kristopher Baker iOSを土台に · プロダクトシステム · AI支援ワークフロー
← 制作中へ
active updated today Repository

Sparra

長時間動き続ける、敵対的なビルドハーネス。ソフトウェアを一つの作業項目ずつ作ります。各項目をチェック可能な「完了」のコントラクトに落とし込み、ジェネレーターが実装し、それを実際に動かして採点する敵対的なエバリュエーターが評価する。しかもクロスモデル判定で、片方のモデルがビルドし、もう片方が判定します。Claude Codeのセッションから手で回すことも、丸ごと任せて無人で走らせることもできます。

TypeScriptAIエージェントClaudeCodexCLIオープンソース

Sparraは、AshPrabakerとAndrewWilsonによるAnthropicのワークショップ「Build Agents That Run for Hours」を見たあと、頭から離れなくなった一つのアイデアから生まれました。要点は、適切な足場さえ用意すれば、エージェントは長い時間まともな仕事をこなせる、というもの。「完了」の明確なコントラクト、自分の出力をチェックする手段、そして中断を生き延びるためにディスク上に置かれた状態。それを自分のプロジェクトで体感したくて、まわりにハーネスを組みました。

形はループです。各作業項目を小さなチェック可能なコントラクト(ウィッシュリストではなく、ひと握りのアサーション)に落とし込み、それを実装するジェネレーターに渡し、ジェネレーターの言い分を一切鵜呑みにしない敵対的なエバリュエーターに渡す。エバリュエーターは成果物を実際に動かし、証拠を読み、退化した入力でしか動かないものや、届いた時点で自分のテストがクラッシュするものを通しません。詰まった項目は手当てして延命させるのではなく、捨ててゼロからやり直します。いちばん大事にしているのはクロスモデル判定です。ClaudeがビルドしてCodexが判定する、あるいはその逆。モデルが自分の宿題を採点するのではなく、本当に独立したセカンドオピニオンが得られます。

Claude Codeのセッションで、複数のSparraロール実行を並行して走らせている様子。Codexが作業項目を生成し、Fableモデルが評価する。U1からU6までの項目キューと、5つのバックグラウンドエージェントが動いている。 Claude Codeのセッションから、複数の作業項目を同時に回しているところ。これはSparraが自分自身を良くしている最中の様子です。ここではクロスモデルの組み合わせが逆向きで、Codexが各項目を生成し、Claude系のモデルであるFableが判定します。5つのロール実行が同時に走っていて、U1(9ファイル、774テストのセルフverifyが緑)は、評価が始まる前にチェックポイントをコミットしています。

指針は、ファイルシステムが真実の源であり、唯一の共有状態だということ。すべてのステップが入力をディスクから読み、出力をディスクへ書き戻すので、実行は検査でき、差分で追え、どの地点からでも再開できます。この一つの決定こそが、長時間動き続ける部分を実際に成り立たせています。2時間目にモデルがレート制限に当たっても、ループはその枠が空くのを待つか、別のプロバイダにフォールバックして、止まった場所からちょうど続けられます。

回し方は二つあります。私のセッションはたいてい対話的です。/sparra-loopスキルがClaude Codeの中で私をハンドルに座らせ、コントラクト、生成、評価、受け入れの間を操縦させます。ビルド側からは見えないホールドアウトの壁はランナーが守ります。もう一つは丸ごと任せて、CLIにplan → freeze → build → reflectを無人で走らせるやり方。どちらのモードも、同じディスク上の状態と、その下にある同じロールランナーを共有します。

Claude Codeのセッションから動かしているSparraの状態テーブル。Codexの評価ステップがジェネレーターの最初の試みを75点中72点で不合格にし、2件の本物の指摘を挙げ、それを直すために2ラウンド目のジェネレーターが走っている。 別の実行から。敵対的なゲートが、まさにそのために存在する仕事をしている瞬間です。Codexがジェネレーターの最初の試みを評価し、75点中72点で不合格にしました。2件の本物の問題、実際のスコープの抜けと、不十分なドキュメント反映です。だから作業は、素通りさせるのではなく2ラウンド目に戻されます。そしてループ全体が自分の現在地を報告できるのは、すべてのステップの状態がディスク上にあるからです。

まだ初期段階で、あくまで個人的なものですが、すでに実際のものを作っています。自分自身の大部分を含めて。下のアップデートが制作ログです。ループ全体が一日で立ち上がった日、iOSアプリを動かしてスクリーンショットを読むことをジャッジに教えた話、クロスモデル判定、ジェネレーターが出し抜けるコントラクトの穴をふさいだ話、実行中のプロバイダのレート制限を生き延びた話、Claude Codeから手で回す話、そしてSparraが自分のプロンプトを監査しはじめた日。

アップデート 8

次へ

Inkwell 制作ログを見る