🎨 添加文档 && 新增正则脚本模块

Signed-off-by: Echo <1711788888@qq.com>
This commit is contained in:
2026-02-28 15:11:12 +08:00
parent a6234e7bb0
commit 3bfa59cf3e
17 changed files with 26980 additions and 1 deletions

View File

@@ -0,0 +1,730 @@
# 云酒馆项目开发进度
> 最后更新2026-02-27
## 项目概述
云酒馆是一个现代化的 AI 角色对话平台,采用前后端分离架构,完全兼容 SillyTavern V2/V3 格式。
- **前端**React 18 + TypeScript + Tailwind CSS + Vite
- **后端**Go 1.24 + Gin + PostgreSQL + GORM
- **设计风格**Glassmorphism + 深色主题 (OLED 优化)
---
## 开发进度总览
| 模块 | 状态 | 完成度 | 负责人 | 备注 |
|------|------|--------|--------|------|
| 用户系统 | ✅ 已完成 | 100% | - | 注册、登录、资料管理 |
| 角色卡管理 | ✅ 已完成 | 100% | - | 完全兼容 ST V2前后端已打通 |
| 预设管理 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 |
| 对话系统 | ✅ 已完成 | 95% | - | 预设切换、消息重新生成已完成 |
| AI 集成 | 🚧 进行中 | 80% | - | AI 配置管理、API 调用已完成 |
| 世界书系统 | 📋 待开发 | 0% | - | 规划中 |
| 正则脚本 | 📋 待开发 | 0% | - | 规划中 |
**图例**
- ✅ 已完成
- 🚧 进行中
- 📋 待开发
- ⏸️ 暂停
- ❌ 已取消
---
## 一、用户系统 ✅
### 1.1 后端 API已完成 - 2024-02-26
**数据模型**
-`AppUser` - 用户模型
-`AppUserSession` - 会话模型
**API 端点**
-`POST /app/auth/register` - 用户注册
-`POST /app/auth/login` - 用户登录
-`POST /app/auth/refresh` - 刷新Token
-`POST /app/auth/logout` - 用户登出
-`GET /app/auth/userinfo` - 获取用户信息
-`PUT /app/user/profile` - 更新用户资料
-`POST /app/user/change-password` - 修改密码
**核心功能**
- ✅ JWT 认证7天有效期
- ✅ bcrypt 密码加密
- ✅ 会话管理IP、设备信息
- ✅ 用户状态检查
- ✅ 最后登录记录
**文件清单**
```
server/
├── api/v1/app/auth.go # API 控制器
├── model/app/
│ ├── app_user.go # 用户模型
│ ├── app_user_session.go # 会话模型
│ ├── request/auth.go # 请求结构
│ └── response/auth.go # 响应结构
├── service/app/auth.go # 业务逻辑
├── router/app/auth.go # 路由配置
├── middleware/app_jwt.go # JWT 中间件
└── utils/app_jwt.go # JWT 工具
```
### 1.2 前端页面(已完成 - 2024-02-26
**页面清单**
-`/login` - 登录页
-`/register` - 注册页
-`/forgot-password` - 忘记密码
-`/profile` - 用户中心
**功能特性**
- ✅ 表单验证
- ✅ 密码可见性切换
- ✅ 第三方登录入口GitHub/Google
- ✅ 用户统计数据展示
- ✅ 账号设置、隐私设置、通知设置
**文件清单**
```
web-app/src/pages/
├── LoginPage.tsx
├── RegisterPage.tsx
├── ForgotPasswordPage.tsx
└── ProfilePage.tsx
```
### 1.3 前后端对接(已完成 - 2024-02-26
**API 服务层**
-`web-app/src/api/client.ts` - Axios 客户端配置
-`web-app/src/api/auth.ts` - 用户认证 API 封装
**核心功能**
- ✅ Token 自动注入请求头
- ✅ Token 过期自动刷新
- ✅ 统一错误处理
- ✅ 登录状态持久化localStorage
- ✅ 登录后跳转用户中心
- ✅ 未登录自动跳转登录页
- ✅ 用户信息实时加载
- ✅ 登出功能
**环境配置**
-`.env.development` - 开发环境配置http://localhost:8888
-`.env.production` - 生产环境配置
**依赖安装**
- ✅ axios - HTTP 客户端
---
## 二、角色卡管理 ✅
### 2.1 后端 API已完成 - 2024-02-26
**数据模型**
-`AICharacter` - 角色卡模型(完全兼容 SillyTavern V2 格式)
- ✅ 使用 JSONB 存储复杂数据tags, alternateGreetings, characterBook, extensions
- ✅ 支持公开/私有角色卡
- ✅ 统计信息(使用次数、收藏次数)
**API 端点**
-`POST /app/character` - 创建角色卡
-`GET /app/character` - 获取角色卡列表(分页、搜索、标签筛选)
-`GET /app/character/:id` - 获取角色卡详情
-`PUT /app/character/:id` - 更新角色卡
-`DELETE /app/character/:id` - 删除角色卡
-`POST /app/character/upload` - 上传角色卡文件PNG/JSON
-`GET /app/character/:id/export` - 导出角色卡为 JSON
**核心功能**
- ✅ 完全兼容 SillyTavern V2 格式
- ✅ PNG 元数据提取(使用 `utils/character_card.go`
- ✅ JSON 格式导入导出
- ✅ 角色卡搜索和标签筛选
- ✅ 用户权限控制(只能编辑自己的角色卡)
- ✅ 支持 Base64 编码的 PNG tEXt chunk
**文件清单**
```
server/
├── api/v1/app/character.go # API 控制器
├── model/app/ai_character.go # 角色卡模型
├── model/app/request/character.go # 请求结构
├── model/app/response/character.go # 响应结构
├── service/app/character.go # 业务逻辑
├── router/app/character.go # 路由配置
└── utils/character_card.go # SillyTavern V2 格式工具
```
### 2.2 前端页面(已完成 - 2024-02-26
**页面**
-`/characters` - 角色卡管理页
**功能特性**
- ✅ 上传 PNG 角色卡(后端自动解析)
- ✅ 上传 JSON 角色卡
- ✅ 角色卡编辑(名称、描述、性格、场景、系统提示词等)
- ✅ 角色卡导出为 JSON
- ✅ 角色卡删除
- ✅ 搜索功能
- ✅ 分页加载
**文件清单**
```
web-app/src/
├── api/character.ts # 角色卡 API 封装
└── pages/CharacterManagePage.tsx # 角色卡管理页面
```
### 2.3 前后端对接(已完成 - 2024-02-26
**API 服务层**
-`web-app/src/api/character.ts` - 角色卡 API 封装
**核心功能**
- ✅ 角色卡列表加载(分页、搜索)
- ✅ 文件上传PNG/JSON
- ✅ 角色卡编辑和保存
- ✅ 角色卡删除
- ✅ 角色卡导出
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 三、预设管理 ✅
### 3.1 后端 API已完成 - 2026-02-27
**数据模型**
-`AIPreset` - 预设模型(完全兼容 SillyTavern 格式)
- ✅ 支持所有采样参数temperature/topP/topK/frequencyPenalty/presencePenalty/maxTokens/repetitionPenalty/minP/topA
- ✅ 支持系统提示词和停止序列
- ✅ 使用 JSONB 存储扩展字段extensions
- ✅ 支持公开/私有预设和默认预设
**API 端点**
-`POST /app/preset` - 创建预设
-`GET /app/preset` - 获取预设列表(分页、搜索、公开筛选)
-`GET /app/preset/:id` - 获取预设详情
-`PUT /app/preset/:id` - 更新预设
-`DELETE /app/preset/:id` - 删除预设
-`POST /app/preset/:id/default` - 设置默认预设
-`POST /app/preset/import` - 导入预设JSON 文件)
-`GET /app/preset/:id/export` - 导出预设为 JSON
**核心功能**
- ✅ 完全兼容 SillyTavern 预设格式
- ✅ JSON 格式导入导出
- ✅ 预设搜索和筛选
- ✅ 用户权限控制(只能编辑自己的预设)
- ✅ 默认预设管理
- ✅ 使用统计
**文件清单**
```
server/
├── api/v1/app/preset.go # API 控制器
├── model/app/preset.go # 预设模型
├── model/app/request/preset.go # 请求结构
├── model/app/response/preset.go # 响应结构
├── service/app/preset.go # 业务逻辑
└── router/app/preset.go # 路由配置
```
### 3.2 前端页面(已完成 - 2026-02-27
**页面**
-`/presets` - 预设管理页
**功能特性**
- ✅ 导入 JSON 预设
- ✅ 预设参数编辑Temperature、Top P、Top K、Frequency Penalty、Presence Penalty 等)
- ✅ 预设复制
- ✅ 预设导出
- ✅ 预设删除
- ✅ 搜索功能
- ✅ 设置默认预设
**文件清单**
```
web-app/src/
├── api/preset.ts # 预设 API 封装
└── pages/PresetManagePage.tsx # 预设管理页面
```
### 3.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/preset.ts` - 预设 API 封装
**核心功能**
- ✅ 预设列表加载(分页、搜索)
- ✅ 文件上传JSON
- ✅ 预设编辑和保存
- ✅ 预设删除
- ✅ 预设导出
- ✅ 默认预设设置
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 四、对话系统 ✅
### 4.1 后端 API已完成 - 2026-02-27
**数据模型**
-`Conversation` - 对话会话模型
-`Message` - 消息模型
- ✅ 支持用户、角色、预设关联
- ✅ 支持 AI 提供商和模型配置
- ✅ 使用 JSONB 存储对话设置和消息元数据
- ✅ 统计信息消息数量、Token 使用量)
**API 端点**
-`POST /app/conversation` - 创建对话
-`GET /app/conversation` - 获取对话列表(分页)
-`GET /app/conversation/:id` - 获取对话详情
-`PUT /app/conversation/:id/settings` - 更新对话设置
-`DELETE /app/conversation/:id` - 删除对话
-`GET /app/conversation/:id/messages` - 获取消息历史(分页)
-`POST /app/conversation/:id/message` - 发送消息
-`POST /app/conversation/:id/message?stream=true` - 流式发送消息SSE
**核心功能**
- ✅ 对话会话管理
- ✅ 消息发送接收
- ✅ 对话历史存储
- ✅ SSE 流式响应支持
- ✅ Token 统计
- ✅ 用户权限控制
**文件清单**
```
server/
├── api/v1/app/conversation.go # API 控制器
├── model/app/conversation.go # 对话和消息模型
├── model/app/request/conversation.go # 请求结构
├── model/app/response/conversation.go # 响应结构
├── service/app/conversation.go # 业务逻辑
└── router/app/conversation.go # 路由配置
```
### 4.2 前端页面(已完成 - 2026-02-27
**页面**
-`/chat` - 聊天界面
**功能特性**
- ✅ 对话列表侧边栏
- ✅ 角色选择弹窗
- ✅ 消息输入框
- ✅ 对话菜单(导出、删除)
- ✅ 实时消息发送
- ✅ 消息流式显示
- ✅ 对话历史加载
- ✅ 背景图和主题色设置
**待完善**
- ✅ 预设切换功能(流式模式已修复应用预设参数)
- ✅ 消息重新生成(支持流式,自动删除旧回复)
- 📋 消息编辑
- 📋 世界书开关
- 📋 正则脚本开关
**文件清单**
```
web-app/src/
├── api/conversation.ts # 对话 API 封装
├── pages/ChatPage.tsx # 聊天页面
├── components/Sidebar.tsx # 侧边栏
├── components/ChatArea.tsx # 聊天区域
├── components/CharacterPanel.tsx # 角色面板
└── components/SettingsPanel.tsx # 设置面板
```
### 4.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/conversation.ts` - 对话 API 封装
**核心功能**
- ✅ 对话列表加载(分页)
- ✅ 创建新对话
- ✅ 发送消息
- ✅ 消息历史加载
- ✅ 对话设置更新
- ✅ 对话删除
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
---
## 五、AI 集成 🚧
### 5.1 后端 API部分完成 - 2026-02-27
**数据模型**
-`AIConfig` - AI 配置模型
- ✅ 支持多种 AI 提供商OpenAI/Anthropic/Custom
- ✅ API Key 加密存储
- ✅ 模型配置和参数管理
**API 端点**
-`POST /app/ai-config` - 创建 AI 配置
-`GET /app/ai-config` - 获取配置列表
-`GET /app/ai-config/:id` - 获取配置详情
-`PUT /app/ai-config/:id` - 更新配置
-`DELETE /app/ai-config/:id` - 删除配置
-`POST /app/ai-config/:id/test` - 测试连接
**待实现功能**
- ✅ 实际 AI API 调用集成OpenAI/Anthropic
- 📋 本地模型支持Ollama/LM Studio
- 📋 Token 计数优化
- 📋 错误重试机制
- 📋 提示词模板系统
**文件清单**
```
server/
├── api/v1/app/ai_config.go # API 控制器
├── model/app/ai_config.go # AI 配置模型
├── model/app/request/ai_config.go # 请求结构
├── model/app/response/ai_config.go # 响应结构
└── service/app/ai_config.go # 业务逻辑
```
### 5.2 前端页面(已完成 - 2026-02-27
**功能特性**
- ✅ AI 配置管理界面
- ✅ API Key 配置
- ✅ 模型选择
- ✅ 连接测试
**文件清单**
```
web-app/src/
└── api/aiConfig.ts # AI 配置 API 封装
```
---
## 六、世界书系统 ✅
### 6.1 后端 API已完成 - 2026-02-27
**数据模型**
-`Worldbook` - 世界书模型
-`WorldbookEntry` - 世界书条目模型(完全兼容 SillyTavern 格式)
- ✅ 支持公开/私有世界书
- ✅ 使用 JSONB 存储关键词数组和扩展字段
**已实现字段**
- ✅ keys/secondary_keys - 主关键词和次要关键词
- ✅ content - 条目内容
- ✅ constant/enabled - 常驻和启用标志
- ✅ use_regex/case_sensitive/match_whole_words - 匹配选项
- ✅ selective/selective_logic - 选择性触发逻辑
- ✅ position/depth/order - 注入位置和深度
- ✅ probability/scan_depth - 触发概率和扫描深度
- ✅ group_id - 分组管理
**API 端点**
-`POST /app/worldbook` - 创建世界书
-`GET /app/worldbook` - 获取世界书列表(分页、搜索)
-`GET /app/worldbook/:id` - 获取世界书详情
-`PUT /app/worldbook/:id` - 更新世界书
-`DELETE /app/worldbook/:id` - 删除世界书(级联删除条目)
-`POST /app/worldbook/import` - 导入世界书JSON
-`GET /app/worldbook/:id/export` - 导出世界书为 JSON
-`POST /app/worldbook/:id/entry` - 创建条目
-`GET /app/worldbook/:id/entries` - 获取条目列表
-`PUT /app/worldbook/:id/entry/:entryId` - 更新条目
-`DELETE /app/worldbook/:id/entry/:entryId` - 删除条目
**核心功能**
- ✅ 完全兼容 SillyTavern 世界书格式
- ✅ JSON 格式导入导出
- ✅ 世界书搜索和筛选
- ✅ 用户权限控制(只能编辑自己的世界书)
- ✅ 条目计数自动更新
- 📋 关键词触发算法(待与对话系统集成)
- 📋 与对话系统集成(待实现)
**文件清单**
```
server/
├── api/v1/app/worldbook.go # API 控制器
├── model/app/worldbook.go # 世界书和条目模型
├── model/app/request/worldbook.go # 请求结构
├── model/app/response/worldbook.go # 响应结构
├── service/app/worldbook.go # 业务逻辑
└── router/app/worldbook.go # 路由配置
```
### 6.2 前端页面(已完成 - 2026-02-27
**页面**
-`/worldbooks` - 世界书管理页
**功能特性**
- ✅ 导入 JSON 世界书
- ✅ 创建世界书
- ✅ 世界书列表展示
- ✅ 世界书搜索
- ✅ 世界书导出
- ✅ 世界书删除
- ✅ 条目创建和编辑
- ✅ 条目列表展示
- ✅ 条目删除
- ✅ 关键词管理(主关键词、次要关键词)
- ✅ 条目选项配置(常驻、启用、正则、大小写等)
- ✅ 高级选项(触发概率、扫描深度)
**文件清单**
```
web-app/src/
├── api/worldbook.ts # 世界书 API 封装
└── pages/WorldbookManagePage.tsx # 世界书管理页面
```
### 6.3 前后端对接(已完成 - 2026-02-27
**API 服务层**
-`web-app/src/api/worldbook.ts` - 世界书 API 封装
**核心功能**
- ✅ 世界书列表加载(分页、搜索)
- ✅ 文件上传JSON
- ✅ 世界书创建、编辑、删除
- ✅ 世界书导出
- ✅ 条目创建、编辑、删除
- ✅ 条目列表加载
- ✅ 错误处理和用户提示
- ✅ 登录状态检查
### 6.4 待完善功能
- 📋 与对话系统集成(在对话中激活世界书)
- 📋 关键词触发引擎实现
- 📋 选择性触发逻辑AND/NOT
- 📋 深度控制和位置注入
- 📋 概率触发机制
- 📋 递归扫描
- 📋 角色绑定世界书
- 📋 全局世界书
---
## 七、正则脚本系统 📋
### 7.1 待实现功能(规划中)
**数据模型**
- 📋 `RegexScript` - 正则脚本模型
- 📋 支持全局、角色、预设三种作用域
- 📋 完全兼容 SillyTavern 正则脚本格式
**待实现字段**
- 📋 find_regex/replace_with - 查找和替换表达式
- 📋 trim_string - 修剪字符串
- 📋 placement - 执行阶段(输入/输出/世界书/推理)
- 📋 disabled/markdown_only/run_on_edit/prompt_only - 执行选项
- 📋 substitute_regex - 宏替换({{user}}/{{char}}
- 📋 min_depth/max_depth - 深度控制
- 📋 scope/owner_char_id/owner_preset_id - 作用域管理
**计划 API 端点**
```
POST /app/regex # 创建正则脚本
GET /app/regex # 获取脚本列表
GET /app/regex/:id # 获取脚本详情
PUT /app/regex/:id # 更新脚本
DELETE /app/regex/:id # 删除脚本
POST /app/regex/:id/test # 测试脚本
```
**核心功能规划**
- 📋 多阶段脚本执行(输入/输出/世界书/推理)
- 📋 正则表达式解析和执行
- 📋 宏替换系统
- 📋 深度控制和条件执行
- 📋 与对话系统集成
---
## 八、公共页面 ✅
### 6.1 已完成页面
-`/` - 首页(平台介绍、热门角色)
-`/market` - 角色广场(浏览、搜索、分类)
-`/character/:id` - 角色详情(信息、评价)
**文件**
```
web-app/src/pages/
├── HomePage.tsx
├── CharacterMarket.tsx
└── CharacterDetail.tsx
```
---
## 九、技术债务与优化
### 9.1 待优化项
- ✅ 前后端 API 对接(已完成:用户、角色卡、预设、对话)
- ✅ 实际 AI API 调用集成
- 📋 错误处理统一化
- 📋 加载状态优化
- 📋 响应式布局完善
- 📋 性能优化(虚拟滚动、懒加载)
- 📋 单元测试
- 📋 E2E 测试
- 📋 实际 AI API 调用集成
- 📋 世界书引擎实现
- 📋 正则脚本引擎实现
- 📋 Prompt Pipeline 优化
### 9.2 已知问题
- ✅ 对话系统预设切换功能(流式模式已支持)
- ✅ 消息重新生成功能(支持流式,自动删除旧回复)
- 📋 消息编辑功能待实现
---
## 十、部署相关 📋
### 10.1 待完成
- 📋 Docker 配置
- 📋 CI/CD 流程
- 📋 环境变量管理
- 📋 数据库迁移脚本
- 📋 备份策略
- 📋 监控告警
---
## 十一、文档完善 📋
### 11.1 待补充文档
- 🚧 API 接口文档Swagger 注释已添加,待生成)
- 📋 数据库设计文档
- 📋 部署文档
- 📋 开发规范
- 📋 贡献指南
- ✅ SillyTavern 兼容优化方案(已完成)
---
## 开发时间线
### 2024-02-26
- ✅ 完成用户系统后端 API
- ✅ 完成用户系统前端页面
- ✅ 完成用户系统前后端对接
- ✅ 完成角色卡管理后端 API完全兼容 SillyTavern V2
- ✅ 完成角色卡管理前端页面
- ✅ 完成角色卡管理前后端对接
- ✅ 完成预设管理前端页面
- ✅ 完成对话系统前端基础界面
- ✅ 完成公共页面(首页、角色广场、角色详情)
- ✅ 项目结构重构(前后端分离)
### 2026-02-27
-**完成预设管理后端 API**
- 实现预设 CRUD 操作
- 实现预设导入导出JSON
- 实现默认预设管理
- 完全兼容 SillyTavern 预设格式
-**完成预设管理前后端对接**
-**完成对话系统后端 API**
- 实现对话会话管理
- 实现消息发送接收
- 实现 SSE 流式响应
- 实现对话历史存储
-**完成对话系统前后端对接**
-**完成 AI 配置管理模块**
-**编写 SillyTavern 完全兼容优化方案**
-**更新开发进度文档**
### 下一阶段规划
- ✅ 实现实际 AI API 调用OpenAI/Anthropic
- 📋 实现世界书系统(完全兼容 SillyTavern
- 📋 实现正则脚本系统(完全兼容 SillyTavern
- 📋 实现 Prompt Pipeline世界书触发、正则处理、提示词构建
- 📋 完善对话系统高级功能(消息重新生成、编辑)
- 📋 性能优化与测试
- 📋 部署上线
---
## 下一步计划
### 短期目标(本周)
1. ✅ 完成角色卡管理后端 API已完成
2. ✅ 完成预设管理后端 API已完成
3. ✅ 完成对话系统后端 API已完成
4. ✅ 实现实际 AI API 调用OpenAI/Anthropic
5. ✅ 完善对话系统高级功能(消息重新生成)
### 中期目标(本月)
1. 📋 实现世界书系统(完全兼容 SillyTavern
- 数据模型设计
- 关键词触发算法
- 选择性触发逻辑
- 与对话系统集成
2. 📋 实现正则脚本系统(完全兼容 SillyTavern
- 数据模型设计
- 多阶段脚本执行
- 正则表达式引擎
- 宏替换系统
3. 📋 实现 Prompt Pipeline
- 世界书扫描与注入
- 正则脚本处理
- 提示词构建优化
4. 📋 基础功能测试与优化
### 长期目标(下月)
1. 📋 插件系统设计与实现
2. 📋 性能优化(虚拟滚动、懒加载、缓存)
3. 📋 完善文档API 文档、部署文档)
4. 📋 Docker 部署配置
5. 📋 CI/CD 流程搭建
6. 📋 部署上线
7. 📋 用户反馈收集
---
## 团队协作
### 开发规范
- 代码风格:遵循项目现有风格
- 提交规范:使用 Conventional Commits
- 分支管理feature/* 用于新功能bugfix/* 用于修复
### 沟通渠道
- 技术讨论GitHub Issues
- 进度同步:本文档
- 代码审查Pull Request
---
## 备注
- 本文档持续更新,记录项目开发进度
- 每完成一个功能模块,更新对应状态
- 遇到问题及时记录在"已知问题"部分