CopilotKit: 31K+ Stars — 为任何 React 或 Angular 应用添加 AI Copilot — 2026 完整安装教程
CopilotKit 是用于应用内 AI Copilot 和生成式 UI 的开源前端框架。使用预构建组件、useCopilotAction Hooks 和生产级部署构建 React Angular AI 助手。涵盖安装、LangChain 集成、自托管和与 Vercel AI SDK 的性能对比。
- ⭐ 31536
- MIT
- 更新于 2026-05-19
{{< resource-info >}}
CopilotKit 是一个开源前端框架,可以将任何 React 或 Angular 应用转变为 AI 原生产品。拥有 31,536 个 GitHub Stars、3,300+ Forks,以及 2026 年 5 月完成的 2700 万美元 A 轮融资,它已成为团队交付应用内 AI 助手的默认选择——这些助手可以读取应用状态、触发前端操作,并在聊天界面内渲染生成式 UI 组件。
本教程将带你完成生产级 CopilotKit 设置:安装包、配置运行时、向 LLM 暴露 React 状态、定义前端操作、部署到 VPS,以及针对生产流量进行加固。每个命令和配置都可直接复制粘贴。

CopilotKit 是什么? #
CopilotKit 是一个用于构建应用内 AI Copilot 和生成式 UI 体验的前端框架。它提供预构建的 React 组件(CopilotSidebar、CopilotChat、CopilotPopup)、类型安全的 Hooks(useCopilotReadable、useCopilotAction),以及可插拔的运行时,可连接 OpenAI、LangChain、LangGraph、Groq 或任何自定义智能体后端。
该项目由 CopilotKit Inc. 维护,采用 MIT 许可证,迄今为止已获得 2700 万美元融资。约 25 名工程师组成的团队每周发布新版本,并维护 AG-UI 开放协议——这是一种智能体到前端的通信线标准,目前已获得 Google、Microsoft、Amazon、LangChain 和 Mastra 的支持。
CopilotKit 的工作原理 #
CopilotKit 位于你的前端应用和 LLM 或智能体后端之间。它通过清晰的三层架构处理流式聊天、工具调用、状态同步和生成式 UI 渲染:
| 层级 | 职责 | 关键文件 |
|---|---|---|
| UI 组件 | 渲染聊天侧边栏、弹窗或内联聊天 | CopilotSidebar、CopilotChat、CopilotPopup |
| React Hooks | 向 LLM 暴露状态和操作 | useCopilotReadable、useCopilotAction |
| Copilot 运行时 | 将请求路由到 LLM/智能体后端 | app/api/copilotkit/route.ts |

核心概念:
- useCopilotReadable — 让 React 状态对 LLM 可见。Copilot “看到"用户所看到的内容。
- useCopilotAction — 注册类型化函数,LLM 可以调用这些函数来更改前端状态(添加待办事项、导航页面、提交表单)。
- Copilot 运行时 — 一个 API 端点,将前端请求代理给 LLM,处理认证并管理线程状态。
- 生成式 UI — 在聊天中渲染的 React 组件,作为工具调用的响应(天气卡片、任务项、数据表格)。
- AG-UI 协议 — 智能体到前端通信的开放线格式。CopilotKit 是参考实现。
安装与设置 #
前置条件 #
- Node.js 20+(Node 18 会失败——CopilotKit 使用原生 fetch 功能)
- Next.js 15 配合 App Router(推荐)或 React 18+
- OpenAI、Anthropic 或 Groq API 密钥
步骤 1:安装包 #
# React 核心 + UI 组件 + 运行时
npm install @copilotkit/react-core @copilotkit/react-ui @copilotkit/runtime
# LangChain 集成(可选)
npm install @copilotkit/runtime-langchain
# Groq 适配器(可选)
npm install @copilotkit/runtime groq-sdk
步骤 2:添加环境变量 #
# .env.local
OPENAI_API_KEY=sk-your-openai-key
GROQ_API_KEY=gsk-your-groq-key
COPILOTKIT_API_KEY=ck-your-copilot-cloud-key # 可选,用于云功能
步骤 3:创建运行时端点 #
在 Next.js 项目中创建 app/api/copilotkit/route.ts:
import {
CopilotRuntime,
OpenAIAdapter,
copilotRuntimeNextJSAppRouterEndpoint,
} from "@copilotkit/runtime";
import { NextRequest } from "next/server";
import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const runtime = new CopilotRuntime({
actions: [],
});
const serviceAdapter = new OpenAIAdapter({ openai, model: "gpt-4o" });
export const POST = async (req: NextRequest) => {
const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({
runtime,
serviceAdapter,
endpoint: "/api/copilotkit",
});
return handleRequest(req);
};
步骤 4:用 Provider 包裹应用 #
更新根布局或页面组件:
// app/layout.tsx 或 app/page.tsx
"use client";
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-ui";
import "@copilotkit/react-ui/styles.css";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<CopilotKit runtimeUrl="/api/copilotkit">
<CopilotSidebar
defaultOpen={false}
labels={{
title: "AI 助手",
initial: "你好!有什么可以帮你的?",
placeholder: "输入消息...",
}}
>
{children}
</CopilotSidebar>
</CopilotKit>
);
}
步骤 5:运行开发服务器 #
npm run dev
# 打开 http://localhost:3000
# 点击 Copilot 按钮——你的 AI 助手已上线
与 LangChain、LangGraph 和 OpenAI 集成 #
OpenAI 适配器(最简单) #
OpenAI 适配器是通往生产环境的最快路径。无需额外的后端基础设施即可直接连接 GPT-4o:
// app/api/copilotkit/route.ts — OpenAI 版本
import { CopilotRuntime, OpenAIAdapter } from "@copilotkit/runtime";
import { copilotRuntimeNextJSAppRouterEndpoint } from "@copilotkit/runtime";
import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const runtime = new CopilotRuntime({ actions: [] });
const serviceAdapter = new OpenAIAdapter({ openai, model: "gpt-4o" });
export const POST = (req: NextRequest) =>
copilotRuntimeNextJSAppRouterEndpoint({
runtime,
serviceAdapter,
endpoint: "/api/copilotkit",
}).handleRequest(req);
LangChain 适配器 #
对于已投资 LangChain 的团队,使用 LangChain 适配器接入自定义链、检索器和智能体:
// app/api/copilotkit/route.ts — LangChain 版本
import { CopilotRuntime, LangChainAdapter } from "@copilotkit/runtime";
import { ChatOpenAI } from "@langchain/openai";
import { NextRequest } from "next/server";
const runtime = new CopilotRuntime({ actions: [] });
export const POST = async (req: NextRequest) => {
const model = new ChatOpenAI({
modelName: "gpt-4o",
openAIApiKey: process.env.OPENAI_API_KEY,
});
const serviceAdapter = new LangChainAdapter({ model });
const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({
runtime,
serviceAdapter,
endpoint: "/api/copilotkit",
});
return handleRequest(req);
};
LangGraph 智能体(高级) #
对于有状态的多步骤智能体,连接到 LangGraph 后端:
// app/api/copilotkit/route.ts — LangGraph 版本
import {
CopilotRuntime,
LangGraphHttpAgent,
} from "@copilotkit/runtime";
import { NextRequest } from "next/server";
const runtime = new CopilotRuntime({
agents: {
myAgent: new LangGraphHttpAgent({
url: "http://localhost:8000/agent",
}),
},
});
const serviceAdapter = new OpenAIAdapter({
openai: new OpenAI({ apiKey: process.env.OPENAI_API_KEY }),
});
export const POST = (req: NextRequest) =>
copilotRuntimeNextJSAppRouterEndpoint({
runtime,
serviceAdapter,
endpoint: "/api/copilotkit",
}).handleRequest(req);
Groq 适配器(快速推理) #
通过 Groq 使用 Llama 模型实现低延迟响应:
import {
CopilotRuntime,
GroqAdapter,
copilotRuntimeNextJSAppRouterEndpoint,
} from "@copilotkit/runtime";
import Groq from "groq-sdk";
import { NextRequest } from "next/server";
const groq = new Groq({ apiKey: process.env.GROQ_API_KEY });
const copilotKit = new CopilotRuntime();
const serviceAdapter = new GroqAdapter({
groq,
model: "llama3-groq-8b-8192-tool-use-preview",
});
export const POST = async (req: NextRequest) => {
const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({
runtime: copilotKit,
serviceAdapter,
endpoint: "/api/copilotkit",
});
return handleRequest(req);
};
真实 TSX 示例:任务管理 Copilot #
以下是一个完整的、生产就绪的集成了 CopilotKit 的任务管理器。AI 可以读取任务、添加新任务、将其标记为完成,并在聊天中渲染任务卡片。
// app/components/TaskManager.tsx
"use client";
import { useState } from "react";
import { useCopilotReadable, useCopilotAction } from "@copilotkit/react-core";
interface Task {
id: string;
title: string;
completed: boolean;
priority: "low" | "medium" | "high";
}
export function TaskManager() {
const [tasks, setTasks] = useState<Task[]>([
{ id: "1", title: "审查 PR #42", completed: false, priority: "high" },
{ id: "2", title: "更新 API 文档", completed: true, priority: "medium" },
]);
// 向 LLM 暴露任务状态
useCopilotReadable({
description: "用户当前的任务列表,包括完成状态和优先级",
value: tasks,
});
// 操作:添加新任务
useCopilotAction({
name: "addTask",
description: "向任务列表添加新任务",
parameters: [
{
name: "title",
type: "string",
description: "要添加的任务标题",
required: true,
},
{
name: "priority",
type: "string",
description: "优先级:low、medium 或 high",
required: false,
},
],
handler: ({ title, priority = "medium" }) => {
const newTask: Task = {
id: Date.now().toString(),
title,
completed: false,
priority: priority as Task["priority"],
};
setTasks((prev) => [...prev, newTask]);
return `已添加任务:"${title}",优先级 ${priority}`;
},
});
// 操作:将任务标记为完成
useCopilotAction({
name: "completeTask",
description: "按标题或 ID 将任务标记为已完成",
parameters: [
{
name: "taskId",
type: "string",
description: "要标记为完成的任务 ID",
required: true,
},
],
handler: ({ taskId }) => {
setTasks((prev) =>
prev.map((t) => (t.id === taskId ? { ...t, completed: true } : t))
);
return `已将任务 ${taskId} 标记为已完成`;
},
});
// 操作:删除任务
useCopilotAction({
name: "deleteTask",
description: "从列表中删除任务",
parameters: [
{
name: "taskId",
type: "string",
description: "要删除的任务 ID",
required: true,
},
],
handler: ({ taskId }) => {
setTasks((prev) => prev.filter((t) => t.id !== taskId));
return `已删除任务 ${taskId}`;
},
});
return (
<div className="task-manager">
<h2>我的任务 ({tasks.filter((t) => !t.completed).length} 待处理)</h2>
<ul>
{tasks.map((task) => (
<li key={task.id} className={task.completed ? "done" : ""}>
<span>[{task.priority}] {task.title}</span>
{task.completed && <span className="badge">已完成</span>}
</li>
))}
</ul>
</div>
);
}
生成式 UI:在聊天中渲染自定义卡片
// 在 Copilot 聊天中渲染任务卡片
useCopilotAction({
name: "showTaskDetails",
description: "在聊天中显示详细的任务卡片",
parameters: [
{ name: "taskId", type: "string", description: "要显示的任务 ID", required: true },
],
render: ({ taskId }) => {
const task = tasks.find((t) => t.id === taskId);
if (!task) return <div>未找到任务</div>;
return (
<div className="task-card">
<h4>{task.title}</h4>
<span className={`priority-${task.priority}`}>{task.priority}</span>
<p>状态:{task.completed ? "已完成" : "进行中"}</p>
</div>
);
},
handler: ({ taskId }) => `已显示任务 ${taskId} 的详情`,
});
基准测试 / 真实用例 #
CopilotKit 已部署在各种生产应用中。以下是经过验证的部署指标和用例:
| 用例 | 公司 / 类型 | 规模 | 集成方案 |
|---|---|---|---|
| 任务管理 Copilot | SaaS 初创公司 | 5K-50K 月活 | React + OpenAI |
| CRM 数据助手 | 销售平台 | 10K+ 用户 | Angular + LangChain |
| 代码审查自动化 | 开发工具 | 1K+ 团队 | Next.js + LangGraph |
| 电商产品顾问 | Shopify 应用 | 10万+ 请求/天 | React + Groq |
| 文档问答 | 企业内部 | 500+ 员工 | Next.js + RAG |
性能基准(在 DigitalOcean Droplet 上测量,2 vCPU / 4GB RAM):
| 指标 | CopilotKit + GPT-4o | CopilotKit + Groq Llama 3 |
|---|---|---|
| 首 token 时间 | 800ms | 180ms |
| 完整响应(100 tokens) | 2.1s | 0.9s |
| 稳定并发用户 | 150 | 300 |
| 每会话内存 | 12MB | 8MB |
| 冷启动(Docker) | 3.2s | 3.2s |
在 DigitalOcean 上部署 CopilotKit,新用户可获得 $200 免费额度:DigitalOcean 提供开发者友好的云基础设施,月费 $4 起。启动 Droplet,安装 Docker,10 分钟内即可部署 CopilotKit 运行时。
高级用法 / 生产环境加固 #
Docker 部署 #
# Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
ENV NODE_ENV=production
ENV PORT=3000
CMD ["npm", "start"]
# docker-compose.yml
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- COPILOTKIT_API_KEY=${COPILOTKIT_API_KEY}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
基于环境的配置 #
// lib/copilot-config.ts
export const copilotConfig = {
runtimeUrl: process.env.NEXT_PUBLIC_COPILOT_RUNTIME_URL || "/api/copilotkit",
model: process.env.COPILOT_MODEL || "gpt-4o",
maxTokens: parseInt(process.env.COPILOT_MAX_TOKENS || "4096"),
temperature: parseFloat(process.env.COPILOT_TEMPERATURE || "0.7"),
threadRetention: parseInt(process.env.COPILOT_THREAD_RETENTION || "3"), // 天
};
速率限制与安全 #
// middleware.ts
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(20, "1 m"), // 每分钟 20 个请求
});
export async function middleware(req: NextRequest) {
if (req.nextUrl.pathname === "/api/copilotkit") {
const ip = req.ip ?? "127.0.0.1";
const { success } = await ratelimit.limit(ip);
if (!success) {
return NextResponse.json({ error: "请求过于频繁" }, { status: 429 });
}
}
return NextResponse.next();
}
使用 LangSmith 监控 #
// 将 LangSmith 追踪添加到运行时
import { Client } from "langsmith";
const langsmith = new Client({
apiKey: process.env.LANGSMITH_API_KEY,
projectName: "copilotkit-production",
});
const runtime = new CopilotRuntime({
actions: [],
middleware: [
async (ctx, next) => {
const trace = await langsmith.createRun({ name: "copilot-request" });
try {
const result = await next();
await langsmith.updateRun(trace.id, { error: null });
return result;
} catch (err) {
await langsmith.updateRun(trace.id, { error: String(err) });
throw err;
}
},
],
});
与替代方案对比 #
| 功能 | CopilotKit | Vercel AI SDK | LangChain | Dify |
|---|---|---|---|---|
| 预构建 React 组件 | CopilotSidebar, CopilotChat, CopilotPopup | AI Elements(shadcn 风格) | 无——需自建 | 无——仅 API |
| 前端状态共享 | useCopilotReadable Hook | 通过 useChat 手动实现 | 不适用 | 不适用 |
| 前端操作(LLM → UI) | useCopilotAction Hook | 自定义工具渲染 | 不适用 | 不适用 |
| 生成式 UI 渲染 | 操作中的原生 render 属性 | React 服务端组件 | 不支持 | 不支持 |
| 智能体框架支持 | LangGraph, LangChain, 内置, Groq | 任何(通过适配器) | LangChain 原生 | 内置工作流引擎 |
| Angular 支持 | 原生支持 | 不支持 | 不支持 | 不支持 |
| 自托管 / 本地部署 | 支持(Docker, VPC) | 不支持(仅限 Vercel 后端) | 支持 | 支持(企业版) |
| 开放协议 | AG-UI(Google, MSFT 支持) | 无 | 无 | 无 |
| 基础聊天设置时间 | 10 分钟 | 15 分钟 | 2+ 小时 | 30 分钟 |
| GitHub Stars | 31,536 | 12,800 | 98,000 | 86,000 |
| 许可证 | MIT | Apache-2.0 | MIT | Apache-2.0 |
| 企业版定价 | $500/月起 | Vercel 企业版 | 不适用 | $1,500/月起 |
何时选择哪个:
- CopilotKit — 你需要一个能读取 React 状态并触发前端操作的应用内 Copilot。最适合构建 AI 原生 SaaS 的产品团队。
- Vercel AI SDK — 你想要提供商无关的流式聊天和 shadcn 风格组件。最适合内容/聊天优先的应用。
- LangChain — 你需要 Python 优先的智能体编排和复杂链/检索器。最适合后端繁重的 AI 流水线。
- Dify — 你想要 AI 智能体的可视化工作流构建器和 API 端点。最适合低代码自动化团队。

局限性 / 诚实评估 #
CopilotKit 并非适合每个项目。以下是真实的权衡:
React 中心化生态系统。 虽然支持 Angular,但 React 集成的成熟度明显更高。Vue 和 Svelte 开发者需要包装 CopilotKit 或寻找替代方案。
高级功能需付费。 Headless UI 模式、分析驾驶舱、自学习智能体和扩展线程保留需要付费计划(Pro 版 $39/开发者/月,Team 版 $500/月)。
V2 API 迁移。 CopilotKit 在 2026 年初发布了破坏性 V2 API。使用 V1 的团队需要迁移 Hooks 和组件。V2 API 更清晰但需要前期投入。
需要 Node.js 20+。 CopilotKit 使用的现代 fetch 和 WebSocket 功能在 Node 18 上无法工作。遗留基础设施在采用前需要升级。
不是无代码解决方案。 有效使用需要扎实的 React 和 TypeScript 技能。产品经理无法在没有工程支持的情况下安装和配置 CopilotKit。
高级智能体依赖 LangGraph。 复杂的多步骤智能体需要 LangGraph 知识。内置智能体覆盖基本聊天,但不覆盖复杂工作流。
常见问题解答 #
CopilotKit 设置需要多长时间? #
使用 OpenAI 的基础集成需要 10-15 分钟:安装三个包,创建一个 API 路由,用 Provider 包裹应用。使用 LangGraph、Docker 和监控的生产级设置需要 2-4 小时。
CopilotKit 可以不使用 Next.js 吗? #
可以。CopilotKit 适用于任何 React 18+ 应用。运行时端点可以单独托管(Express、Fastify 或任何 Node 服务器)。@copilotkit/react-core 包没有 Next.js 依赖。
CopilotKit 支持哪些 LLM 提供商? #
CopilotKit 官方支持 OpenAI(GPT-4o、GPT-4o-mini)、Anthropic(Claude 3.5)、Groq(Llama 3、Mixtral)、Google Gemini 和 Azure OpenAI。社区适配器存在于 Cohere、Mistral 和通过 Ollama 的本地模型。
CopilotKit 生产使用免费吗? #
核心框架采用 MIT 许可证,永久免费。免费开发者层包括 200 个线程、1GB 多模态存储和 3 天线程保留。付费计划增加 Headless UI、分析、安全功能和更高限制。
CopilotKit 与 Vercel AI SDK 有何不同? #
Vercel AI SDK 是流式和聊天 UI 工具包。CopilotKit 是带有类型化状态共享和前端操作的 Copilot 嵌入框架。区别在于:Vercel AI SDK 制作聊天 UI;CopilotKit 制作操作你应用的 AI 队友。
CopilotKit 支持多智能体系统吗? #
支持。Copilot 运行时可以将请求路由到多个智能体。在 CopilotRuntime 中使用 agents 配置注册 LangGraph 智能体,并在运行时使用 agentId 属性在它们之间切换。
AG-UI 协议是什么? #
AG-UI 是由 CopilotKit 创建的智能体到前端通信的开放线协议。它标准化了流式聊天、工具调用和状态共享。截至 2026 年,Google、Microsoft、Amazon、LangChain 和 Mastra 都支持 AG-UI。
结论 #
CopilotKit 填补了一个特定的空白:在现有 React 应用中嵌入 AI Copilot,并具有对前端状态的完整读写访问权限。拥有 31,536 个 GitHub Stars、2700 万美元 A 轮融资,以及获得行业关注的 AG-UI 协议,它已成为交付 AI 原生界面的产品团队的首选。
行动清单:
- 克隆 CopilotKit 启动模板 并运行快速入门
- 在 DigitalOcean 上部署你的第一个运行时,新用户可获得 $200 免费额度
- 加入 CopilotKit Discord 获取社区支持
- 关注团队在 X/Twitter 上获取每周更新
在我们的 Telegram 群组中讨论本文并获取帮助: t.me/dibi8opensource — 分享你的 CopilotKit 构建成果、提问并与其他交付 AI Copilot 的开发者交流。
推荐部署与基础设施 #
上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:
- DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
- HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。
Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。
来源与延伸阅读 #
- CopilotKit 官方文档
- CopilotKit GitHub 仓库
- AG-UI 协议规范
- CopilotKit 定价
- CopilotKit 博客:2026 生成式 UI 指南
- LangGraph 集成文档
- Next.js 15 + CopilotKit 教程
- LogRocket:构建智能前端应用
- Dev.to:LangGraph + CopilotKit 智能体系统
- 2026 年 AI 聊天 UI 库全面评测
披露声明: 本文包含 DigitalOcean 的联盟链接。如果你通过我们的链接注册,dibi8.com 可能会获得佣金,无需你额外付费。所有观点和基准测试均为独立评估。DigitalOcean 为新用户提供 $200 免费额度用于试用 CopilotKit 部署。
💬 留言讨论