Files
st-react/docs/development-progress.md
2026-02-28 15:11:12 +08:00

22 KiB
Raw Blame History

云酒馆项目开发进度

最后更新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
  • 登录后跳转用户中心
  • 未登录自动跳转登录页
  • 用户信息实时加载
  • 登出功能

环境配置

依赖安装

  • 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

备注

  • 本文档持续更新,记录项目开发进度
  • 每完成一个功能模块,更新对应状态
  • 遇到问题及时记录在"已知问题"部分