Agents SDK v0.17.0 で、サブエージェントが裏で走り出す!
やっほー、しぃちゃんだよ! 今日は AI エージェントを作る人にうれしいアップデートを見つけちゃったから紹介するね。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog で、Agents SDK の v0.17.0 が発表されたよ。目玉はふたつ。ひとつはバックグラウンドで動く「サブエージェント」、もうひとつはターンの入口をひとつにまとめた runTurn なの。あわせて、デプロイやリコネクトをまたいでチャットエージェントを動かし続けるための、復旧まわりの改善もたくさん入ったんだって。
今までどうだったの?
これまでは、重い処理を別のサブエージェントに投げると、呼び出したターンが終わったタイミングで中断されちゃうことがあったの。長時間の取り込み処理みたいな「終わるまで待てない仕事」を裏で安全に走らせるのは、けっこう気をつかう作業だったんだよね。
これで何が変わるの?
runAgentTool に detached を渡すと、サブエージェントを待たずに投げっぱなしで動かせるようになったよ。呼び出したターンが終わっても、eviction やデプロイを生き延びる backbone がそのランを持ち続けてくれるの。だから「実行して、あとで結果を受け取る」がずっと素直に書けるんだ。
ターンの入口も runTurn(options) にまとまったよ。mode を切り替えるだけで、待機・投入・ストリーミングを使い分けられるの。
深く潜ってみよう
detached なランは、成功時にちょうど一回だけ完了処理が走る(exactly-once-on-the-happy-path)ように設計されているの。暴走しないように maxBudgetMs(デフォルト 24h)の上限があって、cancelAgentTool(runId) でいつでも止められる。detached: { notify: true } にすると、終わったランがチャットに結果メッセージを差し込んでくれるから、onFinish を手配線しなくてもモデルが結果に反応してくれるんだって。
サブエージェント側は reportProgress() で進捗も返せるよ。
await this.reportProgress({
fraction: 0.6,
phase: "deploying",
message: "Generating menu page",
});
進捗は useAgentToolEvents から AgentToolRunState.progress に出てくるから、裏で走っているランの一覧をライブのバーで見せられるの。milestone に名前を付けると、あとから再生できる耐久的な行に昇格させられるよ。
runTurn の 3 つのモードはこんな感じ。
await this.runTurn({ mode: "wait", messages }); // saveMessages / continueLastTurn
await this.runTurn({ mode: "submit", messages }); // durable submitMessages
await this.runTurn({ mode: "stream", messages }); // chat()
全部が共通の内部 admission パスを通るようになって、以前デッドロックの原因になっていたネストしたブロッキング admission には、はっきりエラーを投げてくれるようになったよ。
復旧まわりだと、chatStreamStallTimeoutMs のストール検知ウォッチドッグ、中断されたツール呼び出しの修復、リコネクト後に status が固まる不具合の修正なんかが入ったの。@cloudflare/think と @cloudflare/ai-chat をひとつのモデルに寄せていく流れが続いているんだね。
アップデートは各パッケージを @latest で入れ直すだけ。くわしくは Think のドキュメント、Code Mode のドキュメント、Agents のドキュメントを見てみてね。
まとめ
runAgentToolのdetachedで、eviction やデプロイを生き延びるバックグラウンド・サブエージェントが動かせるようになったよmaxBudgetMs(デフォルト 24h)とcancelAgentToolで暴走を防止。reportProgress()でライブ進捗も返せるrunTurn(options)がターンの入口をwait/submit/streamの 3 モードにまとめてくれた- ストール検知やツール呼び出し修復など、復旧・信頼性まわりの改善も盛りだくさん
長時間ジョブを裏で回したい人や、チャットエージェントをデプロイ越しに安定させたい Workers 開発者に刺さるアップデートだよ!