Overview
このガイドでは、 Atlas Agent Engineエージェントのローカル開発環境を開始する方法を学習できます。 agentengine dev コマンドは、アプリケーションコードを含むDockerイメージを構築し、マシン上でオーケストレーション 、エージェントサンドボックス、ツール サンドボックス、ローカルMongoDBインスタンスなど、完全なエージェントスタックを起動します。環境で が実行中いる場合は、CLI はサービス URL を出力するので、エージェントを開発およびテストできます。
前提条件
開始する前に、必ずagentengine CLI をインストールしてください。 CLI のインストール、認証、プロジェクトの登録方法の詳細については、「 インストールと認証 」を参照してください。
任意の構成設定
このセクションでは、ローカル開発環境を構成するために使用できるオプションの設定について説明します。
メモリを有効にする
agent.yamlファイルで features.memory: true を設定する場合は、ローカル環境を起動する前に、次の変数を .envファイルに追加します。
VOYAGE_API_KEY: メモリ埋め込みの生成に必要です。MONGOMEM_DB_NAME: 任意。メモリサーバーが書き込むMongoDBデータベース名。デフォルトはmdb_memory_<project-id>です。
ローカル開発設定の構成
dev.yamlファイルを使用してローカル サービス ポートの割り当てを上書きし、開発中にローカルMongoDBインスタンスをオンまたはオフにすることができます。 dev.yamlファイルをagent.yamlファイルと同じディレクトリに配置します。このファイルは任意であり、プラットフォームはこのファイルを .gitignoreファイルに追加しないため、設定をコミットして共有できます。
次の表では、dev.yamlファイルに含めることができるフィールドを説明しています。
フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
| int(1–65535) | no | プラットフォーム サービスのポート オーバーライド。有効なサービス名は、 |
| ブール | no | 開発スタックの一部としてローカルMongoDBインスタンスを起動するかどうか。デフォルトは |
| 整数 | no | ポートMongoDB は、ローカルで実行中いる場合に でリッスンします。デフォルトは |
次の例は、利用可能なすべてのフィールドを設定する dev.yamlファイルを示しています。
services: playground: port: 3000 oe: port: 8000 aer: port: 8001 tool: port: 8002 mongodb: local: true port: 27017
ローカル開発を開始する
コマンドは、アクティブな開発用のagentengine dev ホットリロードモードと、本番環境のようなトポロジーをテストするための 分離モードの 2 つのスタートアップモードをサポートしています。
ホットリロードモード(推奨)
ホットリロードモードでは、すべてのエージェントサービスが単一のアプリコンテナ内で実行され、ソースコードが直接マウントされます。ファイルを編集すると、監視ファイルによって変更が検出され、影響を受けるサービスが自動的に再読み込みされます。完全な再構築は必要ありません。
(任意) VS Code をDev コンテナとして添付します。
Visual Studio(VS)コードを使用する場合は、次の手順を実行して実行中のコンテナに直接接続します。これにより、完全な IntelliSense およびデバッグ サポートによる統合開発エクスペリエンスが提供されます。
VS Codeに Dev Containers 拡張機能をインストールします。
スタックがを実行中いる間に、Command Palette を開き、Dev Containers:/ Reopen in Container を選択します。
VS Code はアプリコンテナに接続し、その中のワークスペースを再読み込みします。
分離モード
--isolated フラグを使用して、ローカル環境を 分離モードで起動できます。分離モードでは、 本番環境のトポロジーをミラーリングして、 個別のコンテナ内で各エージェントサービスを起動します。このモードを使用して、サービス境界全体の動作を検証したり、本番固有の問題を再現したりします。コードはホストからマウントされていないため、コードを変更した後にイメージを再ビルドする必要があります。
ローカル環境を管理する
実行中環境を管理するには、次の agentengine dev コマンドを使用します。
ログの表示
実行中のすべてのサービスからログをストリーミングするには、次のコマンドを実行します。
agentengine dev logs
特定のサービスからログをストリーミングするには、サービス名を位置引数として渡します。
agentengine dev logs <service>
単一リポジトリでは、--all を渡して、共有すべてのワークスペーススタックのログをストリーミングします。
agentengine dev logs --all
ローカル スタックのステータス確認
agentengine dev status コマンドは、サービスごとのステータスや公開ホスト URL など、ローカル コンフィギュレーションスタックの現在の状態を表示します。以下の例では、コマンド構文を示しています。
agentengine dev status [--workspace <name>] [--all] [--json]
次の表では、使用可能なフラグについて説明しています。
Flag | 説明 |
|---|---|
| (MongoDB のみ) ルート |
| (MongoDB のみ) すべてのワークスペーススタックを対象とします。 |
| マシンが判読可能なステータスオブジェクトを stdout に出力します。 |
サービスを再起動する
agentengine dev restart コマンドは、イメージを再ビルドせずにホットリロード app コンテナと oe コンテナを再起動します。ホストの依存関係を変更した後にこれを使用します。以下の例では、コマンド構文を示しています。
agentengine dev restart [--workspace <name>]
このコマンドは、ホットリロードスタックのみを対象とします。 --all または 分離モードはサポートされていません。
新しい依存関係の追加
pyproject.tomlファイルに依存関係を追加する場合、uv.lockファイルがすでに存在する場合は、ローカル開発スタックによってその依存関係がインストールされない可能性があります。 uv.lockファイルが存在する場合、開発エントリポイントは --frozen フラグで環境を同期します。これにより、pyproject.tomlファイルではなくロックファイルから依存関係が解決されます。
新しい依存関係をインストールするには、次のコマンドを実行して uv.lockファイルを削除し、スタックを再起動します。
rm uv.lock agentengine dev stop agentengine dev up
または、スタックを再起動する前に、次のコマンドを実行してロックファイルを更新することもできます。
uv lock agentengine dev stop agentengine dev up
プライベート アーティファクト リポジトリの使用
エージェントが、 AWS CodeAtlas のプライベート PyPI やnpmレジストリなどのプライベート アーティファクト リポジトリでホストされているパッケージに依存している場合は、 agent.yamlファイルの artifact_repositories ブロックでそれらを宣言します。ホットリロードモードでは、agentengine dev up コマンドと agentengine dev restart コマンドによって、type: pypi エントリのレジストリ認証情報が自動的に構成されます。 CLI はnpmエントリを自動構成しません。 npmプライベート依存関係の場合は、 プロジェクト レベルの .npmrcファイルなどのローカルnpm構成を介して認証します。
宣言された PyPIリポジトリごとに、次のいずれかの方法で認証情報を提供します。
プロセス環境または
.envファイル内のUV_INDEX_<NAME>_PASSWORD(およびオプションで_USERNAME)変数。例、corps-pypiという名前のインデックスにはUV_INDEX_CORPS_PYPI_PASSWORDを設定します。宣言された
secretフィールド。これは.envファイルから読み取られます。AWS CodeAtlasインデックスの場合、アクティブなAWSプロファイルまたは SSO セッションから生成されたトークン。
宣言されたリポジトリの認証情報が解決されない場合、CLI は失敗し、確認するリポジトリとソースに名前を付けます。
自動構成をスキップして、UV_INDEX_* 変数を自分で管理するには、次のコマンドを実行します。
agentengine dev up --no-artifact-auth
注意
type: pypi エントリを宣言し、--isolated または --allモードで を起動すると、CLI は依存関係のインストールに失敗したコンテナを起動するのではなく、エラーを返します。
artifact_repositoriesスキーマの詳細については、「 エージェント YAML スキーマ 」を参照してください。プライベート アーティファクト リポジトリがクラウドビルドでどのように機能するかについては、「 プライベート アーティファクト リポジトリ 」を参照してください。
サービスの停止
コンテナを削除せずにローカル環境を一時停止するには、次のコマンドを実行します。
agentengine dev stop [--workspace <name>] [--all]
コマンドは、コンテナを削除せずに停止します。リビルドせずにコンテナを再開するには、agentengine dev up を再度実行します。
ローカル状態のリセット
すべてのコンテナを停止し、関連するボリュームと生成されたランタイム ファイルをすべて削除するには、次のコマンドを実行します。
agentengine dev clean [--workspace <name>] [--all]
警告
agentengine dev clean を実行すると、MongoDB Atlas Local ボリュームに保存されているすべてのローカルデータが永続的に削除されます。このコマンドを実行中前に、必要なデータをバックアップしてください。
消去後に agentengine dev up を実行してファイルを再生成し、新しいローカル コンテナを起動します。
リモート MCP サーバーの認証
agentengine dev mcp auth コマンドは、mcp.servers の下の agent.yamlファイルに構成されたリモート MCP サーバーの OAuth 認証情報を管理します。コマンドはログイン認証情報を ~/.agentengine/mcp-oauth の開発者認証キャッシュに書き込み、生成された agentengine dev up スタックはそのディレクトリを自動的にマウントします。
キャッシュはプロジェクトごとと MCP エンドポイントごとに異なります。あるプロジェクトからログインしても、別のプロジェクトにはログしないため、プロジェクトごとにagentengine dev mcp auth login 1 回 コマンドを実行する必要があります。 MCP サーバーの命名要件の詳細については、「 サーバーの命名規則 」を参照してください。
認証ログイン
次の例に示すように、agentengine dev mcp auth login コマンドを使用してサーバーのプロバイダー認可フローを開き、認証情報を 取得キャッシュに保存します。
agentengine dev mcp auth login <server> [--no-browser]
--no-browser フラグは、ブラウザでURL を開く代わりにログインURLを出力します。
サーバーが宣言する認可URLは、https スキームを使用する必要があります。サーバーが他のスキームを使用する認可エンドポイントを公開した場合、 コマンドは停止し、Refused to open unauthorized MCP OAuth URLエラーを生成します。
認証ステータス
次の例に示すように、agentengine dev mcp auth status コマンドを使用して、サーバーにキャッシュされた認証情報が存在するかどうかを確認します。
agentengine dev mcp auth status [server] [--check]
--check フラグは、キャッシュされた認証情報を使用して MCPサーバーに接続し、ツール リスト エンドポイントを呼び出してサーバーが認証情報を受け入れているかどうかを確認します。
認証アップロード
agentengine dev mcp auth upload コマンドを使用して、サーバーのローカル OAuthキャッシュをベース64でエンコードし、AGENTIC_MCP_OAUTH_B64_<SERVER> という名前のワークスペース シークレットとして保存します。このコマンドは、配置されたエージェントに認可情報を公開します。
以下の例では、コマンド構文を示しています。
agentengine dev mcp auth upload <server> [--workspace-id <id>] [--sync]
--workspace-id フラグはワークスペースIDを指定し、``--sync`` フラグはアクティブな配置のシークレットをアップロード後すぐに再読み込みします。
アップロードする前に、CLI はキャッシュに記録されているサーバーURL がagent.yamlファイル内のURLと一致していることを確認します。キャッシュが別のエンドポイントで記録されている場合、CLI はアップロードを拒否し、agentengine dev mcp auth login コマンドを再度実行するように要求します。
構成を検証する
agentengine agent validate コマンドは、ビルドパイプラインが使用するのと同じパーサーとバリデーターを使用して agent.yamlファイルをローカルにリンティングします。をビルドする前に実行して、誤った値、無効な値、ネットワーク ポリシー エラーをキャッチします。
以下の例では、コマンド構文を示しています。
agentengine agent validate [path] [--strict]
デフォルトのパスは ./agent.yaml です。明示的なパスを渡して、mongorepo ワークスペースなどの別の場所にファイルを検証します。
このコマンドは、次の終了コードを返します。
終了コード | 意味 |
|---|---|
|
|
| 検証に失敗しました。出力は、無効なフィールドを識別します。 |
| ファイルまたは I/O エラー。ファイルを読み取れませんでした。 |
コマンドは認証を必要とせず、有効なトークンなしで CI で実行できます。
artifact_repositories が空でない場合、コマンドは agent.yaml と同じディレクトリにあるプロジェクトツールに対して、宣言されたインデックス名をクロスチェックします。 Pythonエージェントの場合は、pyproject.toml と uv.lock が読み取られます。 TypeScript エージェントの場合は、package.json、.npmrc、package-lock.json が読み取られます。認証情報インジェクションがオプトインされているため、ロックファイル内の未宣言のプライベート URL が許可されます。クラウドクラウドをブロックするのと同じハード エラーが発生すると、検証が停止し、終了コード 1 が返されます。
ログインすると、コマンドは欠落またはスコープ外のartifact_repositories[].secret WORKSPACE_CONTEXT_NEEDEDagentengine init値に対する非ブロッキング警告も出力します。これには、アクティブな コンテキストなしでワークスペース スコープのエントリが宣言されている場合に--strict が含まれます。これらの警告を終了コード として扱うには、1 を渡します。プライベート アーティファクト リポジトリがクラウドビルドでどのように機能するかについては、「 プライベート アーティファクト リポジトリ 」を参照してください。
注意
agentengine agent validate コマンドは実験的なものです。そのフラグ、 出力形式、および終了コードは、バリデーターが展開してより多くの agent.yaml フィールドをカバーするにつれて変更される可能性があります。
次のステップ
ローカル環境で が実行中れたら、エージェントをテストし、コードを反復処理できます。エージェントを手動でテストしてコード変更を適用する方法については、「 エージェントのテスト 」を参照してください。