Mirage: AIエージェントのための統合仮想ファイルシステム

Mirageは、S3、Slack、GitHubなどの多様なデータソースを単一のbash互換仮想ファイルシステムにマウントすることで、AIエージェントの開発を簡素化します。

現実世界のデータと対話できるAIエージェントを構築することは、しばしば断片化された悪夢のように感じられます。結局、十数種類の異なるSDKを使い分け、サービスごとに認証を管理し、エージェントがS3からファイルを読み取ってSlackに要約を投稿するためだけのカスタムグルーコードを書くことになります。

Mirageは、あらゆるバックエンドを単一の統合仮想ファイルシステム(VFS)の一部として扱うことで、このパラダイムを変えます。エージェントにSlack API、GitHub API、S3 SDKの使い方を教える代わりに、それらをディレクトリとしてマウントするだけです。エージェントは、すでに習得しているUnixツール(lscatgrepcpなど)を使用して、スタック全体と対話できるようになります。

Mirageが重要な理由

最新のLLMは膨大なコードとドキュメントのコーパスで学習されており、bashやファイルシステムのセマンティクスに非常に精通しています。リモートサービスをファイルシステムに抽象化することで、Mirageはこの既存の「知識」を活用し、ハルシネーションやAPI固有のエラーを最小限に抑えます。

主な利点は以下の通りです:

  • 統合された抽象化: Google Drive、Redis、ローカルディレクトリのいずれであっても、すべて標準的なファイルツリーとして表示されます。
  • Bashネイティブ: エージェントは標準のコマンドラインツールを使用して、サービス間で複雑な操作を実行できます。
  • ポータブルなワークスペース: 環境全体(リモートデータの状態を含む)を単一のファイルにスナップショットとして保存できるため、エージェントの実行を再現可能にし、デバッグを容易にします。
  • フレームワーク非依存: OpenAI Agents SDK、Vercel AI SDK、LangChain、Pydantic AIとシームレスに統合されます。

仕組み

Mirageは、エージェントとインフラストラクチャの間のミドルウェア層として機能します。ディスパッチャーと2層のキャッシュシステムを使用し、エージェントの対話がパフォーマンスと信頼性を確保できるようにします。

キャッシュ層

リモートAPIへの頻繁なアクセスは低速でコストがかかります。Mirageは堅牢な2層キャッシュを実装しています:

  1. インデックスキャッシュ: ディレクトリリストとメタデータを保存します。後続のlsfindコマンドは、TTL(Time-To-Live)が切れるまでローカルインデックスを参照します。
  2. ファイルキャッシュ: オブジェクトのバイトデータを保存します。最初の読み取りはオリジンからストリーミングされ、後続の読み取りはローカルキャッシュから提供されます。

これらは、一時的なタスクにはRAMを、永続的なマルチワーカー環境にはRedisを使用するように設定できます:

const ws = new Workspace(
  { '/s3': new S3Resource({ bucket: 'my-bucket' }) },
  {
    cache: new RedisFileCacheStore({ url: 'redis://localhost:6379/0', limit: '8GB' }),
    index: new RedisIndexCacheStore({ url: 'redis://localhost:6379/0', ttl: 600 }),
  }
);

はじめに

MirageはPythonとTypeScriptの両方のSDKを提供しており、既存のFastAPIやExpressアプリケーションに簡単に組み込むことができます。

Pythonのクイック例

from mirage import Workspace
from mirage.resource.s3 import S3Resource
from mirage.resource.ram import RAMResource

# 複数のソースをマウント
ws = Workspace({
    "/data": RAMResource(),
    "/s3": S3Resource(bucket="my-logs")
})

# サービス間操作の実行
await ws.execute("cp /s3/report.csv /data/local.csv")
await ws.execute("grep 'error' /data/local.csv | wc -l")

なぜ使用すべきか

自律型エージェントを構築している場合、自然言語を特定のAPI呼び出しにマッピングする「ツール呼び出し」ロジックの作成に多くの時間を費やしているはずです。Mirageを使用すると、ワークスペースを一度定義するだけで、エージェントが自然にナビゲートできるようになります。

Mirageを使用することで、単にエージェントを構築するだけでなく、再現可能な環境を構築することになります。ワークスペースはスナップショットを取得できるため、失敗したエージェントの実行を取り出し、demo.tarスナップショットをエクスポートして、障害発生時にエージェントが何を見ていたかを正確に調査できます。

Claude Codeや同様のCLIベースのエージェントを使用する開発者にとって、Mirageは軽量なデーモンを提供します。これにより、エージェントはクラウドインフラストラクチャをローカルフォルダであるかのように操作でき、サービスごとにカスタムツールを定義することなく、その有用性を大幅に拡大できます。

ソース

strukto-ai/mirage: A Unified Virtual Filesystem For AI Agents