基于 Next.js 16 + AI SDK v6 + AI Elements 构建的智能学习助手前端。
- 🎨 现代化 UI - 使用 shadcn/ui + Tailwind CSS
- 🤖 AI 对话 - 集成 AI SDK v6 和 AI Elements 组件
- 🔄 流式输出 - 实时显示 AI 回复
- 📱 响应式设计 - 适配各种屏幕尺寸
- 🌓 主题切换 - 支持浅色/深色模式
- 💾 会话管理 - 本地持久化对话历史
- 🔀 消息分支 - 支持多版本消息切换
- 📚 来源展示 - 显示 RAG 文档来源
- 🧠 推理过程 - 展示 AI 思考过程
- 🛠️ 工具调用 - 可视化工具执行
./start_dev.sh# 1. 安装依赖
pnpm install
# 2. 配置环境变量
echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > .env.local
# 3. 启动开发服务器
pnpm dev| 技术 | 版本 | 用途 |
|---|---|---|
| Next.js | 16.0.1 | React 框架 |
| React | 19.2.0 | UI 库 |
| AI SDK | 6.0.0-beta.95 | AI 集成 |
| AI Elements | latest | AI UI 组件 |
| shadcn/ui | latest | UI 组件库 |
| Tailwind CSS | 4.x | CSS 框架 |
| TypeScript | 5.x | 类型系统 |
frontend/
├── app/ # Next.js App Router
│ ├── api/chat/ # Chat API 路由
│ ├── chat/ # ✅ Chat 页面(已完成)
│ ├── rag/ # RAG 页面(骨架)
│ ├── workflows/ # 工作流页面(骨架)
│ ├── deep-research/ # 深度研究页面(骨架)
│ └── settings/ # 设置页面(骨架)
├── components/
│ ├── ai-elements/ # AI Elements 组件(30+)
│ ├── chat/ # Chat 相关组件
│ │ ├── chat-panel.tsx # 主对话面板
│ │ ├── chat-header.tsx # 头部(模式切换)
│ │ ├── chat-right-panel.tsx # 右侧详情面板
│ │ └── chat-mode-selector.tsx # 模式选择器
│ ├── layout/ # 布局组件
│ │ ├── app-layout.tsx # 全局布局
│ │ ├── app-header.tsx # 顶部导航
│ │ └── app-sidebar.tsx # 左侧边栏
│ └── ui/ # shadcn/ui 组件(19+)
├── lib/
│ ├── types.ts # 类型定义
│ ├── session.ts # 会话管理
│ ├── api-client.ts # API 客户端
│ └── utils.ts # 工具函数
├── providers/
│ ├── theme-provider.tsx # 主题 Provider
│ └── session-provider.tsx # 会话 Provider
└── docs/
└── sprint_01/ # Sprint 1 文档
├── SPRINT1_COMPLETION.md
└── QUICKSTART.md
- 项目基础设施(types, session, api-client, providers)
- 全局布局(header, sidebar, layout)
- Chat API 路由处理器
- Chat 页面核心组件
- AI Elements 组件集成(15+ 组件)
- 流式输出和会话管理
- 官方示例 Chat UI(消息分支、来源、推理、工具调用)
- 模型选择器(OpenAI / Anthropic / Google)
- 附件上传支持
- 建议提示词
- Chat 增强(编辑、删除、搜索、导出)
- 会话管理增强(分组、标签、搜索)
- RAG 页面实现
- Workflows 页面实现
- Deep Research 页面实现
- Settings 页面实现
已集成的 AI Elements 组件:
Chatbot 组件(已使用):
- ✅
Conversation- 对话容器 - ✅
Message- 消息展示 - ✅
MessageBranch- 消息分支 - ✅
MessageResponse- 消息响应渲染 - ✅
PromptInput- 输入框(完整功能) - ✅
Suggestion- 建议提示词 - ✅
Sources- RAG 来源展示 - ✅
Reasoning- 推理过程展示 - ✅
ModelSelector- 模型选择器 - ✅
ConversationScrollButton- 滚动按钮
其他可用组件:
Tool- 工具调用Plan- 计划步骤Task- 任务信息Checkpoint- 检查点ChainOfThought- 思维链Context- 上下文信息Confirmation- 确认对话Queue- 队列管理Shimmer- 加载动画InlineCitation- 行内引用
# 1. 创建页面文件
mkdir -p app/new-page
touch app/new-page/page.tsx
# 2. 使用 AppLayout 包裹
# app/new-page/page.tsx
import { AppLayout } from "@/components/layout/app-layout"
export default function NewPage() {
return (
<AppLayout>
<div>Your content here</div>
</AppLayout>
)
}
# 3. 在侧边栏添加导航
# components/layout/app-sidebar.tsx// 1. 在 lib/types.ts 添加类型
export type AgentMode = 'basic-agent' | 'rag' | 'workflow' | 'deep-research' | 'guarded' | 'new-mode';
// 2. 在 lib/session.ts 添加标签和描述
const labels: Record<AgentMode, string> = {
// ...
'new-mode': '新模式',
};
// 3. 在 chat-mode-selector.tsx 添加图标
const modeIcons: Record<AgentMode, React.ComponentType> = {
// ...
'new-mode': YourIcon,
};import { Message } from "@/components/ai-elements/message"
import { Sources } from "@/components/ai-elements/sources"
function YourComponent() {
return (
<>
<Message role="assistant" content="Hello!" />
<Sources sources={[...]} />
</>
)
}- Sprint 1 完成总结
- 快速开始指南
- AI Elements 使用说明
- Chat UI 升级说明 ⭐ 新增
- 故障排除指南
- AI SDK 文档
- AI Elements 文档
- AI Elements Chatbot 示例
# 检查后端是否启动
curl http://localhost:8000/health
# 检查环境变量
cat .env.local# 清除缓存
rm -rf node_modules .next
pnpm install# 使用其他端口
pnpm dev -- -p 3001创建 .env.local 文件:
# 后端 API 地址
NEXT_PUBLIC_API_URL=http://localhost:8000
# OpenAI API Key(可选,如果前端直接调用)
# OPENAI_API_KEY=sk-...
# Anthropic API Key(可选)
# ANTHROPIC_API_KEY=sk-ant-...欢迎提交 Issue 和 Pull Request!
MIT License
开发者: LC-StudyLab Team
版本: Sprint 1 (v0.1.0)
更新时间: 2025-11-10