Qoder Cloud Agents は Server-Sent Events (SSE) プロトコルを使用して、Agent のリアルタイム実行状態をクライアントへプッシュします。ポーリングは不要で、一度接続を確立すれば継続的にすべてのイベントを受信できます。Documentation Index
Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
Use this file to discover all available pages before exploring further.
接続 URL
SSE 形式
各イベントは 3 行で構成され、空行で区切られます。| フィールド | 説明 |
|---|---|
id | イベント一意識別子。再接続に利用 |
event | イベントタイプ。data の構造を決定 |
data | JSON 形式のイベントペイロード |
イベントタイプ一覧
| イベントタイプ | 意味 | トリガータイミング | data 構造 |
|---|---|---|---|
user.message | ユーザーがメッセージ送信 | クライアントがイベントを POST した後 | {"content": "..."} |
user.interrupt | ユーザーが現在の実行を中断 | クライアントが中断イベントを送信 | {} |
user.define_outcome | ユーザーが期待する成果を定義 | クライアントが目標を設定 | {"outcome": "..."} |
session.status_rescheduled | Session が実行スケジュールに入る | メッセージ受信後に処理開始 | {"status": "rescheduled"} |
span.model_request_start | モデルリクエスト開始 | Agent が LLM 呼び出しを発行 | {"model": "...", "span_id": "..."} |
agent.thinking | Agent が思考中 | モデル推論プロセス中 | {"content": "..."} |
agent.message | Agent が返信メッセージ送信 | モデルがテキストを出力 | {"content": "...", "delta": true} |
session.status_idle | Session がアイドル状態に入る | 1 ターンの対話が完了 | {"status": "idle"} |
span.model_request_end | モデルリクエスト終了 | LLM 呼び出し完了 | {"span_id": "...", "usage": {...}} |
session.error | Session でエラー発生 | 実行時例外 | {"error": "...", "code": "..."} |
terminated | Session 終了 | Session がクローズまたはタイムアウト | {"reason": "..."} |
典型的なイベントのライフサイクル
1 ターンの完全な対話で、イベントは次の順序でトリガーされます。再接続と after_id
SSE 接続を確立すると、デフォルトではすべての履歴イベントを最初から再生します。差分イベントのみが必要ならafter_id パラメータを渡します。
EventSource は再接続時に Last-Event-ID リクエストヘッダーを自動的に付与し、サーバーはそれをもとに差分イベントを返します。
接続を長時間維持する際は、最後に受信した
id をクライアントで記録し、切断時に after_id で復帰することを推奨します。delta_flush_interval_ms
クエリパラメータでagent.message の delta イベントのフラッシュ間隔を制御します。
50ms です。値を大きくするとイベント頻度を下げ、クライアントのレンダリング負荷を軽減できます。
curl の例
after_id を伴う差分接続:
JavaScript EventSource の例
クライアント実装の推奨事項
- last event id を記録 — イベント受信のたびに更新し、再接続時の復帰に使用。
- delta の連結処理 —
agent.messageはストリーミング delta で到着する場合があるため、クライアント側で完全なテキストへ連結する必要あり。 - terminated を監視 — 受信したら自発的に接続を閉じ、再接続を行わない。
- タイムアウト再試行 — 30 秒間イベントがなければ自発的に切断・再接続 (サイレントな切断を回避)。
- イベントのフィルタ — 業務上関心のあるイベントタイプのみリッスンし、span レベルのイベントは無視することで処理コストを削減。
よくある質問
Q: 接続後に大量の履歴イベントを受信したら? A:after_id パラメータを渡し、最後に処理したイベント ID を指定してください。サーバーはそれ以降のイベントのみを返します。
Q: SSE 接続は自動でクローズしますか? A: Session 終了時にサーバーは terminated イベントを送信した後、接続をクローズします。アイドルタイムアウトは Session 構成によります。
Q: WebSocket で代替できますか? A: 現在は SSE のみサポートしています。SSE は単方向プッシュシナリオに対して軽量で、自然に再接続をサポートします。
Q: delta_flush_interval_ms を大きくしすぎるとイベントが失われますか? A: 失われることはなく、バッチ集約後に送信されるだけです。最終的な内容の完全性には影響しません。