エラーで失敗したバックグラウンドサブエージェントが親エージェントに部分的な進捗を報告しない問題の修正
原文(日本語に翻訳)
エラーで失敗したバックグラウンドサブエージェントが親エージェントに部分的な進捗を報告しない問題を修正しました。
原文(英語)
Fixed background subagents that fail with an error not reporting partial progress to the parent agent
概要
マルチエージェント構成でバックグラウンドサブエージェントがエラーで途中終了した場合、それまでに完了した作業(部分的な進捗)が親エージェントに報告されず、完全に失われる問題がありました。この修正により、サブエージェントがエラーで終了した場合でも、それまでの作業成果が親エージェントに伝達されるようになります。
基本的な使い方
修正前の動作
# サブエージェントによる大規模タスクの実行
親エージェント → サブエージェントAに「100ファイルを分析してください」を依頼
サブエージェントA:
ファイル1〜60: 分析完了 ✓
ファイル61: エラー発生(例: ネットワークエラー)
# 修正前: ファイル1〜60の分析結果がすべて失われる
# 親エージェントへの報告: 「エラーが発生しました」のみ修正後の動作
# 同じシナリオ
サブエージェントA:
ファイル1〜60: 分析完了 ✓
ファイル61: エラー発生
# 修正後: 完了した部分の結果が親エージェントに報告される
# 親エージェントへの報告:
# 「ファイル1〜60の分析結果: [結果データ]
# ファイル61でエラーが発生しました: [エラー詳細]」実践例
### 大規模コードベースの分析タスク
多数のファイルを並列で分析するマルチエージェントタスク:
# 親エージェントの指示
"プロジェクト全体(200ファイル)のセキュリティ脆弱性を分析してください"
# サブエージェントへの分割
- サブエージェント1: src/api/ (50ファイル)
- サブエージェント2: src/auth/ (30ファイル) ← ファイル25でエラー
- サブエージェント3: src/utils/ (40ファイル)
# 修正後の動作
サブエージェント2が途中でエラーになっても:
- ファイル1〜24の分析結果は親エージェントに返される
- 親エージェントは部分的な結果を活用して次のアクションを決定できる### 長時間のデータ処理タスク
時間のかかる処理中にエラーが発生した場合:
python
# バックグラウンドサブエージェントによる処理
# 「1000件のデータエントリを処理してください」
# 処理途中(500件完了後)にタイムアウトエラーが発生した場合:
# 修正前: 500件分の処理結果が失われる
# → 最初からやり直しが必要
# 修正後: 500件分の処理結果が親エージェントに報告される
# → 残り500件から処理を継続できる### 並列エージェントによるマルチステップタスク
複数サブエージェントが協調してタスクを実行する場合:
親エージェント:
「リポジトリをクローンして、テストを実行し、レポートを生成してください」
→ サブエージェントAに「テスト実行」を依頼
テスト1〜50: 実行完了
テスト51: 環境エラーで失敗
修正後: テスト1〜50の結果が親エージェントに返され、
親エージェントはその結果でレポートを生成することが可能注意点
- この修正はバックグラウンドサブエージェント(非同期で実行されるサブエージェント)に適用されます。同期実行のサブエージェントとは異なる場合があります。
- 部分的な進捗の報告は、サブエージェントがどのように進捗を記録しているかに依存します。サブエージェントが定期的に結果を返すように実装されている必要があります。
- エラーで終了した場合でも完了した部分の作業が保持されることで、マルチエージェントシステムの耐障害性が向上します。
- 親エージェントは受け取った部分的な進捗情報に基づいて、タスクの継続や再試行の戦略を決定できます。