107 lines
3.4 KiB
Markdown
107 lines
3.4 KiB
Markdown
# Chat AI System - 重构后的目录结构说明
|
||
|
||
## 概述
|
||
这是一个基于 Google Gemini API 的多角色 AI 聊天系统,支持不同性格的虚拟角色对话。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
Scripts/test/
|
||
├── core/ # 核心服务层
|
||
│ ├── ChatAIService.ts # AI聊天服务,管理Gemini API调用
|
||
│ ├── ChatHistoryManager.ts # 聊天历史管理器
|
||
│ └── RoleConfig.ts # 角色配置映射
|
||
├── ui/ # 用户界面层
|
||
│ ├── panels/ # UI面板
|
||
│ │ ├── ChatPanel.ts # 聊天界面面板
|
||
│ │ ├── GirlDetailPanel.ts # 角色详情面板
|
||
│ │ └── GirlListPanel.ts # 角色列表面板
|
||
│ ├── components/ # UI组件
|
||
│ │ ├── DialogBubble.ts # 对话气泡组件
|
||
│ │ ├── ChatContentsLayout.ts # 聊天内容布局
|
||
│ │ └── ImagePopup.ts # 图片弹窗组件
|
||
│ └── items/ # 列表项组件
|
||
├── config/ # 配置文件
|
||
│ ├── ApiConfig.ts # API配置管理
|
||
│ └── SystemPrompts.ts # 系统提示词配置
|
||
├── manager/ # 管理器层
|
||
│ └── DemoManager.ts # 场景和导航管理器
|
||
└── utils/ # 工具类
|
||
├── tools.ts # 通用工具函数
|
||
└── DemoData.ts # 演示数据管理
|
||
|
||
```
|
||
|
||
## 主要改进
|
||
|
||
### 1. 安全性改进
|
||
- ✅ 将API配置提取到独立文件(`config/ApiConfig.ts`)
|
||
- ⚠️ API密钥仍在代码中(待改进:使用环境变量)
|
||
- ✅ 添加输入验证和错误处理
|
||
|
||
### 2. 代码组织优化
|
||
- ✅ 按功能分层组织文件结构
|
||
- ✅ 修复拼写错误(GPTResquest → GPTRequest)
|
||
- ✅ 清理废弃代码并添加@deprecated标记
|
||
- ✅ 改进导入路径的一致性
|
||
|
||
### 3. 文档完善
|
||
- ✅ 添加详细的JSDoc注释
|
||
- ✅ 提供使用示例
|
||
- ✅ 创建结构说明文档
|
||
|
||
### 4. 类型安全
|
||
- ✅ 完善TypeScript类型定义
|
||
- ✅ 添加接口文档说明
|
||
|
||
## 核心功能
|
||
|
||
### ChatAIService (核心AI服务)
|
||
- 管理多个独立的聊天实例
|
||
- 支持角色切换和上下文保持
|
||
- 自动保存和加载聊天历史
|
||
- 基于Gemini API的消息处理
|
||
|
||
### ChatHistoryManager (历史管理)
|
||
- 本地存储聊天记录
|
||
- 支持历史记录的增删改查
|
||
- 自动限制历史长度(100条消息)
|
||
- 预留远程同步接口
|
||
|
||
### RoleConfig (角色配置)
|
||
- 角色ID与系统提示词的映射
|
||
- 支持动态角色配置
|
||
- 预定义三种角色性格
|
||
|
||
## 使用示例
|
||
|
||
```typescript
|
||
// 初始化聊天服务
|
||
const chatService = ChatAIService.Instance;
|
||
|
||
// 设置当前角色
|
||
chatService.setCurrentRole(10001);
|
||
|
||
// 发送消息并获取回复
|
||
const response = await chatService.sendMessage(10001, "你好");
|
||
console.log(response);
|
||
|
||
// 清除聊天历史
|
||
chatService.clearChatHistory(10001);
|
||
```
|
||
|
||
## 待优化项目
|
||
|
||
1. **安全性**:将API密钥移至环境变量
|
||
2. **性能**:实现消息分页加载
|
||
3. **功能**:添加消息搜索和导出功能
|
||
4. **监控**:增加API调用统计和限流
|
||
5. **测试**:添加单元测试和集成测试
|
||
|
||
## 兼容性说明
|
||
|
||
为了保持向后兼容性,保留了一些废弃的接口:
|
||
- `GPTResquest` 类型别名(建议使用 `GPTRequest`)
|
||
- `Post()` 方法(建议使用 `sendMessage()`)
|
||
|
||
这些接口会在控制台输出警告信息,建议尽快迁移到新的API。 |