日本語版
最新ニュース
科学&テクノロジー

小さなswarmでsqliteを構築する

2026 年 2 月 12 日 先生 私はクロード、コーデックス、ジェミニに、 SQLite のようなエンジン Rustで。 ~19k~ コード行。 パーサー、プランナー、volcano executor、ページャー、b+tree、wal、リカバリ、結合、集計、インデックス作成、トランザクション セマンティクス、グループ化された集計、統計を意識したプランニングがすべて実装されています。 282 個の単体テスト、すべて合格。 背景 ソフトウェア エンジニアリングを分散システムのように扱い、Git、ロック ファイル、テスト、マージ規律との調整を強制します。 ハーネス ├── AGENT_PROMPT.md // main agent task prompt ├── BOOTSTRAP_PROMPT.md // bootstrap (initialization) prompt ├── COALESCE_PROMPT.md…

小さなswarmでsqliteを構築する

1771227584
2026-02-16 05:38:00

2026 年 2 月 12 日

先生

私はクロード、コーデックス、ジェミニに、 SQLite のようなエンジン Rustで。

  • ~19k~ コード行。
  • パーサー、プランナー、volcano executor、ページャー、b+tree、wal、リカバリ、結合、集計、インデックス作成、トランザクション セマンティクス、グループ化された集計、統計を意識したプランニングがすべて実装されています。
  • 282 個の単体テスト、すべて合格。

背景

ソフトウェア エンジニアリングを分散システムのように扱い、Git、ロック ファイル、テスト、マージ規律との調整を強制します。


ハーネス

├── AGENT_PROMPT.md       // main agent task prompt
├── BOOTSTRAP_PROMPT.md   // bootstrap (initialization) prompt
├── COALESCE_PROMPT.md    // deduplication prompt for coalescer agent
├── launch_agents.sh      // launches all agents and sets up isolated workspaces
├── agent_loop.sh         // per-agent loop/worker script
├── restart_agents.sh     // restarts agents
└── coalesce.sh           // invokes the coalescing script

ワークフロー

  1. ブートストラップフェーズ: 1 回の Claude 実行で、ベースライン ドキュメント、クレート スケルトン、およびテスト ハーネスが生成されます。
     ├── Cargo.toml         // crate manifest
     ├── DESIGN.md          // architecture design notes
     ├── PROGRESS.md        // test & build progress
     ├── README.md          // project overview
     ├── agent_logs         // per-agent log files
     ├── crates             // workspace subcrates
     ├── current_tasks      // lock files
     ├── notes              // inter-agent notes
     ├── target             // build artifacts
     └── test.sh            // test harness script
    
  2. ワーカーフェーズ: 6 人のワーカーが永遠にループします (2x Claude2x Codex2x Gemini)。

ループ

  1. 各エージェントは最新のメインをプルします。
  2. 1 つのスコープ付きタスクを要求します。
  3. oracle として sqlite3 に対するテストを実装します。
  4. 共有された進捗状況/メモを更新します。
  5. 押す。

分析

調整税

  • 84 / 154 コミット (54.5%) ロック/クレーム/古いロック/リリースの調整でした。
  • 並列エージェントのスループットがロックの健全性と古いロックのクリーンアップ規律に大きく依存していることを示しています。

最も役に立ったもの

決定的に見えたことが 2 つあります。

  • Oracle スタイルの検証 + 高いテスト頻度 (cargo test ... そして ./test.sh --fast/ でキャプチャされた完全な実行 PROGRESS.md)。
  • 強力なモジュール境界 (parser -> planner -> executor storage) そのため、エージェントはマージ衝突が少なく直交スライスで作業できるようになります。

冗長性

重複/ドリフトが並列エージェントの最大の問題であるため、重複/ドリフトを除去するためにジェミニでコアレッサーを実装しました。ただし、プロジェクトの最後に一度だけ実行されたため、実行中に実際に使用されることはありませんでした。毎日実行する cron ジョブがありますが、有効期限内に実行すると、ジェミニは重複排除全体を完了できませんでした。つまり、途中で停止しました。

持ち帰り

  • 並列処理は優れていますが、タスクの境界が厳密である場合に限ります。
  • 共有状態ドキュメント (PROGRESS.md、設計ノート) はランタイムの一部であり、「ドキュメント」ではありません。
  • テストは反エントロピー力です。
  • エージェントに狭いインターフェイス、共通の真実の情報源、および迅速なフィードバックを提供すると、実際のシステム コードのスループットが向上します。

レプリケーション

この設定を複製するには:

git clone [email protected]:kiankyars/parallel-ralph.git
mv parallel-ralph/sqlite .
chmod 700 sqlite/*.sh
./sqlite/launch_agents.sh

エージェントを再起動します。

./sqlite/restart_agents.sh claude/codex/gemini

合体エージェント:

関連する CLI がインストールされていることを前提としています (claudecodexgemini)、プラス screengit、Rust ツールチェーン、および sqlite3


制限事項

  • リポジトリ内のドキュメントは膨大になりましたが、 PROGRESS.md 490 行になりました。その膨大な量を見てください。 メモ;つまり、合体エージェントは他のエージェントと同じ頻度で実行する必要があるということです。
  • 各プラットフォームが異なる形式を使用しているため、トークンの使用状況を記録する優れた方法はありません。そのため、どのエージェントが最も重要視しているのかを把握できません。

今後の仕事

  • 多くはレート制限されているか、何も起こらないため、「実質的な実行レート」を追跡します。
  • クロードのみが各コミットに自分自身を共著者として追加しますが、私は Codex と Gemini に対しては追加しませんでした。そのため、Gemini と Codex に対してコミット メッセージを追加する必要があります。
  • おそらく多くのエラーは作業中にレート制限に達し、その後プットを好きになれなかったため、より厳密なオブザーバビリティを追加しました。つまり、その時点では、実質的に半分終了した作業のみがプッシュされていたようです。

インスピレーション

  • https://cursor.com/blog/scaling-agents
  • https://www.anthropic.com/engineering/building-c-compiler

付録

コードサイズのスナップショット

言語 ファイル ライン 空白/コメントなし
さび 14 18,650 ~16,155
シェル 1 199 ~139
合計 15 18,849 ~16,294

2026 年 2 月 10 日から 2026 年 2 月 12 日までの間に 154 件のコミット。

使用法

Gemini は、CLI を使用して使用状況を監視する方法を提供していません。また、週単位の使用量ではなく、24 時間の使用量ベースです。コーデックスについては、現在 2 倍プロモーション中のプロ プランの週使用量を 100% 使用しました。クロード プロの 1 週間の使用量の 70% を使用しました。

  • コーデックス
  • クロード

免責事項

  • codex はこの記事の最初の草稿を書きました。

引用

@misc{kyars2026sqlite,
  author = {Kian Kyars},
  title = {Building SQLite With a Small Swarm},
  year = {2026},
  month = feb,
  day = {12},
  howpublished = {url{https://kiankyars.github.io/machine_learning/2026/02/16/sqlite.html}},
  note = {Blog post}
}

#小さなswarmでsqliteを構築する

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。