
2026/04/09 5:12
Show HN:Druids – 自分だけのソフトウェア工場を構築する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary
Druids は、複数のコーディングエージェントをマシン間でオーケストレーションできる batteries‑included フレームワークです。各エージェントは、リポジトリと依存関係を持つ独自のサンドボックス化された仮想マシン(VM)内で実行され、
ctx.connect を通じてファイルやリソースを共有でき、異なる Git ブランチ上で作業することも可能です。Druids プログラムは非同期関数であり、エージェントの生成、トリガー可能なイベントの定義、および実行フローの制御を行い、モデル学習イテレーション、検証階層、分散状態管理などのタスクに対して決定論的構造を提供します。
典型的なスクリプト(
best_of_n.py、build.py、basher.py、review.py、main.py)は、モデルのビルド、実装、レビュー、レース用パイプラインを示しています。例えば druids exec best_of_n.py spec="Refactor the auth module" n=5 は N 個のワーカーをデプロイし、PR URL を収集してジャッジエージェントに送信し選択します。
システムは FastAPI ベースのサーバーとサンドボックスマネージャ、クライアント用 CLI と Python ライブラリ、ランタイム SDK、Vue 3 ウェブダッシュボード、および包括的なドキュメントで構成されています。Druids はローカル(Docker 経由)または druids.dev 上で実行可能です。Anthropic API キーを設定しイメージをビルドした後、サーバーを起動し CLI を構成してプログラムを実行します。
このセットアップにより、開発者はコードレビュー、ペネトレーションテスト、マイグレーション、データパイプラインなどの複雑なワークフローをスケーラブルでサンドボックス化されたエージェントを使って自動化できます。Druids コミュニティは Discord でもアクセス可能で、ウェブサイトにデモ動画が掲載されています。
本文
Druids(ドゥルイッズ)とは
Druids は、複数のマシンにまたがるコーディングエージェントを調整・デプロイするための「バッテリー付き」ライブラリです。VM インフラストラクチャ、エージェントのプロビジョニング、通信といった低レベルな詳細はすべて抽象化されます。
例:プログラム
async def program(ctx, spec="", n=3): submissions = {} # 各エージェントにはあなたのリポジトリを持つサンドボックス型 VM が割り当てられます judge = await ctx.agent("judge") @judge.on("pick") async def on_pick(winner=""): await ctx.done({"winner": winner, "submissions": submissions}) for i in range(n): worker = await ctx.agent(f"worker-{i}", prompt=spec, git="write") worker_name = worker.name @worker.on("submit") async def on_submit(pr_url=""): submissions[worker_name] = pr_url if len(submissions) == n: await judge.send( f"Review these PRs and pick the best:\n\n{submissions}" )
実行方法は次の通りです。
druids exec best_of_n.py spec="Refactor the auth module" n=5
Druids の活用シーン
- パフォーマンス最適化:多数のエージェントを同時に走らせる
- カスタム自動化パイプライン:コードレビュー、ペネトレーションテスト、移行処理、長時間実行する自律機能など
- データパイプライン構築:エージェントを組み合わせてデータフローを設計
ローカル環境で利用したり、druids.dev へデプロイして使用することも可能です。
Website · Docs · Discord · Demo video
エージェントプログラム
Druids のプログラムは 非同期関数であり、以下を行います。
- エージェントを作成
- それらが発火できるイベントを定義
- イベントに対するプログラムの応答を制御
イベントは決定論的な構造とフロー制御を提供し、次のようなケースで有効です。
- モデルに対してハードテストやシグナルを使って反復させる
- エージェントが生成した出力を他のエージェントが検証する階層構造を作り、特定条件が満たされるまで繰り返す
- 分散タスク状態(例:共有リソースへのロック)を制御
各エージェントはあなたのリポジトリを持つサンドボックス型 VM 上で実行されます。エージェント同士は
share_machine_with でマシンを共有したり、ctx.connect でファイル転送を行ったり、Git ブランチ上で作業できます。ホステッド版では agent.fork() が即座にコピーオンライトクローンを作成します。実行中の任意のエージェントへメッセージを送り、プログラム状態を検査し、停止せずに処理をリダイレクトすることも可能です。
クイックスタート
必要条件:Docker、
uv、Anthropic API キー
# Docker イメージのビルド・サーバ起動・CLI 設定 druids setup # プログラム実行例 druids exec .druids/build.py spec="Add a /health endpoint that returns 200 OK"
詳細は Getting Started ガイドまたは
QUICKSTART.md をご覧ください。
代表的なプログラム例
- build.py – ビルダー・クリティック・オーディターの三者が交互に作業し、全員が満足するまで繰り返す
- basher.py – タスクをスキャンし、実装者+レビュアーのペアを生成
- review.py – デモエージェントが実際のシステムで PR をテスト;監視者はショートカットを検知
- main.py – Claude と Codex が同じ仕様に対して並列に競走
アーキテクチャ
server/ ── FastAPI サーバ、実行エンジン、サンドボックス管理 client/ ── CLI と Python クライアントライブラリ runtime/ ── プログラムランタイム SDK frontend/ ── Vue 3 ダッシュボード docs/ ── ドキュメント(druids.dev/docs にも公開)