关于 copilotkit-agui
copilotkit-agui 是面向开发者的技能,用于实现或排查 Agent 与前端之间的 AG-UI 事件协议。内容涵盖类型化事件流、状态同步、流式传输和人在环路交互。
主要功能
- 01介绍 AG-UI 事件类别
- 02指导后端事件流传输
- 03说明状态快照与 JSON Patch
- 04记录中断和恢复流程
- 05排查 SSE 与编码问题
适用场景
- 01构建兼容 AG-UI 的 Agent 后端
- 02使用 AbstractAgent 添加框架集成
- 03诊断前端事件丢失或格式错误
- 04实现状态同步或人工审核
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ copilotkit/ copilotkit --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 (Agent-User Interaction) 是 CopilotKit 推出的开源、基于事件的协议,用于 Agent 与 UI 之间的通信。所有 Agent 与前端之间的交互都通过类型化事件进行,这些事件经由 SSE (Server-Sent Events) 或二进制 protobuf 传输流式发送。Agent 实现 AbstractAgent.run(),返回 RxJS 的 Observable<BaseEvent>,客户端 SDK 负责事件应用、状态管理和消息历史。
何时使用
- 构建需要支持 AG-UI 的自定义 Agent 后端
- 为新的框架集成实现
AbstractAgent.run() - 调试事件为何未到达前端或以错误格式到达
- 理解事件顺序(生命周期、文本、工具调用、状态)
- 处理状态同步(快照 vs JSON Patch 增量)
- 实现 human-in-the-loop 中断/恢复流程
- 排查 SSE 流式传输或编码问题
何时不使用
- 如需 CopilotKit React hooks 和前端组件,请使用
copilotkit-develop - 如需 CopilotKit runtime 的设置和配置,请使用
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 | Agent 工具调用 |
| 状态 | 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 管道自动展开为 Start/Content/End 三元组。使用它们可以简化后端实现。
SSE 传输格式
每个事件都是一个 JSON 对象,作为一行 SSE 数据发送:
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 | 事件、类型、schema | 协议定义 |
@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;Agent 处理后继续执行
完整可运行的示例请参见 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-- 完整的事件类型参考,包含 schema 和示例references/building-agents.md-- 构建 AG-UI 后端的分步指南references/event-flow-diagrams.md-- 常见流程的 ASCII 时序图references/client-sdk.md-- @ag-ui/client API 参考
评论
支持 Markdown