From fd660c8804ed4c93a9c13fa6122b139944e926be Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Mon, 2 Mar 2026 00:50:56 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=8D=A1=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=AD=A3=E5=88=99=E7=BC=96=E8=BE=91=E5=92=8C=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Echo <1711788888@qq.com> --- server/service/app/character.go | 15 +- web-app/src/components/ChatArea.tsx | 4 +- web-app/src/pages/CharacterManagePage.tsx | 261 ++++++++++++++++++++-- 3 files changed, 256 insertions(+), 24 deletions(-) diff --git a/server/service/app/character.go b/server/service/app/character.go index ed33f9b..a6f2ba8 100644 --- a/server/service/app/character.go +++ b/server/service/app/character.go @@ -427,14 +427,23 @@ func (s *CharacterService) processRegexScriptsFromExtensions(userID, characterID OwnerCharID: &characterID, } - // 提取字段 - if name, ok := scriptData["name"].(string); ok { + // 提取字段 - 兼容 SillyTavern 的字段名 + // 脚本名称:优先使用 scriptName,其次 name + if scriptName, ok := scriptData["scriptName"].(string); ok { + script.Name = scriptName + } else if name, ok := scriptData["name"].(string); ok { script.Name = name } + + // 查找正则表达式 if findRegex, ok := scriptData["findRegex"].(string); ok { script.FindRegex = findRegex } - if replaceWith, ok := scriptData["replaceWith"].(string); ok { + + // 替换字符串:优先使用 replaceString,其次 replaceWith + if replaceString, ok := scriptData["replaceString"].(string); ok { + script.ReplaceWith = replaceString + } else if replaceWith, ok := scriptData["replaceWith"].(string); ok { script.ReplaceWith = replaceWith } if placement, ok := scriptData["placement"].(float64); ok { diff --git a/web-app/src/components/ChatArea.tsx b/web-app/src/components/ChatArea.tsx index 6b43c40..45f0236 100644 --- a/web-app/src/components/ChatArea.tsx +++ b/web-app/src/components/ChatArea.tsx @@ -627,7 +627,7 @@ export default function ChatArea({ conversation, character, onConversationUpdate )} -
+ 支持 SillyTavern 格式的正则脚本 JSON 文件 +
+