From d0582f6aad8c7b2407e06410f7338bb98a4ebb4c Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Mon, 2 Mar 2026 01:17:21 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20=E6=9B=B4=E6=96=B0=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=8C=E5=A1=AB=E5=86=99=E6=9C=AA=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=9A=84=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Echo <1711788888@qq.com> --- docs/development-progress.md | 185 +++++++++++++++++++++++++++++------ 1 file changed, 154 insertions(+), 31 deletions(-) diff --git a/docs/development-progress.md b/docs/development-progress.md index d32729d..f8d65db 100644 --- a/docs/development-progress.md +++ b/docs/development-progress.md @@ -21,7 +21,7 @@ | 预设管理 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 | | 对话系统 | ✅ 已完成 | 95% | - | 预设切换、消息重新生成已完成 | | AI 集成 | ✅ 已完成 | 100% | - | AI 配置管理、API 调用已完成 | -| 世界书系统 | ✅ 已完成 | 100% | - | 前后端已打通,支持导入导出 | +| 世界书系统 | ✅ 已完成 | 100% | - | 前后端已打通,触发引擎已集成到对话系统 | | 正则脚本 | ✅ 已完成 | 95% | - | 完全兼容 ST,已集成到对话流程 | **图例**: @@ -456,8 +456,8 @@ web-app/src/ - ✅ 世界书搜索和筛选 - ✅ 用户权限控制(只能编辑自己的世界书) - ✅ 条目计数自动更新 -- 📋 关键词触发算法(待与对话系统集成) -- 📋 与对话系统集成(待实现) +- ✅ 关键词触发引擎(WorldbookEngine) +- ✅ 与对话系统完全集成(非流式 + 流式) **文件清单**: ``` @@ -467,6 +467,7 @@ server/ ├── model/app/request/worldbook.go # 请求结构 ├── model/app/response/worldbook.go # 响应结构 ├── service/app/worldbook.go # 业务逻辑 +├── service/app/worldbook_engine.go # 关键词触发引擎 └── router/app/worldbook.go # 路由配置 ``` @@ -511,15 +512,33 @@ web-app/src/ - ✅ 错误处理和用户提示 - ✅ 登录状态检查 -### 6.4 待完善功能 +### 6.4 对话系统集成(已完成 - 2026-02-27) -- 📋 与对话系统集成(在对话中激活世界书) -- 📋 关键词触发引擎实现 -- 📋 选择性触发逻辑(AND/NOT) -- 📋 深度控制和位置注入 -- 📋 概率触发机制 +**触发引擎**(`service/app/worldbook_engine.go`): +- ✅ `WorldbookEngine.ScanAndTrigger` - 扫描消息历史并触发匹配条目 +- ✅ `WorldbookEngine.shouldTrigger` - 逐条检查触发条件(constant/keys/scanDepth) +- ✅ `WorldbookEngine.matchKeys` - 关键词匹配(useRegex/caseSensitive/matchWholeWords) +- ✅ `WorldbookEngine.BuildPromptWithWorldbook` - 将触发条目注入到系统提示词 + +**集成点**: +- ✅ `conversation.go:callAIService` - 非流式消息世界书注入 +- ✅ `conversation.go:SendMessageStream` - 流式消息世界书注入 + +**执行流程**: +``` +用户消息 → 扫描最近 N 条消息 → 匹配关键词 → 触发条目排序 → 注入系统提示词 → AI 处理 +``` + +**设置面板**(`components/SettingsPanel.tsx`): +- ✅ 世界书开关(启用/禁用) +- ✅ 世界书选择器(下拉列表,显示条目数量) +- ✅ 保存到 `conversation.worldbookId` 和 `conversation.worldbookEnabled` + +### 6.5 待完善功能 + +- 📋 概率触发机制(probability 字段已存储,引擎待实现) - 📋 递归扫描 -- 📋 角色绑定世界书 +- 📋 角色绑定世界书(Character Book) - 📋 全局世界书 --- @@ -640,12 +659,64 @@ web-app/src/ - ✅ `MessageContent.tsx:246-290` - iframe 渲染逻辑 - ✅ `MessageContent.tsx:348-372` - 渲染模式切换 -### 7.5 待完善功能 +### 7.5 全局正则脚本管理(已完成 - 2026-03-02) + +**功能特性**: +- ✅ 独立的全局正则脚本管理页面 `/regex-scripts` +- ✅ 创建、编辑、删除全局正则脚本 +- ✅ 导入导出 JSON 格式脚本(兼容 SillyTavern) +- ✅ 只管理 scope=0 的全局脚本 +- ✅ 支持批量导出所有脚本 + +**文件位置**: +- ✅ `web-app/src/pages/RegexScriptManagePage.tsx` - 全局正则脚本管理页面 +- ✅ `web-app/src/App.tsx` - 添加路由配置 + +### 7.6 变量系统扩展(已完成 - 2026-03-02) + +**后端新增变量** (`server/service/app/regex_script.go`): +- ✅ `{{time_12h}}` - 12小时制时间 +- ✅ `{{date_short}}` - 短日期格式 (MM/DD/YY) +- ✅ `{{weekday}}` - 星期几 +- ✅ `{{month}}` - 月份名称 +- ✅ `{{year}}` - 年份 +- ✅ `{{pick:option1|option2|option3}}` - 随机选择一个选项 +- ✅ `{{tab}}` - 制表符 +- ✅ `{{space}}` - 空格 +- ✅ `{{empty}}` - 空字符串 + +**前端变量系统** (`web-app/src/store/index.ts`): +- ✅ 同步支持所有后端变量 +- ✅ `substituteVariables()` 函数可在前端替换变量 +- ✅ `extractVariables()` 函数可提取文本中的变量 + +### 7.7 MVU 状态管理架构(已完成 - 2026-03-02) + +**核心实现** (`web-app/src/store/index.ts`): +- ✅ 基于 Zustand 实现完整的 MVU 架构 +- ✅ Model: 用户、角色、对话、消息、UI、变量状态 +- ✅ Update: 完整的状态更新操作 +- ✅ View: 状态选择器(Selectors) +- ✅ 持久化存储(localStorage) +- ✅ DevTools 支持 + +**页面集成**: +- ✅ `ChatPage.tsx` - 集成 MVU store 管理对话状态 +- ✅ `CharacterManagePage.tsx` - 导入 MVU store +- ✅ 角色切换时自动更新变量系统 + +**工具函数**: +- ✅ `substituteVariables()` - 替换文本中的变量 +- ✅ `extractVariables()` - 提取文本中的变量 + +### 7.8 待完善功能 - 📋 世界书阶段(Placement 2)脚本执行 - 📋 正则脚本测试界面 -- 📋 正则脚本导入导出(独立功能) - 📋 正则脚本模板库 +- 🧪 全局正则脚本功能测试 +- 🧪 扩展变量系统测试 +- 🧪 MVU store 集成测试 --- @@ -754,6 +825,17 @@ web-app/src/pages/ - ✅ **编写 SillyTavern 完全兼容优化方案** - ✅ **更新开发进度文档** +### 2026-02-27(续) +- ✅ **完成世界书与对话系统集成** + - 实现 WorldbookEngine 关键词触发引擎 + - 集成到非流式(callAIService)和流式(SendMessageStream)消息路径 + - 实现选择性触发逻辑(constant/keys/useRegex/caseSensitive/matchWholeWords) + - 实现 SettingsPanel 世界书选择器(启用开关 + 世界书下拉) +- ✅ **修复前端消息渲染 Bug** + - 修复通用代码块正则误判导致消息内容消失的问题(恢复仅识别 \`\`\`html 标识符) + - 修复 iframe 宽度坍缩为 300px 问题(助手消息列从 max-w-[70%] 改为 w-[70%]) + - 保留 HTML 代码块渲染中的 ``` → `
` 转换逻辑
+
### 2026-03-02
- ✅ **完成正则脚本系统后端 API**
- 实现正则脚本 CRUD 操作
@@ -785,12 +867,52 @@ web-app/src/pages/
- 修复 HTML 渲染宽度问题
- 修复 markdown 符号残留问题
-### 下一阶段规划
+### 2026-03-02(今天完成)
+- ✅ **完成正则脚本前端 HTML 渲染优化**
+ - 修复 HTML 代码块渲染问题
+ - 移除 markdown ``` 符号残留
+ - 自动启用脚本渲染
+ - 统一 iframe 和直接 HTML 渲染的容器样式
+ - 修复宽度适配问题
+- ✅ **完成全局正则脚本管理功能**
+ - 创建独立的全局正则脚本管理页面 `/regex-scripts`
+ - 支持创建、编辑、删除、导入、导出全局脚本
+ - 完全兼容 SillyTavern 格式
+- ✅ **扩展变量系统**
+ - 后端新增 10+ 个变量类型
+ - 支持时间格式化、随机选择、特殊字符等
+ - 前端同步支持所有变量
+- ✅ **实现 MVU 状态管理架构**
+ - 基于 Zustand 实现完整的 MVU 模式
+ - 集成到 ChatPage 和 CharacterManagePage
+ - 支持持久化存储和 DevTools
+ - 内置变量替换工具函数
+- ✅ **修复关键 Bug**
+ - 修复开场白消息未应用正则脚本问题
+ - 修复 API 导出名称不匹配导致页面空白问题
+
+### 待测试功能(下次工作)
+- 🧪 **全局正则脚本功能测试**
+ - 测试全局脚本在所有对话中的应用
+ - 测试导入导出功能
+ - 测试脚本执行顺序
+- 🧪 **扩展变量系统测试**
+ - 测试所有新增变量类型
+ - 测试 `{{pick:}}` 随机选择功能
+ - 测试时间格式化变量
+- 🧪 **MVU Store 集成测试**
+ - 测试状态持久化
+ - 测试变量系统自动更新
+ - 测试跨页面状态同步
+- 🧪 **HTML 渲染优化测试**
+ - 测试 markdown 代码块中的 HTML 渲染
+ - 测试 iframe 宽度自适应
+ - 测试脚本自动启用功能
- ✅ 实现实际 AI API 调用(OpenAI/Anthropic)
-- 📋 实现世界书系统(完全兼容 SillyTavern)
-- 📋 实现正则脚本系统(完全兼容 SillyTavern)
-- 📋 实现 Prompt Pipeline(世界书触发、正则处理、提示词构建)
-- 📋 完善对话系统高级功能(消息重新生成、编辑)
+- ✅ 实现世界书系统(完全兼容 SillyTavern,包含触发引擎和对话集成)
+- ✅ 实现正则脚本系统(完全兼容 SillyTavern)
+- ✅ 实现 Prompt Pipeline(世界书触发注入、正则处理、提示词构建)
+- 📋 完善对话系统高级功能(消息编辑)
- 📋 性能优化与测试
- 📋 部署上线
@@ -806,21 +928,22 @@ web-app/src/pages/
5. ✅ 完善对话系统高级功能(消息重新生成)
### 中期目标(本月)
-1. 📋 实现世界书系统(完全兼容 SillyTavern)
- - 数据模型设计
- - 关键词触发算法
- - 选择性触发逻辑
- - 与对话系统集成
-2. 📋 实现正则脚本系统(完全兼容 SillyTavern)
- - 数据模型设计
- - 多阶段脚本执行
- - 正则表达式引擎
- - 宏替换系统
-3. 📋 实现 Prompt Pipeline
- - 世界书扫描与注入
- - 正则脚本处理
- - 提示词构建优化
+1. ✅ 实现世界书系统(完全兼容 SillyTavern)
+ - ✅ 数据模型设计
+ - ✅ 关键词触发算法(WorldbookEngine)
+ - ✅ 选择性触发逻辑
+ - ✅ 与对话系统集成
+2. ✅ 实现正则脚本系统(完全兼容 SillyTavern)
+ - ✅ 数据模型设计
+ - ✅ 多阶段脚本执行
+ - ✅ 正则表达式引擎
+ - ✅ 宏替换系统
+3. ✅ 实现 Prompt Pipeline
+ - ✅ 世界书扫描与注入
+ - ✅ 正则脚本处理
+ - ✅ 提示词构建优化
4. 📋 基础功能测试与优化
+5. 📋 消息编辑功能
### 长期目标(下月)
1. 📋 插件系统设计与实现