# 云酒馆项目开发进度 > 最后更新: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 --- ## 备注 - 本文档持续更新,记录项目开发进度 - 每完成一个功能模块,更新对应状态 - 遇到问题及时记录在"已知问题"部分