Antigravity の AgentKit 2.0 は、複数のエージェントが協働するマルチエージェント システムを構築するための強力なフレームワークです。ここで扱うのは本番環境で安定的に動作するエージェントオーケストレーション システムの設計から実装、運用までを、実践的なコード例を交えながら詳解します。
AgentKit 2.0 のアーキテクチャ概論
AgentKit 2.0 では、大規模なタスク処理を複数のエージェントに分散させるため、以下の3つの主要なエージェントロール が定義されています。
Manager Agent(統括役)
ユーザーからのリクエストを受け取り、タスクを分析・分解する
Surface Agent へのタスク委譲をオーケストレートする
複数の Surface Agent からの結果を集約し、ファイナルレスポンスを生成する
エラーハンドリングとフォールバック戦略の実施
Surface Agent(領域特化型)
特定のドメイン(データ分析、テキスト生成、画像処理など)に特化した処理を実行
Manager からの明確な指示に基づき、Worker Agent を管理する
専門領域における複雑な判断とワークフロー最適化
Worker Agent(実行役)
具体的なツール呼び出し、API 連携、データ処理を実行
Surface Agent からの指示を受け、単一の責務に特化した処理を担当
エラーログと実行メトリクスをレポートバック
このアーキテクチャにより、責務が明確に分離され、各層が独立してテスト・スケール可能になります。
Agents.md による宣言的定義
AgentKit 2.0 では、エージェントシステム全体を agents.md ファイルで宣言的に定義します。
# Company Analytics System
## Manager: AnalyticsOrchestrator
role: Coordinates data collection and reporting
instructions: |
1. Parse user queries for analytics scope
2. Delegate to DataCollector and ReportGenerator in parallel
3. Merge results with cross-validation
4. Return formatted dashboard JSON
## Surface: DataCollector
role: Gathers metrics from multiple sources
delegated_workers:
- GoogleAnalyticsWorker
- StripeWorker
- CustomMetricsWorker
instructions: |
Normalize all metrics to common schema
Validate completeness before returning
## Worker: GoogleAnalyticsWorker
role: Fetch GA4 data via API
instructions: |
1. Authenticate with service account
2. Query date range from parent instruction
3. Transform response to standard format
4. Return with timestamp
このマークダウン形式により、チーム全体がエージェントシステムの構造を一目で理解でき、バージョン管理も容易になります。
Manager Agent によるタスク分解パターン
Manager Agent は、複雑なリクエストを適切に分解し、複数の Surface/Worker に委譲する必要があります。以下は、e-コマースプラットフォームの注文処理を例にしたパターンです。
// Manager Agent: OrderProcessingOrchestrator
const managerInstructions = `
You are the Order Processing Manager. Your role is to:
1. Parse incoming orders and validate structure
2. Delegate payment processing to PaymentSurface (parallel)
3. Delegate inventory management to InventorySurface (parallel)
4. Delegate notification to NotificationSurface (parallel)
5. Aggregate results and detect conflicts
6. If conflicts detected, trigger RollbackSurface
7. Return final order status with timestamp
Error handling:
- If any Surface returns timeout, delegate to TimeoutRecoveryWorker
- Log all delegations with parent_task_id for tracing
` ;
// Implementation in AgentKit 2.0
const manager = new Manager ({
name: 'OrderProcessingOrchestrator' ,
model: 'claude-opus' ,
instructions: managerInstructions,
surfaces: [
'PaymentSurface' ,
'InventorySurface' ,
'NotificationSurface' ,
'RollbackSurface'
],
parallel_workers: 3 , // Max concurrent Surface invocations
timeout: 30000 , // 30 seconds total
});
Manager が Surface に委譲するとき、コンテキスト情報(ユーザーID、リクエストメタデータ、タイムスタンプ)が自動的に引き継がれます。これにより、各層でのトレーサビリティが確保されます。
Surface Agent による領域特化と並行実行
Surface Agent は、Manager からの高レベルな指示を受け、複数の Worker を並行実行します。以下は、データ分析領域の Surface の例です。
// Surface Agent: DataAnalysisSurface
const surfaceInstructions = `
You are the Data Analysis Surface. Your responsibilities:
1. Receive analysis requests from Manager
2. Decompose into atomic analysis tasks:
- StatisticalAnalysisWorker (descriptive stats, correlations)
- AnomalyDetectionWorker (outlier identification)
- TrendAnalysisWorker (time-series forecasting)
3. Execute Workers in parallel using delegation_ids
4. Validate consistency across results
5. Synthesize findings with confidence levels
For each Worker result:
- Check for data quality issues
- Map outputs to common schema
- Assign confidence scores
- Return integrated analysis report
` ;
// Parallel Worker execution
const surface = new Surface ({
name: 'DataAnalysisSurface' ,
model: 'claude-sonnet' ,
instructions: surfaceInstructions,
workers: {
StatisticalAnalysisWorker: {
role: 'Descriptive statistics and correlations' ,
timeout: 15000
},
AnomalyDetectionWorker: {
role: 'Outlier detection and validation' ,
timeout: 15000
},
TrendAnalysisWorker: {
role: 'Time-series forecasting' ,
timeout: 15000
}
},
max_parallel: 3 ,
});
Surface Agent の重要なポイントは、Worker の結果を単に集約するのではなく、クロスバリデーションを実施し、矛盾や不一致を検出することです。これにより、本番環境での信頼性が大幅に向上します。
Worker Agent と Tool Chain の設計
Worker Agent は、具体的なツール呼び出しと外部 API 連携を担当します。Tool Chain アーキテクチャにより、複数のツールを組み合わせた複雑な処理をワーカーに持たせることができます。
// Worker Agent: DatabaseQueryWorker
const workerInstructions = `
You are the Database Query Worker. Execute with precision:
1. Receive query specification from parent Surface
2. Build parameterized SQL (using prepared statements)
3. Execute against READ_REPLICA for non-blocking reads
4. Transform results to standard JSON schema
5. Log execution metrics (rows returned, duration, memory)
Available tools:
- execute_read_query(sql, params, timeout=5000)
- validate_schema(data, schema_id)
- log_execution_metric(metric_name, value)
Security constraints:
- Maximum 10,000 rows per query
- Queries must match pre-approved patterns
- Log all parameters for audit trail
` ;
// Tool Chain configuration
const toolChain = {
tools: [
{
name: 'execute_read_query' ,
description: 'Execute SELECT query on replica' ,
input_schema: {
sql: { type: 'string' , description: 'Parameterized SQL' },
params: { type: 'array' , description: 'Query parameters' },
timeout: { type: 'number' , default: 5000 }
}
},
{
name: 'validate_schema' ,
description: 'Validate result against schema' ,
input_schema: {
data: { type: 'object' },
schema_id: { type: 'string' }
}
},
{
name: 'log_execution_metric' ,
description: 'Log performance metrics' ,
input_schema: {
metric_name: { type: 'string' },
value: { type: 'number' }
}
}
]
};
const worker = new Worker ({
name: 'DatabaseQueryWorker' ,
model: 'claude-haiku' , // Cost-optimized for simple tasks
instructions: workerInstructions,
tools: toolChain,
execution_timeout: 30000 ,
});
このアプローチにより、Worker は LLM の汎用性を活かしつつ、ツール経由で確実なシステムインタフェースを保証します。
エラー回復と分散トランザクション
本番環境では、ネットワーク遅延、タイムアウト、部分的な失敗が避けられません。AgentKit 2.0 は、以下のエラー回復パターンをサポートしています。
1. タイムアウト検出と再試行
// Manager-level timeout handling
const managerConfig = {
surface_timeout: 30000 ,
worker_timeout: 15000 ,
max_retries: 2 ,
backoff_strategy: 'exponential' , // 1s, 2s, 4s
error_handlers: {
TIMEOUT : ( context ) => {
// Escalate to faster fallback
return context. delegateTo ( 'FastPathSurface' );
},
NETWORK_ERROR : ( context ) => {
// Queue for retry with state preservation
return context. deferWithState ();
}
}
};
2. 分散トランザクションの整合性
複数の Surface が並行実行される場合、結果の整合性を確保する必要があります。
// Saga Pattern implementation in Manager
const managerOrchestration = `
Execute compensation transactions if any Surface fails:
Primary flow:
1. PaymentSurface -> charge_id returned
2. InventorySurface -> reserved_items returned
3. ShippingSurface -> shipment_id returned
If InventorySurface fails after PaymentSurface succeeded:
1. Trigger PaymentSurface.refund(charge_id)
2. Wait for refund confirmation
3. Log failed order with rollback_reason
4. Notify user with specific failure details
Use idempotency keys for all operations:
- payment_idempotency_key = hash(order_id + 'payment')
- inventory_idempotency_key = hash(order_id + 'inventory')
` ;
このパターンにより、一部のサービスが失敗しても、全体のデータ整合性が維持されます。
コンテキスト共有メカニズム
マルチエージェントシステムにおいて、各エージェントが共通のコンテキスト(ユーザー情報、セッション ID、認可トークン)を保持することは重要です。
// AgentKit 2.0 Context Management
const contextSchema = {
request_id: 'uuid' ,
user_id: 'string' ,
session_token: 'encrypted_jwt' ,
auth_scope: [ 'read:data' , 'write:orders' ],
tenant_id: 'string' ,
execution_deadline: 'timestamp' ,
// Propagate through all delegations
propagate_to_children: true ,
// Audit trail
agent_chain: [ 'Manager' , 'Surface' , 'Worker' ]
};
// Automatic context injection
manager. delegate (surface, task, {
context: requestContext,
preserve_context: true , // Auto-propagate child calls
audit_log: true
});
各層のエージェントは、このコンテキストを読み取り専用で参照でき、新しいメタデータを追記できます。これにより、エンドツーエンドのトレーシングが可能になります。
コスト最適化戦略
複数のエージェントを並行実行するとなると、LLM API の呼び出しコストが膨大になる可能性があります。以下は実践的なコスト最適化テクニックです。
1. モデル階層化
// Tier cost models by task complexity
const agentModelConfig = {
Manager: 'claude-opus' , // 高コスト、高精度
Surface: 'claude-sonnet' , // 中コスト、中精度
Worker: 'claude-haiku' , // 低コスト、軽量
};
// Dynamic model selection based on task
if (task.complexity === 'simple' ) {
worker.model = 'claude-haiku' ;
} else if (task.complexity === 'complex' ) {
worker.model = 'claude-sonnet' ;
}
2. キャッシング戦略
// Leverage AgentKit's prompt caching
const cachedSurface = {
name: 'DataAnalysisSurface' ,
system_prompt_cache: true , // Cache surface instructions
worker_instructions_cache: true ,
// Long context cached rarely changes
cached_context: {
company_taxonomy: LARGE_JSON ,
metric_definitions: LARGE_JSON ,
}
};
// Cache hit results in 90% cost reduction for follow-up calls
3. バッチ処理による効率化
// Batch multiple worker tasks
const batchConfig = {
batch_size: 50 ,
batch_deadline: 60000 , // 1 minute
// Process queue asynchronously
workers_per_batch: 3 ,
// Cost reduction: ~40% via batch API
batch_api_enabled: true
};
セキュリティサンドボックス
マルチエージェントシステムでは、各エージェントが無制限の権限を持たないようにする必要があります。
// AgentKit 2.0 Sandbox Configuration
const sandboxPolicy = {
worker_capabilities: {
DatabaseQueryWorker: {
allowed_tables: [ 'orders' , 'products' ],
blocked_tables: [ 'users_pii' , 'admin_logs' ],
max_rows: 10000 ,
read_only: true
},
NotificationWorker: {
allowed_channels: [ 'email' , 'slack' ],
blocked_channels: [ 'sms' ], // Expensive, requires explicit approval
rate_limit: 1000 // per minute
}
},
// Prevent prompt injection via input validation
input_validation: {
user_query : ( input ) => {
// Tokenize and check for injection patterns
return sanitizeInput (input);
}
},
// Audit all tool invocations
tool_invocation_logging: true
};
本番運用の完全チェックリスト
AgentKit 2.0 システムを本番環境にデプロイする前に、以下のチェックリストを実施してください。
デプロイ前チェック
エージェント間通信テスト
Manager から各 Surface への委譲が正常に動作するか
Surface から各 Worker への委譲が正常に動作するか
タイムアウト時の回復ロジックが発動するか
エラーハンドリング検証
各層で予期しない入力に対する動作
部分的な失敗シナリオ(1つの Worker が失敗し、他は成功)
カスケード失敗(Manager が失敗し、委譲された Worker がスタック)
パフォーマンステスト
並行 Worker 数を増やしたときのレスポンスタイム
メモリ使用量の推移
API レート制限への対応
セキュリティ監査
サンドボックス制約が機能しているか
権限昇格の試みが検出されるか
監査ログが完全に記録されるか
本番監視指標(SLO)
const productionSLO = {
availability: 0.999 , // 99.9% uptime
p99_latency: 5000 , // 5 seconds
error_rate: 0.001 , // 0.1%
// Agent-specific metrics
manager_p99: 4000 ,
surface_p99: 2000 ,
worker_p99: 1000 ,
// Cost metrics
max_cost_per_request: 0.05 , // USD
monthly_budget: 10000
};
実装の検証手順
以下は、本番環境での動作確認に必要なステップです。
1. 段階的ロールアウト
初日は全トラフィックの 1% を新システムに振り分け、24 時間の監視を行います。エラーがなければ 10%、50%、100% と段階的に増やします。
2. キャナリアデプロイ
// Traffic splitting configuration
const deploymentConfig = {
v1_system: { weight: 0.99 , agentkit: false },
v2_agentkit: { weight: 0.01 , agentkit: true },
// Monitor divergence in results
divergence_tolerance: 0.05 , // 5% difference acceptable
// Automatic rollback if divergence exceeds threshold
auto_rollback: true
};
3. フィードバックループ
ユーザーのフィードバック、エラーログ、パフォーマンスメトリクスを定期的に収集し、システムの改善に反映させます。
個人開発者の視点から(実体験メモ)
ここまでの要点
Antigravity AgentKit 2.0 は、スケーラブルで信頼性の高いマルチエージェントシステムを構築するための包括的なフレームワークです。本記事で解説した Manager/Surface/Worker のアーキテクチャ、コンテキスト共有、エラー回復、コスト最適化、セキュリティサンドボックスを組み合わせることで、本番グレードの AI 駆動アプリケーションを実現できます。
段階的なロールアウトと継続的な監視を通じて、安定した運用基盤を確立してください。