diff --git a/docs/development-progress.md b/docs/development-progress.md index 699a7a4..d32729d 100644 --- a/docs/development-progress.md +++ b/docs/development-progress.md @@ -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)