Files
ST-Amily2-Chat-Optimisation…/core/rag-processor.js
2025-07-27 12:49:43 +08:00

2 lines
29 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 _0x3a0919=_0x580c;(function(_0x377b04,_0x5166f7){const _0x278bb0=_0x580c,_0x52d199=_0x377b04();while(!![]){try{const _0x25b928=parseInt(_0x278bb0(0x24d))/0x1*(parseInt(_0x278bb0(0x27d))/0x2)+-parseInt(_0x278bb0(0x261))/0x3*(-parseInt(_0x278bb0(0x1dd))/0x4)+parseInt(_0x278bb0(0x239))/0x5+-parseInt(_0x278bb0(0x251))/0x6+parseInt(_0x278bb0(0x1db))/0x7*(parseInt(_0x278bb0(0x23d))/0x8)+-parseInt(_0x278bb0(0x234))/0x9+-parseInt(_0x278bb0(0x224))/0xa*(parseInt(_0x278bb0(0x26c))/0xb);if(_0x25b928===_0x5166f7)break;else _0x52d199['push'](_0x52d199['shift']());}catch(_0x28c241){_0x52d199['push'](_0x52d199['shift']());}}}(_0x5667,0x6010b));function _0x580c(_0x393099,_0xb617c7){const _0x5667ce=_0x5667();return _0x580c=function(_0x580c74,_0x3c277c){_0x580c74=_0x580c74-0x1da;let _0x22e775=_0x5667ce[_0x580c74];return _0x22e775;},_0x580c(_0x393099,_0xb617c7);}import{extension_prompt_roles,setExtensionPrompt}from'/script.js';import*as _0x270d56 from'./utils/context-utils.js';import{defaultSettings as _0x7e7f53}from'./rag-settings.js';import*as _0x572a3f from'./ingestion-manager.js';const MODULE_NAME=_0x3a0919(0x229),OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x3a0919(0x246);let context=null,settings=null,lockedCollectionId=null;export{initialize,getSettings,saveSettings,resetSettings,testApiConnection,fetchEmbeddingModels,fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId,toggleSessionLock,isSessionLocked,getLockedSessionInfo};function initialize(){const _0x49b24a=_0x3a0919;context=SillyTavern[_0x49b24a(0x241)]();if(!context){console[_0x49b24a(0x23b)](_0x49b24a(0x280));return;}settings=getSettings();const _0x17ed4d=window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME];typeof _0x17ed4d==='function'?(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=async function(..._0x15dd66){await rearrangeChat(..._0x15dd66),await _0x17ed4d(..._0x15dd66);},console['log'](_0x49b24a(0x20d)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME)):(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=rearrangeChat,console['log'](_0x49b24a(0x250)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME));}async function ingestTextToHanlinyuan(_0x22635b,_0xad6df7=_0x3a0919(0x279),_0x42d65f='',_0x49145c=()=>{},_0x21c919=null,_0x8574d3=()=>{},_0x10e4be=()=>{},_0x398c50=null,_0x3ab6dc=0x0){const _0x2d2346=_0x3a0919;if(!_0x22635b||!_0x22635b[_0x2d2346(0x1f4)]())return{'success':![],'error':_0x2d2346(0x210)};if(!settings)return{'success':![],'error':_0x2d2346(0x272)};try{const _0x5ab184=getCollectionId();if(!_0x5ab184)throw new Error(_0x2d2346(0x20c));_0x8574d3(_0x2d2346(0x232)+_0x5ab184,'info'),_0x49145c({'message':_0x2d2346(0x276),'processed':0x0,'total':0x1});const _0x2b44ad=splitIntoChunks(_0x22635b,_0xad6df7,_0x42d65f),_0x46e5c1=_0x2b44ad[_0x2d2346(0x254)];if(_0x21c919?.[_0x2d2346(0x242)])throw new Error(_0x2d2346(0x265));_0x8574d3(_0x2d2346(0x1f0)+(_0x42d65f||_0xad6df7)+'\x27的文本分割成\x20'+_0x46e5c1+_0x2d2346(0x235),'info');if(_0x46e5c1===0x0)return{'success':!![],'count':0x0};const _0x295751=settings[_0x2d2346(0x23f)][_0x2d2346(0x204)]||0x5;let _0x4e529a=_0x3ab6dc;for(let _0x1d2c1a=_0x3ab6dc;_0x1d2c1a<_0x46e5c1;_0x1d2c1a+=_0x295751){if(_0x21c919?.[_0x2d2346(0x242)])throw new Error('AbortError');const _0x49637e=_0x2b44ad[_0x2d2346(0x22a)](_0x1d2c1a,_0x1d2c1a+_0x295751);_0x49145c({'message':_0x2d2346(0x286)+(_0x1d2c1a+0x1)+'-'+(_0x1d2c1a+_0x49637e[_0x2d2346(0x254)])+'\x20块','processed':_0x1d2c1a,'total':_0x46e5c1});const _0x56fddf=_0x49637e[_0x2d2346(0x288)](_0x428235=>_0x428235[_0x2d2346(0x207)]),_0x440db2=await getEmbeddings(_0x56fddf,_0x21c919);if(_0x21c919?.[_0x2d2346(0x242)])throw new Error(_0x2d2346(0x265));if(_0x49637e[_0x2d2346(0x254)]!==_0x440db2['length'])throw new Error(_0x2d2346(0x202));const _0x2c844d=_0x49637e[_0x2d2346(0x288)]((_0x22ef01,_0x348c87)=>({..._0x22ef01,'vector':_0x440db2[_0x348c87]}));await insertVectors(_0x2c844d,_0x21c919,_0x5ab184),_0x4e529a+=_0x49637e['length'],_0x398c50&&_0x572a3f['saveProgress'](_0x398c50,_0x4e529a,_0x46e5c1),_0x10e4be();}return _0x398c50&&_0x572a3f[_0x2d2346(0x22b)](_0x398c50),_0x8574d3('[翰林院-核心]\x20成功插入\x20'+_0x4e529a+_0x2d2346(0x236),_0x2d2346(0x27e)),{'success':!![],'count':_0x4e529a};}catch(_0x3a6576){if(_0x3a6576[_0x2d2346(0x1f2)]===_0x2d2346(0x265)){_0x8574d3(_0x2d2346(0x270),'warn');throw _0x3a6576;}return console['error']('[翰林院-核心]\x20ingestTextToHanlinyuan\x20失败:',_0x3a6576),_0x8574d3(_0x2d2346(0x271)+_0x3a6576[_0x2d2346(0x262)],_0x2d2346(0x23b)),{'success':![],'error':_0x3a6576[_0x2d2346(0x262)]};}}function getSettings(){const _0x2d167f=_0x3a0919;if(!context||!context['extensionSettings'])return structuredClone(_0x7e7f53);let _0x460e9c=context[_0x2d167f(0x1ed)][MODULE_NAME];!_0x460e9c&&(_0x460e9c={},context[_0x2d167f(0x1ed)][MODULE_NAME]=_0x460e9c);for(const _0x151d9c in _0x7e7f53){if(_0x460e9c[_0x151d9c]===undefined)_0x460e9c[_0x151d9c]=structuredClone(_0x7e7f53[_0x151d9c]);else{if(typeof _0x7e7f53[_0x151d9c]==='object'&&!Array['isArray'](_0x7e7f53[_0x151d9c])&&_0x7e7f53[_0x151d9c]!==null)for(const _0x2d8dda in _0x7e7f53[_0x151d9c]){_0x460e9c[_0x151d9c][_0x2d8dda]===undefined&&(_0x460e9c[_0x151d9c][_0x2d8dda]=_0x7e7f53[_0x151d9c][_0x2d8dda]);}}}return _0x460e9c;}function saveSettings(){if(context)context['saveSettingsDebounced']();}function resetSettings(){context&&(context['extensionSettings'][MODULE_NAME]=structuredClone(_0x7e7f53),saveSettings());}function showNotification(_0x272a13,_0x1c31a0='info'){toastr[_0x1c31a0](_0x272a13);}function splitIntoChunks(_0x3c1d84,_0x1ec053,_0x430203){const _0x10eaaa=_0x3a0919,{chunkSize:_0x345ca4,overlap:_0x4e3142}=settings['advanced'],_0x35b19c=[];if(!_0x3c1d84||_0x345ca4<=0x0)return _0x35b19c;const _0xd841eb=/(第\s*[一二三四五六七八九十百千万零\d]+\s*卷)/gim,_0x4a36dc=/(第\s*[一二三四五六七八九十百千万零\d]+\s*[章回节部])|^(Chapter\s+\d+)/gim;let _0x1c27a3=0x0,_0x4f3592=0x1,_0x5579ae=0x1,_0x1a9cda=![];const _0x525130=_0x3c1d84[_0x10eaaa(0x289)]('\x0a');let _0x44e6f6=_0x10eaaa(0x285),_0x20883a=_0x10eaaa(0x231),_0x4dc3e0=[];function _0x149ac0(){const _0x51fbfe=_0x10eaaa;if(_0x4dc3e0[_0x51fbfe(0x254)]===0x0)return;const _0x1aedd7=_0x4dc3e0[_0x51fbfe(0x228)]('\x0a');let _0xec7a53=0x0,_0x5014ae=0x1;while(_0xec7a53<_0x1aedd7['length']){const _0x1febbf=Math['min'](_0xec7a53+_0x345ca4,_0x1aedd7[_0x51fbfe(0x254)]),_0x441b75=_0x1aedd7[_0x51fbfe(0x27a)](_0xec7a53,_0x1febbf);if(_0x441b75[_0x51fbfe(0x1f4)]()[_0x51fbfe(0x254)]>0x0){const _0x205b37={'source':_0x1ec053,'sourceName':_0x430203,'timestamp':new Date()[_0x51fbfe(0x23a)](),'globalIndex':_0x1c27a3++,'volume':_0x44e6f6,'chapter':_0x20883a,'section':_0x5014ae},_0x1b2214=_0x51fbfe(0x25d)+_0x430203+',\x20'+_0x44e6f6+',\x20'+_0x20883a+_0x51fbfe(0x23e)+_0x5014ae+_0x51fbfe(0x27f);_0x35b19c[_0x51fbfe(0x253)]({'text':_0x1b2214+_0x441b75,'metadata':_0x205b37}),_0x5014ae++;}_0xec7a53+=_0x345ca4-_0x4e3142;if(_0xec7a53>=_0x1aedd7['length'])break;}_0x4dc3e0=[];}for(const _0x54a966 of _0x525130){const _0x3b4b49=_0x54a966[_0x10eaaa(0x1f4)]();if(_0xd841eb[_0x10eaaa(0x1ee)](_0x3b4b49))_0x149ac0(),_0x44e6f6=_0x3b4b49,_0x20883a=_0x10eaaa(0x231),_0x4f3592++,_0x5579ae=0x1,_0x1a9cda=!![];else _0x4a36dc[_0x10eaaa(0x1ee)](_0x3b4b49)?(_0x149ac0(),_0x20883a=_0x3b4b49,_0x5579ae++):_0x4dc3e0[_0x10eaaa(0x253)](_0x54a966);}_0x149ac0();if(_0x35b19c[_0x10eaaa(0x254)]===0x0&&_0x3c1d84[_0x10eaaa(0x254)]>0x0){let _0x12a6c5=0x0,_0x567fb0=0x1;while(_0x12a6c5<_0x3c1d84['length']){const _0xdd5a52=Math[_0x10eaaa(0x1f7)](_0x12a6c5+_0x345ca4,_0x3c1d84[_0x10eaaa(0x254)]),_0x4dd088=_0x3c1d84[_0x10eaaa(0x27a)](_0x12a6c5,_0xdd5a52),_0x145a15={'source':_0x1ec053,'sourceName':_0x430203,'timestamp':new Date()[_0x10eaaa(0x23a)](),'globalIndex':_0x35b19c[_0x10eaaa(0x254)],'volume':_0x10eaaa(0x285),'chapter':_0x10eaaa(0x231),'section':_0x567fb0},_0x514c12=_0x10eaaa(0x25d)+_0x430203+_0x10eaaa(0x249)+_0x567fb0+'节]\x0a';_0x35b19c[_0x10eaaa(0x253)]({'text':_0x514c12+_0x4dd088,'metadata':_0x145a15}),_0x567fb0++,_0x12a6c5+=_0x345ca4-_0x4e3142;}}return _0x35b19c;}import{getCollectionId as _0x370f52,getCharacterName}from'./utils/context-utils.js';function getCollectionId(){return lockedCollectionId||_0x370f52();}function toggleSessionLock(){return lockedCollectionId?(lockedCollectionId=null,![]):(lockedCollectionId=_0x370f52(),!![]);}function isSessionLocked(){return lockedCollectionId!==null;}function getLockedSessionInfo(){const _0x5977ee=_0x3a0919;if(!lockedCollectionId)return null;return{'id':lockedCollectionId,'name':_0x5977ee(0x264)+lockedCollectionId[_0x5977ee(0x27a)](0x0,0x8)+_0x5977ee(0x257)};}function generateHash(_0x28a652){const _0x17f00a=_0x3a0919;let _0x128b7a=0x0;for(let _0x54a4db=0x0;_0x54a4db<_0x28a652[_0x17f00a(0x254)];_0x54a4db++){const _0x21e103=_0x28a652['charCodeAt'](_0x54a4db);_0x128b7a=(_0x128b7a<<0x5)-_0x128b7a+_0x21e103,_0x128b7a=_0x128b7a&_0x128b7a;}return Math[_0x17f00a(0x268)](_0x128b7a)[_0x17f00a(0x1e7)](0x24);}function getSanitizedBaseUrl(_0x49229f){const _0x5ece11=_0x3a0919;let _0x920ce8=_0x49229f[_0x5ece11(0x1f4)]();return _0x920ce8[_0x5ece11(0x255)]('/')&&(_0x920ce8=_0x920ce8[_0x5ece11(0x22a)](0x0,-0x1)),_0x920ce8[_0x5ece11(0x255)](_0x5ece11(0x227))&&(_0x920ce8=_0x920ce8['slice'](0x0,-0x3)),_0x920ce8[_0x5ece11(0x255)]('/embeddings')&&(_0x920ce8=_0x920ce8['slice'](0x0,-0xb)),_0x920ce8;}function _0x5667(){const _0x545038=['[翰林院-日志]\x20查询成功返回\x20','[翰林院-日志]\x20清空宝库API错误:','测试连接','Authorization','第1章','[翰林院-核心]\x20已锁定忆识宝库ID:\x20','/v1/models','2232873mYTtZQ','\x20个块。','\x20个向量条目。','[翰林院-日志]\x20获取向量列表API错误:','[翰林院-日志]\x20/api/vector/list\x20响应状态:\x20','846630hTXnGP','toISOString','error','Rerank\x20API\x20请求失败\x20(','8RdKLFC',',\x20第','retrieval','advanced','getContext','aborted','rerank_score','score','maxResults','vectors_rearrangeChat','/api/vector/insert','Rerank模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。',',\x20第1卷,\x20第1章,\x20第','depth','messageTypes','[翰林院-日志]\x20/api/vector/query\x20响应内容:','149449cEtkdi','chat','[翰林院-Rerank]\x20开始外部API重排序...','翰林院忆识核心已启动\x20(V5.1-借壳上市版),已注册全局函数:\x20','2734398LxqFwQ','is_user','push','length','endsWith','info','...)','No\x20messages\x20to\x20process.','now','index','replace','Bearer\x20','[来源:\x20','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','POST','openai','3OPtovy','message','isArray','(已锁定:\x20','AbortError','chat_history','\x20条消息分解为\x20','abs','json','[翰林院-Rerank]\x20元数据加权排序完成。','模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。','11noOKBV','hashes','condensation','[翰林院-Rerank]\x20开始元数据加权最终排序...','[翰林院-核心]\x20文本录入任务被用户中止。','[翰林院-核心]\x20文本录入失败:\x20','核心未初始化','application/json','webllm','HANLINYUAN_RAG','正在智能分块...','url','GET','manual','substring','max','filter','4tcIPBn','success','节]\x0a','[翰林院]\x20未能获取SillyTavern上下文初始化失败。','[翰林院-核心]\x20已将\x20','notify','data','https://api.openai.com','第1卷','正在处理\x20','外部Rerank完成','map','split','depth_role','[翰林院-日志]\x20统计成功向量总数:\x20','3654217xmHzgm','/api/vector/purge','2655628JYXgFu','hybrid_alpha','matchThreshold','top_n','Rerank失败:\x20','getRequestHeaders','[翰林院-核心]\x20聊天记录凝识失败:\x20','user','status','API\x20URL\x20或\x20Key\x20未提供。','toString','/v1/rerank','enabled','[翰林院-Rerank]\x20正在从\x20','position','findIndex','extensionSettings','test','quiet','[翰林院-核心]\x20将来源\x27','[翰林院-日志]\x20开始清空宝库...','name','[翰林院-核心]\x20聊天记录凝识完成成功插入\x20','trim','[翰林院-日志]\x20宝库查询API错误:','宝库查询API错误\x20','min','queryMessageCount','forEach','log','):\x20','final_score','stringify','/v1/embeddings','find','results','\x20获取模型列表...','文本块和向量数量不匹配','floor','batchSize','忆识存入API错误\x20','[翰林院-日志]\x20开始获取向量总数...','text','custom','injection','在insertVectors内部也无法获取collectionId','[翰林院-日志]\x20开始向量查询\x20(采用最终API交互模式)...','无法确定当前忆识宝库的ID请确认角色已正确加载。','翰林院忆识核心已启动\x20(V5.1-和平共存版),已代理\x20','source','获取模型列表失败\x20(','输入文本为空','send_date','Rerank\x20API\x20URL\x20或\x20Key\x20未提供。','rerank','warning','lorebook','/api/vector/list','vector','mes','/rerank','\x20条结果。','[翰林院-Rerank]\x20外部Rerank失败将仅使用内部加权。','[翰林院-日志]\x20查询目标集合ID:\x20','请先配置API\x20Key','sort','\x20个知识块准备入库。','{{text}}','apiKey','[翰林院-日志]\x20发送到\x20/api/vector/query\x20的请求体:','metadata','5568490FBJNpE','original_index','model','/v1','join','hanlinyuan-rag-core','slice','clearJob','[翰林院-核心]\x20insertVectors被调用时未提供collectionId'];_0x5667=function(){return _0x545038;};return _0x5667();}async function fetchEmbeddingModels(){const _0x1f7722=_0x3a0919,{apiKey:_0x5c9125}=settings['retrieval'],_0x5359b4=getApiEndpointUrl(!![]);if(!_0x5359b4||!_0x5c9125)throw new Error(_0x1f7722(0x1e6));const _0xbbd8b2=getSanitizedBaseUrl(_0x5359b4),_0x4e82cf=_0xbbd8b2+_0x1f7722(0x233);console['log']('[翰林院]\x20正在从\x20'+_0x4e82cf+_0x1f7722(0x201));const _0x5b644c=await fetch(_0x4e82cf,{'method':_0x1f7722(0x278),'headers':getApiHeaders()});if(!_0x5b644c['ok']){const _0x1e2069=await _0x5b644c['text']();throw new Error(_0x1f7722(0x20f)+_0x5b644c[_0x1f7722(0x1e5)]+_0x1f7722(0x1fb)+_0x1e2069);}const _0x3c062f=await _0x5b644c[_0x1f7722(0x269)]();if(!_0x3c062f[_0x1f7722(0x283)]||!Array[_0x1f7722(0x263)](_0x3c062f[_0x1f7722(0x283)]))throw new Error(_0x1f7722(0x26b));return _0x3c062f['data'][_0x1f7722(0x288)](_0x243720=>_0x243720['id'])[_0x1f7722(0x21e)]();}function getRerankBaseUrl(_0x37207c){const _0x91497f=_0x3a0919;let _0x292c65=_0x37207c[_0x91497f(0x1f4)]();return _0x292c65['endsWith']('/')&&(_0x292c65=_0x292c65[_0x91497f(0x22a)](0x0,-0x1)),_0x292c65[_0x91497f(0x255)](_0x91497f(0x227))&&(_0x292c65=_0x292c65[_0x91497f(0x22a)](0x0,-0x3)),_0x292c65[_0x91497f(0x255)](_0x91497f(0x219))&&(_0x292c65=_0x292c65[_0x91497f(0x22a)](0x0,-0x7)),_0x292c65;}async function fetchRerankModels(){const _0x1036a8=_0x3a0919,{url:_0x5e34fd,apiKey:_0x368885}=settings[_0x1036a8(0x213)];if(!_0x5e34fd||!_0x368885)throw new Error(_0x1036a8(0x212));const _0x1858de=getRerankBaseUrl(_0x5e34fd),_0x5e2d4b=_0x1858de+'/v1/models';console[_0x1036a8(0x1fa)](_0x1036a8(0x1ea)+_0x5e2d4b+_0x1036a8(0x201));const _0xeda729=await fetch(_0x5e2d4b,{'method':'GET','headers':{'Authorization':_0x1036a8(0x25c)+_0x368885}});if(!_0xeda729['ok']){const _0x281bd6=await _0xeda729[_0x1036a8(0x207)]();throw new Error('获取Rerank模型列表失败\x20('+_0xeda729['status']+_0x1036a8(0x1fb)+_0x281bd6);}const _0x2c7d4a=await _0xeda729[_0x1036a8(0x269)]();if(!_0x2c7d4a[_0x1036a8(0x283)]||!Array[_0x1036a8(0x263)](_0x2c7d4a[_0x1036a8(0x283)]))throw new Error(_0x1036a8(0x248));return _0x2c7d4a[_0x1036a8(0x283)]['map'](_0x443e9b=>_0x443e9b['id'])[_0x1036a8(0x21e)]();}function getApiEndpointUrl(_0x276fcc=![]){const _0x11e5c7=_0x3a0919,{apiEndpoint:_0x569119,customApiUrl:_0x20a7f8}=settings[_0x11e5c7(0x23f)];let _0xbca49a;switch(_0x569119){case _0x11e5c7(0x260):_0xbca49a=_0x11e5c7(0x284);break;case'azure':case'custom':_0xbca49a=_0x20a7f8;break;default:_0xbca49a=_0x11e5c7(0x284);break;}if(_0x276fcc)return _0xbca49a;return getSanitizedBaseUrl(_0xbca49a)+_0x11e5c7(0x1fe);}function getApiHeaders(){const _0xf45fd8=_0x3a0919,_0x412b61={'Content-Type':_0xf45fd8(0x273)},{apiKey:_0x47c4d9,apiEndpoint:_0x51e7d1}=settings[_0xf45fd8(0x23f)];switch(_0x51e7d1){case _0xf45fd8(0x260):case _0xf45fd8(0x208):_0x412b61[_0xf45fd8(0x230)]=_0xf45fd8(0x25c)+_0x47c4d9;break;case'azure':_0x412b61['api-key']=_0x47c4d9;break;}return _0x412b61;}async function getEmbeddings(_0x364cd0,_0x3e6090=null){const _0x234dfa=_0x3a0919;if(!settings[_0x234dfa(0x23f)]['apiKey'])throw new Error(_0x234dfa(0x21d));const _0x1ba5c7=getApiEndpointUrl(),_0xe9bdfa=getApiHeaders(),_0xa1bb07=settings['retrieval']['embeddingModel'],_0x591079=settings[_0x234dfa(0x23f)][_0x234dfa(0x204)]||0x5,_0x283103=[];for(let _0x68541b=0x0;_0x68541b<_0x364cd0[_0x234dfa(0x254)];_0x68541b+=_0x591079){if(_0x3e6090?.[_0x234dfa(0x242)])throw new Error('AbortError');const _0x1ce6f5=_0x364cd0[_0x234dfa(0x22a)](_0x68541b,_0x68541b+_0x591079),_0x38bda0=await fetch(_0x1ba5c7,{'method':_0x234dfa(0x25f),'headers':_0xe9bdfa,'body':JSON[_0x234dfa(0x1fd)]({'input':_0x1ce6f5,'model':_0xa1bb07}),'signal':_0x3e6090});if(!_0x38bda0['ok']){const _0x16fca1=await _0x38bda0[_0x234dfa(0x207)]();throw new Error('神力获取失败\x20'+_0x38bda0[_0x234dfa(0x1e5)]+':\x20'+_0x16fca1);}const _0x439741=await _0x38bda0['json']();_0x283103['push'](..._0x439741['data']['map'](_0x474abc=>_0x474abc['embedding'])),_0x68541b+_0x591079<_0x364cd0[_0x234dfa(0x254)]&&await new Promise(_0x32c85c=>setTimeout(_0x32c85c,0xc8));}return _0x283103;}async function queryVectors(_0x42d52d){const _0x144a22=_0x3a0919;console[_0x144a22(0x1fa)](_0x144a22(0x20b));const _0x103d74=getCollectionId();console[_0x144a22(0x1fa)](_0x144a22(0x21c)+_0x103d74);const _0x5eb0e0=(await getEmbeddings([_0x42d52d]))[0x0],_0x462fa7={'collectionId':_0x103d74,'searchText':_0x42d52d,'topK':settings['advanced'][_0x144a22(0x245)],'threshold':settings[_0x144a22(0x240)][_0x144a22(0x1df)],'source':_0x144a22(0x274),'embeddings':{[_0x42d52d]:_0x5eb0e0}};console[_0x144a22(0x1fa)](_0x144a22(0x222),JSON[_0x144a22(0x1fd)](_0x462fa7,null,0x2));const _0x144870=await fetch('/api/vector/query',{'method':_0x144a22(0x25f),'headers':context['getRequestHeaders'](),'body':JSON[_0x144a22(0x1fd)](_0x462fa7)});console[_0x144a22(0x1fa)]('[翰林院-日志]\x20/api/vector/query\x20响应状态:\x20'+_0x144870[_0x144a22(0x1e5)]);if(!_0x144870['ok']){const _0x31469c=await _0x144870['text']();console[_0x144a22(0x23b)](_0x144a22(0x1f5),_0x31469c);throw new Error(_0x144a22(0x1f6)+_0x144870[_0x144a22(0x1e5)]+':\x20'+_0x31469c);}const _0x2639b0=await _0x144870['json']();console[_0x144a22(0x1fa)](_0x144a22(0x24c),_0x2639b0);const _0x10f74d=_0x2639b0[_0x144a22(0x223)]||_0x2639b0['results']||_0x2639b0[_0x144a22(0x283)]||[];return console[_0x144a22(0x1fa)](_0x144a22(0x22d)+_0x10f74d[_0x144a22(0x254)]+_0x144a22(0x21a)),_0x10f74d;}async function insertVectors(_0x45d2af,_0x31b207=null,_0x50abb7){const _0xd12960=_0x3a0919;if(!_0x50abb7){console[_0xd12960(0x23b)](_0xd12960(0x22c)),_0x50abb7=getCollectionId();if(!_0x50abb7)throw new Error(_0xd12960(0x20a));}if(_0x45d2af[_0xd12960(0x254)]===0x0)return{'success':!![],'count':0x0};const _0x24b215=_0x45d2af[_0xd12960(0x288)]((_0x416019,_0x4e5590)=>({'hash':generateHash(_0x416019[_0xd12960(0x207)]+Date[_0xd12960(0x259)]()+_0x4e5590),'text':_0x416019[_0xd12960(0x207)],'metadata':_0x416019[_0xd12960(0x223)]||{'source':'unknown','timestamp':new Date()[_0xd12960(0x23a)]()}})),_0x2180a5=_0x24b215['reduce']((_0x5eda18,_0x2dbfd0,_0x38a9ab)=>{const _0x4bf6a2=_0xd12960;return _0x5eda18[_0x2dbfd0[_0x4bf6a2(0x207)]]=_0x45d2af[_0x38a9ab][_0x4bf6a2(0x217)],_0x5eda18;},{}),_0x2996a7={'collectionId':_0x50abb7,'items':_0x24b215,'source':_0xd12960(0x274),'embeddings':_0x2180a5},_0x5ef4a6=await fetch(_0xd12960(0x247),{'method':_0xd12960(0x25f),'headers':context['getRequestHeaders'](),'body':JSON[_0xd12960(0x1fd)](_0x2996a7),'signal':_0x31b207});if(!_0x5ef4a6['ok']){const _0x5c5534=await _0x5ef4a6['text']();console['error']('[翰林院-日志]\x20忆识存入API错误:',_0x5c5534);throw new Error(_0xd12960(0x205)+_0x5ef4a6[_0xd12960(0x1e5)]+':\x20'+_0x5c5534);}return{'success':!![],'count':_0x24b215[_0xd12960(0x254)]};}async function testApiConnection(){const _0x4f8d35=_0x3a0919;await getEmbeddings([_0x4f8d35(0x22f)]);}async function getVectorCount(){const _0x2e0a28=_0x3a0919;console[_0x2e0a28(0x1fa)](_0x2e0a28(0x206));const _0xa6c6b6=getCollectionId();console['log']('[翰林院-日志]\x20统计目标集合ID:\x20'+_0xa6c6b6);const _0x311d1f={'collectionId':_0xa6c6b6,'source':'webllm','embeddings':{}};console['log']('[翰林院-日志]\x20发送到\x20/api/vector/list\x20的请求体:',JSON[_0x2e0a28(0x1fd)](_0x311d1f,null,0x2));const _0xf86fb4=await fetch(_0x2e0a28(0x216),{'method':'POST','headers':context['getRequestHeaders'](),'body':JSON[_0x2e0a28(0x1fd)](_0x311d1f)});console['log'](_0x2e0a28(0x238)+_0xf86fb4[_0x2e0a28(0x1e5)]);if(!_0xf86fb4['ok']){const _0x16a3f9=await _0xf86fb4[_0x2e0a28(0x207)]();return console[_0x2e0a28(0x23b)](_0x2e0a28(0x237),_0x16a3f9),0x0;}const _0x34eae5=await _0xf86fb4[_0x2e0a28(0x269)]();let _0xa9439a=0x0;if(Array['isArray'](_0x34eae5))_0xa9439a=_0x34eae5[_0x2e0a28(0x254)];else _0x34eae5&&_0x34eae5['hashes']&&(_0xa9439a=_0x34eae5[_0x2e0a28(0x26d)][_0x2e0a28(0x254)]);return console[_0x2e0a28(0x1fa)](_0x2e0a28(0x1da)+_0xa9439a),_0xa9439a;}async function purgeStorage(){const _0x24b3ca=_0x3a0919;console[_0x24b3ca(0x1fa)](_0x24b3ca(0x1f1));const _0xdff36d=getCollectionId();console[_0x24b3ca(0x1fa)]('[翰林院-日志]\x20清空目标集合ID:\x20'+_0xdff36d);const _0x19f22e={'collectionId':_0xdff36d};console[_0x24b3ca(0x1fa)]('[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:',JSON[_0x24b3ca(0x1fd)](_0x19f22e,null,0x2));const _0x3d47f6=await fetch(_0x24b3ca(0x1dc),{'method':_0x24b3ca(0x25f),'headers':context[_0x24b3ca(0x1e2)](),'body':JSON[_0x24b3ca(0x1fd)](_0x19f22e)});console[_0x24b3ca(0x1fa)](_0x24b3ca(0x25e)+_0x3d47f6[_0x24b3ca(0x1e5)]);if(!_0x3d47f6['ok']){const _0x20982a=await _0x3d47f6[_0x24b3ca(0x207)]();console['error'](_0x24b3ca(0x22e),_0x20982a);}else console['log']('[翰林院-日志]\x20清空宝库API调用成功。');return _0x3d47f6['ok'];}function getMessagesForCondensation(_0x45cb03=null){const _0x264537=_0x3a0919;if(!settings[_0x264537(0x26e)][_0x264537(0x1e9)])return showNotification('凝识之权未开启',_0x264537(0x214)),[];const {layerStart:_0x59f972,layerEnd:_0x153ca2}=settings['condensation'],_0x5457eb=_0x45cb03||settings['condensation'][_0x264537(0x24b)],_0x156b72=context[_0x264537(0x24e)][_0x264537(0x254)],_0x374913=Math[_0x264537(0x27b)](0x0,_0x59f972-0x1),_0x9fc1=Math[_0x264537(0x1f7)](_0x156b72,_0x153ca2),_0x23105b=context['chat'][_0x264537(0x22a)](_0x374913,_0x9fc1);return _0x23105b[_0x264537(0x27c)](_0x1bc1b4=>{const _0x3c6880=_0x264537,_0x35359=_0x1bc1b4[_0x3c6880(0x252)]===!![],_0x3616f1=_0x1bc1b4[_0x3c6880(0x252)]===![];if(!_0x1bc1b4[_0x3c6880(0x218)]||!_0x1bc1b4[_0x3c6880(0x218)]['trim']())return![];return _0x5457eb[_0x3c6880(0x1e4)]&&_0x35359||_0x5457eb['ai']&&_0x3616f1;});}async function processCondensation(_0x2e2388,_0xde3e98=()=>{}){const _0x5c976e=_0x3a0919;if(!_0x2e2388||_0x2e2388[_0x5c976e(0x254)]===0x0)return{'success':![],'error':_0x5c976e(0x258)};try{const _0x4110c3=getCollectionId();if(!_0x4110c3)throw new Error('无法确定当前忆识宝库的ID请确认角色已正确加载。');_0xde3e98('[翰林院-核心]\x20凝识任务已锁定忆识宝库ID:\x20'+_0x4110c3,_0x5c976e(0x256));const _0x3390ad=[],_0x4de3d6=context['chat'],{chunkSize:_0x20672b,overlap:_0x28bc64}=settings[_0x5c976e(0x240)];for(const _0x1950b9 of _0x2e2388){const _0x521641=(_0x1950b9[_0x5c976e(0x218)]||'')['replace'](/<[^>]*>/g,'')[_0x5c976e(0x1f4)]();if(_0x521641[_0x5c976e(0x254)]===0x0)continue;const _0xaffb11=_0x4de3d6[_0x5c976e(0x1ec)](_0x55a79e=>_0x55a79e===_0x1950b9),_0x36a667=_0xaffb11!==-0x1?_0xaffb11+0x1:-0x1,_0x75a173={'source':'chat_history','sourceName':'聊天记录\x20#'+_0x36a667,'floor':_0x36a667,'is_user':_0x1950b9[_0x5c976e(0x252)],'timestamp':new Date(_0x1950b9[_0x5c976e(0x211)])['toISOString']()};let _0x13d1d1=0x0;while(_0x13d1d1<_0x521641[_0x5c976e(0x254)]){const _0x3b03b3=Math[_0x5c976e(0x1f7)](_0x13d1d1+_0x20672b,_0x521641[_0x5c976e(0x254)]),_0x266e21=_0x521641[_0x5c976e(0x27a)](_0x13d1d1,_0x3b03b3);_0x3390ad[_0x5c976e(0x253)]({'text':_0x266e21,'metadata':_0x75a173}),_0x13d1d1+=_0x20672b-_0x28bc64;if(_0x13d1d1>=_0x521641[_0x5c976e(0x254)])break;}}if(_0x3390ad[_0x5c976e(0x254)]===0x0)return{'success':!![],'count':0x0};_0xde3e98(_0x5c976e(0x281)+_0x2e2388['length']+_0x5c976e(0x267)+_0x3390ad[_0x5c976e(0x254)]+_0x5c976e(0x21f),'info');const _0xc2105b=settings['retrieval']['batchSize']||0x5;let _0x3cea1e=0x0;for(let _0x137c28=0x0;_0x137c28<_0x3390ad[_0x5c976e(0x254)];_0x137c28+=_0xc2105b){const _0x5bc305=_0x3390ad[_0x5c976e(0x22a)](_0x137c28,_0x137c28+_0xc2105b),_0xc114d7=_0x5bc305[_0x5c976e(0x288)](_0x4a8576=>_0x4a8576[_0x5c976e(0x207)]),_0x11fae3=await getEmbeddings(_0xc114d7);if(_0x5bc305[_0x5c976e(0x254)]!==_0x11fae3[_0x5c976e(0x254)])throw new Error('文本块和向量数量不匹配');const _0x25c257=_0x5bc305['map']((_0x7c8a7b,_0x8a814f)=>({..._0x7c8a7b,'vector':_0x11fae3[_0x8a814f]}));await insertVectors(_0x25c257,null,_0x4110c3),_0x3cea1e+=_0x5bc305[_0x5c976e(0x254)];}return _0xde3e98(_0x5c976e(0x1f3)+_0x3cea1e+'\x20个条目。',_0x5c976e(0x27e)),{'success':!![],'count':_0x3cea1e};}catch(_0x5048e2){return console[_0x5c976e(0x23b)]('[翰林院-核心]\x20processCondensation\x20失败:',_0x5048e2),_0xde3e98(_0x5c976e(0x1e3)+_0x5048e2[_0x5c976e(0x262)],_0x5c976e(0x23b)),{'success':![],'error':_0x5048e2[_0x5c976e(0x262)]};}}async function rerankResults(_0x39f99c,_0x4b8390,_0xcefcb9){const _0x4cae16=_0x3a0919;let _0x31edb5=_0x39f99c;if(_0xcefcb9[_0x4cae16(0x213)]['enabled']&&_0x39f99c[_0x4cae16(0x254)]>0x0){console['log'](_0x4cae16(0x24f));try{const _0x5e694b=_0x39f99c[_0x4cae16(0x288)]((_0x33f562,_0x342403)=>({'text':_0x33f562[_0x4cae16(0x207)],'original_index':_0x342403})),_0x5c96e1=getRerankBaseUrl(_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x277)]),_0x4fdd63=_0x5c96e1+_0x4cae16(0x1e8),_0x59c0bf=await fetch(_0x4fdd63,{'method':_0x4cae16(0x25f),'headers':{'Content-Type':'application/json','Authorization':_0x4cae16(0x25c)+_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x221)]},'body':JSON[_0x4cae16(0x1fd)]({'query':_0x4b8390,'documents':_0x5e694b[_0x4cae16(0x288)](_0x4f3f3d=>_0x4f3f3d[_0x4cae16(0x207)]),'model':_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x226)],'top_n':_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x1e0)]})});if(!_0x59c0bf['ok'])throw new Error(_0x4cae16(0x23c)+_0x59c0bf[_0x4cae16(0x1e5)]+_0x4cae16(0x1fb)+await _0x59c0bf[_0x4cae16(0x207)]());const _0x43e901=await _0x59c0bf['json'](),_0x1c042c=_0x39f99c[_0x4cae16(0x288)]((_0x42b645,_0xc02253)=>({..._0x42b645,'original_index':_0xc02253}));_0x31edb5=_0x1c042c[_0x4cae16(0x288)](_0x20cddd=>{const _0x27a10f=_0x4cae16,_0x14639b=_0x43e901[_0x27a10f(0x200)][_0x27a10f(0x1ff)](_0x5b503d=>_0x5b503d[_0x27a10f(0x25a)]===_0x20cddd[_0x27a10f(0x225)]),_0x237f44=_0x14639b?_0x14639b['relevance_score']:0x0;return{..._0x20cddd,'rerank_score':_0x237f44};});if(_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x282)])showNotification(_0x4cae16(0x287),_0x4cae16(0x27e));}catch(_0x542364){console[_0x4cae16(0x23b)](_0x4cae16(0x21b),_0x542364);if(_0xcefcb9[_0x4cae16(0x213)]['notify'])showNotification(_0x4cae16(0x1e1)+_0x542364[_0x4cae16(0x262)],_0x4cae16(0x23b));_0x31edb5[_0x4cae16(0x1f9)](_0x2d4fc5=>_0x2d4fc5[_0x4cae16(0x243)]=0x0);}}else _0x31edb5['forEach'](_0x2a2760=>_0x2a2760[_0x4cae16(0x243)]=0x0);console['log'](_0x4cae16(0x26f));const _0x3fe3fa=context[_0x4cae16(0x24e)][_0x4cae16(0x254)],_0x18f8aa=_0xcefcb9['rerank'][_0x4cae16(0x1de)],_0x222d47=_0x31edb5[_0x4cae16(0x288)](_0x533ffe=>{const _0x2af2c3=_0x4cae16;let _0x11e37d=0x1;const _0x422c0d=_0x533ffe['metadata']||{};switch(_0x422c0d[_0x2af2c3(0x20e)]){case _0x2af2c3(0x215):_0x11e37d*=1.2;break;case _0x2af2c3(0x279):_0x11e37d*=1.1;break;case _0x2af2c3(0x266):if(_0x422c0d[_0x2af2c3(0x203)]&&_0x3fe3fa>0x0){const _0x421bcf=_0x422c0d[_0x2af2c3(0x203)]/_0x3fe3fa;_0x11e37d*=0x1+_0x421bcf;}break;}const _0x545e88=_0x533ffe[_0x2af2c3(0x243)]*_0x18f8aa+(_0x533ffe[_0x2af2c3(0x244)]||0x0)*(0x1-_0x18f8aa),_0x107ac0=_0x545e88*_0x11e37d;return{..._0x533ffe,'final_score':_0x107ac0};});return _0x222d47[_0x4cae16(0x21e)]((_0xd8b6de,_0x1afd2f)=>(_0x1afd2f[_0x4cae16(0x1fc)]||0x0)-(_0xd8b6de[_0x4cae16(0x1fc)]||0x0)),console[_0x4cae16(0x1fa)](_0x4cae16(0x26a)),_0x222d47[_0x4cae16(0x22a)](0x0,_0xcefcb9[_0x4cae16(0x213)][_0x4cae16(0x1e0)]);}async function rearrangeChat(_0x42af50,_0x55fb5c,_0x43611a,_0x165c1b){const _0xc56163=_0x3a0919;setExtensionPrompt(_0xc56163(0x275),'',settings[_0xc56163(0x209)]['position'],settings[_0xc56163(0x209)][_0xc56163(0x24a)],![],settings[_0xc56163(0x209)][_0xc56163(0x28a)]);if(_0x165c1b===_0xc56163(0x1ef)||!settings['retrieval']['enabled'])return;const _0x111e99=_0x42af50['slice'](-settings[_0xc56163(0x240)][_0xc56163(0x1f8)]);if(_0x111e99[_0xc56163(0x254)]===0x0)return;const _0x3226f2=_0x111e99['map'](_0x430280=>_0x430280[_0xc56163(0x218)])[_0xc56163(0x228)]('\x20')['replace'](/<[^>]*>/g,'')[_0xc56163(0x1f4)]();if(!_0x3226f2)return;try{const _0x5c1490=await queryVectors(_0x3226f2);if(_0x5c1490[_0xc56163(0x254)]===0x0)return;const _0x53e2d9=await rerankResults(_0x5c1490,_0x3226f2,settings);if(_0x53e2d9[_0xc56163(0x254)]===0x0)return;const _0xac4b0e=_0x53e2d9[_0xc56163(0x288)](_0x5965e0=>_0x5965e0['text'])[_0xc56163(0x228)]('\x0a\x0a'),_0x1c0414=settings[_0xc56163(0x209)]['template'][_0xc56163(0x25b)](_0xc56163(0x220),_0xac4b0e);setExtensionPrompt(_0xc56163(0x275),_0x1c0414,settings[_0xc56163(0x209)][_0xc56163(0x1eb)],settings[_0xc56163(0x209)][_0xc56163(0x24a)],![],settings[_0xc56163(0x209)]['depth_role']);}catch(_0x367ecc){console['error']('[翰林院]\x20检索或注入时发生错误:',_0x367ecc);if(settings[_0xc56163(0x23f)]['notify'])showNotification('忆识检索失败:\x20'+_0x367ecc['message'],_0xc56163(0x23b));}}