>_tech-draft
Mastra AIのアイコン
Mastra AI
動画公開日
タイトル

Give Your AI Agent a Real Computer (Mastra Remote Sandboxes)

再生時間

15分 53秒

MastraとリモートサンドボックスでAIエージェント開発を加速!セキュリティと永続化の秘訣

ポイント

  • AIエージェント開発者向けに、Mastraとリモートサンドボックスで安全かつ強力なエージェントを構築する手法を紹介します。
  • リモートサンドボックスは、ホストから完全に隔離された使い捨て仮想環境で、セキュリティを保ちながらエージェントの機能拡張を実現します。
  • ワークスペースを活用することで、サンドボックスの一時的な性質を克服し、エージェントが生成したデータやスキルを永続的に保存し再利用する秘訣を解説します。

AIエージェントの進化は目覚ましく、私たちの業務や生活に革新をもたらしつつあります。しかし、エージェントがより高度なタスクをこなすためには、セキュリティの確保と、コード実行、ファイル操作といったより強力な機能へのアクセスが不可欠です。本記事では、TypeScriptエージェントフレームワーク「Mastra」が提供する「リモートサンドボックス」と「ワークスペース」を活用し、AIエージェントの能力を安全かつ強力に拡張する方法について、具体的な例を交えながら詳しく解説します。

リモートサンドボックスとは?エージェント開発の課題解決

リモートサンドボックスは、エージェントがタスクを実行するために一時的に起動し、完了後に消滅する使い捨ての仮想コンピュータです。各サンドボックスは完全に隔離されているため、エージェントはこれまで以上に大胆なアクションを安全に実行できるようになります。

サンドボックスがもたらすメリット

  • セキュリティの向上: エージェントがコードの記述と実行、任意のシェルコマンドの実行、ファイルシステムへのアクセスといった操作を行う際に、ホストサーバーから物理的に隔離されます。これにより、意図せず、あるいはプロンプトインジェクションの結果として、エージェントが機密情報を持ち出したり、サーバーをクラッシュさせたりするのを防ぎます。
  • 機能拡張: 隔離された環境により、エージェントはこれまでホストサーバー上ではリスクが高すぎた操作(例: 未知のPythonコードの実行)を安全に試せるようになります。
  • リソースの最適化: 長時間実行されるタスクを、より多くのCPUやメモリを持つマシンにオフロードしたり、複数のサンドボックスを並行して起動して、深い調査タスクを効率的に処理したりすることが可能です。

例えば、動画で紹介されている「Vibeコーディングプラットフォーム」では、各ユーザーが独自のサンドボックスを使ってコードを記述し、ファイルを生成し、さらにはサーバーを起動してリアルタイムでアプリケーションと対話できる環境が実現されています。

Mastraとリモートサンドボックスの基本

Mastraでリモートサンドボックスを導入するのは非常に簡単です。基本的なセットアップから見ていきましょう。

Mastraプロジェクトの作成とサンドボックスの組み込み

まず、pnpm create mastraコマンドでMastraプロジェクトを作成します。その後、ClaudeのようなAIにMastraスキルを使用させ、デフォルトの天気予報エージェントにDaytonaサンドボックスとワークスペースを割り当てることができます。Mastraは、DaytonaやE2Bといった人気のサンドボックスプロバイダーをサポートしています。

サンドボックスの構成とライフサイクル

エージェントにワークスペースとサンドボックスを割り当てるには、コード内でDaytonaサンドボックスをインスタンス化し、リソースを割り当てる必要があります。以下のような設定が可能です。

  • autostopInterval: サンドボックスが非アクティブ状態になってから一時停止するまでの時間を設定します。例えば、1分間の非アクティブ状態の後、サンドボックスは自動的に一時停止します。必要に応じて後で再開することも可能です。
  • ephemeral: trueに設定すると、サンドボックスはタスク完了後すぐに削除されます。これにより、リソースの無駄をなくし、セキュリティを強化できます。

サンドボックスでのコマンド実行と分離

Mastraエージェントがサンドボックスを持つと、「execute command」ツールが利用可能になります。これにより、エージェントはサンドボックス内で任意のシェルコマンドを実行できるようになります。

例えば、天気予報エージェントに摂氏(C)を華氏(F)に変換するよう指示し、execute commandツールを使ってawkコマンドを実行させる例が示されています。エージェントがこのコマンドを呼び出すと、以下の2つのことが起こります。

  1. 新しいサンドボックスの起動: ランダムなIDを持つ新しいサンドボックスが起動します。
  2. シェルコマンドの実行: 起動したサンドボックス内で、指定されたシェルコマンド(この場合はawkによる変換)が実行されます。

これにより、エージェントはホストサーバー上で直接危険なコマンドを実行するリスクなく、必要な処理を実行できます。サンドボックスは完全に隔離されているため、エージェントが機密情報にアクセスしたり、「フォークボム」と呼ばれる大量のプロセスを生成してサーバーをクラッシュさせたりするような、悪意ある、あるいは意図しない操作も物理的に遮断されます。

ファイルシステムと永続性の課題

すべてのエージェントはサンドボックス内で独自のファイルシステムを持ちます。これにより、エージェントはファイルを読み書きできます。例えば、エージェントに天気情報をweather.txtというファイルに書き込むよう指示すると、そのファイルはサンドボックス内に保存されます。

サンドボックスはデフォルトで使い捨て(ephemeral)の性質を持つため、停止するとデータは失われる可能性があります。しかし、設定によって一時停止したサンドボックスを再開し、以前に書き込んだファイルを読み出すことも可能です。Daytonaのサンドボックスでは、ブラウザ内シェルでSSH接続することもでき、cdlscatなどのコマンドを使ってファイルシステムを直接操作できます。

ただし、サンドボックスは一時的な環境であるため、ファイルをより永続的に保存する必要がある場合は、別のソリューションが必要です。ここで「ワークスペース」が重要になります。

より高度な活用例:活動計画アシスタント

Mastraとリモートサンドボックスは、より複雑なアプリケーションにも適用できます。ここでは、旅行者向けの活動計画アシスタントを例に見てみましょう。

このアシスタントは、単に天候に基づいて活動を推薦するだけでなく、特定の場所に応じた推奨活動のデータベースから情報を取得する必要があります。これは「RAG (Retrieval-Augmented Generation)」と呼ばれる技術の一例で、AIモデルが外部の知識ベースを参照して応答を生成します。具体的なアプローチとしては、場所ごとにフォルダを作成し、その中に天候に依存する活動を記述したMarkdownファイルを用意します。

PDF生成とスキルの活用

さらに、このエージェントは、ユーザーに活動計画をPDF形式で提供することが求められます。エージェントがPDFを生成するには、何らかのシェルコマンドを実行し、PDF生成に関するガイドラインが必要です。これは、特定の「スキル」に任せるのに最適なタスクです。例えば、Anthropicが提供するPDFスキルは、PDF生成に推奨されるPythonライブラリを概説し、ページの回転、透かしの追加、パスワード設定などの一般的なタスクに関するガイドを提供します。

しかし、ここでもセキュリティの課題があります。エージェントにホストサーバー上で任意のPythonコードを実行させるのは危険です。そのため、これらのPDF生成スキルもサンドボックス内で安全に実行する必要があります。

E2Bによるサンドボックスの初期設定

E2Bのようなサンドボックスプロバイダーを使用する場合、サンドボックスは初期状態で非常にシンプルな環境です。PDF生成のようなタスクを実行するには、LinuxパッケージやPythonパッケージのインストールが必要になります。E2Bには、サンドボックスが最初に作成されたときに特定のコマンドを実行するクールな機能があります。これにより、必要なパッケージが事前にインストールされた状態でサンドボックスを起動できます。この機能はテンプレート化されているため、今後のサンドボックスも同様の設定で迅速に作成できます。Daytonaも同様にスナップショットという形で対応しています。

外部ファイルシステムのマウント

エージェントがデータベースから読み込み、PDFを書き込むためには、ファイルをサンドボックスに転送する方法が必要です。Mastraで非常に効果的な方法は、サンドボックスにファイルシステムをマウントすることです。例では、S3をファイルシステムとして使用し、/dataパスに特定のファイルやフォルダを配置しています。これにより、サンドボックスが起動したときに、S3にアップロードされたガイドやデータファイルがすぐに利用可能になります。

ワークスペースによる永続化

リモートサンドボックスが使い捨ての性質を持つ一方で、ワークスペースはリモートサンドボックスに永続的なファイルシステムを提供します。これにより、実行間でスキルを再利用したり、ファイルを保存したりすることが可能になります。

例えば、一度ダウンロードしたPDFスキルや、エージェントが生成した活動計画のMarkdownファイルなどをワークスペースに保存しておけば、サンドボックスが再起動してもデータが失われることなく、効率的に作業を継続できます。これにより、エージェントはより複雑で連続的なタスクを、安全性を保ちつつ実行できるようになるのです。

まとめ

Mastraのリモートサンドボックスとワークスペースは、AIエージェント開発においてセキュリティ、機能拡張、効率化を同時に実現する強力なツールです。使い捨ての隔離された環境で安全にコードを実行し、シェルコマンドを操作できるだけでなく、ワークスペースによってその結果を永続化し、エージェントの能力を最大限に引き出すことができます。

本記事で紹介したDaytonaやE2Bとの連携、PDF生成といった具体的な活用例は、Mastraが提供する可能性のほんの一部に過ぎません。ぜひMastraとリモートサンドボックスを活用して、あなたのAIエージェントを次のレベルへと進化させてください。


参考動画

https://www.youtube.com/watch?v=Ix2X-sjVXjw