Files
ST-Amily2-Chat-Optimisation/core/rag-processor.js
2025-09-12 14:04:57 +08:00

2 lines
42 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';const _0x42f4ac=_0x472d;(function(_0x4aac69,_0x185089){const _0x38e923=_0x472d,_0x58ea1a=_0x4aac69();while(!![]){try{const _0x237b70=parseInt(_0x38e923(0x194))/0x1+-parseInt(_0x38e923(0x210))/0x2*(parseInt(_0x38e923(0x1a2))/0x3)+parseInt(_0x38e923(0x173))/0x4+parseInt(_0x38e923(0x185))/0x5*(-parseInt(_0x38e923(0x1ca))/0x6)+parseInt(_0x38e923(0x152))/0x7+parseInt(_0x38e923(0x22a))/0x8+-parseInt(_0x38e923(0x170))/0x9;if(_0x237b70===_0x185089)break;else _0x58ea1a['push'](_0x58ea1a['shift']());}catch(_0x2c4a30){_0x58ea1a['push'](_0x58ea1a['shift']());}}}(_0x3c6b,0x62b1a));import{extension_prompt_roles,setExtensionPrompt}from'/script.js';import*as _0x321f31 from'./utils/context-utils.js';import{getCollectionIdInfo,getCharacterId,getCharacterStableId}from'./utils/context-utils.js';import{defaultSettings as _0xe1b12b}from'./rag-settings.js';import*as _0x43bee7 from'./ingestion-manager.js';import{getEmbeddings,fetchEmbeddingModels as _0x3358c5,fetchRerankModels as _0x31666d,executeRerank,testApiConnection as _0x1c56f3}from'./rag-api.js';function _0x3c6b(){const _0x2412ed=['[翰林院-日志]\x20集合\x20','filter','mes','114CvZUwT','[翰林院-日志]\x20知识库\x20','trim','substring','condensationHistory','[翰林院-日志]\x20所有知识库统计完成总向量数:\x20','getContext','max','find','flat','[翰林院-核心]\x20将来源\x27','[翰林院-日志]\x20查询知识库\x20','json','is_user','\x27\x20中未找到ID为\x20','length','top_n','status','values','部分]','batchSize','reduce','未知来源','abs','AbortError','webllm','entryName','世界书条目','warning','original_index','join','[翰林院-配置]\x20为旧版知识库\x20','忆识存入API错误\x20','toLocaleString','\x20时发生网络错误:','insertVectors\x20必须接收一个有效的\x20collectionId\x20参数。','hanlinyuan-rag-core','Rerank失败:\x20','输入文本为空','[翰林院-日志]\x20没有启用的新知识库尝试查询旧版单体宝库...','maxResults','advanced','删除知识库失败,未能清空后端数据。','操作已取消。','/api/vector/list','[翰林院-日志]\x20清空宝库API调用成功。','[翰林院-核心]\x20成功删除知识库\x20','getRequestHeaders','手动录入:\x20','[翰林院-核心]\x20文本录入失败:\x20','score',',将清空集合:\x20','\x27的文本分割成\x20','[来源:\x20聊天记录,\x20楼层:\x20#','legacy','第1章','extensionSettings','\x20失败:','info','local','min','\x20不存在返回空数组。','enabled','查询集合\x20','移动失败:没有当前角色,无法移入局部知识库。','】已成功移动到','\x0a</','[翰林院-日志]\x20统计集合\x20','\x20列表API时出现问题\x20(状态:\x20','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','66MXXvCP','warn','[翰林院-核心]\x20知识库\x20','[翰林院-核心]\x20准备为任务\x20\x22','核心未初始化','_global','push','HANLINYUAN_RAG','template','condensation','未知条目','[翰林院-迁移]\x20用户确认迁移正在处理旧宝库:\x20','sort','文本块和向量数量不匹配','initialized','\x22\x20创建专属知识库...','final_score','scope','object','floor','zh-CN','未分类世界书','index','replace','task_','[翰林院-配置]\x20','6018496farnad','retrieval','\x20(集合ID:\x20','notify','[翰林院-分块]\x20未知的来源类型\x20\x27','getTime','slice','POST','[翰林院]\x20未能获取SillyTavern上下文初始化失败。','[翰林院-日志]\x20无法确定要清空的目标集合ID。','/api/vector/purge','[翰林院-核心]\x20成功插入\x20','[翰林院-迁移]\x20旧宝库已清空。','then','error','vector','[来源:\x20世界书,\x20条目:\x20','map',',\x20第','翰林院忆识核心已启动\x20(V5.2-集成版),已注册到全局\x20hanlinyuanRagProcessor\x20对象。','[翰林院-核心]\x20ingestTextToHanlinyuan\x20失败:','message','无法确定要清空的目标宝库。','data','[翰林院-日志]\x20所有知识库查询完毕共获得\x20','3052273cXZjyP','[翰林院-日志]\x20正在查询知识库:\x20','[翰林院]\x20检索或注入时发生错误:','\x20失败:\x20','\x20-\x20楼层\x20#','messageTypes','[翰林院-日志]\x20忆识存入API错误:','{{text}}','hanlinyuanRagProcessor','[翰林院-Rerank]\x20开始元数据加权最终排序...','novel','metadata','source','知识库【','[翰林院-日志]\x20开始多知识库向量查询...','[翰林院-核心]\x20processCondensation\x20失败:','\x20(范围:\x20','[翰林院-日志]\x20开始获取所有知识库的向量总数...','[翰林院-迁移]\x20用户取消了迁移操作。','[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:','[翰林院-核心]\x20尝试删除一个不存在的知识库:\x20','range','\x20条消息分解为\x20','手动录入','No\x20messages\x20to\x20process.','\x20补充所有者ID:\x20','injection','\x20失败删除操作中止。','quiet','global','1435599zBVUSU','oldId','未知角色','272664VZCrFp','stringify','saveProgress','[翰林院-计数]\x20在作用域\x20\x27','findIndex','\x22\x20已删除。','log','hashes','移动失败:未找到源条目。','test','owner','正在智能分块...','[翰林院-核心]\x20已为宝库\x20','rearrangeChat','start','\x20(ID:\x20','rerank','/api/vector/query','87355IwFSFl','[翰林院-核心]\x20清空向量集合\x20','success','embeddings','\x20个块。','[来源:\x20','vectors_rearrangeChat','[翰林院-核心]\x20检测到同名知识库\x20\x22','queryMessageCount','\x20返回\x20','chat_history','depth_role','外部Rerank完成','世界书','\x22将数据合并入库。','156732EiXwmw','\x20个向量条目。','[翰林院-日志]\x20清空宝库API错误:','manual','[翰林院-日志]\x20获取集合\x20',']\x20的消息已成功凝识。','saveSettingsDebounced','第1卷','[翰林院-Rerank]\x20外部Rerank失败将仅使用内部加权。','凝识之权未开启','[翰林院-核心]\x20准备删除知识库\x20','小说:\x20','[翰林院-核心]\x20已为角色\x20','name','47049xdnbrl','chat','\x20添加新知识库:\x20','知识库名称不能为空','isArray','聊天记录','toString','[翰林院-日志]\x20清空目标集合ID:\x20','aborted','rerank_score','user','send_date','\x20条初步结果。','unknown','[翰林院-核心]\x20凝识任务已锁定知识库:\x20','知识库\x20\x22','%%HANLINYUAN_RAG_INJECTION%%','text','knowledgeBases','toISOString','depth','[翰林院-日志]\x20统计目标集合ID:\x20','[翰林院-Rerank]\x20元数据加权排序完成。','end','[翰林院-核心]\x20已将\x20','\x20条结果。','lorebook','sourceName','检测到旧版数据。此操作将把旧数据迁移到新格式,过程不可逆,是否继续?','position','has','\x20个知识块准备入库。','results','forEach','catch','relevance_score','now'];_0x3c6b=function(){return _0x2412ed;};return _0x3c6b();}const MODULE_NAME=_0x42f4ac(0x1ee),OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x42f4ac(0x18b),GLOBAL_SCOPE_ID=_0x42f4ac(0x215);let context=null,settings=null,lockedCollectionId=null;export{initialize,getSettings,saveSettings,resetSettings,_0x1c56f3 as testApiConnection,_0x3358c5 as fetchEmbeddingModels,_0x31666d as fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId,toggleSessionLock,isSessionLocked,getLockedSessionInfo,addKnowledgeBase,removeKnowledgeBase,getLocalKnowledgeBases,getGlobalKnowledgeBases,toggleKnowledgeBase,moveKnowledgeBase};function initialize(){const _0x12ba2d=_0x42f4ac;context=SillyTavern[_0x12ba2d(0x1d0)]();if(!context){console[_0x12ba2d(0x238)](_0x12ba2d(0x232));return;}settings=getSettings(),!window[_0x12ba2d(0x15a)]&&(window['hanlinyuanRagProcessor']={}),window['hanlinyuanRagProcessor'][_0x12ba2d(0x180)]=rearrangeChat,window[_0x12ba2d(0x15a)][_0x12ba2d(0x21e)]=!![],console[_0x12ba2d(0x179)](_0x12ba2d(0x14c));}async function ingestTextToHanlinyuan(_0x2377a5,_0x33acbb=_0x42f4ac(0x197),_0x187b3c={},_0x1239a3=()=>{},_0x2991a0=null,_0xb1c6de=()=>{},_0x3f4d9d=()=>{},_0x1126eb=null,_0x51460c=0x0){const _0x208928=_0x42f4ac;if(!_0x2377a5||!_0x2377a5[_0x208928(0x1cc)]())return{'success':![],'error':_0x208928(0x1f0)};if(!settings)return{'success':![],'error':_0x208928(0x214)};try{const _0x7d6ed2=getCollectionIdInfo(),_0x46cd12=await _0x445401();if(_0x7d6ed2[_0x208928(0x171)]&&_0x7d6ed2[_0x208928(0x171)]===_0x46cd12&&_0x7d6ed2[_0x208928(0x171)]!==_0x7d6ed2['newId']){const _0x2d69b1=confirm(_0x208928(0x1be));if(_0x2d69b1)_0xb1c6de(_0x208928(0x21b)+_0x7d6ed2['oldId'],_0x208928(0x211)),await purgeStorage(_0x7d6ed2[_0x208928(0x171)]),_0xb1c6de(_0x208928(0x236),_0x208928(0x187));else return _0xb1c6de(_0x208928(0x164),_0x208928(0x204)),toastr[_0x208928(0x204)](_0x208928(0x1f5)),{'success':![],'error':'用户取消了迁移操作'};}let _0x4bcb42,_0x2c9b2b;const _0x1ae426=new Date()[_0x208928(0x1eb)](_0x208928(0x224),{'hour12':![]}),_0x4f9b88=getCharacterName()||_0x208928(0x172);switch(_0x33acbb){case _0x208928(0x18f):const _0x170efb=_0x187b3c[_0x208928(0x167)]||{},_0x2f744f=_0x170efb[_0x208928(0x181)]??'?',_0x25b51a=_0x170efb[_0x208928(0x1b9)]===0x0?'末':_0x170efb[_0x208928(0x1b9)]??'?';_0x4bcb42=_0x4f9b88+':\x20'+_0x2f744f+'楼-'+_0x25b51a+'楼';break;case'lorebook':const _0x4ee35e=_0x187b3c['bookName']||_0x208928(0x225),_0x22065b=_0x187b3c[_0x208928(0x1e4)]||_0x208928(0x21a);_0x4bcb42=_0x4ee35e+':\x20'+_0x22065b;break;case _0x208928(0x15c):_0x4bcb42=_0x208928(0x19f)+(_0x187b3c[_0x208928(0x1bd)]||'未知小说');break;case _0x208928(0x197):default:_0x4bcb42=_0x208928(0x1fa)+_0x1ae426;break;}const _0x4c37eb=Object['values'](getKnowledgeBases()),_0x3505d2=_0x4c37eb[_0x208928(0x1d2)](_0x44ce73=>_0x44ce73[_0x208928(0x1a1)]===_0x4bcb42);if(_0x3505d2)_0x2c9b2b=_0x3505d2['id'],_0xb1c6de('[翰林院-核心]\x20检测到同名知识库\x20\x22'+_0x4bcb42+'\x22将数据合并入库。',_0x208928(0x204));else{_0xb1c6de(_0x208928(0x213)+_0x4bcb42+_0x208928(0x21f),'info');const _0x19df7e=addKnowledgeBase(_0x4bcb42);_0x2c9b2b=_0x19df7e['id'];}const _0x4e508d=getCharacterStableId(),_0x74a20b=_0x4e508d+'_'+_0x2c9b2b;_0xb1c6de('[翰林院-核心]\x20已创建并锁定知识库:\x20'+_0x4bcb42+_0x208928(0x22c)+_0x74a20b+')',_0x208928(0x187)),_0xb1c6de('[翰林院-核心]\x20已锁定忆识宝库ID:\x20'+_0x74a20b,_0x208928(0x204)),_0x1239a3({'message':_0x208928(0x17e),'processed':0x0,'total':0x1});const _0x14feb7=splitIntoChunks(_0x2377a5,_0x33acbb,_0x187b3c),_0x123808=_0x14feb7[_0x208928(0x1d9)];if(_0x2991a0?.['aborted'])throw new Error('AbortError');_0xb1c6de(_0x208928(0x1d4)+_0x4bcb42+_0x208928(0x1fe)+_0x123808+_0x208928(0x189),_0x208928(0x204));if(_0x123808===0x0)return{'success':!![],'count':0x0};const _0x5c730a=settings['retrieval'][_0x208928(0x1de)]||0x5;let _0x1da336=_0x51460c;for(let _0xf1908d=_0x51460c;_0xf1908d<_0x123808;_0xf1908d+=_0x5c730a){if(_0x2991a0?.['aborted'])throw new Error(_0x208928(0x1e2));const _0x519cea=_0x14feb7['slice'](_0xf1908d,_0xf1908d+_0x5c730a);_0x1239a3({'message':'正在处理\x20'+(_0xf1908d+0x1)+'-'+(_0xf1908d+_0x519cea[_0x208928(0x1d9)])+'\x20块','processed':_0xf1908d,'total':_0x123808});const _0xed9806=_0x519cea['map'](_0x4b3715=>_0x4b3715['text']),_0x44e6b7=await getEmbeddings(_0xed9806,_0x2991a0);if(_0x2991a0?.[_0x208928(0x1aa)])throw new Error(_0x208928(0x1e2));if(_0x519cea[_0x208928(0x1d9)]!==_0x44e6b7['length'])throw new Error(_0x208928(0x21d));const _0xfd8625=_0x519cea[_0x208928(0x23b)]((_0x23a140,_0x5f0d9e)=>({..._0x23a140,'vector':_0x44e6b7[_0x5f0d9e]}));await insertVectors(_0xfd8625,_0x2991a0,_0x74a20b),_0x1da336+=_0x519cea['length'],_0x1126eb&&_0x43bee7[_0x208928(0x175)](_0x1126eb,_0x1da336,_0x123808),await _0x3f4d9d();}return _0x1126eb&&_0x43bee7['clearJob'](_0x1126eb),_0xb1c6de(_0x208928(0x235)+_0x1da336+_0x208928(0x195),_0x208928(0x187)),{'success':!![],'count':_0x1da336};}catch(_0x38888d){if(_0x38888d['name']==='AbortError'){_0xb1c6de('[翰林院-核心]\x20文本录入任务被用户中止。',_0x208928(0x211));throw _0x38888d;}return console['error'](_0x208928(0x14d),_0x38888d),_0xb1c6de(_0x208928(0x1fb)+_0x38888d[_0x208928(0x14e)],'error'),{'success':![],'error':_0x38888d[_0x208928(0x14e)]};}}function getSettings(){const _0x8e897e=_0x42f4ac;if(!context||!context[_0x8e897e(0x202)])return structuredClone(_0xe1b12b);let _0x30f9a4=context[_0x8e897e(0x202)][MODULE_NAME];!_0x30f9a4&&(_0x30f9a4={},context[_0x8e897e(0x202)][MODULE_NAME]=_0x30f9a4);_0x30f9a4['condensationHistory']===undefined&&(_0x30f9a4['condensationHistory']={});_0x30f9a4['knowledgeBases']===undefined&&(_0x30f9a4[_0x8e897e(0x1b4)]={});for(const _0x5ea2a8 in _0xe1b12b){if(_0x30f9a4[_0x5ea2a8]===undefined)_0x30f9a4[_0x5ea2a8]=structuredClone(_0xe1b12b[_0x5ea2a8]);else{if(typeof _0xe1b12b[_0x5ea2a8]===_0x8e897e(0x222)&&!Array[_0x8e897e(0x1a6)](_0xe1b12b[_0x5ea2a8])&&_0xe1b12b[_0x5ea2a8]!==null)for(const _0x3083d1 in _0xe1b12b[_0x5ea2a8]){_0x30f9a4[_0x5ea2a8][_0x3083d1]===undefined&&(_0x30f9a4[_0x5ea2a8][_0x3083d1]=_0xe1b12b[_0x5ea2a8][_0x3083d1]);}}}return _0x30f9a4;}function saveSettings(){const _0x1c1c66=_0x42f4ac;if(context)context[_0x1c1c66(0x19a)]();}function resetSettings(){const _0x8470f7=_0x42f4ac;context&&(context[_0x8470f7(0x202)][MODULE_NAME]=structuredClone(_0xe1b12b),saveSettings());}function showNotification(_0x41888b,_0x5e9856=_0x42f4ac(0x204)){toastr[_0x5e9856](_0x41888b);}function getTagForSource(_0xb6d6fc){const _0x26717b=_0x42f4ac;switch(_0xb6d6fc){case _0x26717b(0x18f):return _0x26717b(0x1a7);case _0x26717b(0x1bc):return _0x26717b(0x192);case'manual':return _0x26717b(0x169);case'novel':return'小说录入';default:return'资料';}}function splitIntoChunks(_0x4c8cf7,_0xc6a17,_0x448657={}){const _0xf9d6c3=_0x42f4ac;switch(_0xc6a17){case _0xf9d6c3(0x15c):return _chunkForNovel(_0x4c8cf7,_0x448657);case _0xf9d6c3(0x18f):return _chunkForChatHistory(_0x4c8cf7,_0x448657);case _0xf9d6c3(0x1bc):return _chunkForLorebook(_0x4c8cf7,_0x448657);case'manual':return _chunkForManual(_0x4c8cf7,_0x448657);default:console[_0xf9d6c3(0x211)](_0xf9d6c3(0x22e)+_0xc6a17+'\x27使用通用分块逻辑。');return _chunkForManual(_0x4c8cf7,{..._0x448657,'sourceName':_0x448657['sourceName']||_0xf9d6c3(0x1e0)});}}function _chunkForNovel(_0x703559,_0x80a090){const _0x26e4f9=_0x42f4ac,{chunkSize:_0x25e952,overlap:_0x4a6833}=settings[_0x26e4f9(0x1f3)],{sourceName:sourceName='小说'}=_0x80a090,_0x565ce5=[];if(!_0x703559||_0x25e952<=0x0)return _0x565ce5;const _0xa16b72=/(第\s*[一二三四五六七八九十百千万零\d]+\s*卷)/gim,_0x554883=/(第\s*[一二三四五六七八九十百千万零\d]+\s*[章回节部])|^(Chapter\s+\d+)/gim;let _0xc928a5=0x0;const _0x119e12=_0x703559['split']('\x0a');let _0x3093c2=_0x26e4f9(0x19b),_0x595dda=_0x26e4f9(0x201),_0x1dfa5b=[];function _0x3005db(){const _0x4372ef=_0x26e4f9;if(_0x1dfa5b['length']===0x0)return;const _0x5ef900=_0x1dfa5b[_0x4372ef(0x1e8)]('\x0a');let _0x986f27=0x0,_0x53ffd1=0x1;while(_0x986f27<_0x5ef900[_0x4372ef(0x1d9)]){const _0x442f11=Math[_0x4372ef(0x206)](_0x986f27+_0x25e952,_0x5ef900[_0x4372ef(0x1d9)]),_0x7296ff=_0x5ef900[_0x4372ef(0x1cd)](_0x986f27,_0x442f11);if(_0x7296ff[_0x4372ef(0x1cc)]()[_0x4372ef(0x1d9)]>0x0){const _0x576bc8={'source':_0x4372ef(0x15c),'sourceName':sourceName,'timestamp':new Date()[_0x4372ef(0x1b5)](),'globalIndex':_0xc928a5++,'volume':_0x3093c2,'chapter':_0x595dda,'section':_0x53ffd1},_0x25c662=getTagForSource(_0x4372ef(0x15c)),_0xeb9c20='[来源:\x20'+sourceName+',\x20'+_0x3093c2+',\x20'+_0x595dda+_0x4372ef(0x14b)+_0x53ffd1+'节]',_0x20f144='<'+_0x25c662+'>\x0a'+_0xeb9c20+'\x0a'+_0x7296ff+_0x4372ef(0x20c)+_0x25c662+'>';_0x565ce5['push']({'text':_0x20f144,'metadata':_0x576bc8}),_0x53ffd1++;}_0x986f27+=_0x25e952-_0x4a6833;if(_0x986f27>=_0x5ef900[_0x4372ef(0x1d9)])break;}_0x1dfa5b=[];}for(const _0x449342 of _0x119e12){const _0x52c7f3=_0x449342['trim']();if(_0xa16b72[_0x26e4f9(0x17c)](_0x52c7f3))_0x3005db(),_0x3093c2=_0x52c7f3,_0x595dda=_0x26e4f9(0x201);else _0x554883['test'](_0x52c7f3)?(_0x3005db(),_0x595dda=_0x52c7f3):_0x1dfa5b[_0x26e4f9(0x216)](_0x449342);}_0x3005db();if(_0x565ce5[_0x26e4f9(0x1d9)]===0x0&&_0x703559[_0x26e4f9(0x1d9)]>0x0){let _0x2851cd=0x0,_0x710dc0=0x1;while(_0x2851cd<_0x703559[_0x26e4f9(0x1d9)]){const _0x4e7688=Math['min'](_0x2851cd+_0x25e952,_0x703559[_0x26e4f9(0x1d9)]),_0x9cc828=_0x703559[_0x26e4f9(0x1cd)](_0x2851cd,_0x4e7688),_0x59346f={'source':_0x26e4f9(0x15c),'sourceName':sourceName,'timestamp':new Date()[_0x26e4f9(0x1b5)](),'globalIndex':_0x565ce5['length'],'volume':_0x26e4f9(0x19b),'chapter':_0x26e4f9(0x201),'section':_0x710dc0},_0x359c4e=getTagForSource(_0x26e4f9(0x15c)),_0x3ded68=_0x26e4f9(0x18a)+sourceName+',\x20第1卷,\x20第1章,\x20第'+_0x710dc0+'节]',_0x15367a='<'+_0x359c4e+'>\x0a'+_0x3ded68+'\x0a'+_0x9cc828+'\x0a</'+_0x359c4e+'>';_0x565ce5['push']({'text':_0x15367a,'metadata':_0x59346f}),_0x710dc0++,_0x2851cd+=_0x25e952-_0x4a6833;}}return _0x565ce5;}function _chunkForChatHistory(_0x6534d3,_0xbeb303){const _0x4cab2c=_0x42f4ac,{chunkSize:_0x1a0166,overlap:_0x2fc9cd}=settings[_0x4cab2c(0x1f3)],{floor:_0x62338a,is_user:_0x26cf1b,timestamp:_0x3153eb}=_0xbeb303,_0x564626=[];if(!_0x6534d3||_0x1a0166<=0x0)return _0x564626;let _0x32ce18=0x1,_0x52f2dc=0x0;while(_0x52f2dc<_0x6534d3[_0x4cab2c(0x1d9)]){const _0x39a281=Math[_0x4cab2c(0x206)](_0x52f2dc+_0x1a0166,_0x6534d3[_0x4cab2c(0x1d9)]),_0x5eac67=_0x6534d3[_0x4cab2c(0x1cd)](_0x52f2dc,_0x39a281),_0x129e79=_0x4cab2c(0x1ff)+_0x62338a+_0x4cab2c(0x14b)+_0x32ce18+_0x4cab2c(0x1dd),_0x188357=getTagForSource(_0x4cab2c(0x18f)),_0x38aa79='<'+_0x188357+'>\x0a'+_0x129e79+'\x0a'+_0x5eac67+_0x4cab2c(0x20c)+_0x188357+'>';_0x564626['push']({'text':_0x38aa79,'metadata':{'source':_0x4cab2c(0x18f),'sourceName':'聊天记录\x20#'+_0x62338a,'floor':_0x62338a,'part':_0x32ce18,'is_user':_0x26cf1b,'timestamp':_0x3153eb}}),_0x32ce18++,_0x52f2dc+=_0x1a0166-_0x2fc9cd;if(_0x52f2dc>=_0x6534d3[_0x4cab2c(0x1d9)])break;}return _0x564626;}function _chunkForLorebook(_0x364d12,_0x511a43){const _0x1927c9=_0x42f4ac,{chunkSize:_0x2bd93b,overlap:_0xb5c54f}=settings['advanced'],{sourceName:sourceName=_0x1927c9(0x1e5)}=_0x511a43,_0x26d9e6=[];if(!_0x364d12||_0x2bd93b<=0x0)return _0x26d9e6;let _0xb9a3f3=0x1,_0xf734ac=0x0;while(_0xf734ac<_0x364d12[_0x1927c9(0x1d9)]){const _0x5c5078=Math[_0x1927c9(0x206)](_0xf734ac+_0x2bd93b,_0x364d12['length']),_0x5e26e1=_0x364d12[_0x1927c9(0x1cd)](_0xf734ac,_0x5c5078),_0x269734=_0x1927c9(0x23a)+sourceName+_0x1927c9(0x14b)+_0xb9a3f3+_0x1927c9(0x1dd),_0x188282=getTagForSource('lorebook'),_0x5e446b='<'+_0x188282+'>\x0a'+_0x269734+'\x0a'+_0x5e26e1+_0x1927c9(0x20c)+_0x188282+'>';_0x26d9e6[_0x1927c9(0x216)]({'text':_0x5e446b,'metadata':{'source':_0x1927c9(0x1bc),'sourceName':sourceName,'part':_0xb9a3f3,'timestamp':new Date()[_0x1927c9(0x1b5)]()}}),_0xb9a3f3++,_0xf734ac+=_0x2bd93b-_0xb5c54f;if(_0xf734ac>=_0x364d12[_0x1927c9(0x1d9)])break;}return _0x26d9e6;}function _chunkForManual(_0x3ce81f,_0xc7f40b){const _0x5883ef=_0x42f4ac,{chunkSize:_0x530e70,overlap:_0x492f1c}=settings[_0x5883ef(0x1f3)],{sourceName:sourceName='手动录入'}=_0xc7f40b,_0xd03c45=[];if(!_0x3ce81f||_0x530e70<=0x0)return _0xd03c45;const _0x2f2e04=new Date(),_0x402179=_0x2f2e04[_0x5883ef(0x1eb)](_0x5883ef(0x224));let _0x38d9ce=0x1,_0x1705b8=0x0;while(_0x1705b8<_0x3ce81f[_0x5883ef(0x1d9)]){const _0x939882=Math[_0x5883ef(0x206)](_0x1705b8+_0x530e70,_0x3ce81f[_0x5883ef(0x1d9)]),_0x339659=_0x3ce81f[_0x5883ef(0x1cd)](_0x1705b8,_0x939882),_0x4e417c=_0x5883ef(0x18a)+sourceName+',\x20向量化录入时间:\x20'+_0x402179+_0x5883ef(0x14b)+_0x38d9ce+_0x5883ef(0x1dd),_0x321440=getTagForSource(_0x5883ef(0x197)),_0x2c0c06='<'+_0x321440+'>\x0a'+_0x4e417c+'\x0a'+_0x339659+_0x5883ef(0x20c)+_0x321440+'>';_0xd03c45[_0x5883ef(0x216)]({'text':_0x2c0c06,'metadata':{'source':_0x5883ef(0x197),'sourceName':sourceName,'part':_0x38d9ce,'timestamp':_0x2f2e04[_0x5883ef(0x1b5)]()}}),_0x38d9ce++,_0x1705b8+=_0x530e70-_0x492f1c;if(_0x1705b8>=_0x3ce81f[_0x5883ef(0x1d9)])break;}return _0xd03c45;}import{getCollectionId as _0x445401,getCharacterName}from'./utils/context-utils.js';async function getCollectionId(){return lockedCollectionId||await _0x445401();}async function toggleSessionLock(){return lockedCollectionId?(lockedCollectionId=null,![]):(lockedCollectionId=await _0x445401(),!![]);}function isSessionLocked(){return lockedCollectionId!==null;}function getLockedSessionInfo(){const _0x337dca=_0x42f4ac;if(!lockedCollectionId)return null;return{'id':lockedCollectionId,'name':'(已锁定:\x20'+lockedCollectionId[_0x337dca(0x1cd)](0x0,0x8)+'...)'};}function getLocalKnowledgeBases(){const _0x2d79d9=_0x42f4ac,_0x377f2a=getCharacterStableId();return!settings[_0x2d79d9(0x1b4)][_0x377f2a]&&(settings['knowledgeBases'][_0x377f2a]={}),settings[_0x2d79d9(0x1b4)][_0x377f2a];}function getGlobalKnowledgeBases(){const _0x351e5a=_0x42f4ac;return!settings[_0x351e5a(0x1b4)][GLOBAL_SCOPE_ID]&&(settings[_0x351e5a(0x1b4)][GLOBAL_SCOPE_ID]={}),settings[_0x351e5a(0x1b4)][GLOBAL_SCOPE_ID];}function getKnowledgeBases(){const _0x4dcab9=getLocalKnowledgeBases(),_0x24f671=getGlobalKnowledgeBases();return{..._0x24f671,..._0x4dcab9};}function addKnowledgeBase(_0x94e7a9){const _0x1423e3=_0x42f4ac;if(!_0x94e7a9||!_0x94e7a9[_0x1423e3(0x1cc)]())throw new Error(_0x1423e3(0x1a5));const _0x5153d6=getCharacterStableId(),_0x42ae3d=getLocalKnowledgeBases(),_0x219ee9=_0x1423e3(0x228)+Date[_0x1423e3(0x1c6)]()+'_'+Math['random']()[_0x1423e3(0x1a8)](0x24)[_0x1423e3(0x1cd)](0x2,0x9),_0x328eb5={'id':_0x219ee9,'name':_0x94e7a9[_0x1423e3(0x1cc)](),'enabled':!![],'createdAt':new Date()['toISOString'](),'owner':_0x5153d6};return _0x42ae3d[_0x219ee9]=_0x328eb5,saveSettings(),console[_0x1423e3(0x179)](_0x1423e3(0x1a0)+_0x5153d6+_0x1423e3(0x1a4)+_0x94e7a9+_0x1423e3(0x182)+_0x219ee9+')'),_0x328eb5;}async function removeKnowledgeBase(_0x103cc2,_0x280501){const _0x43dd3a=_0x42f4ac,_0x361b2e=getCharacterStableId(),_0x5df73c=_0x280501==='global'?getGlobalKnowledgeBases():getLocalKnowledgeBases(),_0x2c0705=_0x5df73c[_0x103cc2],_0x20e1d3=_0x2c0705?.['name']||_0x103cc2;if(!_0x2c0705){console[_0x43dd3a(0x211)](_0x43dd3a(0x166)+_0x103cc2+_0x43dd3a(0x162)+_0x280501+')');return;}const _0x234954=_0x280501===_0x43dd3a(0x16f)?_0x2c0705[_0x43dd3a(0x17d)]||GLOBAL_SCOPE_ID:_0x361b2e,_0x35822e=_0x234954+'_'+_0x103cc2;console[_0x43dd3a(0x179)](_0x43dd3a(0x19e)+_0x103cc2+_0x43dd3a(0x1fd)+_0x35822e);const _0x463665=await purgeStorage(_0x35822e);_0x463665?(delete _0x5df73c[_0x103cc2],saveSettings(),console[_0x43dd3a(0x179)](_0x43dd3a(0x1f8)+_0x103cc2+'\x20及其向量数据。'),toastr[_0x43dd3a(0x187)](_0x43dd3a(0x1b1)+_0x20e1d3+_0x43dd3a(0x178))):(console[_0x43dd3a(0x238)](_0x43dd3a(0x186)+_0x35822e+_0x43dd3a(0x16d)),toastr['error'](_0x43dd3a(0x1f4)));}function toggleKnowledgeBase(_0x54540b,_0x570482){const _0x4c5547=_0x42f4ac,_0xc08b2a=_0x570482===_0x4c5547(0x16f)?getGlobalKnowledgeBases():getLocalKnowledgeBases();_0xc08b2a[_0x54540b]&&(_0xc08b2a[_0x54540b]['enabled']=!_0xc08b2a[_0x54540b][_0x4c5547(0x208)],saveSettings(),console[_0x4c5547(0x179)](_0x4c5547(0x212)+_0x54540b+_0x4c5547(0x162)+_0x570482+')\x20的状态已切换为:\x20'+(_0xc08b2a[_0x54540b][_0x4c5547(0x208)]?'启用':'禁用')));}function generateHash(_0x275e1b){const _0x297a52=_0x42f4ac;let _0x19c7b=0x0;for(let _0x3276ed=0x0;_0x3276ed<_0x275e1b[_0x297a52(0x1d9)];_0x3276ed++){const _0x533fc5=_0x275e1b['charCodeAt'](_0x3276ed);_0x19c7b=(_0x19c7b<<0x5)-_0x19c7b+_0x533fc5,_0x19c7b=_0x19c7b&_0x19c7b;}return Math[_0x297a52(0x1e1)](_0x19c7b)[_0x297a52(0x1a8)](0x24);}async function queryVectors(_0x5eb1c1){const _0x6ee656=_0x42f4ac;console[_0x6ee656(0x179)](_0x6ee656(0x160));const _0x215a7b=getCharacterStableId(),_0x175aa7=getLocalKnowledgeBases(),_0x51fab7=getGlobalKnowledgeBases(),_0x7b44c9=Object['values'](_0x175aa7)[_0x6ee656(0x1c8)](_0x346888=>_0x346888[_0x6ee656(0x208)]),_0xdce7b8=Object['values'](_0x51fab7)[_0x6ee656(0x1c8)](_0x61a4bb=>_0x61a4bb['enabled']),_0x4edda1=[..._0x7b44c9[_0x6ee656(0x23b)](_0x4c6df6=>({..._0x4c6df6,'scope':_0x6ee656(0x205)})),..._0xdce7b8[_0x6ee656(0x23b)](_0x2823e4=>({..._0x2823e4,'scope':_0x6ee656(0x16f)}))];if(_0x4edda1[_0x6ee656(0x1d9)]===0x0){console[_0x6ee656(0x179)](_0x6ee656(0x1f1));const _0xfc071d=await _0x445401();if(!_0xfc071d)return[];_0x4edda1['push']({'id':null,'name':'旧版宝库\x20(Legacy)','scope':_0x6ee656(0x200)});}const _0x176aeb=(await getEmbeddings([_0x5eb1c1]))[0x0];let _0x4a83a0=[];const _0x548b49=_0x4edda1['map'](_0x310537=>{const _0x4f5ab5=_0x6ee656;let _0x457a3b;if(_0x310537[_0x4f5ab5(0x221)]===_0x4f5ab5(0x200))_0x457a3b=_0x445401();else{const _0x6a5758=_0x310537[_0x4f5ab5(0x221)]===_0x4f5ab5(0x16f)?_0x310537[_0x4f5ab5(0x17d)]||GLOBAL_SCOPE_ID:_0x215a7b;_0x457a3b=Promise['resolve'](_0x6a5758+'_'+_0x310537['id']);}return _0x457a3b[_0x4f5ab5(0x237)](_0x4c8743=>{const _0x529ae8=_0x4f5ab5;if(!_0x4c8743)return[];console[_0x529ae8(0x179)](_0x529ae8(0x153)+_0x310537[_0x529ae8(0x1a1)]+_0x529ae8(0x182)+_0x4c8743+')');const _0x2d32a7={'collectionId':_0x4c8743,'searchText':_0x5eb1c1,'topK':settings['advanced'][_0x529ae8(0x1f2)],'threshold':settings[_0x529ae8(0x1f3)]['matchThreshold'],'source':_0x529ae8(0x1e3),'embeddings':{[_0x5eb1c1]:_0x176aeb}};return fetch('/api/vector/query',{'method':_0x529ae8(0x231),'headers':context[_0x529ae8(0x1f9)](),'body':JSON[_0x529ae8(0x174)](_0x2d32a7)})[_0x529ae8(0x237)](async _0x5a6a1a=>{const _0x5872e6=_0x529ae8;if(!_0x5a6a1a['ok']){const _0x2f1a8c=await _0x5a6a1a[_0x5872e6(0x1b3)]();return console[_0x5872e6(0x238)](_0x5872e6(0x1d5)+_0x4c8743+_0x5872e6(0x203),_0x2f1a8c),[];}const _0x46994b=await _0x5a6a1a[_0x5872e6(0x1d6)](),_0x53d7f9=_0x46994b[_0x5872e6(0x15d)]||_0x46994b[_0x5872e6(0x1c2)]||_0x46994b[_0x5872e6(0x150)]||[];return console[_0x5872e6(0x179)](_0x5872e6(0x1cb)+_0x310537[_0x5872e6(0x1a1)]+_0x5872e6(0x18e)+_0x53d7f9[_0x5872e6(0x1d9)]+'\x20条结果。'),_0x53d7f9;})[_0x529ae8(0x1c4)](_0x461323=>{const _0x7cf9d7=_0x529ae8;return console['error'](_0x7cf9d7(0x1d5)+_0x4c8743+_0x7cf9d7(0x1ec),_0x461323),[];});});}),_0x348bc1=await Promise['all'](_0x548b49);_0x4a83a0=_0x348bc1[_0x6ee656(0x1d3)](),console['log'](_0x6ee656(0x151)+_0x4a83a0[_0x6ee656(0x1d9)]+_0x6ee656(0x1ae));const _0x2b46fa=[],_0x4cf984=new Set();for(const _0x48949a of _0x4a83a0){_0x48949a&&_0x48949a[_0x6ee656(0x1b3)]&&!_0x4cf984[_0x6ee656(0x1c0)](_0x48949a[_0x6ee656(0x1b3)])&&(_0x4cf984['add'](_0x48949a['text']),_0x2b46fa['push'](_0x48949a));}return console[_0x6ee656(0x179)]('[翰林院-日志]\x20去重后剩余\x20'+_0x2b46fa[_0x6ee656(0x1d9)]+_0x6ee656(0x1bb)),_0x2b46fa[_0x6ee656(0x21c)]((_0x3acdf8,_0x27b6ce)=>(_0x27b6ce[_0x6ee656(0x1fc)]||0x0)-(_0x3acdf8[_0x6ee656(0x1fc)]||0x0)),_0x2b46fa;}async function insertVectors(_0x2a3578,_0x441a8b=null,_0x161a34){const _0x28cae4=_0x42f4ac;if(!_0x161a34)throw new Error(_0x28cae4(0x1ed));if(_0x2a3578[_0x28cae4(0x1d9)]===0x0)return{'success':!![],'count':0x0};const _0x5b8d50=_0x2a3578[_0x28cae4(0x23b)]((_0x426110,_0x2a0398)=>({'hash':generateHash(_0x426110['text']+Date[_0x28cae4(0x1c6)]()+_0x2a0398),'text':_0x426110['text'],'metadata':_0x426110[_0x28cae4(0x15d)]||{'source':_0x28cae4(0x1af),'timestamp':new Date()[_0x28cae4(0x1b5)]()}})),_0x19b3a6=_0x5b8d50[_0x28cae4(0x1df)]((_0x2f0fab,_0x3be9af,_0x3d31d8)=>{const _0x45d0e6=_0x28cae4;return _0x2f0fab[_0x3be9af['text']]=_0x2a3578[_0x3d31d8][_0x45d0e6(0x239)],_0x2f0fab;},{}),_0x4b75d2={'collectionId':_0x161a34,'items':_0x5b8d50,'source':_0x28cae4(0x1e3),'embeddings':_0x19b3a6},_0x1c8d83=await fetch('/api/vector/insert',{'method':'POST','headers':context[_0x28cae4(0x1f9)](),'body':JSON[_0x28cae4(0x174)](_0x4b75d2),'signal':_0x441a8b});if(!_0x1c8d83['ok']){const _0x42cc5e=await _0x1c8d83[_0x28cae4(0x1b3)]();console['error'](_0x28cae4(0x158),_0x42cc5e);throw new Error(_0x28cae4(0x1ea)+_0x1c8d83[_0x28cae4(0x1db)]+':\x20'+_0x42cc5e);}return{'success':!![],'count':_0x5b8d50[_0x28cae4(0x1d9)]};}async function getVectorCount(_0x3f0b24=null,_0x43a99f=_0x42f4ac(0x205)){const _0x525f12=_0x42f4ac,_0x1958d0=getCharacterStableId();if(_0x3f0b24){const _0x42700c=_0x43a99f===_0x525f12(0x16f)?getGlobalKnowledgeBases():getLocalKnowledgeBases(),_0x5aee97=_0x42700c[_0x3f0b24];if(!_0x5aee97)return console[_0x525f12(0x211)](_0x525f12(0x176)+_0x43a99f+'\x27\x20中未找到ID为\x20'+_0x3f0b24+'\x20的知识库。'),0x0;const _0xa02261=_0x43a99f==='global'?_0x5aee97[_0x525f12(0x17d)]||GLOBAL_SCOPE_ID:_0x1958d0,_0x56c8eb=_0xa02261+'_'+_0x3f0b24;return await countVectorsInCollection(_0x56c8eb);}else{console[_0x525f12(0x179)](_0x525f12(0x163));const _0x2cd7fc=Object[_0x525f12(0x1dc)](getLocalKnowledgeBases()),_0x54807c=Object[_0x525f12(0x1dc)](getGlobalKnowledgeBases()),_0x2eb27c=[];_0x2cd7fc[_0x525f12(0x1c3)](_0x1e69ff=>{const _0x3b4556=_0x525f12,_0x3b35f0=_0x1958d0+'_'+_0x1e69ff['id'];_0x2eb27c[_0x3b4556(0x216)](countVectorsInCollection(_0x3b35f0));}),_0x54807c[_0x525f12(0x1c3)](_0xe6aab9=>{const _0x3ad445=_0x525f12,_0x3be96b=_0xe6aab9[_0x3ad445(0x17d)]||GLOBAL_SCOPE_ID,_0x514f0a=_0x3be96b+'_'+_0xe6aab9['id'];_0x2eb27c[_0x3ad445(0x216)](countVectorsInCollection(_0x514f0a));});const _0x1ac6a0=await _0x445401();_0x2eb27c[_0x525f12(0x216)](countVectorsInCollection(_0x1ac6a0));const _0x4b312e=await Promise['all'](_0x2eb27c),_0x44af36=_0x4b312e[_0x525f12(0x1df)]((_0x445458,_0x600451)=>_0x445458+_0x600451,0x0);return console[_0x525f12(0x179)](_0x525f12(0x1cf)+_0x44af36),_0x44af36;}}async function countVectorsInCollection(_0x356d88){const _0x3c09f3=_0x42f4ac;if(!_0x356d88)return 0x0;console['log'](_0x3c09f3(0x1b7)+_0x356d88);const _0x380b05={'collectionId':_0x356d88,'source':_0x3c09f3(0x1e3),'embeddings':{}};try{const _0x57a8bd=await fetch(_0x3c09f3(0x1f6),{'method':_0x3c09f3(0x231),'headers':context[_0x3c09f3(0x1f9)](),'body':JSON[_0x3c09f3(0x174)](_0x380b05)});if(!_0x57a8bd['ok']){if(_0x57a8bd[_0x3c09f3(0x1db)]===0x194)console['log'](_0x3c09f3(0x1c7)+_0x356d88+'\x20不存在计为\x200。');else{const _0x2d5f39=await _0x57a8bd[_0x3c09f3(0x1b3)]();console[_0x3c09f3(0x211)](_0x3c09f3(0x198)+_0x356d88+_0x3c09f3(0x20e)+_0x57a8bd[_0x3c09f3(0x1db)]+'):',_0x2d5f39);}return 0x0;}const _0x2dd760=await _0x57a8bd[_0x3c09f3(0x1d6)]();let _0x5abf0a=0x0;if(Array[_0x3c09f3(0x1a6)](_0x2dd760))_0x5abf0a=_0x2dd760[_0x3c09f3(0x1d9)];else _0x2dd760&&_0x2dd760[_0x3c09f3(0x17a)]&&(_0x5abf0a=_0x2dd760[_0x3c09f3(0x17a)][_0x3c09f3(0x1d9)]);return _0x5abf0a;}catch(_0x536223){return console[_0x3c09f3(0x238)](_0x3c09f3(0x20d)+_0x356d88+'\x20时发生网络错误:',_0x536223),0x0;}}async function purgeStorage(_0x2a3d75=null){const _0x11817f=_0x42f4ac;console[_0x11817f(0x179)]('[翰林院-日志]\x20开始清空宝库...');const _0x5a5108=_0x2a3d75||await getCollectionId();if(!_0x5a5108)return console[_0x11817f(0x238)](_0x11817f(0x233)),toastr[_0x11817f(0x238)](_0x11817f(0x14f)),![];console['log'](_0x11817f(0x1a9)+_0x5a5108);const _0x2d229b={'collectionId':_0x5a5108};console[_0x11817f(0x179)](_0x11817f(0x165),JSON[_0x11817f(0x174)](_0x2d229b,null,0x2));const _0x573028=await fetch(_0x11817f(0x234),{'method':_0x11817f(0x231),'headers':context['getRequestHeaders'](),'body':JSON[_0x11817f(0x174)](_0x2d229b)});console['log'](_0x11817f(0x20f)+_0x573028[_0x11817f(0x1db)]);if(!_0x573028['ok']){const _0x4c938a=await _0x573028[_0x11817f(0x1b3)]();console[_0x11817f(0x238)](_0x11817f(0x196),_0x4c938a);}else console['log'](_0x11817f(0x1f7));return _0x573028['ok'];}function _0x472d(_0x325186,_0x4b5f39){const _0x3c6beb=_0x3c6b();return _0x472d=function(_0x472d1d,_0x19f0a9){_0x472d1d=_0x472d1d-0x14b;let _0x5a6285=_0x3c6beb[_0x472d1d];return _0x5a6285;},_0x472d(_0x325186,_0x4b5f39);}function getMessagesForCondensation(_0x5c2a93=null){const _0x1d2f4a=_0x42f4ac;if(!settings[_0x1d2f4a(0x219)][_0x1d2f4a(0x208)])return showNotification(_0x1d2f4a(0x19d),_0x1d2f4a(0x1e6)),[];const {layerStart:_0x10148e,layerEnd:_0x582010}=settings[_0x1d2f4a(0x219)],_0x16eb9f=_0x5c2a93||settings[_0x1d2f4a(0x219)][_0x1d2f4a(0x157)],_0x30081b=context[_0x1d2f4a(0x1a3)][_0x1d2f4a(0x1d9)],_0x19c144=Math[_0x1d2f4a(0x1d1)](0x0,_0x10148e-0x1),_0x460a5e=_0x582010===0x0||_0x582010>_0x30081b?_0x30081b:Math[_0x1d2f4a(0x206)](_0x30081b,_0x582010),_0xad890e=context[_0x1d2f4a(0x1a3)][_0x1d2f4a(0x230)](_0x19c144,_0x460a5e);return _0xad890e[_0x1d2f4a(0x1c8)](_0x34125b=>{const _0x3b40d0=_0x1d2f4a,_0x566d0b=_0x34125b[_0x3b40d0(0x1d7)]===!![],_0x5bbb0d=_0x34125b[_0x3b40d0(0x1d7)]===![];if(!_0x34125b[_0x3b40d0(0x1c9)]||!_0x34125b['mes'][_0x3b40d0(0x1cc)]())return![];return _0x16eb9f[_0x3b40d0(0x1ac)]&&_0x566d0b||_0x16eb9f['ai']&&_0x5bbb0d;});}async function processCondensation(_0x57be32,_0x3993d5=()=>{},_0xeaa323=null){const _0x187597=_0x42f4ac;if(!_0x57be32||_0x57be32[_0x187597(0x1d9)]===0x0)return{'success':![],'error':_0x187597(0x16a)};try{let _0x537b9a,_0x5329d6;const _0x992fac=getCharacterName()||'未知角色';if(_0xeaa323){const _0x2d1b4c=_0xeaa323[_0x187597(0x181)]??'?',_0x1b7724=_0xeaa323[_0x187597(0x1b9)]===0x0?'末':_0xeaa323['end']??'?';_0x537b9a=_0x992fac+':\x20'+_0x2d1b4c+'楼-'+_0x1b7724+'楼';}else{const _0x374f67=new Date()[_0x187597(0x1eb)]('zh-CN',{'hour12':![]});_0x537b9a='聊天记录:\x20'+_0x374f67;}const _0x3fdeeb=Object[_0x187597(0x1dc)](getLocalKnowledgeBases()),_0x1c7033=_0x3fdeeb[_0x187597(0x1d2)](_0x15331e=>_0x15331e[_0x187597(0x1a1)]===_0x537b9a);if(_0x1c7033)_0x5329d6=_0x1c7033['id'],_0x3993d5(_0x187597(0x18c)+_0x537b9a+_0x187597(0x193),_0x187597(0x204));else{_0x3993d5(_0x187597(0x213)+_0x537b9a+_0x187597(0x21f),_0x187597(0x204));const _0x22c5ef=addKnowledgeBase(_0x537b9a);_0x5329d6=_0x22c5ef['id'];}const _0x1ed4ee=getCharacterStableId(),_0x59032b=_0x1ed4ee+'_'+_0x5329d6;_0x3993d5(_0x187597(0x1b0)+_0x537b9a+'\x20(集合ID:\x20'+_0x59032b+')',_0x187597(0x187));const _0x4ef83a=[],_0x3b0efa=context[_0x187597(0x1a3)];for(const _0xe4e11b of _0x57be32){const _0x11d7c3=(_0xe4e11b[_0x187597(0x1c9)]||'')[_0x187597(0x227)](/<[^>]*>/g,'')[_0x187597(0x1cc)]();if(_0x11d7c3['length']===0x0)continue;let _0x3fd542;if(_0xe4e11b[_0x187597(0x223)]!==undefined&&_0xe4e11b[_0x187597(0x223)]!==null)_0x3fd542=_0xe4e11b[_0x187597(0x223)];else{const _0x5216c0=_0x3b0efa[_0x187597(0x177)](_0x505bf4=>_0x505bf4===_0xe4e11b);_0x3fd542=_0x5216c0!==-0x1?_0x5216c0+0x1:-0x1;}const _0x5b1fbc=new Date(_0xe4e11b[_0x187597(0x1ad)]),_0x14d5b3=isNaN(_0x5b1fbc[_0x187597(0x22f)]())?new Date()[_0x187597(0x1b5)]():_0x5b1fbc[_0x187597(0x1b5)](),_0x3c518a=splitIntoChunks(_0x11d7c3,_0x187597(0x18f),{'floor':_0x3fd542,'is_user':_0xe4e11b['is_user'],'timestamp':_0x14d5b3});_0x4ef83a[_0x187597(0x216)](..._0x3c518a);}if(_0x4ef83a['length']===0x0)return{'success':!![],'count':0x0};_0x3993d5(_0x187597(0x1ba)+_0x57be32[_0x187597(0x1d9)]+_0x187597(0x168)+_0x4ef83a[_0x187597(0x1d9)]+_0x187597(0x1c1),'info');const _0x36f0cf=settings[_0x187597(0x22b)][_0x187597(0x1de)]||0x5;let _0x51dd22=0x0;for(let _0x4ecce5=0x0;_0x4ecce5<_0x4ef83a[_0x187597(0x1d9)];_0x4ecce5+=_0x36f0cf){const _0x48bec7=_0x4ef83a[_0x187597(0x230)](_0x4ecce5,_0x4ecce5+_0x36f0cf),_0x3814ed=_0x48bec7[_0x187597(0x23b)](_0x376681=>_0x376681[_0x187597(0x1b3)]),_0x35115a=await getEmbeddings(_0x3814ed);if(_0x48bec7['length']!==_0x35115a[_0x187597(0x1d9)])throw new Error(_0x187597(0x21d));const _0x1627c8=_0x48bec7[_0x187597(0x23b)]((_0x36d28d,_0x2471b5)=>({..._0x36d28d,'vector':_0x35115a[_0x2471b5]}));await insertVectors(_0x1627c8,null,_0x59032b),_0x51dd22+=_0x48bec7[_0x187597(0x1d9)];}if(_0xeaa323){const _0x4510d7=_0xeaa323['end']===0x0?context[_0x187597(0x1a3)][_0x187597(0x1d9)]:_0xeaa323[_0x187597(0x1b9)],_0x121252=getCharacterStableId();!settings[_0x187597(0x1ce)][_0x121252]&&(settings[_0x187597(0x1ce)][_0x121252]={}),settings[_0x187597(0x1ce)][_0x121252][_0x59032b]={'start':_0xeaa323[_0x187597(0x181)],'end':_0x4510d7,'timestamp':new Date()[_0x187597(0x1b5)]()},saveSettings(),_0x3993d5(_0x187597(0x17f)+_0x59032b+'\x20记录凝识范围:\x20'+_0xeaa323[_0x187597(0x181)]+'-'+_0x4510d7,_0x187597(0x204));}_0x3993d5('[翰林院-核心]\x20聊天记录凝识完成成功插入\x20'+_0x51dd22+'\x20个条目。','success');const _0x49a32e=_0x57be32[_0x187597(0x23b)](_0xfb74f8=>{const _0x110dcb=_0x187597,_0x2d08f8=_0x3b0efa[_0x110dcb(0x177)](_0x19d934=>_0x19d934===_0xfb74f8),_0x48b4ab=_0x2d08f8!==-0x1?_0x2d08f8+0x1:-0x1,_0xdfb442=_0xfb74f8['is_user']?'用户':getCharacterName()||'AI';return'['+_0xdfb442+_0x110dcb(0x156)+_0x48b4ab+_0x110dcb(0x199);});return{'success':!![],'count':_0x51dd22,'messages':_0x49a32e};}catch(_0x40bc99){return console['error'](_0x187597(0x161),_0x40bc99),_0x3993d5('[翰林院-核心]\x20聊天记录凝识失败:\x20'+_0x40bc99[_0x187597(0x14e)],'error'),{'success':![],'error':_0x40bc99['message']};}}async function rerankResults(_0x3c1d95,_0x113c92,_0x20cb93){const _0x500ded=_0x42f4ac;let _0x5a4fbc=_0x3c1d95;if(_0x20cb93[_0x500ded(0x183)][_0x500ded(0x208)]&&_0x3c1d95[_0x500ded(0x1d9)]>0x0){console[_0x500ded(0x179)]('[翰林院-Rerank]\x20开始外部API重排序...');try{const _0x1ca0fd=_0x3c1d95['map'](_0x2c8064=>_0x2c8064[_0x500ded(0x1b3)]),_0x2c7358=await executeRerank(_0x113c92,_0x1ca0fd,_0x20cb93[_0x500ded(0x183)]),_0x1757fe=_0x3c1d95[_0x500ded(0x23b)]((_0x40c44c,_0x56bfc5)=>({..._0x40c44c,'original_index':_0x56bfc5}));_0x5a4fbc=_0x1757fe[_0x500ded(0x23b)](_0x166930=>{const _0x26557a=_0x500ded,_0x4c93ce=_0x2c7358[_0x26557a(0x1c2)][_0x26557a(0x1d2)](_0x2905a8=>_0x2905a8[_0x26557a(0x226)]===_0x166930[_0x26557a(0x1e7)]),_0x4c02a2=_0x4c93ce?_0x4c93ce[_0x26557a(0x1c5)]:0x0;return{..._0x166930,'rerank_score':_0x4c02a2};});if(_0x20cb93[_0x500ded(0x183)][_0x500ded(0x22d)])showNotification(_0x500ded(0x191),_0x500ded(0x187));}catch(_0x51e7ae){console[_0x500ded(0x238)](_0x500ded(0x19c),_0x51e7ae);if(_0x20cb93[_0x500ded(0x183)][_0x500ded(0x22d)])showNotification(_0x500ded(0x1ef)+_0x51e7ae[_0x500ded(0x14e)],_0x500ded(0x238));_0x5a4fbc[_0x500ded(0x1c3)](_0x2dceda=>_0x2dceda[_0x500ded(0x1ab)]=0x0);}}else _0x5a4fbc[_0x500ded(0x1c3)](_0xead488=>_0xead488['rerank_score']=0x0);console['log'](_0x500ded(0x15b));const _0x7e8e35=context['chat'][_0x500ded(0x1d9)],_0x16f9d3=_0x20cb93[_0x500ded(0x183)]['hybrid_alpha'],_0x2c1093=_0x5a4fbc[_0x500ded(0x23b)](_0x155c68=>{const _0x319da=_0x500ded;let _0x3b5b77=0x1;const _0x10b322=_0x155c68[_0x319da(0x15d)]||{};switch(_0x10b322[_0x319da(0x15e)]){case _0x319da(0x1bc):_0x3b5b77*=1.2;break;case'manual':_0x3b5b77*=1.1;break;case _0x319da(0x18f):if(_0x10b322[_0x319da(0x223)]&&_0x7e8e35>0x0){const _0x445f5c=_0x10b322[_0x319da(0x223)]/_0x7e8e35;_0x3b5b77*=0x1+_0x445f5c;}break;}const _0x297a24=_0x155c68[_0x319da(0x1ab)]*_0x16f9d3+(_0x155c68['score']||0x0)*(0x1-_0x16f9d3),_0x475841=_0x297a24*_0x3b5b77;return{..._0x155c68,'final_score':_0x475841};});return _0x2c1093[_0x500ded(0x21c)]((_0x22b359,_0x467335)=>(_0x467335[_0x500ded(0x220)]||0x0)-(_0x22b359[_0x500ded(0x220)]||0x0)),console[_0x500ded(0x179)](_0x500ded(0x1b8)),_0x2c1093['slice'](0x0,_0x20cb93[_0x500ded(0x183)][_0x500ded(0x1da)]);}async function rearrangeChat(_0x306200,_0x36b6c7,_0x3465e1,_0x19c92c){const _0x517272=_0x42f4ac;setExtensionPrompt(_0x517272(0x217),'',settings['injection'][_0x517272(0x1bf)],settings[_0x517272(0x16c)]['depth'],![],settings[_0x517272(0x16c)][_0x517272(0x190)]);if(_0x19c92c===_0x517272(0x16e)||!settings['retrieval'][_0x517272(0x208)])return;const _0x5604c4=_0x306200['slice'](-settings[_0x517272(0x1f3)][_0x517272(0x18d)]);if(_0x5604c4[_0x517272(0x1d9)]===0x0)return;const _0xa9879f=_0x5604c4[_0x517272(0x23b)](_0x638be9=>_0x638be9['mes'])['join']('\x20')[_0x517272(0x227)](/<[^>]*>/g,'')[_0x517272(0x1cc)]();if(!_0xa9879f)return;try{const _0x3adcf6=await queryVectors(_0xa9879f);if(_0x3adcf6[_0x517272(0x1d9)]===0x0)return;const _0x562e9c=await rerankResults(_0x3adcf6,_0xa9879f,settings);if(_0x562e9c[_0x517272(0x1d9)]===0x0)return;const _0x12dd60=_0x562e9c[_0x517272(0x23b)](_0x390b23=>_0x390b23[_0x517272(0x1b3)])[_0x517272(0x1e8)]('\x0a\x0a');let _0x17b2ef=settings['injection'][_0x517272(0x218)][_0x517272(0x227)](_0x517272(0x159),_0x12dd60);_0x17b2ef[_0x517272(0x1cc)]()&&(_0x17b2ef=_0x517272(0x1b2)+_0x17b2ef),setExtensionPrompt(_0x517272(0x217),_0x17b2ef,settings[_0x517272(0x16c)][_0x517272(0x1bf)],settings[_0x517272(0x16c)][_0x517272(0x1b6)],![],settings['injection'][_0x517272(0x190)]);}catch(_0x47bf14){console['error'](_0x517272(0x154),_0x47bf14);if(settings[_0x517272(0x22b)][_0x517272(0x22d)])showNotification('忆识检索失败:\x20'+_0x47bf14[_0x517272(0x14e)],'error');}}async function moveKnowledgeBase(_0x463824,_0x3d832b){const _0x2b2268=_0x42f4ac,_0x430e4a=_0x3d832b==='global'?_0x2b2268(0x205):_0x2b2268(0x16f),_0x1d1e0d=getCharacterStableId();if(!_0x1d1e0d&&_0x430e4a===_0x2b2268(0x205)){toastr[_0x2b2268(0x238)](_0x2b2268(0x20a));return;}const _0xab090c=_0x3d832b==='global'?getGlobalKnowledgeBases():getLocalKnowledgeBases(),_0x21bf5a=_0x430e4a===_0x2b2268(0x16f)?getGlobalKnowledgeBases():getLocalKnowledgeBases(),_0x28d5cf=_0xab090c[_0x463824];if(!_0x28d5cf){const _0x546a70='在源作用域\x20\x27'+_0x3d832b+_0x2b2268(0x1d8)+_0x463824+'\x20的知识库。';console[_0x2b2268(0x238)]('[翰林院-配置]\x20'+_0x546a70),toastr[_0x2b2268(0x238)](_0x2b2268(0x17b));return;}_0x3d832b===_0x2b2268(0x205)&&_0x430e4a===_0x2b2268(0x16f)&&!_0x28d5cf[_0x2b2268(0x17d)]&&(console[_0x2b2268(0x179)](_0x2b2268(0x1e9)+_0x463824+_0x2b2268(0x16b)+_0x1d1e0d),_0x28d5cf['owner']=_0x1d1e0d);delete _0xab090c[_0x463824],_0x21bf5a[_0x463824]=_0x28d5cf,saveSettings();const _0x41e8a5=_0x2b2268(0x15f)+_0x28d5cf[_0x2b2268(0x1a1)]+_0x2b2268(0x20b)+(_0x430e4a===_0x2b2268(0x16f)?'全局':'局部')+'。';console[_0x2b2268(0x179)](_0x2b2268(0x229)+_0x41e8a5),toastr['success'](_0x41e8a5,'配置更新');}async function getAllVectorsFromCollection(_0x53e8aa){const _0x577dd0=_0x42f4ac,_0x567c7b='*',_0x464606={'collectionId':_0x53e8aa,'searchText':_0x567c7b,'topK':0x2710,'threshold':0x0,'source':'webllm','embeddings':{}},_0x3c6179=(await getEmbeddings([_0x567c7b]))[0x0];_0x464606[_0x577dd0(0x188)]={[_0x567c7b]:_0x3c6179};const _0x66c977=await fetch(_0x577dd0(0x184),{'method':_0x577dd0(0x231),'headers':context['getRequestHeaders'](),'body':JSON[_0x577dd0(0x174)](_0x464606)});if(!_0x66c977['ok']){if(_0x66c977[_0x577dd0(0x1db)]===0x194)return console[_0x577dd0(0x179)]('[翰林院-迁移]\x20集合\x20'+_0x53e8aa+_0x577dd0(0x207)),[];const _0x58fe26=await _0x66c977['text']();throw new Error(_0x577dd0(0x209)+_0x53e8aa+_0x577dd0(0x155)+_0x58fe26);}const _0x27f6e9=await _0x66c977[_0x577dd0(0x1d6)]();return _0x27f6e9[_0x577dd0(0x15d)]||_0x27f6e9[_0x577dd0(0x1c2)]||_0x27f6e9[_0x577dd0(0x150)]||[];}