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

2 lines
32 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 _0x314869=_0x1de4;function _0x1de4(_0x2f84b6,_0x285f65){const _0x8e63de=_0x8e63();return _0x1de4=function(_0x1de4b0,_0xf7f3c8){_0x1de4b0=_0x1de4b0-0x114;let _0x495d4a=_0x8e63de[_0x1de4b0];return _0x495d4a;},_0x1de4(_0x2f84b6,_0x285f65);}(function(_0x55dd0f,_0x13d7cc){const _0x146cd0=_0x1de4,_0x476090=_0x55dd0f();while(!![]){try{const _0x37cf38=-parseInt(_0x146cd0(0x130))/0x1+-parseInt(_0x146cd0(0x156))/0x2+-parseInt(_0x146cd0(0x133))/0x3*(parseInt(_0x146cd0(0x145))/0x4)+parseInt(_0x146cd0(0x179))/0x5+parseInt(_0x146cd0(0x1b9))/0x6*(-parseInt(_0x146cd0(0x131))/0x7)+-parseInt(_0x146cd0(0x1b6))/0x8*(parseInt(_0x146cd0(0x1a1))/0x9)+parseInt(_0x146cd0(0x15b))/0xa*(parseInt(_0x146cd0(0x19b))/0xb);if(_0x37cf38===_0x13d7cc)break;else _0x476090['push'](_0x476090['shift']());}catch(_0x269a75){_0x476090['push'](_0x476090['shift']());}}}(_0x8e63,0x31549));import{extension_prompt_roles,setExtensionPrompt}from'/script.js';import*as _0x54b3a2 from'./utils/context-utils.js';import{getCollectionIdInfo}from'./utils/context-utils.js';import{defaultSettings as _0x2ba06a}from'./rag-settings.js';import*as _0x5c5b5e from'./ingestion-manager.js';import{getEmbeddings,fetchEmbeddingModels as _0x11625e,fetchRerankModels as _0xd12b79,executeRerank,testApiConnection as _0x18685e}from'./rag-api.js';const MODULE_NAME=_0x314869(0x16c),OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x314869(0x18e);let context=null,settings=null,lockedCollectionId=null;export{initialize,getSettings,saveSettings,resetSettings,_0x18685e as testApiConnection,_0x11625e as fetchEmbeddingModels,_0xd12b79 as fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId,toggleSessionLock,isSessionLocked,getLockedSessionInfo};function initialize(){const _0xb8e489=_0x314869;context=SillyTavern[_0xb8e489(0x1bc)]();if(!context){console[_0xb8e489(0x17e)]('[翰林院]\x20未能获取SillyTavern上下文初始化失败。');return;}settings=getSettings();const _0xa9e240=window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME];typeof _0xa9e240==='function'?(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=async function(..._0x33d4f2){await rearrangeChat(..._0x33d4f2),await _0xa9e240(..._0x33d4f2);},console[_0xb8e489(0x128)](_0xb8e489(0x19d)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME)):(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=rearrangeChat,console[_0xb8e489(0x128)](_0xb8e489(0x1ce)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME));}async function ingestTextToHanlinyuan(_0x48f982,_0x1a9f5a=_0x314869(0x1bf),_0x55d6a3='',_0x1062d9=()=>{},_0x1c1977=null,_0x46731a=()=>{},_0x609ae5=()=>{},_0xd56986=null,_0x2b0099=0x0,_0x142510=null){const _0xbd3117=_0x314869;if(!_0x48f982||!_0x48f982['trim']())return{'success':![],'error':'输入文本为空'};if(!settings)return{'success':![],'error':_0xbd3117(0x17c)};try{let _0x42c211=await getCollectionId();const _0x35f48d=getCollectionIdInfo();if(_0x35f48d[_0xbd3117(0x1a0)]&&_0x35f48d[_0xbd3117(0x1a0)]===_0x42c211&&_0x35f48d[_0xbd3117(0x1a0)]!==_0x35f48d[_0xbd3117(0x1b0)]){const _0x197358=confirm(_0xbd3117(0x150));if(_0x197358)_0x46731a(_0xbd3117(0x122)+_0x35f48d[_0xbd3117(0x1a0)],'warn'),await purgeStorage(_0x35f48d[_0xbd3117(0x1a0)]),_0x42c211=_0x35f48d[_0xbd3117(0x1b0)],_0x46731a('[翰林院-迁移]\x20旧宝库已清空将向新宝库写入数据:\x20'+_0x42c211,_0xbd3117(0x162));else return _0x46731a(_0xbd3117(0x12a),_0xbd3117(0x115)),toastr[_0xbd3117(0x115)](_0xbd3117(0x1c3)),{'success':![],'error':'用户取消了迁移操作'};}if(!_0x42c211)throw new Error(_0xbd3117(0x17d));_0x46731a(_0xbd3117(0x1a6)+_0x42c211,_0xbd3117(0x115)),_0x1062d9({'message':_0xbd3117(0x147),'processed':0x0,'total':0x1});const _0x33db7f=splitIntoChunks(_0x48f982,_0x1a9f5a,{'sourceName':_0x55d6a3}),_0x24c9fb=_0x33db7f[_0xbd3117(0x168)];if(_0x1c1977?.[_0xbd3117(0x119)])throw new Error('AbortError');_0x46731a(_0xbd3117(0x137)+(_0x55d6a3||_0x1a9f5a)+_0xbd3117(0x153)+_0x24c9fb+_0xbd3117(0x1a4),_0xbd3117(0x115));if(_0x24c9fb===0x0)return{'success':!![],'count':0x0};const _0x56e5d1=settings[_0xbd3117(0x193)][_0xbd3117(0x143)]||0x5;let _0x4677ca=_0x2b0099;for(let _0x566293=_0x2b0099;_0x566293<_0x24c9fb;_0x566293+=_0x56e5d1){if(_0x1c1977?.[_0xbd3117(0x119)])throw new Error(_0xbd3117(0x178));const _0x228e9d=_0x33db7f[_0xbd3117(0x1b1)](_0x566293,_0x566293+_0x56e5d1);_0x1062d9({'message':_0xbd3117(0x1a3)+(_0x566293+0x1)+'-'+(_0x566293+_0x228e9d[_0xbd3117(0x168)])+'\x20块','processed':_0x566293,'total':_0x24c9fb});const _0x11dd06=_0x228e9d[_0xbd3117(0x16a)](_0xe07cfc=>_0xe07cfc['text']),_0x4eeedb=await getEmbeddings(_0x11dd06,_0x1c1977);if(_0x1c1977?.['aborted'])throw new Error(_0xbd3117(0x178));if(_0x228e9d[_0xbd3117(0x168)]!==_0x4eeedb[_0xbd3117(0x168)])throw new Error('文本块和向量数量不匹配');const _0x14943e=_0x228e9d['map']((_0x1ae65f,_0x5cf2a2)=>({..._0x1ae65f,'vector':_0x4eeedb[_0x5cf2a2]}));await insertVectors(_0x14943e,_0x1c1977,_0x42c211),_0x4677ca+=_0x228e9d['length'],_0xd56986&&_0x5c5b5e[_0xbd3117(0x1c7)](_0xd56986,_0x4677ca,_0x24c9fb),_0x609ae5();}_0xd56986&&_0x5c5b5e[_0xbd3117(0x157)](_0xd56986);if(_0x142510){const _0x289fd3=await getCollectionId(),_0x1895c0=_0x142510['end']===0x0?context[_0xbd3117(0x1cc)][_0xbd3117(0x168)]:_0x142510[_0xbd3117(0x184)];settings[_0xbd3117(0x1c6)][_0x289fd3]={'start':_0x142510[_0xbd3117(0x11e)],'end':_0x1895c0,'timestamp':new Date()['toISOString']()},saveSettings(),_0x46731a(_0xbd3117(0x14e)+_0x289fd3+_0xbd3117(0x1af)+_0x142510[_0xbd3117(0x11e)]+'-'+_0x1895c0,_0xbd3117(0x115));}return _0x46731a(_0xbd3117(0x1c1)+_0x4677ca+_0xbd3117(0x195),'success'),{'success':!![],'count':_0x4677ca};}catch(_0x11f1f0){if(_0x11f1f0[_0xbd3117(0x18f)]==='AbortError'){_0x46731a('[翰林院-核心]\x20文本录入任务被用户中止。',_0xbd3117(0x1be));throw _0x11f1f0;}return console[_0xbd3117(0x17e)](_0xbd3117(0x135),_0x11f1f0),_0x46731a('[翰林院-核心]\x20文本录入失败:\x20'+_0x11f1f0[_0xbd3117(0x12c)],_0xbd3117(0x17e)),{'success':![],'error':_0x11f1f0[_0xbd3117(0x12c)]};}}function getSettings(){const _0x43d897=_0x314869;if(!context||!context['extensionSettings'])return structuredClone(_0x2ba06a);let _0x4e3afb=context[_0x43d897(0x117)][MODULE_NAME];!_0x4e3afb&&(_0x4e3afb={},context[_0x43d897(0x117)][MODULE_NAME]=_0x4e3afb);_0x4e3afb['condensationHistory']===undefined&&(_0x4e3afb[_0x43d897(0x1c6)]={});for(const _0x4db65a in _0x2ba06a){if(_0x4e3afb[_0x4db65a]===undefined)_0x4e3afb[_0x4db65a]=structuredClone(_0x2ba06a[_0x4db65a]);else{if(typeof _0x2ba06a[_0x4db65a]===_0x43d897(0x185)&&!Array[_0x43d897(0x176)](_0x2ba06a[_0x4db65a])&&_0x2ba06a[_0x4db65a]!==null)for(const _0x1a9c1b in _0x2ba06a[_0x4db65a]){_0x4e3afb[_0x4db65a][_0x1a9c1b]===undefined&&(_0x4e3afb[_0x4db65a][_0x1a9c1b]=_0x2ba06a[_0x4db65a][_0x1a9c1b]);}}}return _0x4e3afb;}function saveSettings(){const _0x100871=_0x314869;if(context)context[_0x100871(0x124)]();}function resetSettings(){const _0x4a8e18=_0x314869;context&&(context[_0x4a8e18(0x117)][MODULE_NAME]=structuredClone(_0x2ba06a),saveSettings());}function showNotification(_0x58d24a,_0x27efab=_0x314869(0x115)){toastr[_0x27efab](_0x58d24a);}function getTagForSource(_0x4ce57f){const _0x2a483e=_0x314869;switch(_0x4ce57f){case _0x2a483e(0x165):return _0x2a483e(0x1ad);case _0x2a483e(0x197):return'世界书';case'manual':return'手动录入';case _0x2a483e(0x114):return _0x2a483e(0x16f);default:return'资料';}}function splitIntoChunks(_0x3f4ff8,_0x5bc457,_0x4a4fbf={}){const _0x3e993a=_0x314869;switch(_0x5bc457){case _0x3e993a(0x114):return _chunkForNovel(_0x3f4ff8,_0x4a4fbf);case _0x3e993a(0x165):return _chunkForChatHistory(_0x3f4ff8,_0x4a4fbf);case'lorebook':return _chunkForLorebook(_0x3f4ff8,_0x4a4fbf);case _0x3e993a(0x1bf):return _chunkForManual(_0x3f4ff8,_0x4a4fbf);default:console['warn'](_0x3e993a(0x1bd)+_0x5bc457+_0x3e993a(0x167));return _chunkForManual(_0x3f4ff8,{..._0x4a4fbf,'sourceName':_0x4a4fbf[_0x3e993a(0x1b3)]||_0x3e993a(0x11d)});}}function _chunkForNovel(_0x3a9df5,_0x27fc85){const _0x4fc24b=_0x314869,{chunkSize:_0x1151f4,overlap:_0x6c1db4}=settings['advanced'],{sourceName:sourceName='小说'}=_0x27fc85,_0x16ad3c=[];if(!_0x3a9df5||_0x1151f4<=0x0)return _0x16ad3c;const _0x39c84a=/(第\s*[一二三四五六七八九十百千万零\d]+\s*卷)/gim,_0x31e445=/(第\s*[一二三四五六七八九十百千万零\d]+\s*[章回节部])|^(Chapter\s+\d+)/gim;let _0x59ad67=0x0;const _0x241f00=_0x3a9df5['split']('\x0a');let _0x3db459=_0x4fc24b(0x187),_0x265f8e=_0x4fc24b(0x129),_0x46991b=[];function _0x41d0a4(){const _0x4017d8=_0x4fc24b;if(_0x46991b['length']===0x0)return;const _0x4eccac=_0x46991b[_0x4017d8(0x183)]('\x0a');let _0x18c43a=0x0,_0x2e9ad4=0x1;while(_0x18c43a<_0x4eccac[_0x4017d8(0x168)]){const _0x274db7=Math[_0x4017d8(0x158)](_0x18c43a+_0x1151f4,_0x4eccac[_0x4017d8(0x168)]),_0x51040b=_0x4eccac[_0x4017d8(0x14c)](_0x18c43a,_0x274db7);if(_0x51040b[_0x4017d8(0x17b)]()[_0x4017d8(0x168)]>0x0){const _0x3911c7={'source':_0x4017d8(0x114),'sourceName':sourceName,'timestamp':new Date()[_0x4017d8(0x18a)](),'globalIndex':_0x59ad67++,'volume':_0x3db459,'chapter':_0x265f8e,'section':_0x2e9ad4},_0x153a0f=getTagForSource(_0x4017d8(0x114)),_0x3b29ce=_0x4017d8(0x192)+sourceName+',\x20'+_0x3db459+',\x20'+_0x265f8e+_0x4017d8(0x1cd)+_0x2e9ad4+'节]',_0x3fcf26='<'+_0x153a0f+'>\x0a'+_0x3b29ce+'\x0a'+_0x51040b+'\x0a</'+_0x153a0f+'>';_0x16ad3c[_0x4017d8(0x146)]({'text':_0x3fcf26,'metadata':_0x3911c7}),_0x2e9ad4++;}_0x18c43a+=_0x1151f4-_0x6c1db4;if(_0x18c43a>=_0x4eccac[_0x4017d8(0x168)])break;}_0x46991b=[];}for(const _0x7cae9b of _0x241f00){const _0x4514c1=_0x7cae9b[_0x4fc24b(0x17b)]();if(_0x39c84a[_0x4fc24b(0x159)](_0x4514c1))_0x41d0a4(),_0x3db459=_0x4514c1,_0x265f8e=_0x4fc24b(0x129);else _0x31e445[_0x4fc24b(0x159)](_0x4514c1)?(_0x41d0a4(),_0x265f8e=_0x4514c1):_0x46991b['push'](_0x7cae9b);}_0x41d0a4();if(_0x16ad3c[_0x4fc24b(0x168)]===0x0&&_0x3a9df5[_0x4fc24b(0x168)]>0x0){let _0x27160d=0x0,_0x565d14=0x1;while(_0x27160d<_0x3a9df5['length']){const _0x4093cc=Math[_0x4fc24b(0x158)](_0x27160d+_0x1151f4,_0x3a9df5[_0x4fc24b(0x168)]),_0x18a010=_0x3a9df5[_0x4fc24b(0x14c)](_0x27160d,_0x4093cc),_0x2ff74a={'source':_0x4fc24b(0x114),'sourceName':sourceName,'timestamp':new Date()['toISOString'](),'globalIndex':_0x16ad3c[_0x4fc24b(0x168)],'volume':'第1卷','chapter':_0x4fc24b(0x129),'section':_0x565d14},_0x4a2abc=getTagForSource('novel'),_0x305367=_0x4fc24b(0x192)+sourceName+',\x20第1卷,\x20第1章,\x20第'+_0x565d14+'节]',_0x35bd35='<'+_0x4a2abc+'>\x0a'+_0x305367+'\x0a'+_0x18a010+'\x0a</'+_0x4a2abc+'>';_0x16ad3c[_0x4fc24b(0x146)]({'text':_0x35bd35,'metadata':_0x2ff74a}),_0x565d14++,_0x27160d+=_0x1151f4-_0x6c1db4;}}return _0x16ad3c;}function _0x8e63(){const _0x331f0e=['未知来源','start','HANLINYUAN_RAG','matchThreshold','\x0a</','[翰林院-迁移]\x20用户确认迁移正在清空旧宝库:\x20','[翰林院-日志]\x20开始向量查询\x20(采用最终API交互模式)...','saveSettingsDebounced',']\x20的消息已成功凝识。','source','[来源:\x20聊天记录,\x20楼层:\x20#','log','第1章','[翰林院-迁移]\x20用户取消了迁移操作。','[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:','message','[翰林院-Rerank]\x20外部Rerank失败将仅使用内部加权。','凝识之权未开启','getTime','159499scXexw','4760dhpnom','[翰林院-日志]\x20/api/vector/query\x20响应状态:\x20','87gQMRxt','index','[翰林院-核心]\x20ingestTextToHanlinyuan\x20失败:','[翰林院-日志]\x20清空目标集合ID:\x20','[翰林院-核心]\x20将来源\x27','enabled','status','/api/vector/insert','文本块和向量数量不匹配','[翰林院-日志]\x20宝库查询API错误:','/api/vector/query','[翰林院-日志]\x20开始清空宝库...','\x20条结果。','results','queryMessageCount','getRequestHeaders','batchSize','\x20-\x20楼层\x20#','1708Olbozh','push','正在智能分块...','[翰林院-日志]\x20/api/vector/list\x20响应状态:\x20','rerank','quiet','用户取消了迁移操作','substring','score','[翰林院-核心]\x20已为宝库\x20',',\x20向量化录入时间:\x20','此操作将清空旧版数据,并开始使用新版数据库。此过程不可逆,是否继续?','condensation','[翰林院-核心]\x20insertVectors被调用时未提供collectionId','\x27的文本分割成\x20','[翰林院-日志]\x20清空宝库API调用成功。','filter','807294sffTWv','clearJob','min','test','depth_role','121640UsVbYU','POST','/api/vector/list','notify','[翰林院-核心]\x20凝识任务已锁定忆识宝库ID:\x20','mes','%%HANLINYUAN_RAG_INJECTION%%','success','final_score','[翰林院-日志]\x20发送到\x20/api/vector/query\x20的请求体:','chat_history','[翰林院-Rerank]\x20开始元数据加权最终排序...','\x27使用通用分块逻辑。','length','[翰林院-日志]\x20获取向量列表API错误:','map','hybrid_alpha','hanlinyuan-rag-core','reduce','聊天记录\x20#','小说录入','toString','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','[翰林院-核心]\x20聊天记录凝识完成成功插入\x20','sort','[翰林院]\x20检索或注入时发生错误:','[翰林院-日志]\x20发送到\x20/api/vector/list\x20的请求体:','isArray','injection','AbortError','417585OkvhvH','advanced','trim','核心未初始化','无法确定当前忆识宝库的ID请确认角色已正确加载。','error','now','toLocaleString','[来源:\x20世界书,\x20条目:\x20','hashes','join','end','object','webllm','第1卷','[翰林院-核心]\x20聊天记录凝识失败:\x20','世界书条目','toISOString','忆识存入API错误\x20','[翰林院-日志]\x20忆识存入API错误:','/api/vector/purge','vectors_rearrangeChat','name','部分]','vector','[来源:\x20','retrieval','depth','\x20个向量条目。','floor','lorebook','(已锁定:\x20','abs','[翰林院-日志]\x20开始获取向量总数...','1309lRgdIb','top_n','翰林院忆识核心已启动\x20(V5.1-和平共存版),已代理\x20','stringify','zh-CN','oldId','1048581QvDvVI','忆识检索失败:\x20','正在处理\x20','\x20个块。','\x20个知识块准备入库。','[翰林院-核心]\x20已锁定忆识宝库ID:\x20','{{text}}','宝库查询API错误\x20','charCodeAt','text','[翰林院-迁移]\x20旧宝库已清空将向新宝库写入数据:\x20','\x20条消息分解为\x20','聊天记录','手动录入','\x20记录凝识范围:\x20','newId','slice','[翰林院-日志]\x20/api/vector/query\x20响应内容:','sourceName','No\x20messages\x20to\x20process.','relevance_score','24wdmfgc','json','is_user','3564RrtRKf','messageTypes','template','getContext','[翰林院-分块]\x20未知的来源类型\x20\x27','warn','manual','rerank_score','[翰林院-核心]\x20成功插入\x20','Rerank失败:\x20','操作已取消。','...)','forEach','condensationHistory','saveProgress','find','外部Rerank完成','position','metadata','chat',',\x20第','翰林院忆识核心已启动\x20(V5.1-借壳上市版),已注册全局函数:\x20','novel','info','replace','extensionSettings','[翰林院-日志]\x20清空宝库API错误:','aborted','data','无法确定要清空的目标宝库。','\x20个条目。'];_0x8e63=function(){return _0x331f0e;};return _0x8e63();}function _chunkForChatHistory(_0xbb1a6c,_0x58ca92){const _0x1cfa8b=_0x314869,{chunkSize:_0x2a678a,overlap:_0x4ae1ad}=settings[_0x1cfa8b(0x17a)],{floor:_0x396318,is_user:_0x2077e9,timestamp:_0x3dbe2a}=_0x58ca92,_0x4b53c9=[];if(!_0xbb1a6c||_0x2a678a<=0x0)return _0x4b53c9;let _0x5a5f43=0x1,_0x4201de=0x0;while(_0x4201de<_0xbb1a6c[_0x1cfa8b(0x168)]){const _0x5e4797=Math[_0x1cfa8b(0x158)](_0x4201de+_0x2a678a,_0xbb1a6c[_0x1cfa8b(0x168)]),_0x528764=_0xbb1a6c[_0x1cfa8b(0x14c)](_0x4201de,_0x5e4797),_0xcf7b1f=_0x1cfa8b(0x127)+_0x396318+_0x1cfa8b(0x1cd)+_0x5a5f43+'部分]',_0x42dcb4=getTagForSource('chat_history'),_0x5b34d9='<'+_0x42dcb4+'>\x0a'+_0xcf7b1f+'\x0a'+_0x528764+_0x1cfa8b(0x121)+_0x42dcb4+'>';_0x4b53c9[_0x1cfa8b(0x146)]({'text':_0x5b34d9,'metadata':{'source':'chat_history','sourceName':_0x1cfa8b(0x16e)+_0x396318,'floor':_0x396318,'part':_0x5a5f43,'is_user':_0x2077e9,'timestamp':_0x3dbe2a}}),_0x5a5f43++,_0x4201de+=_0x2a678a-_0x4ae1ad;if(_0x4201de>=_0xbb1a6c[_0x1cfa8b(0x168)])break;}return _0x4b53c9;}function _chunkForLorebook(_0x2997d7,_0x376a09){const _0x5a54f9=_0x314869,{chunkSize:_0xe527e3,overlap:_0xcd5755}=settings[_0x5a54f9(0x17a)],{sourceName:sourceName=_0x5a54f9(0x189)}=_0x376a09,_0x9e062b=[];if(!_0x2997d7||_0xe527e3<=0x0)return _0x9e062b;let _0x56e8b3=0x1,_0x2b04e8=0x0;while(_0x2b04e8<_0x2997d7['length']){const _0x51a725=Math[_0x5a54f9(0x158)](_0x2b04e8+_0xe527e3,_0x2997d7[_0x5a54f9(0x168)]),_0x271a5c=_0x2997d7[_0x5a54f9(0x14c)](_0x2b04e8,_0x51a725),_0x293a07=_0x5a54f9(0x181)+sourceName+_0x5a54f9(0x1cd)+_0x56e8b3+_0x5a54f9(0x190),_0x1504d5=getTagForSource(_0x5a54f9(0x197)),_0x53d6fa='<'+_0x1504d5+'>\x0a'+_0x293a07+'\x0a'+_0x271a5c+'\x0a</'+_0x1504d5+'>';_0x9e062b[_0x5a54f9(0x146)]({'text':_0x53d6fa,'metadata':{'source':_0x5a54f9(0x197),'sourceName':sourceName,'part':_0x56e8b3,'timestamp':new Date()[_0x5a54f9(0x18a)]()}}),_0x56e8b3++,_0x2b04e8+=_0xe527e3-_0xcd5755;if(_0x2b04e8>=_0x2997d7['length'])break;}return _0x9e062b;}function _chunkForManual(_0x585d8c,_0x412f35){const _0x13801d=_0x314869,{chunkSize:_0x103578,overlap:_0x438b4b}=settings[_0x13801d(0x17a)],{sourceName:sourceName=_0x13801d(0x1ae)}=_0x412f35,_0x45d42d=[];if(!_0x585d8c||_0x103578<=0x0)return _0x45d42d;const _0x93575e=new Date(),_0x30c64d=_0x93575e[_0x13801d(0x180)](_0x13801d(0x19f));let _0x3dd253=0x1,_0x574efb=0x0;while(_0x574efb<_0x585d8c[_0x13801d(0x168)]){const _0x476f53=Math[_0x13801d(0x158)](_0x574efb+_0x103578,_0x585d8c[_0x13801d(0x168)]),_0x275c8c=_0x585d8c[_0x13801d(0x14c)](_0x574efb,_0x476f53),_0x19dba0=_0x13801d(0x192)+sourceName+_0x13801d(0x14f)+_0x30c64d+_0x13801d(0x1cd)+_0x3dd253+'部分]',_0x123559=getTagForSource('manual'),_0x726200='<'+_0x123559+'>\x0a'+_0x19dba0+'\x0a'+_0x275c8c+'\x0a</'+_0x123559+'>';_0x45d42d[_0x13801d(0x146)]({'text':_0x726200,'metadata':{'source':_0x13801d(0x1bf),'sourceName':sourceName,'part':_0x3dd253,'timestamp':_0x93575e[_0x13801d(0x18a)]()}}),_0x3dd253++,_0x574efb+=_0x103578-_0x438b4b;if(_0x574efb>=_0x585d8c['length'])break;}return _0x45d42d;}import{getCollectionId as _0xed7a28,getCharacterName}from'./utils/context-utils.js';async function getCollectionId(){return lockedCollectionId||await _0xed7a28();}async function toggleSessionLock(){return lockedCollectionId?(lockedCollectionId=null,![]):(lockedCollectionId=await _0xed7a28(),!![]);}function isSessionLocked(){return lockedCollectionId!==null;}function getLockedSessionInfo(){const _0x5c2f11=_0x314869;if(!lockedCollectionId)return null;return{'id':lockedCollectionId,'name':_0x5c2f11(0x198)+lockedCollectionId[_0x5c2f11(0x14c)](0x0,0x8)+_0x5c2f11(0x1c4)};}function generateHash(_0x219fa9){const _0x5cb67a=_0x314869;let _0x42fce4=0x0;for(let _0x4cb8ea=0x0;_0x4cb8ea<_0x219fa9[_0x5cb67a(0x168)];_0x4cb8ea++){const _0x18bffa=_0x219fa9[_0x5cb67a(0x1a9)](_0x4cb8ea);_0x42fce4=(_0x42fce4<<0x5)-_0x42fce4+_0x18bffa,_0x42fce4=_0x42fce4&_0x42fce4;}return Math[_0x5cb67a(0x199)](_0x42fce4)[_0x5cb67a(0x170)](0x24);}async function queryVectors(_0x39765a){const _0x207e8c=_0x314869;console[_0x207e8c(0x128)](_0x207e8c(0x123));const _0x1e4e12=await getCollectionId();console['log']('[翰林院-日志]\x20查询目标集合ID:\x20'+_0x1e4e12);const _0x32c9c7=(await getEmbeddings([_0x39765a]))[0x0],_0x4fd776={'collectionId':_0x1e4e12,'searchText':_0x39765a,'topK':settings[_0x207e8c(0x17a)]['maxResults'],'threshold':settings[_0x207e8c(0x17a)][_0x207e8c(0x120)],'source':_0x207e8c(0x186),'embeddings':{[_0x39765a]:_0x32c9c7}};console[_0x207e8c(0x128)](_0x207e8c(0x164),JSON[_0x207e8c(0x19e)](_0x4fd776,null,0x2));const _0x1e493b=await fetch(_0x207e8c(0x13d),{'method':'POST','headers':context[_0x207e8c(0x142)](),'body':JSON[_0x207e8c(0x19e)](_0x4fd776)});console[_0x207e8c(0x128)](_0x207e8c(0x132)+_0x1e493b[_0x207e8c(0x139)]);if(!_0x1e493b['ok']){const _0x9a3e93=await _0x1e493b[_0x207e8c(0x1aa)]();console[_0x207e8c(0x17e)](_0x207e8c(0x13c),_0x9a3e93);throw new Error(_0x207e8c(0x1a8)+_0x1e493b[_0x207e8c(0x139)]+':\x20'+_0x9a3e93);}const _0x1dcda1=await _0x1e493b[_0x207e8c(0x1b7)]();console[_0x207e8c(0x128)](_0x207e8c(0x1b2),_0x1dcda1);const _0x189bb8=_0x1dcda1[_0x207e8c(0x1cb)]||_0x1dcda1[_0x207e8c(0x140)]||_0x1dcda1[_0x207e8c(0x11a)]||[];return console[_0x207e8c(0x128)]('[翰林院-日志]\x20查询成功返回\x20'+_0x189bb8[_0x207e8c(0x168)]+_0x207e8c(0x13f)),_0x189bb8;}async function insertVectors(_0x436eca,_0x32a076=null,_0x1a398e){const _0x35ca7f=_0x314869;if(!_0x1a398e){console[_0x35ca7f(0x17e)](_0x35ca7f(0x152)),_0x1a398e=await getCollectionId();if(!_0x1a398e)throw new Error('在insertVectors内部也无法获取collectionId');}if(_0x436eca[_0x35ca7f(0x168)]===0x0)return{'success':!![],'count':0x0};const _0x3124aa=_0x436eca[_0x35ca7f(0x16a)]((_0x352dd5,_0x439c71)=>({'hash':generateHash(_0x352dd5[_0x35ca7f(0x1aa)]+Date[_0x35ca7f(0x17f)]()+_0x439c71),'text':_0x352dd5['text'],'metadata':_0x352dd5[_0x35ca7f(0x1cb)]||{'source':'unknown','timestamp':new Date()['toISOString']()}})),_0xa44710=_0x3124aa[_0x35ca7f(0x16d)]((_0x15b1b7,_0x54d7db,_0x24e92f)=>{const _0x5d345e=_0x35ca7f;return _0x15b1b7[_0x54d7db[_0x5d345e(0x1aa)]]=_0x436eca[_0x24e92f][_0x5d345e(0x191)],_0x15b1b7;},{}),_0xd84f7c={'collectionId':_0x1a398e,'items':_0x3124aa,'source':_0x35ca7f(0x186),'embeddings':_0xa44710},_0x5dc356=await fetch(_0x35ca7f(0x13a),{'method':_0x35ca7f(0x15c),'headers':context[_0x35ca7f(0x142)](),'body':JSON[_0x35ca7f(0x19e)](_0xd84f7c),'signal':_0x32a076});if(!_0x5dc356['ok']){const _0x101185=await _0x5dc356[_0x35ca7f(0x1aa)]();console[_0x35ca7f(0x17e)](_0x35ca7f(0x18c),_0x101185);throw new Error(_0x35ca7f(0x18b)+_0x5dc356[_0x35ca7f(0x139)]+':\x20'+_0x101185);}return{'success':!![],'count':_0x3124aa[_0x35ca7f(0x168)]};}async function getVectorCount(){const _0x5c1f9b=_0x314869;console[_0x5c1f9b(0x128)](_0x5c1f9b(0x19a));const _0x57acc9=await getCollectionId();console[_0x5c1f9b(0x128)]('[翰林院-日志]\x20统计目标集合ID:\x20'+_0x57acc9);const _0xc48f6f={'collectionId':_0x57acc9,'source':'webllm','embeddings':{}};console[_0x5c1f9b(0x128)](_0x5c1f9b(0x175),JSON[_0x5c1f9b(0x19e)](_0xc48f6f,null,0x2));const _0x1cdd51=await fetch(_0x5c1f9b(0x15d),{'method':_0x5c1f9b(0x15c),'headers':context[_0x5c1f9b(0x142)](),'body':JSON[_0x5c1f9b(0x19e)](_0xc48f6f)});console[_0x5c1f9b(0x128)](_0x5c1f9b(0x148)+_0x1cdd51[_0x5c1f9b(0x139)]);if(!_0x1cdd51['ok']){const _0x480bab=await _0x1cdd51[_0x5c1f9b(0x1aa)]();return console['error'](_0x5c1f9b(0x169),_0x480bab),0x0;}const _0x4ae3e4=await _0x1cdd51[_0x5c1f9b(0x1b7)]();let _0x2f05ee=0x0;if(Array['isArray'](_0x4ae3e4))_0x2f05ee=_0x4ae3e4[_0x5c1f9b(0x168)];else _0x4ae3e4&&_0x4ae3e4[_0x5c1f9b(0x182)]&&(_0x2f05ee=_0x4ae3e4['hashes']['length']);return console[_0x5c1f9b(0x128)]('[翰林院-日志]\x20统计成功向量总数:\x20'+_0x2f05ee),_0x2f05ee;}async function purgeStorage(_0x58b696=null){const _0x2f826d=_0x314869;console[_0x2f826d(0x128)](_0x2f826d(0x13e));const _0x29ebe2=_0x58b696||await getCollectionId();if(!_0x29ebe2)return console[_0x2f826d(0x17e)]('[翰林院-日志]\x20无法确定要清空的目标集合ID。'),toastr[_0x2f826d(0x17e)](_0x2f826d(0x11b)),![];console['log'](_0x2f826d(0x136)+_0x29ebe2);const _0x33342f={'collectionId':_0x29ebe2};console[_0x2f826d(0x128)](_0x2f826d(0x12b),JSON['stringify'](_0x33342f,null,0x2));const _0x54114a=await fetch(_0x2f826d(0x18d),{'method':'POST','headers':context[_0x2f826d(0x142)](),'body':JSON['stringify'](_0x33342f)});console[_0x2f826d(0x128)](_0x2f826d(0x171)+_0x54114a[_0x2f826d(0x139)]);if(!_0x54114a['ok']){const _0x5673bd=await _0x54114a[_0x2f826d(0x1aa)]();console['error'](_0x2f826d(0x118),_0x5673bd);}else console['log'](_0x2f826d(0x154));return _0x54114a['ok'];}function getMessagesForCondensation(_0x804e41=null){const _0x490a35=_0x314869;if(!settings[_0x490a35(0x151)][_0x490a35(0x138)])return showNotification(_0x490a35(0x12e),'warning'),[];const {layerStart:_0x48d62c,layerEnd:_0x180e15}=settings[_0x490a35(0x151)],_0x91f2d0=_0x804e41||settings[_0x490a35(0x151)][_0x490a35(0x1ba)],_0x163046=context[_0x490a35(0x1cc)][_0x490a35(0x168)],_0x3be149=Math['max'](0x0,_0x48d62c-0x1),_0x724e82=_0x180e15===0x0||_0x180e15>_0x163046?_0x163046:Math[_0x490a35(0x158)](_0x163046,_0x180e15),_0x35dcc9=context[_0x490a35(0x1cc)][_0x490a35(0x1b1)](_0x3be149,_0x724e82);return _0x35dcc9[_0x490a35(0x155)](_0x286059=>{const _0x523175=_0x490a35,_0x1a2bfb=_0x286059[_0x523175(0x1b8)]===!![],_0x250c84=_0x286059[_0x523175(0x1b8)]===![];if(!_0x286059[_0x523175(0x160)]||!_0x286059[_0x523175(0x160)][_0x523175(0x17b)]())return![];return _0x91f2d0['user']&&_0x1a2bfb||_0x91f2d0['ai']&&_0x250c84;});}async function processCondensation(_0x55ef69,_0x1d1f07=()=>{},_0x3cdfc0=null){const _0x51a36a=_0x314869;if(!_0x55ef69||_0x55ef69[_0x51a36a(0x168)]===0x0)return{'success':![],'error':_0x51a36a(0x1b4)};try{let _0x6db16e=await getCollectionId();const _0x41222a=getCollectionIdInfo();if(_0x41222a['oldId']&&_0x41222a['oldId']===_0x6db16e&&_0x41222a['oldId']!==_0x41222a['newId']){const _0x4d9f40=confirm(_0x51a36a(0x150));if(_0x4d9f40)_0x1d1f07('[翰林院-迁移]\x20用户确认迁移正在清空旧宝库:\x20'+_0x41222a[_0x51a36a(0x1a0)],_0x51a36a(0x1be)),await purgeStorage(_0x41222a[_0x51a36a(0x1a0)]),_0x6db16e=_0x41222a[_0x51a36a(0x1b0)],_0x1d1f07(_0x51a36a(0x1ab)+_0x6db16e,'success');else return _0x1d1f07(_0x51a36a(0x12a),'info'),toastr[_0x51a36a(0x115)](_0x51a36a(0x1c3)),{'success':![],'error':_0x51a36a(0x14b)};}if(!_0x6db16e)throw new Error(_0x51a36a(0x17d));_0x1d1f07(_0x51a36a(0x15f)+_0x6db16e,_0x51a36a(0x115));const _0x41ea76=[],_0x2deeb5=context[_0x51a36a(0x1cc)];for(const _0x3c5dc2 of _0x55ef69){const _0x25215c=(_0x3c5dc2[_0x51a36a(0x160)]||'')[_0x51a36a(0x116)](/<[^>]*>/g,'')['trim']();if(_0x25215c[_0x51a36a(0x168)]===0x0)continue;let _0x2e2174;if(_0x3c5dc2[_0x51a36a(0x196)]!==undefined&&_0x3c5dc2['floor']!==null)_0x2e2174=_0x3c5dc2[_0x51a36a(0x196)];else{const _0x1293e2=_0x2deeb5['findIndex'](_0x48681e=>_0x48681e===_0x3c5dc2);_0x2e2174=_0x1293e2!==-0x1?_0x1293e2+0x1:-0x1;}const _0x235003=new Date(_0x3c5dc2['send_date']),_0x5732c6=isNaN(_0x235003[_0x51a36a(0x12f)]())?new Date()[_0x51a36a(0x18a)]():_0x235003[_0x51a36a(0x18a)](),_0x31c336=splitIntoChunks(_0x25215c,_0x51a36a(0x165),{'floor':_0x2e2174,'is_user':_0x3c5dc2[_0x51a36a(0x1b8)],'timestamp':_0x5732c6});_0x41ea76[_0x51a36a(0x146)](..._0x31c336);}if(_0x41ea76[_0x51a36a(0x168)]===0x0)return{'success':!![],'count':0x0};_0x1d1f07('[翰林院-核心]\x20已将\x20'+_0x55ef69[_0x51a36a(0x168)]+_0x51a36a(0x1ac)+_0x41ea76[_0x51a36a(0x168)]+_0x51a36a(0x1a5),'info');const _0x332473=settings[_0x51a36a(0x193)][_0x51a36a(0x143)]||0x5;let _0x3b8332=0x0;for(let _0x1e6dc9=0x0;_0x1e6dc9<_0x41ea76[_0x51a36a(0x168)];_0x1e6dc9+=_0x332473){const _0x3a2510=_0x41ea76[_0x51a36a(0x1b1)](_0x1e6dc9,_0x1e6dc9+_0x332473),_0x438ad8=_0x3a2510[_0x51a36a(0x16a)](_0x5e75b6=>_0x5e75b6[_0x51a36a(0x1aa)]),_0x13887e=await getEmbeddings(_0x438ad8);if(_0x3a2510[_0x51a36a(0x168)]!==_0x13887e[_0x51a36a(0x168)])throw new Error(_0x51a36a(0x13b));const _0x5cfe78=_0x3a2510[_0x51a36a(0x16a)]((_0x101732,_0x57707b)=>({..._0x101732,'vector':_0x13887e[_0x57707b]}));await insertVectors(_0x5cfe78,null,_0x6db16e),_0x3b8332+=_0x3a2510[_0x51a36a(0x168)];}if(_0x3cdfc0){const _0x2d9d65=_0x3cdfc0[_0x51a36a(0x184)]===0x0?context['chat'][_0x51a36a(0x168)]:_0x3cdfc0[_0x51a36a(0x184)];settings['condensationHistory'][_0x6db16e]={'start':_0x3cdfc0[_0x51a36a(0x11e)],'end':_0x2d9d65,'timestamp':new Date()[_0x51a36a(0x18a)]()},saveSettings(),_0x1d1f07(_0x51a36a(0x14e)+_0x6db16e+_0x51a36a(0x1af)+_0x3cdfc0[_0x51a36a(0x11e)]+'-'+_0x2d9d65,_0x51a36a(0x115));}_0x1d1f07(_0x51a36a(0x172)+_0x3b8332+_0x51a36a(0x11c),_0x51a36a(0x162));const _0x25e778=_0x55ef69[_0x51a36a(0x16a)](_0x3f65a3=>{const _0x5c1e2a=_0x51a36a,_0x238fb1=_0x2deeb5['findIndex'](_0x428f78=>_0x428f78===_0x3f65a3),_0x1d263a=_0x238fb1!==-0x1?_0x238fb1+0x1:-0x1,_0x37b4a6=_0x3f65a3[_0x5c1e2a(0x1b8)]?'用户':getCharacterName()||'AI';return'['+_0x37b4a6+_0x5c1e2a(0x144)+_0x1d263a+_0x5c1e2a(0x125);});return{'success':!![],'count':_0x3b8332,'messages':_0x25e778};}catch(_0x56109e){return console[_0x51a36a(0x17e)]('[翰林院-核心]\x20processCondensation\x20失败:',_0x56109e),_0x1d1f07(_0x51a36a(0x188)+_0x56109e[_0x51a36a(0x12c)],_0x51a36a(0x17e)),{'success':![],'error':_0x56109e['message']};}}async function rerankResults(_0x19c583,_0x1f0b61,_0x292d6f){const _0x34407f=_0x314869;let _0x49a72f=_0x19c583;if(_0x292d6f['rerank']['enabled']&&_0x19c583[_0x34407f(0x168)]>0x0){console[_0x34407f(0x128)]('[翰林院-Rerank]\x20开始外部API重排序...');try{const _0x13001c=_0x19c583[_0x34407f(0x16a)](_0x596981=>_0x596981[_0x34407f(0x1aa)]),_0x1220d7=await executeRerank(_0x1f0b61,_0x13001c,_0x292d6f[_0x34407f(0x149)]),_0x312e27=_0x19c583[_0x34407f(0x16a)]((_0x38662f,_0x57d825)=>({..._0x38662f,'original_index':_0x57d825}));_0x49a72f=_0x312e27[_0x34407f(0x16a)](_0x2ed066=>{const _0x4f71ea=_0x34407f,_0x34c744=_0x1220d7[_0x4f71ea(0x140)][_0x4f71ea(0x1c8)](_0x5d9d43=>_0x5d9d43[_0x4f71ea(0x134)]===_0x2ed066['original_index']),_0x543f0b=_0x34c744?_0x34c744[_0x4f71ea(0x1b5)]:0x0;return{..._0x2ed066,'rerank_score':_0x543f0b};});if(_0x292d6f[_0x34407f(0x149)][_0x34407f(0x15e)])showNotification(_0x34407f(0x1c9),_0x34407f(0x162));}catch(_0x18bd20){console['error'](_0x34407f(0x12d),_0x18bd20);if(_0x292d6f[_0x34407f(0x149)][_0x34407f(0x15e)])showNotification(_0x34407f(0x1c2)+_0x18bd20['message'],_0x34407f(0x17e));_0x49a72f[_0x34407f(0x1c5)](_0x509412=>_0x509412[_0x34407f(0x1c0)]=0x0);}}else _0x49a72f[_0x34407f(0x1c5)](_0x1a5600=>_0x1a5600['rerank_score']=0x0);console[_0x34407f(0x128)](_0x34407f(0x166));const _0x3c443d=context[_0x34407f(0x1cc)]['length'],_0x7414b6=_0x292d6f[_0x34407f(0x149)][_0x34407f(0x16b)],_0x26ba18=_0x49a72f[_0x34407f(0x16a)](_0x419007=>{const _0x514838=_0x34407f;let _0x13de3e=0x1;const _0x520a24=_0x419007[_0x514838(0x1cb)]||{};switch(_0x520a24[_0x514838(0x126)]){case'lorebook':_0x13de3e*=1.2;break;case _0x514838(0x1bf):_0x13de3e*=1.1;break;case'chat_history':if(_0x520a24[_0x514838(0x196)]&&_0x3c443d>0x0){const _0x490321=_0x520a24[_0x514838(0x196)]/_0x3c443d;_0x13de3e*=0x1+_0x490321;}break;}const _0x28a2b8=_0x419007[_0x514838(0x1c0)]*_0x7414b6+(_0x419007[_0x514838(0x14d)]||0x0)*(0x1-_0x7414b6),_0x3eecd0=_0x28a2b8*_0x13de3e;return{..._0x419007,'final_score':_0x3eecd0};});return _0x26ba18[_0x34407f(0x173)]((_0x57c84a,_0x4c7c87)=>(_0x4c7c87[_0x34407f(0x163)]||0x0)-(_0x57c84a['final_score']||0x0)),console[_0x34407f(0x128)]('[翰林院-Rerank]\x20元数据加权排序完成。'),_0x26ba18['slice'](0x0,_0x292d6f[_0x34407f(0x149)][_0x34407f(0x19c)]);}async function rearrangeChat(_0x5bd80b,_0x5b672d,_0x49cd3e,_0x582817){const _0x4536e0=_0x314869;setExtensionPrompt(_0x4536e0(0x11f),'',settings[_0x4536e0(0x177)][_0x4536e0(0x1ca)],settings[_0x4536e0(0x177)]['depth'],![],settings['injection'][_0x4536e0(0x15a)]);if(_0x582817===_0x4536e0(0x14a)||!settings[_0x4536e0(0x193)][_0x4536e0(0x138)])return;const _0x139704=_0x5bd80b['slice'](-settings['advanced'][_0x4536e0(0x141)]);if(_0x139704[_0x4536e0(0x168)]===0x0)return;const _0x4a34b0=_0x139704[_0x4536e0(0x16a)](_0x52b4dd=>_0x52b4dd[_0x4536e0(0x160)])[_0x4536e0(0x183)]('\x20')[_0x4536e0(0x116)](/<[^>]*>/g,'')[_0x4536e0(0x17b)]();if(!_0x4a34b0)return;try{const _0x254fa1=await queryVectors(_0x4a34b0);if(_0x254fa1[_0x4536e0(0x168)]===0x0)return;const _0x4a441a=await rerankResults(_0x254fa1,_0x4a34b0,settings);if(_0x4a441a[_0x4536e0(0x168)]===0x0)return;const _0x1ec772=_0x4a441a[_0x4536e0(0x16a)](_0x1f9744=>_0x1f9744[_0x4536e0(0x1aa)])[_0x4536e0(0x183)]('\x0a\x0a');let _0x1090e3=settings[_0x4536e0(0x177)][_0x4536e0(0x1bb)]['replace'](_0x4536e0(0x1a7),_0x1ec772);_0x1090e3['trim']()&&(_0x1090e3=_0x4536e0(0x161)+_0x1090e3),setExtensionPrompt(_0x4536e0(0x11f),_0x1090e3,settings['injection']['position'],settings[_0x4536e0(0x177)][_0x4536e0(0x194)],![],settings['injection'][_0x4536e0(0x15a)]);}catch(_0x446154){console[_0x4536e0(0x17e)](_0x4536e0(0x174),_0x446154);if(settings[_0x4536e0(0x193)][_0x4536e0(0x15e)])showNotification(_0x4536e0(0x1a2)+_0x446154[_0x4536e0(0x12c)],_0x4536e0(0x17e));}}