copilotkit-agui について
copilotkit-aguiは、CopilotKitのAG-UIイベントプロトコルを扱うスキル資料です。エージェントのバックエンドやフレームワーク連携を構築する開発者向けに、イベント順序、ストリーミング形式、状態同期、中断と再開の流れを解説します。
主な機能
- 01AG-UIイベントファミリーのリファレンス
- 02SSEとprotobufのエンコードガイド
- 03バックエンド実装の手順
- 04状態スナップショットとJSON Patchの処理
- 05人間参加型の中断と再開
活用シーン
- 01AG-UI対応エージェントバックエンドの構築
- 02AbstractAgent.run()の実装
- 03フロントエンドイベントの欠落や形式不正の調査
- 04状態同期とツール呼び出しの追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ copilotkit/ skills --skill copilotkit-aguiインストール後、Claude Code で/copilotkit-aguiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
sources.mdreferences/building-agents.mdclient-sdk.mdevent-flow-diagrams.mdprotocol-spec.md詳細
AG-UI プロトコルスキル
概要
AG-UI(エージェントとユーザーのインタラクション)は、エージェントと UI 間の通信を実現する、CopilotKit のオープンなイベントベースのプロトコルです。エージェントとフロントエンド間のすべてのインタラクションは、SSE(Server-Sent Events)またはバイナリ protobuf トランスポートでストリーミングされる型付きイベントを通じて行われます。エージェントは AbstractAgent.run() を実装し、RxJS Observable<BaseEvent> を返します。クライアント SDK はイベントの適用、状態管理、メッセージ履歴を処理します。
使用する場面
- AG-UI に対応する必要があるカスタムのエージェントバックエンドを構築する場合
- 新しいフレームワーク統合のために
AbstractAgent.run()を実装する場合 - イベントがフロントエンドに届かない、または不正な形式で届く原因をデバッグする場合
- イベントの順序(ライフサイクル、テキスト、ツール呼び出し、状態)を理解する場合
- 状態同期(スナップショットと JSON Patch 差分)を扱う場合
- 人間が介在する中断/再開フローを実装する場合
- SSE ストリーミングやエンコードの問題をトラブルシューティングする場合
使用しない場面
- CopilotKit の React フックやフロントエンドコンポーネントについては、
copilotkit-developを使用してください - CopilotKit のランタイム設定と構成については、
copilotkit-setupを使用してください - フレームワーク固有の統合ガイド(LangGraph、Mastra、CrewAI)については、
copilotkit-integrationsを使用してください
クイックリファレンス
イベントファミリー
| ファミリー | イベント | 目的 |
|---|---|---|
| ライフサイクル | RUN_STARTED、RUN_FINISHED、RUN_ERROR、STEP_STARTED、STEP_FINISHED | 実行の境界と進行状況 |
| テキスト | TEXT_MESSAGE_START、TEXT_MESSAGE_CONTENT、TEXT_MESSAGE_END | ストリーミングテキストメッセージ |
| ツール呼び出し | TOOL_CALL_START、TOOL_CALL_ARGS、TOOL_CALL_END、TOOL_CALL_RESULT | エージェントによるツール呼び出し |
| 状態 | STATE_SNAPSHOT、STATE_DELTA、MESSAGES_SNAPSHOT | 状態同期 |
| 推論 | REASONING_START、REASONING_MESSAGE_START/CONTENT/END、REASONING_END、REASONING_ENCRYPTED_VALUE | 思考過程の可視化 |
| アクティビティ | ACTIVITY_SNAPSHOT、ACTIVITY_DELTA | 構造化された進捗状況の更新 |
| カスタム | RAW、CUSTOM | 拡張ポイント |
便利なチャンクイベント
TEXT_MESSAGE_CHUNK と TOOL_CALL_CHUNK は、クライアントの transformChunks パイプラインを通じて、開始/内容/終了の 3 つのイベントに自動展開されます。バックエンドの実装を簡素化する場合に使用してください。
SSE ワイヤーフォーマット
各イベントは、SSE の data 行として送信される JSON オブジェクトです。
data: {"type":"RUN_STARTED","threadId":"t1","runId":"r1"}\n\n
data: {"type":"TEXT_MESSAGE_START","messageId":"m1","role":"assistant"}\n\n
data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"m1","delta":"Hello"}\n\n
data: {"type":"TEXT_MESSAGE_END","messageId":"m1"}\n\n
data: {"type":"RUN_FINISHED","threadId":"t1","runId":"r1"}\n\n
パッケージ
| パッケージ | npm | 目的 |
|---|---|---|
@ag-ui/core | イベント、型、スキーマ | プロトコル定義 |
@ag-ui/client | AbstractAgent、HttpAgent、ミドルウェア、イベント適用 | クライアント SDK |
@ag-ui/encoder | EventEncoder(SSE + protobuf) | サーバー側エンコード |
ワークフロー:AG-UI バックエンドの構築
- エンドポイントを定義する --
RunAgentInputボディを含む POST を受け付け、text/event-streamで応答します - 入力を解析する -- リクエストボディから
threadId、runId、messages、tools、state、contextを抽出します - イベントを順番に送信する -- 最初に
RUN_STARTED、次にコンテンツイベントを送信し、その後RUN_FINISHEDまたはRUN_ERRORを送信します - SSE としてエンコードする --
@ag-ui/encoderのEventEncoder.encode()を使用するか、data: JSON\n\nを手動で書き込みます - ツールの結果を処理する -- クライアントから
TOOL_CALL_RESULTが返されます。エージェントはこれを処理して続行します
動作する完全な例については、references/building-agents.md を参照してください。
主なプロトコルルール
- 各実行は必ず
RUN_STARTEDで始まり、RUN_FINISHEDまたはRUN_ERRORで終わる必要があります TEXT_MESSAGE_CONTENT.deltaは空であってはなりません- ツール呼び出しイベントは
toolCallIdで関連付けられます STATE_DELTAは RFC 6902 JSON Patch 操作を使用します- 複数の連続した実行がサポートされています。次の実行を開始する前に、それぞれを完了させる必要があります
- メッセージは実行をまたいで蓄積されます。
STATE_SNAPSHOTでリセットされない限り、状態は維持されます
参考資料
references/protocol-spec.md-- スキーマと例を含むイベント型の完全なリファレンスreferences/building-agents.md-- AG-UI バックエンドを構築するためのステップバイステップガイドreferences/event-flow-diagrams.md-- 一般的なフローの ASCII シーケンス図references/client-sdk.md-- @ag-ui/client API リファレンス