mirror of
https://github.com/SilenceLurker/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 20:35:51 +00:00
2 lines
32 KiB
JavaScript
2 lines
32 KiB
JavaScript
'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));}}
|