@@ -1,6 +1,6 @@
|
||||
# 云酒馆项目开发进度
|
||||
|
||||
> 最后更新:2026-02-27
|
||||
> 最后更新:2026-03-02
|
||||
|
||||
## 项目概述
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
| 角色卡管理 | ✅ 已完成 | 100% | - | 完全兼容 ST V2,前后端已打通 |
|
||||
| 预设管理 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 |
|
||||
| 对话系统 | ✅ 已完成 | 95% | - | 预设切换、消息重新生成已完成 |
|
||||
| AI 集成 | 🚧 进行中 | 80% | - | AI 配置管理、API 调用已完成 |
|
||||
| 世界书系统 | 📋 待开发 | 0% | - | 规划中 |
|
||||
| 正则脚本 | 📋 待开发 | 0% | - | 规划中 |
|
||||
| AI 集成 | ✅ 已完成 | 100% | - | AI 配置管理、API 调用已完成 |
|
||||
| 世界书系统 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 |
|
||||
| 正则脚本 | ✅ 已完成 | 95% | - | 完全兼容 ST,已集成到对话流程 |
|
||||
|
||||
**图例**:
|
||||
- ✅ 已完成
|
||||
@@ -524,40 +524,128 @@ web-app/src/
|
||||
|
||||
---
|
||||
|
||||
## 七、正则脚本系统 📋
|
||||
## 七、正则脚本系统 ✅
|
||||
|
||||
### 7.1 待实现功能(规划中)
|
||||
### 7.1 后端 API(已完成 - 2026-03-02)
|
||||
|
||||
**数据模型**:
|
||||
- 📋 `RegexScript` - 正则脚本模型
|
||||
- 📋 支持全局、角色、预设三种作用域
|
||||
- 📋 完全兼容 SillyTavern 正则脚本格式
|
||||
- ✅ `RegexScript` - 正则脚本模型(完全兼容 SillyTavern 格式)
|
||||
- ✅ 支持全局、角色、预设三种作用域
|
||||
- ✅ 使用 JSONB 存储扩展字段和修剪字符串数组
|
||||
|
||||
**待实现字段**:
|
||||
- 📋 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 - 作用域管理
|
||||
**已实现字段**:
|
||||
- ✅ name - 脚本名称
|
||||
- ✅ find_regex - 查找正则表达式
|
||||
- ✅ replace_with - 替换字符串
|
||||
- ✅ trim_strings - 修剪字符串数组
|
||||
- ✅ placement - 执行阶段(0=输入/1=输出/2=世界书/3=显示)
|
||||
- ✅ disabled - 禁用标志
|
||||
- ✅ markdown_only - 仅 Markdown 模式
|
||||
- ✅ run_on_edit - 编辑时运行
|
||||
- ✅ prompt_only - 仅提示词模式
|
||||
- ✅ substitute_regex - 宏替换({{user}}/{{char}})
|
||||
- ✅ min_depth/max_depth - 深度控制
|
||||
- ✅ scope - 作用域(0=全局/1=角色/2=预设)
|
||||
- ✅ owner_char_id/owner_preset_id - 所有者 ID
|
||||
- ✅ order - 执行顺序
|
||||
|
||||
**计划 API 端点**:
|
||||
**API 端点**:
|
||||
- ✅ `POST /app/regex` - 创建正则脚本
|
||||
- ✅ `GET /app/regex` - 获取脚本列表(分页、搜索、作用域筛选)
|
||||
- ✅ `GET /app/regex/:id` - 获取脚本详情
|
||||
- ✅ `PUT /app/regex/:id` - 更新脚本
|
||||
- ✅ `DELETE /app/regex/:id` - 删除脚本
|
||||
- ✅ `POST /app/regex/test` - 测试脚本执行
|
||||
|
||||
**核心功能**:
|
||||
- ✅ 完全兼容 SillyTavern 正则脚本格式
|
||||
- ✅ 多阶段脚本执行(输入/输出/世界书/显示)
|
||||
- ✅ 正则表达式解析和执行
|
||||
- ✅ 宏替换系统({{user}}/{{char}}/{{original}})
|
||||
- ✅ 深度控制和条件执行
|
||||
- ✅ 与对话系统集成
|
||||
- ✅ 角色卡导入时自动导入正则脚本
|
||||
- ✅ 角色卡导出时自动导出正则脚本
|
||||
|
||||
**文件清单**:
|
||||
```
|
||||
POST /app/regex # 创建正则脚本
|
||||
GET /app/regex # 获取脚本列表
|
||||
GET /app/regex/:id # 获取脚本详情
|
||||
PUT /app/regex/:id # 更新脚本
|
||||
DELETE /app/regex/:id # 删除脚本
|
||||
POST /app/regex/:id/test # 测试脚本
|
||||
server/
|
||||
├── api/v1/app/regex_script.go # API 控制器
|
||||
├── model/app/regex_script.go # 正则脚本模型
|
||||
├── model/app/request/regex_script.go # 请求结构
|
||||
├── model/app/response/regex_script.go # 响应结构
|
||||
├── service/app/regex_script.go # 业务逻辑和执行引擎
|
||||
├── router/app/regex_script.go # 路由配置
|
||||
└── service/app/character.go # 角色卡导入导出集成
|
||||
```
|
||||
|
||||
**核心功能规划**:
|
||||
- 📋 多阶段脚本执行(输入/输出/世界书/推理)
|
||||
- 📋 正则表达式解析和执行
|
||||
- 📋 宏替换系统
|
||||
- 📋 深度控制和条件执行
|
||||
- 📋 与对话系统集成
|
||||
### 7.2 前端页面(已完成 - 2026-03-02)
|
||||
|
||||
**功能特性**:
|
||||
- ✅ 角色卡管理页面集成正则脚本编辑
|
||||
- ✅ 导入 JSON 正则脚本(兼容 SillyTavern 格式)
|
||||
- ✅ 正则脚本创建和编辑
|
||||
- ✅ 正则脚本列表展示
|
||||
- ✅ 正则脚本删除
|
||||
- ✅ 执行阶段选择(输入/输出/世界书/显示)
|
||||
- ✅ 执行顺序配置
|
||||
- ✅ 启用/禁用开关
|
||||
- ✅ 作用域管理(全局/角色/预设)
|
||||
|
||||
**文件清单**:
|
||||
```
|
||||
web-app/src/
|
||||
├── api/regex.ts # 正则脚本 API 封装
|
||||
├── pages/CharacterManagePage.tsx # 角色卡管理页面(集成正则脚本)
|
||||
└── components/MessageContent.tsx # 消息渲染组件(HTML/脚本渲染)
|
||||
```
|
||||
|
||||
### 7.3 对话系统集成(已完成 - 2026-03-02)
|
||||
|
||||
**集成点**:
|
||||
- ✅ 输入阶段(Placement 0)- 用户消息发送前处理
|
||||
- ✅ 输出阶段(Placement 1)- AI 回复生成后处理
|
||||
- ✅ 显示阶段(Placement 3)- 前端渲染前处理
|
||||
- ✅ 开场白消息处理 - 角色首条消息应用正则脚本
|
||||
|
||||
**实现位置**:
|
||||
- ✅ `conversation.go:SendMessage` - 非流式消息发送
|
||||
- ✅ `conversation.go:SendMessageStream` - 流式消息发送
|
||||
- ✅ `conversation.go:CreateConversation` - 创建对话时处理开场白
|
||||
|
||||
**执行流程**:
|
||||
```
|
||||
用户输入 → 输入阶段脚本 → AI 处理 → 输出阶段脚本 → 保存数据库 → 显示阶段脚本 → 前端渲染
|
||||
```
|
||||
|
||||
### 7.4 前端渲染优化(已完成 - 2026-03-02)
|
||||
|
||||
**HTML 渲染支持**:
|
||||
- ✅ 自动提取 markdown 代码块中的 HTML(```html...```)
|
||||
- ✅ 移除 markdown 代码块标记(``` 符号)
|
||||
- ✅ 自动启用脚本渲染(无需手动点击按钮)
|
||||
- ✅ iframe 沙箱渲染(支持 JavaScript)
|
||||
- ✅ 直接 HTML 渲染(无脚本内容)
|
||||
- ✅ 统一容器样式(避免宽高变化)
|
||||
- ✅ 响应式宽度适配(强制覆盖固定宽度)
|
||||
|
||||
**选项按钮支持**:
|
||||
- ✅ 自动解析选项格式(A:/A./A、/A:)
|
||||
- ✅ 渲染为可点击按钮
|
||||
- ✅ 点击后自动发送选项内容
|
||||
- ✅ 支持多种选项格式
|
||||
|
||||
**文件位置**:
|
||||
- ✅ `MessageContent.tsx:173-243` - HTML 提取和处理逻辑
|
||||
- ✅ `MessageContent.tsx:246-290` - iframe 渲染逻辑
|
||||
- ✅ `MessageContent.tsx:348-372` - 渲染模式切换
|
||||
|
||||
### 7.5 待完善功能
|
||||
|
||||
- 📋 世界书阶段(Placement 2)脚本执行
|
||||
- 📋 正则脚本测试界面
|
||||
- 📋 正则脚本导入导出(独立功能)
|
||||
- 📋 正则脚本模板库
|
||||
|
||||
---
|
||||
|
||||
@@ -658,9 +746,45 @@ web-app/src/pages/
|
||||
- 实现对话历史存储
|
||||
- ✅ **完成对话系统前后端对接**
|
||||
- ✅ **完成 AI 配置管理模块**
|
||||
- ✅ **完成世界书系统**
|
||||
- 实现世界书 CRUD 操作
|
||||
- 实现世界书条目管理
|
||||
- 实现导入导出功能
|
||||
- 完全兼容 SillyTavern 格式
|
||||
- ✅ **编写 SillyTavern 完全兼容优化方案**
|
||||
- ✅ **更新开发进度文档**
|
||||
|
||||
### 2026-03-02
|
||||
- ✅ **完成正则脚本系统后端 API**
|
||||
- 实现正则脚本 CRUD 操作
|
||||
- 实现多阶段脚本执行引擎
|
||||
- 实现宏替换系统({{user}}/{{char}}/{{original}})
|
||||
- 完全兼容 SillyTavern 正则脚本格式
|
||||
- ✅ **完成正则脚本前端管理界面**
|
||||
- 集成到角色卡管理页面
|
||||
- 支持导入导出正则脚本
|
||||
- 支持脚本创建、编辑、删除
|
||||
- ✅ **完成正则脚本与对话系统集成**
|
||||
- 输入阶段脚本处理(用户消息)
|
||||
- 输出阶段脚本处理(AI 回复)
|
||||
- 显示阶段脚本处理(前端渲染)
|
||||
- 开场白消息脚本处理
|
||||
- ✅ **完成前端 HTML 渲染优化**
|
||||
- 自动提取和渲染 markdown 代码块中的 HTML
|
||||
- 移除 markdown 代码块标记
|
||||
- 自动启用脚本渲染
|
||||
- iframe 沙箱渲染支持
|
||||
- 响应式宽度适配
|
||||
- ✅ **完成选项按钮功能**
|
||||
- 自动解析选项格式
|
||||
- 渲染为可点击按钮
|
||||
- 点击后自动发送
|
||||
- ✅ **修复关键 Bug**
|
||||
- 修复 GetScriptsForPlacement SQL 查询 bug
|
||||
- 修复流式消息未应用正则脚本问题
|
||||
- 修复 HTML 渲染宽度问题
|
||||
- 修复 markdown 符号残留问题
|
||||
|
||||
### 下一阶段规划
|
||||
- ✅ 实现实际 AI API 调用(OpenAI/Anthropic)
|
||||
- 📋 实现世界书系统(完全兼容 SillyTavern)
|
||||
|
||||
Reference in New Issue
Block a user