关于 copilotkit-agui
copilotkit-agui 是面向 CopilotKit AG-UI 事件协议的技能资料,供构建 Agent 后端或框架集成的开发者使用。内容涵盖事件顺序、流式传输格式、状态同步及中断与恢复流程。
主要功能
- 01AG-UI 事件类型参考
- 02SSE 与 protobuf 编码指南
- 03后端实现流程
- 04状态快照与 JSON Patch 处理
- 05人工介入的中断与恢复
适用场景
- 01构建兼容 AG-UI 的 Agent 后端
- 02实现 AbstractAgent.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(Agent-User Interaction)是 CopilotKit 推出的开放式事件协议,用于 Agent 与 UI 之间的通信。所有 Agent 与前端之间的交互都通过 SSE(Server-Sent Events)或二进制 protobuf 传输方式流式传送的类型化事件进行。Agent 实现返回 RxJS Observable<BaseEvent> 的 AbstractAgent.run(),客户端 SDK 负责处理事件应用、状态管理和消息历史记录。
适用场景
- 构建需要使用 AG-UI 通信的自定义 Agent 后端
- 为新的框架集成实现
AbstractAgent.run() - 调试事件为何未到达前端或格式异常
- 理解事件顺序(生命周期、文本、工具调用、状态)
- 处理状态同步(快照与 JSON Patch 增量)
- 实现人在回路中的中断/恢复流程
- 排查 SSE 流式传输或编码问题
不适用场景
- 如需使用 CopilotKit React hooks 和前端组件,请使用
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 | 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 线上格式
每个事件都是作为 SSE 数据行发送的 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 | Events、types、schemas | 协议定义 |
@ag-ui/client | AbstractAgent、HttpAgent、middleware、event application | 客户端 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—— 完整的事件类型参考,包含架构和示例references/building-agents.md—— 构建 AG-UI 后端的分步指南references/event-flow-diagrams.md—— 常见流程的 ASCII 时序图references/client-sdk.md—— @ag-ui/client API 参考
评论
支持 Markdown