mattpocock/sandcastle

Orchestrate sandboxed coding agents in TypeScript with sandcastle.run()

解決する課題

Sandcastleは、隔離されたサンドボックス内でAIコーディングエージェントをオーケストレーションするために設計されたTypeScriptライブラリです。エージェントをコンテナ内で実行することでホストシステムへの制御不能な変更を防ぎ、gitブランチの管理や変更をメインコードベースにマージするプロセスを自動化します。

仕組み

Sandcastleは SandboxProvider システムを使用して隔離環境を作成します。Docker、Podman、Vercelの組み込みプロバイダーをサポートしており、カスタムプロバイダーの作成も可能です。sandcastle.run() を通じてエージェントが呼び出されると、ライブラリがサンドボックス化を処理し、設定可能なブランチ戦略を適用して変更を分離し、結果として得られたコミットをホストにマージします。

対象ユーザー

AI駆動型のコーディングワークフローを構築する開発者を対象としています。例えば、複数の「AFK」エージェントの並列化、自動化されたレビューパイプラインの作成、あるいは複雑なマルチエージェントシーケンス(実装エージェントの後にレビューエージェントを配置するなど)のオーケストレーションなどに適しています。

主な特徴

  • プロバイダー非依存のサンドボックス化: Docker、Podman、Vercelを標準サポート。ローカル開発用にサンドボックスなしで実行するオプションもあります。
  • 柔軟なブランチ管理: エージェントによる変更のコミットやマージ方法を管理するための設定可能な戦略を提供します。
  • 再利用可能なサンドボックス: createSandbox() APIにより、単一のウォームコンテナ内で複数のエージェントやイテレーションを実行でき、起動時のオーバーヘッドを回避します。
  • ライフサイクル・フック: ホスト側およびサンドボックス側のフックをサポートしており、エージェント開始前にセットアップコマンド(npm installなど)を実行できます。
  • プログラムによる制御: スクリプト、CIパイプライン、カスタムツールへの統合のための完全なJS APIを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト