Agents SDK 0.17.0 がリリースされた。長時間タスクを呼び出し元の turn から切り離して走らせ、進捗と milestone をクライアントへ返しつつ、turn 受け付けを runTurn に集約した。あわせて @cloudflare/think と @cloudflare/ai-chat の復旧経路を揃える修正が多数入っている。
runAgentTool に detached オプションが追加され、sub-agent を fire-and-forget で起動できる。ハンドルは即返り、実行本体は eviction やデプロイをまたいで durable な backbone が所有する。完了は warm fast path と reconcile backbone で happy path 上は exactly-once に近い形で届き、maxBudgetMs(既定 24 時間)と cancelAgentTool(runId) で上限を設けられる。
class OrdersAgent extends Think {
async startImport(input) {
await this.runAgentTool(ImportAgent, {
input,
detached: { onFinish: "onImportDone", maxBudgetMs: 60 * 60 * 1000 },
});
}
async onImportDone(run, result) {}
}detached: { notify: true } なら完了結果をチャットへ注入でき、子側の reportProgress は AgentToolRunState.progress と useAgentToolEvents 経由で親クライアントへ流れる。milestone を名前付きすると durable 行として残り、onMilestones で "narrate" または "react" の synthetic メッセージに載せられる。
turn 受け付けは @cloudflare/think の runTurn に集約された。mode: "wait" は saveMessages / continueLastTurn、"submit" は durable な submitMessages、"stream" は chat に対応する。stream は配列と関数入力の両方を受け付け、入れ子の blocking admission は共有経路で明確なエラーになる。
await this.runTurn({ mode: "wait", messages });
await this.runTurn({ mode: "submit", messages });
await this.runTurn({ mode: "stream", messages });復旧まわりの主な変更は次のとおり。
AIChatAgentが opt-in のchatStreamStallTimeoutMsでモデル/transport ストリームの停止を検知し、chatRecovery有効時は deploy や eviction と同じ bounded recovery へ流せる- 中断された server-tool 呼び出しを再推論前に修復し、
AI_MissingToolResultsErrorを避ける(repairInterruptedToolPartで形状を上書き可能) - reconnect と turn 開始の競合で AI SDK の
statusがreadyに固着する問題を修正し、復旧中はuseAgentChatのisRecoveringが即反映される - 端末的な WebSocket close ではクライアントが再接続を止め、
connectionError/onConnectionErrorで表出する - デプロイ後に healthy な sub-agent run が
interrupted扱いで捨てられないようになった - sub-agent facet から Agent Workflows を起動でき、コールバックと Workflow RPC が起点 facet へ戻る
そのほか、agents/chat/react が useAgentChat と transport ヘルパーの共通コアとなり、@cloudflare/think/react と @cloudflare/ai-chat/react は薄いラッパーになった。ルート agents と @cloudflare/codemode は ai / zod を peer 必須から外し、AI 向け entry のみ peer を要求する。Code Mode の DynamicWorkerExecutor 既定タイムアウトは 30 秒から 60 秒へ延び、実行後に動的 Worker と RPC stub を破棄する。Voice は AI SDK の fullStream をサポートし、MCP は async context を継承しないコールバックから server-to-client request を送れる。server actions と channels は experimental の下地のみで、本番依存は推奨されない。
アップグレードは次のパッケージを latest へ揃える。
pnpm add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest @cloudflare/codemode@latest @cloudflare/voice@latest