Skip to content

原文(日本語に翻訳)

TeammateIdleTaskCompleted フックが {"continue": false, "stopReason": "..."} をサポートしてチームメイトを停止できるよう修正(Stop フックの動作と統一)

原文(英語)

Fixed TeammateIdle and TaskCompleted hooks to support {"continue": false, "stopReason": "..."} to stop the teammate, matching Stop hook behavior

概要

TeammateIdleTaskCompleted フックで {"continue": false, "stopReason": "..."} を返してもチームメイトが停止しない問題がありました。この修正により、Stop フックと同様に、これらのフックからもチームメイトの実行を制御できるようになりました。マルチエージェントの制御フローが統一され、より柔軟な停止条件を設定できます。

基本的な使い方

json
// TeammateIdle または TaskCompleted フックの戻り値
{
  "continue": false,
  "stopReason": "タスクが完了したため停止します"
}

実践例

TaskCompleted フックでの条件付き停止

javascript
// フックスクリプト例
module.exports = async function taskCompletedHook(event) {
  const { task, result } = event;

  // タスクが成功した場合は停止
  if (result.success) {
    return {
      continue: false,
      stopReason: "タスクが正常に完了しました"
    };
  }

  // 失敗した場合は続行(リトライなど)
  return { continue: true };
};

TeammateIdle フックでのタイムアウト制御

javascript
// アイドル状態が長すぎる場合に停止
module.exports = async function teammateIdleHook(event) {
  const { idleDuration } = event;

  if (idleDuration > 300000) { // 5分以上アイドル
    return {
      continue: false,
      stopReason: "アイドル時間が上限を超えました"
    };
  }

  return { continue: true };
};

条件付きタスク管理

javascript
// 最大タスク数に達したら停止
let taskCount = 0;
module.exports = async function taskCompletedHook(event) {
  taskCount++;

  if (taskCount >= 10) {
    return {
      continue: false,
      stopReason: `最大タスク数 (10) に達しました`
    };
  }

  return { continue: true };
};

注意点

  • この修正により TeammateIdleTaskCompletedStop フックの動作が統一されました
  • stopReason フィールドはオプションですが、デバッグのために指定することを推奨します
  • continue: false を返した場合、チームメイトは現在の処理を完了してから停止します

関連情報