原文(日本語に翻訳)
サブエージェントの深さトラッキングを修正:再開されたサブエージェントが元のスポーン深度を復元するようになり、フォークされたサブエージェントが深度上限にカウントされるようになった。
原文(英語)
Fixed subagent depth tracking: resumed subagents now restore their original spawn depth, and forked subagents now count toward the depth cap.
概要
マルチエージェントワークフローにおけるサブエージェントの深さ(ネスト深度)トラッキングに関する2つのバグが修正されました。1つ目は、再開されたサブエージェントが元のスポーン深度を忘れてしまう問題(深度制限の回避が可能だった)。2つ目は、フォークされたサブエージェントが深度上限にカウントされていなかった問題(意図しないネスト制限の超過が可能だった)。この修正により、サブエージェントの深度制限が一貫して機能するようになりました。
基本的な使い方
特別な操作は必要ありません。Claude Code 2.1.187以降では、サブエージェントの深度トラッキングが自動的に正しく機能します。
ワークフローでのサブエージェント使用例:
javascript
// workflow.js
const result = await agent("タスクAを実行してください", {
label: "agent-a"
});
// 修正後: このエージェントが再開・フォークされても深度が正確に追跡される実践例
複数階層のサブエージェント構成
javascript
// 深いネスト構成のワークフロー例
export const meta = {
name: "deep-workflow",
description: "多段階サブエージェントワークフロー"
};
// レベル1のエージェント
const level1 = await agent("メインタスクを分解してください", {
schema: TASK_SCHEMA
});
// レベル2のエージェント(level1から生成されたサブタスクを処理)
const level2Results = await parallel(level1.subtasks.map(task => () =>
agent(`サブタスクを実行: ${task.description}`, {
label: `level2-${task.id}`
})
));
// 修正後: 各サブエージェントの深度が正確にカウントされ、制限が機能するフォークされたエージェントの深度管理
javascript
// セッション分岐(フォーク)を使用する場合
const result = await agent("問題を解決してください", {
isolation: "worktree" // フォークを使用
});
// 修正後: フォークされたエージェントも深度制限に正しくカウントされる再開されたサブエージェントの安全な使用
javascript
// 中断されたワークフローを再開する場合
// 修正後: 再開時に元の深度が正確に復元される
const workflow = await Workflow({
scriptPath: "./my-workflow.js",
resumeFromRunId: "wf_abc123"
});注意点
- サブエージェントのデフォルト最大深度は環境によって異なります。ドキュメントで確認してください
- この修正は特にワークフローを
--resumeで再開した場合や、isolation: "worktree"を使用したフォーク構成に影響します - 深度制限を意図的に超えたいワークフローは、設計を見直す必要がある場合があります
- 修正前のバグを利用して深い階層のエージェントを動作させていた場合、修正後は深度制限エラーが発生する可能性があります