Skip to content

原文(日本語に翻訳)

サブエージェントの深さトラッキングを修正:再開されたサブエージェントが元のスポーン深度を復元するようになり、フォークされたサブエージェントが深度上限にカウントされるようになった。

原文(英語)

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" を使用したフォーク構成に影響します
  • 深度制限を意図的に超えたいワークフローは、設計を見直す必要がある場合があります
  • 修正前のバグを利用して深い階層のエージェントを動作させていた場合、修正後は深度制限エラーが発生する可能性があります

関連情報