fix: lorebook matches excluding dummy prefix/suffix

This commit is contained in:
bangonicdd
2025-04-17 11:43:06 +09:00
parent 21561fe5ff
commit bccb4a78ec

View File

@@ -55,7 +55,8 @@ export async function loadLoreBookV3Prompt(){
const recursiveScanning = char.loreSettings?.recursiveScanning ?? true const recursiveScanning = char.loreSettings?.recursiveScanning ?? true
let recursivePrompt:{ let recursivePrompt:{
prompt: string, prompt: string,
source: string source: string,
data: string
}[] = [] }[] = []
let matchLog:{ let matchLog:{
prompt: string, prompt: string,
@@ -75,23 +76,27 @@ export async function loadLoreBookV3Prompt(){
let mList:{ let mList:{
source:string source:string
prompt:string prompt:string
data:string
}[] = sliced.map((msg, i) => { }[] = sliced.map((msg, i) => {
if(msg.role === 'user'){ if(msg.role === 'user'){
return { return {
source: `message ${i} by user`, source: `message ${i} by user`,
prompt: `\x01{{${DBState.db.username}}}:` + msg.data + '\x01' prompt: `\x01{{${DBState.db.username}}}:` + msg.data + '\x01',
data: msg.data
} }
} }
else{ else{
return { return {
source: `message ${i} by char`, source: `message ${i} by char`,
prompt: `\x01{{${msg.name ?? (msg.saying ? findCharacterbyId(msg.saying)?.name : null) ?? char.name}}}:` + msg.data + '\x01' prompt: `\x01{{${msg.name ?? (msg.saying ? findCharacterbyId(msg.saying)?.name : null) ?? char.name}}}:` + msg.data + '\x01',
data: msg.data
} }
} }
}).concat(recursivePrompt.map((msg) => { }).concat(recursivePrompt.map((msg) => {
return { return {
source: 'lorebook ' + msg.source, source: 'lorebook ' + msg.source,
prompt: msg.prompt prompt: msg.prompt,
data: msg.data
} }
})) }))
@@ -106,7 +111,7 @@ export async function loadLoreBookV3Prompt(){
arg.keys[0] = regexString.replace('/'+regexFlag,'') arg.keys[0] = regexString.replace('/'+regexFlag,'')
try { try {
const regex = new RegExp(arg.keys[0],regexFlag) const regex = new RegExp(arg.keys[0],regexFlag)
const d = regex.test(mText.prompt) const d = regex.test(mText.data)
if(d){ if(d){
matchLog.push({ matchLog.push({
prompt: mText.prompt, prompt: mText.prompt,
@@ -127,7 +132,8 @@ export async function loadLoreBookV3Prompt(){
mList = mList.map((m) => { mList = mList.map((m) => {
return { return {
source: m.source, source: m.source,
prompt: m.prompt.toLocaleLowerCase().replace(/\{\{\/\/(.+?)\}\}/g,'').replace(/\{\{comment:(.+?)\}\}/g,'') prompt: m.prompt.toLocaleLowerCase().replace(/\{\{\/\/(.+?)\}\}/g,'').replace(/\{\{comment:(.+?)\}\}/g,''),
data: m.data.toLocaleLowerCase().replace(/\{\{\/\/(.+?)\}\}/g,'').replace(/\{\{comment:(.+?)\}\}/g,'')
} }
}) })
@@ -135,7 +141,7 @@ export async function loadLoreBookV3Prompt(){
let allModeMatched = true let allModeMatched = true
for(const m of mList){ for(const m of mList){
let mText = m.prompt let mText = m.data
if(arg.fullWordMatching){ if(arg.fullWordMatching){
const splited = mText.split(' ') const splited = mText.split(' ')
for(const key of arg.keys){ for(const key of arg.keys){