项目卡片
- 项目:CopilotKit
- 状态:v1.59.5 / 34.4K Star / 活跃迭代(3 天内发 5 个版本)
- 一句话判断:前端 Agent 接入层的事实标准,解决 Agent 和 UI 之间的“最后一公里”问题
AI Agent 火了快两年了,有个问题被反复问到:你的 Agent 到底怎么“住进”用户正在用的应用里?
嵌一个聊天窗口进去很简单。但 Agent 需要读取页面状态、调用工具、暂停等用户确认、动态生成表单和卡片——这些事儿和传统前端开发完全是两套逻辑。
CopilotKit 就是冲着这个问题来的。34.4K Star,MIT 开源,TypeScript,从 React 起家,现在扩展到 Angular、Vue、React Native,甚至 Slack 和 Teams。最近 3 天连发了 5 个版本,迭代节奏很猛。
CopilotKit 的三层架构:前端 UI 组件通过 AG-UI 协议与 Runtime 通信,Runtime 再连接后端 Agent 框架。

它到底在解决什么问题
多数团队做 AI 功能的路径是这样的:后端接一个 Agent 框架(LangGraph、CrewAI 之类的),前端……自己手搓。
自己手搓意味着你要处理 SSE 流式解析、增量状态累积、工具调用的 UI 渲染、对话历史管理。这些不是做不到,但每家都在重复造轮子。
CopilotKit 把这一层抽象出来了。看完它的架构文档后,我觉得它的定位可以概括得很简单:
后端 Agent 和前端 UI 之间的标准化管道。
这个水管做的事很具体:
- 把后端 Agent 的流式响应解析成前端能用的状态
- 让 Agent 能调用前端工具(比如操作页面元素)
- 让 Agent 的中间状态实时同步到 UI
- 在需要人工介入时暂停执行,等用户确认
它不是 Agent 框架,不帮你写 Prompt,也不帮你编排 Agent 图。它解决的是 Agent 产出结果之后,怎么变成用户看得到的东西。
AG-UI:为什么大厂都在跟
CopilotKit 真正有护城河的地方,是它发起的 AG-UI 协议。
AG-UI(Agent-User Interaction Protocol)定义了 Agent 和用户界面之间的通信标准:用事件驱动的方式,通过 SSE 流传输结构化消息。它定义了一套事件生命周期——RUN_STARTED → STEP_STARTED → 消息/工具事件 → STEP_FINISHED → RUN_FINISHED——Agent 和前端都在这套事件上对话。
这个协议的采纳者名单很有说服力:Google ADK、LangChain、AWS Strands Agents、Microsoft Agent Framework、Mastra、PydanticAI、CrewAI、LlamaIndex。不管你后端用哪家 Agent 框架,都能通过同一套协议和前端对话。
对开发者来说,这意味着你的前端接入层不需要因为换后端框架而重写。AG-UI 就是这一层的 HTTP 之于 REST API。

三种 Generative UI:不只是聊天框
CopilotKit 的 Generative UI 功能值得单独说,因为这是它和普通“嵌入聊天组件”方案拉开差距的地方。
它支持三种模式:
受控型(Controlled):你预先定义好组件,Agent 选择用哪个、填什么数据。比如天气卡片、订单摘要——Agent 不创造 UI,只是在你的组件库里挑选和填充。
声明型(Declarative / A2UI):Agent 返回 JSON 格式的 UI 描述,前端自动渲染。灵活性更高,但你在可控范围内。
开放型(MCP Apps / Open JSON):Agent 生成完整的 HTML 或 iframe。最大自由度,适合复杂场景。

举个具体场景:银行 App 里,用户问 Agent “帮我查最近 5 笔交易”。Agent 不只是返回一段文字,而是直接在对话里渲染出一个交易列表卡片,每笔交易有金额、时间、商户名。用户看完说“把第 3 笔标记为争议”,Agent 弹出确认对话框,用户点确认后执行。
这种体验已经远超“聊天”——更像是 AI 在驱动一个完整的交互界面。
一个 Agent,跑在所有屏幕上
AG-UI 协议带来的一个实际好处:同一个 Agent 后端,可以同时驱动 React Web、Angular、Vue、React Native、Slack、Teams。Agent 逻辑只写一份,各平台有各自的 UI 渲染层。
目前 Web 端(React/Angular/Vue)已经 GA,React Native 已支持,Slack 和 Teams 还在 Beta。如果你有多个触达渠道的需求,这比每个渠道单独接一次 Agent 省太多事。
快速上手
上手路径很简单:
npx copilotkit@latest create
一个命令生成项目脚手架,内置 CopilotKit 的核心包、Provider 配置和 Agent-UI 连接。你需要准备的就是一个 LLM API Key(OpenAI、Anthropic、Gemini 都行)。
核心代码量很少:
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotChat } from "@copilotkit/react-ui";
import "@copilotkit/react-ui/styles.css";
function App() {
return (
<CopilotKit runtimeUrl="/api/copilotkit">
<CopilotChat />
<YourExistingUI />
</CopilotKit>
);
}
把你的现有 UI 包在 <CopilotKit> 里,加上 <CopilotChat />,对话功能就接进来了。但这只是起点。真正的能力藏在几个核心 Hook 里:useCopilotAction 注册 Agent 可调用的前端动作,useAgentContext 把页面状态实时共享给 Agent,useHumanInTheLoop 让 Agent 在关键节点暂停等人确认。
注意 runtimeUrl 指向你的后端 Agent 路由。CopilotKit 需要在服务端借助 @copilotkit/runtime 接收请求并转发给你的 Agent 框架(比如 LangGraph、CrewAI 或内置的 Vercel AI SDK)。
什么场景适合用,什么场景要慎重
适合的场景:
- 你的后端已经有 LangGraph/LangChain Agent,需要在 React 前端展示 Agent 状态和交互。这是 CopilotKit 最强的场景——我翻了一遍社区的生产案例,基本所有正面反馈都来自 LangGraph 用户。
- 你需要 Agent 在对话中渲染动态 UI(表单、卡片、图表),而不只是文字回复。
- 你希望 Agent 能暂停等用户确认,支持 human-in-the-loop 工作流。
- 同一个 Agent 需要多端呈现(Web + 移动 + 即时通讯工具)。
需要慎重的场景:
- 你的后端不用主流 Agent 框架,走自定义协议。CopilotKit 的抽象在协议不匹配时会失效,你可能需要自己写流消费者。
- 多租户 SaaS 场景。CopilotKit 本身不处理租户隔离、会话持久化和权限边界。这些需要你自己建,然后再包在 CopilotKit 外面。
- 超高并发生产环境。社区有反馈在 Token 高速流式场景(40-60 token/秒)下可能出现 React 重渲染抖动,需要仔细设计组件结构来规避。
- 非前端项目。如果你只是做 CLI 工具或纯后端 Agent,CopilotKit 帮不了你。

边界在哪里
CopilotKit 不做 Agent 编排、不做 Prompt 管理、不做记忆系统。可观测性、错误分类、Token 计费、租户隔离——这些生产基础设施也得你自己建。
社区有篇生产经验总结说得很到位:“Ship fast with CopilotKit. Know what you're deferring.”
把它理解为后端 Agent 到用户界面之间的标准化管道。管道铺好了,房子还得自己盖。
这类 AI 工具拆解如果对你胃口,不妨多留意 云栈社区 上的开源实战复盘。那边的老哥们常把上手路径、关键限制和可复用配置整理成清单,方便你直接判断值不值得试。
引用链接
[1] CopilotKit: https://github.com/CopilotKit/CopilotKit
[2] CopilotKit: https://github.com/CopilotKit/CopilotKit