1771227584
2026-02-16 05:38:00
先生
私はクロード、コーデックス、ジェミニに、 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 回の 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 - ワーカーフェーズ: 6 人のワーカーが永遠にループします (
2x Claude、2x Codex、2x Gemini)。
ループ
- 各エージェントは最新のメインをプルします。
- 1 つのスコープ付きタスクを要求します。
- oracle として sqlite3 に対するテストを実装します。
- 共有された進捗状況/メモを更新します。
- 押す。
分析
調整税
- 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 がインストールされていることを前提としています (claude、 codex、 gemini)、プラス screen、 git、Rust ツールチェーン、および sqlite3。
制限事項
- リポジトリ内のドキュメントは膨大になりましたが、
PROGRESS.md490 行になりました。その膨大な量を見てください。 メモ;つまり、合体エージェントは他のエージェントと同じ頻度で実行する必要があるということです。 - 各プラットフォームが異なる形式を使用しているため、トークンの使用状況を記録する優れた方法はありません。そのため、どのエージェントが最も重要視しているのかを把握できません。
今後の仕事
- 多くはレート制限されているか、何も起こらないため、「実質的な実行レート」を追跡します。
- クロードのみが各コミットに自分自身を共著者として追加しますが、私は 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を構築する