# Agent Chat - 超炫酷 AI 投研助手
> 🎨 基于 **Hero UI** (NextUI) 构建的现代化 AI 聊天界面,模仿 Google AI Studio 风格
## ✨ 设计亮点
### 🚀 技术栈
- **Hero UI** - 现代化 React UI 组件库(NextUI 的继任者)
- **Framer Motion 12** - 物理动画引擎(已升级!)
- **Tailwind CSS** - 原子化 CSS 框架(Hero UI 内置)
- **Lucide Icons** - 现代化图标库
- **Chakra UI Toast** - 通知提示(待迁移到 Hero UI Toast)
### 🎨 视觉特性
1. **毛玻璃效果(Glassmorphism)**
- 侧边栏和顶栏采用半透明毛玻璃质感
- `backdrop-blur-xl` + 渐变背景
- 深色模式完美支持
2. **流畅动画(Framer Motion 12 物理引擎)**
- ✨ 侧边栏 **Spring 弹性动画**滑入/滑出(stiffness: 300, damping: 30)
- ✨ 消息 **淡入上移** + **错开延迟**(staggerChildren: 0.05)
- ✨ 按钮 **悬停缩放**(1.05x) + **点击压缩**(0.95x)
- ✨ AI 头像 **360度持续旋转**(duration: 3s, linear)
- ✨ 快捷问题卡片 **退出动画**(AnimatePresence)
3. **渐变色设计**
- 标题:蓝到紫渐变
- 用户消息气泡:蓝到紫渐变
- 发送按钮:蓝到紫渐变
- AI 头像:紫到粉渐变
4. **响应式布局**
- 三栏式设计(左侧历史 + 中间聊天 + 右侧配置)
- 侧边栏可折叠
- 暗黑模式支持
- 集成主导航栏(MainLayout)
### 🎯 核心功能
#### 1. 左侧历史面板
- ✅ 会话列表展示(带搜索)
- ✅ 新建对话
- ✅ 切换会话
- ✅ 会话元信息(时间、消息数)
- ✅ 用户信息展示
- ✅ 折叠/展开动画
#### 2. 中间聊天区域
- ✅ 消息流展示(用户/AI)
- ✅ AI 思考状态(脉冲动画)
- ✅ 消息操作(复制、点赞、点踩)
- ✅ 执行步骤详情(可折叠 Accordion)
- ✅ 快捷问题按钮(2x2 网格)
- ✅ 键盘快捷键(Enter 发送,Shift+Enter 换行)
- ✅ 自动滚动到底部
- ✅ Hero UI ScrollShadow 组件
#### 3. 右侧配置面板
- ✅ Tabs 切换(模型 / 工具 / 统计)
- ✅ 模型选择(3 个模型,卡片式)
- ✅ 工具选择(Checkbox 多选)
- ✅ 统计信息(会话数、消息数、工具数)
## 🔧 使用方法
### 访问路径
```
/agent-chat
```
### 模型选择
| 模型 | 图标 | 描述 | 适用场景 |
|------|------|------|----------|
| **Kimi K2 Thinking** | 🧠 | 深度思考模型 | 复杂分析、深度研究 |
| **Kimi K2** | ⚡ | 快速响应模型 | 简单查询、快速问答 |
| **DeepMoney** | 📈 | 金融专业模型 | 金融数据分析 |
### 工具选择
| 工具 | 功能 |
|------|------|
| 📰 新闻搜索 | 搜索最新财经新闻 |
| 📈 涨停分析 | 分析涨停股票 |
| 💾 概念板块 | 查询概念板块信息 |
| 📚 研报搜索 | 搜索研究报告 |
| 📊 路演信息 | 查询路演活动 |
### 快捷键
| 快捷键 | 功能 |
|--------|------|
| `Enter` | 发送消息 |
| `Shift + Enter` | 换行 |
## 📦 Hero UI 组件使用
### 核心组件
```javascript
import {
Button, // 按钮
Card, // 卡片
Input, // 输入框
Avatar, // 头像
Chip, // 标签
Badge, // 徽章
Spinner, // 加载器
Tooltip, // 工具提示
Checkbox, // 复选框
Tabs, Tab, // 标签页
ScrollShadow, // 滚动阴影
Kbd, // 键盘按键
Accordion, // 手风琴
} from '@heroui/react';
```
### 特色功能
1. **isPressable / isHoverable**
```javascript
内容
```
2. **ScrollShadow**(自动滚动阴影)
```javascript
长内容...
```
3. **渐变背景(Tailwind)**
```javascript
内容
```
4. **毛玻璃效果**
```javascript
内容
```
## 🔌 API 集成
### 后端接口
#### 1. 获取会话列表
```http
GET /mcp/agent/sessions?user_id={user_id}&limit=50
```
#### 2. 获取会话历史
```http
GET /mcp/agent/history/{session_id}?limit=100
```
#### 3. 发送消息
```http
POST /mcp/agent/chat
Content-Type: application/json
{
"message": "用户问题",
"conversation_history": [],
"user_id": "user_id",
"session_id": "uuid或null",
"model": "kimi-k2-thinking",
"tools": ["search_news", "search_limit_up"]
}
```
## 🎨 Hero UI 特性
### 为什么选择 Hero UI?
1. **基于 Tailwind CSS**
- 编译时 CSS,零运行时开销
- 原子化类名,易于定制
- 深色模式内置支持
2. **基于 React Aria**
- 完整的无障碍支持
- 键盘导航内置
- ARIA 属性自动处理
3. **TypeScript 优先**
- 完整的类型支持
- 智能提示
4. **物理动画**
- 集成 Framer Motion
- 性能优化
5. **模块化架构**
- npm 包分发(非复制粘贴)
- 按需引入
- Tree-shaking 友好
### Hero UI vs Chakra UI
| 特性 | Hero UI | Chakra UI |
|------|---------|-----------|
| CSS 方案 | Tailwind CSS(编译时) | Emotion(运行时) |
| 包大小 | 更小(Tree-shaking) | 较大 |
| 性能 | 更快(无运行时 CSS) | 较慢 |
| 定制性 | Tailwind 配置 | Theme 对象 |
| 学习曲线 | 需要熟悉 Tailwind | 纯 Props API |
| 组件数量 | 210+ | 100+ |
| 动画 | Framer Motion | Framer Motion |
| 无障碍 | React Aria | 自实现 |
## 📁 文件结构
```
src/views/AgentChat/
├── index.js # Hero UI 版本(当前)
├── index_old_chakra.js # Chakra UI 旧版本(备份)
└── README.md # 本文档
```
## 🎯 组件层次
```
AgentChat
├── MotionDiv (背景渐变)
├── LeftSidebar (历史会话)
│ ├── SearchInput (Hero UI Input)
│ ├── SessionList (Hero UI Card)
│ └── UserInfo (Hero UI Avatar)
├── ChatArea (中间区域)
│ ├── ChatHeader (Hero UI)
│ ├── MessageList (Hero UI ScrollShadow)
│ │ └── MessageRenderer
│ ├── QuickQuestions (Hero UI Button)
│ └── InputBox (Hero UI Input + Button)
└── RightSidebar (配置面板)
├── Tabs (Hero UI Tabs)
├── ModelSelector (Hero UI Card)
├── ToolSelector (Hero UI CheckboxGroup)
└── Statistics (Hero UI Badge)
```
## 🚀 性能优化
1. **代码分割**
- React.lazy() 懒加载
- 路由级别分割
2. **动画优化**
- Framer Motion 硬件加速
- AnimatePresence 动画退出
3. **Tailwind CSS**
- JIT 模式(即时编译,构建速度提升 50%)
- 编译时生成 CSS
- 零运行时开销
- PurgeCSS 自动清理
4. **Hero UI**
- Tree-shaking 优化
- 按需引入组件
5. **构建优化(craco.config.js)**
- 文件系统缓存(二次构建提速 50-80%)
- ESLint 插件移除(构建提速 20-30%)
- 生产环境禁用 source map(提速 40-60%)
- 激进的代码分割策略(按库分离)
- Babel 缓存启用
## 🐛 已知问题
- ~~深色模式下某些颜色对比度不足~~ ✅ 已修复
- ~~会话删除功能需要后端 API 支持~~ ⏳ 待实现
## 📝 开发日志
### 2025-11-22
- ✅ 完成 Hero UI 迁移
- ✅ 实现三栏式布局
- ✅ 添加毛玻璃效果
- ✅ 集成 Framer Motion 动画
- ✅ 添加模型和工具选择功能
- ✅ 优化深色模式
## 🔮 未来计划
- [ ] 支持流式响应(SSE)
- [ ] Markdown 渲染(react-markdown)
- [ ] 代码高亮(Prism.js)
- [ ] 图片上传和分析
- [ ] 语音输入/输出
- [ ] 导出为 PDF/Word
- [ ] 分享对话链接
- [ ] 对话模板功能
## 📖 参考资源
- [Hero UI 官方文档](https://www.heroui.com/docs)
- [Framer Motion 文档](https://www.framer.com/motion/)
- [Tailwind CSS 文档](https://tailwindcss.com/docs)
- [Lucide Icons](https://lucide.dev/)
## 📄 许可证
本项目基于 Argon Dashboard Chakra PRO 模板开发。