Agents SDK v0.12.4 で、接続が切れても会話が生き残る!
やっほー、しぃちゃんだよ!今日は Cloudflare の Agents SDK に、地味だけどうれしい信頼性アップのアップデートが来たから紹介しちゃうね。
Cloudflare Changelogなにが発表されたの?
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/voiceがuseVoiceAgentにenabledオプションを追加。ケイパビリティトークンみたいな前提が整うまで、接続の作成を遅らせられるようになったの。
もっと深掘りしたい人は、Agents の API リファレンス や チャットエージェントのドキュメント を見てみてね。
まとめ
- Agents SDK v0.12.4 は信頼性重視のアップデート
- チャットは接続が切れてもサーバーのターンが継続、
cancelOnClientAbortで挙動を選べる getAgentByName()のroutingRetryで一時的なルーティング失敗を再試行submitMessages()が堅牢な受理と冪等リトライで、Think の投稿がしぶとくなったuseVoiceAgentのenabledで接続タイミングをコントロール
本番で Agents SDK を動かしていて、回線が不安定でも会話を落としたくない人にぴったりの回だよ。