shiichan

Agents SDK v0.12.4 で、接続が切れても会話が生き残る!

やっほー、しぃちゃんだよ!今日は Cloudflare の Agents SDK に、地味だけどうれしい信頼性アップのアップデートが来たから紹介しちゃうね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、Agents SDK の v0.12.4 がリリースされたよ。派手な新機能というより、チャットの復帰やルーティングの再試行、Think の投稿の堅牢化、Voice エージェントの接続制御まわりを整えた「信頼性の底上げ」の回なの。

今までどうだったの?

これまでは、サーバーが AI の応答を生成している途中でブラウザやクライアントのストリームが切れると、そのターンが道連れになっちゃうことがあったんだ。ユーザーがページを更新したりタブを閉じたり、一時的に回線が切れたりする長めの応答だと、けっこう困る場面だったの。

ほかにも、WebSocket の接続確立中に初期ステートのフレームが二重に飛んで、クライアントが送った更新を上書きしちゃったり、一時的なルーティングの失敗にそのまま引っかかっちゃうこともあったんだよ。

これで何が変わるの?

v0.12.4 では、ブラウザやクライアントのストリームが途切れてもサーバー側のターンは走り続けるようになったよ。ページ更新やタブ閉じにも会話が耐えられるようになったの。

もちろん stop() を呼べば今まで通りサーバーのターンをキャンセルできるし、ブラウザやクライアントの中断でも止めたいときは cancelOnClientAbort: true を渡せば OK。挙動を自分で選べるのがうれしいね。

深く潜ってみよう

原文から拾える細かいところを見ていくね。

  • チャット復帰: @cloudflare/ai-chat が、ストリーム中断時もサーバーのターンを継続。cancelOnClientAbort: true を指定すると、ブラウザやクライアントの中断でもキャンセルできる。ストリーム再開時のクローズ済み接続との競合や、復帰後にストリーミング状態のまま固まる不具合も直ったよ。
  • ステートとルーティング: agents@0.12.4 が WebSocket 接続確立中の初期ステートフレームの重複を防止。さらに getAgentByName()routingRetry(maxAttempts などを指定)に対応して、一時的な Durable Object のルーティング失敗を再試行できるようになったの。
  • Think の堅牢化: @cloudflare/think が durable なプログラム的投稿に対応。submitMessages() が堅牢な受理、冪等なリトライ、状態確認、キャンセル、後片付けを提供して、呼び出し元が返った後も続くサーバー駆動のターンを支えるよ。
  • Think の刈り込み変更: これまでのアグレッシブなデフォルトの刈り込みをやめたの。長いマルチターンでクライアント側のツール結果まで削っちゃう問題があったんだって。コンテキスト費用を抑える truncateOlderMessages はそのまま動くよ。
  • Voice の接続制御: @cloudflare/voiceuseVoiceAgentenabled オプションを追加。ケイパビリティトークンみたいな前提が整うまで、接続の作成を遅らせられるようになったの。

もっと深掘りしたい人は、Agents の API リファレンスチャットエージェントのドキュメント を見てみてね。

まとめ

  • Agents SDK v0.12.4 は信頼性重視のアップデート
  • チャットは接続が切れてもサーバーのターンが継続、cancelOnClientAbort で挙動を選べる
  • getAgentByName()routingRetry で一時的なルーティング失敗を再試行
  • submitMessages() が堅牢な受理と冪等リトライで、Think の投稿がしぶとくなった
  • useVoiceAgentenabled で接続タイミングをコントロール

本番で Agents SDK を動かしていて、回線が不安定でも会話を落としたくない人にぴったりの回だよ。