mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 20:55:51 +00:00
2 lines
31 KiB
JavaScript
2 lines
31 KiB
JavaScript
'use strict';const _0x532886=_0x1675;(function(_0x407f3e,_0x5b04ed){const _0x4e0f8b=_0x1675,_0x201e71=_0x407f3e();while(!![]){try{const _0x3f6f3d=parseInt(_0x4e0f8b(0x1b1))/0x1+parseInt(_0x4e0f8b(0x22a))/0x2*(parseInt(_0x4e0f8b(0x1d1))/0x3)+parseInt(_0x4e0f8b(0x1f6))/0x4+parseInt(_0x4e0f8b(0x240))/0x5+-parseInt(_0x4e0f8b(0x1c6))/0x6+parseInt(_0x4e0f8b(0x24f))/0x7+-parseInt(_0x4e0f8b(0x1be))/0x8*(parseInt(_0x4e0f8b(0x20c))/0x9);if(_0x3f6f3d===_0x5b04ed)break;else _0x201e71['push'](_0x201e71['shift']());}catch(_0x21a967){_0x201e71['push'](_0x201e71['shift']());}}}(_0x342c,0x7bc74));import{extension_prompt_roles,setExtensionPrompt}from'/script.js';import*as _0x336e7d from'./utils/context-utils.js';import{defaultSettings as _0x39d149}from'./rag-settings.js';import*as _0x8a68c3 from'./ingestion-manager.js';const MODULE_NAME='hanlinyuan-rag-core',OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x532886(0x1b5);let context=null,settings=null,lockedCollectionId=null;function _0x342c(){const _0x1c9540=['[翰林院-日志]\x20清空宝库API调用成功。','depth','输入文本为空','[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:','saveProgress','filter',',\x20第1卷,\x20第1章,\x20第','rerank_score','翰林院忆识核心已启动\x20(V5.1-和平共存版),已代理\x20','[翰林院-核心]\x20文本录入失败:\x20','[翰林院-Rerank]\x20开始元数据加权最终排序...','[翰林院-日志]\x20/api/vector/list\x20响应状态:\x20','2615265KuFIcQ','openai','lorebook','model','success','[翰林院-日志]\x20/api/vector/query\x20响应状态:\x20','max','application/json','toISOString','HANLINYUAN_RAG','manual','source','start','正在智能分块...','/api/vector/list','5367341TQkcEB','[翰林院-核心]\x20聊天记录凝识完成,成功插入\x20','[翰林院-核心]\x20文本录入任务被用户中止。','在insertVectors内部也无法获取collectionId','\x20获取模型列表...','map','split','正在处理\x20','...)','is_user','\x0a</','slice','depth_role','vector','message','获取Rerank模型列表失败\x20(','[翰林院-日志]\x20清空目标集合ID:\x20','[翰林院]\x20正在从\x20','[翰林院-日志]\x20查询目标集合ID:\x20','info','Rerank模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。',',\x20第','enabled','template','Rerank\x20API\x20请求失败\x20(','Bearer\x20','charCodeAt','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','[来源:\x20','208106mQXBpJ','json','min','<聊天记录>\x0a[来源:\x20','vectors_rearrangeChat','[翰林院-核心]\x20已将\x20','Rerank失败:\x20','notify','rerank','\x27的文本分割成\x20','[翰林院-核心]\x20ingestTextToHanlinyuan\x20失败:','/embeddings','push','1839632pBKXgL','getRequestHeaders','AbortError','queryMessageCount','/v1/rerank','data','[翰林院-日志]\x20获取向量列表API错误:','/api/vector/insert','1971456jJpsiH','/v1','小说录入','findIndex','apiKey','send_date','[翰林院-日志]\x20宝库查询API错误:','GET','chat','\x0a</聊天记录>','injection','526233tyTdjd','webllm','\x20个条目。','聊天记录\x20#','[翰林院-核心]\x20已为宝库\x20','\x20个向量条目。','忆识存入API错误\x20','第1卷','[翰林院-核心]\x20聊天记录凝识失败:\x20','[翰林院]\x20检索或注入时发生错误:','clearJob','[翰林院-核心]\x20成功插入\x20','[翰林院-核心]\x20将来源\x27','top_n','[翰林院-日志]\x20开始清空宝库...','mes','getContext','isArray','[翰林院-核心]\x20凝识任务已锁定忆识宝库ID:\x20','宝库查询API错误\x20','[翰林院-日志]\x20发送到\x20/api/vector/list\x20的请求体:','测试连接','POST','metadata','status','[翰林院-日志]\x20发送到\x20/api/vector/query\x20的请求体:','/v1/embeddings','end','[翰林院-日志]\x20统计目标集合ID:\x20','):\x20','trim','[翰林院-日志]\x20开始获取向量总数...','[翰林院-日志]\x20开始向量查询\x20(采用最终API交互模式)...','position','第1章','[翰林院-日志]\x20统计成功,向量总数:\x20','now','2604196vHYsUc','endsWith','\x20条消息分解为\x20','sort','retrieval','batchSize','abs','url','name','\x20个块。','stringify','test','function','[翰林院-日志]\x20查询成功,返回\x20','aborted','embedding','saveSettingsDebounced','forEach','condensation','api-key','substring','翰林院忆识核心已启动\x20(V5.1-借壳上市版),已注册全局函数:\x20','72ErRdmB','No\x20messages\x20to\x20process.','log','\x20条结果。','\x20个知识块,准备入库。','maxResults','length','join','text','[翰林院-核心]\x20insertVectors被调用时未提供collectionId!','error','https://api.openai.com','\x20记录凝识范围:\x20','chat_history','忆识检索失败:\x20','{{text}}','手动录入','floor','/v1/models','无法确定当前忆识宝库的ID,请确认角色已正确加载。','[翰林院-Rerank]\x20外部Rerank失败,将仅使用内部加权。','matchThreshold','\x20-\x20楼层\x20#','find','(已锁定:\x20','object','[翰林院-Rerank]\x20开始外部API重排序...','extensionSettings','[翰林院-日志]\x20清空宝库API错误:','/api/vector/purge','6mTTvmU','advanced','文本块和向量数量不匹配','condensationHistory','final_score','replace','index','sourceName','custom','results'];_0x342c=function(){return _0x1c9540;};return _0x342c();}export{initialize,getSettings,saveSettings,resetSettings,testApiConnection,fetchEmbeddingModels,fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId,toggleSessionLock,isSessionLocked,getLockedSessionInfo};function initialize(){const _0x54854b=_0x532886;context=SillyTavern[_0x54854b(0x1e1)]();if(!context){console['error']('[翰林院]\x20未能获取SillyTavern上下文,初始化失败。');return;}settings=getSettings();const _0xeef937=window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME];typeof _0xeef937===_0x54854b(0x202)?(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=async function(..._0x8f2795){await rearrangeChat(..._0x8f2795),await _0xeef937(..._0x8f2795);},console[_0x54854b(0x20e)](_0x54854b(0x23c)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME)):(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=rearrangeChat,console[_0x54854b(0x20e)](_0x54854b(0x20b)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME));}async function ingestTextToHanlinyuan(_0x7ef931,_0x3e19b4='manual',_0x4d5988='',_0x11ba8d=()=>{},_0x14dec4=null,_0x3801ca=()=>{},_0x1bcdf7=()=>{},_0x3abd59=null,_0x486876=0x0,_0x18619f=null){const _0xe93123=_0x532886;if(!_0x7ef931||!_0x7ef931['trim']())return{'success':![],'error':_0xe93123(0x236)};if(!settings)return{'success':![],'error':'核心未初始化'};try{const _0x555e88=getCollectionId();if(!_0x555e88)throw new Error(_0xe93123(0x21f));_0x3801ca('[翰林院-核心]\x20已锁定忆识宝库ID:\x20'+_0x555e88,_0xe93123(0x262)),_0x11ba8d({'message':_0xe93123(0x24d),'processed':0x0,'total':0x1});const _0x5b3b14=splitIntoChunks(_0x7ef931,_0x3e19b4,_0x4d5988),_0x9798ec=_0x5b3b14[_0xe93123(0x212)];if(_0x14dec4?.[_0xe93123(0x204)])throw new Error(_0xe93123(0x1c0));_0x3801ca(_0xe93123(0x1dd)+(_0x4d5988||_0x3e19b4)+_0xe93123(0x1ba)+_0x9798ec+_0xe93123(0x1ff),_0xe93123(0x262));if(_0x9798ec===0x0)return{'success':!![],'count':0x0};const _0x54f3b7=settings[_0xe93123(0x1fa)]['batchSize']||0x5;let _0x31124c=_0x486876;for(let _0xf2f3e2=_0x486876;_0xf2f3e2<_0x9798ec;_0xf2f3e2+=_0x54f3b7){if(_0x14dec4?.['aborted'])throw new Error(_0xe93123(0x1c0));const _0x53cb79=_0x5b3b14['slice'](_0xf2f3e2,_0xf2f3e2+_0x54f3b7);_0x11ba8d({'message':_0xe93123(0x256)+(_0xf2f3e2+0x1)+'-'+(_0xf2f3e2+_0x53cb79[_0xe93123(0x212)])+'\x20块','processed':_0xf2f3e2,'total':_0x9798ec});const _0x2fd4ef=_0x53cb79[_0xe93123(0x254)](_0x36d003=>_0x36d003[_0xe93123(0x214)]),_0x456a2d=await getEmbeddings(_0x2fd4ef,_0x14dec4);if(_0x14dec4?.[_0xe93123(0x204)])throw new Error(_0xe93123(0x1c0));if(_0x53cb79['length']!==_0x456a2d[_0xe93123(0x212)])throw new Error(_0xe93123(0x22c));const _0x519b9b=_0x53cb79[_0xe93123(0x254)]((_0x50df8f,_0x57f899)=>({..._0x50df8f,'vector':_0x456a2d[_0x57f899]}));await insertVectors(_0x519b9b,_0x14dec4,_0x555e88),_0x31124c+=_0x53cb79[_0xe93123(0x212)],_0x3abd59&&_0x8a68c3[_0xe93123(0x238)](_0x3abd59,_0x31124c,_0x9798ec),_0x1bcdf7();}_0x3abd59&&_0x8a68c3[_0xe93123(0x1db)](_0x3abd59);if(_0x18619f){const _0x2ab3ce=getCollectionId(),_0x2b97ba=_0x18619f[_0xe93123(0x1ec)]===0x0?context[_0xe93123(0x1ce)][_0xe93123(0x212)]:_0x18619f[_0xe93123(0x1ec)];settings['condensationHistory'][_0x2ab3ce]={'start':_0x18619f[_0xe93123(0x24c)],'end':_0x2b97ba,'timestamp':new Date()[_0xe93123(0x248)]()},saveSettings(),_0x3801ca(_0xe93123(0x1d5)+_0x2ab3ce+_0xe93123(0x218)+_0x18619f['start']+'-'+_0x2b97ba,_0xe93123(0x262));}return _0x3801ca(_0xe93123(0x1dc)+_0x31124c+_0xe93123(0x1d6),_0xe93123(0x244)),{'success':!![],'count':_0x31124c};}catch(_0x14474e){if(_0x14474e[_0xe93123(0x1fe)]==='AbortError'){_0x3801ca(_0xe93123(0x251),'warn');throw _0x14474e;}return console[_0xe93123(0x216)](_0xe93123(0x1bb),_0x14474e),_0x3801ca(_0xe93123(0x23d)+_0x14474e[_0xe93123(0x25d)],'error'),{'success':![],'error':_0x14474e[_0xe93123(0x25d)]};}}function getSettings(){const _0x272785=_0x532886;if(!context||!context[_0x272785(0x227)])return structuredClone(_0x39d149);let _0x1f2706=context[_0x272785(0x227)][MODULE_NAME];!_0x1f2706&&(_0x1f2706={},context[_0x272785(0x227)][MODULE_NAME]=_0x1f2706);_0x1f2706[_0x272785(0x22d)]===undefined&&(_0x1f2706['condensationHistory']={});for(const _0x3d0343 in _0x39d149){if(_0x1f2706[_0x3d0343]===undefined)_0x1f2706[_0x3d0343]=structuredClone(_0x39d149[_0x3d0343]);else{if(typeof _0x39d149[_0x3d0343]===_0x272785(0x225)&&!Array['isArray'](_0x39d149[_0x3d0343])&&_0x39d149[_0x3d0343]!==null)for(const _0x154814 in _0x39d149[_0x3d0343]){_0x1f2706[_0x3d0343][_0x154814]===undefined&&(_0x1f2706[_0x3d0343][_0x154814]=_0x39d149[_0x3d0343][_0x154814]);}}}return _0x1f2706;}function saveSettings(){const _0x2460ee=_0x532886;if(context)context[_0x2460ee(0x206)]();}function resetSettings(){context&&(context['extensionSettings'][MODULE_NAME]=structuredClone(_0x39d149),saveSettings());}function showNotification(_0xdeccba,_0x517373=_0x532886(0x262)){toastr[_0x517373](_0xdeccba);}function getTagForSource(_0xd08851){const _0x45914f=_0x532886;switch(_0xd08851){case _0x45914f(0x219):return'聊天记录';case'lorebook':return'世界书';case _0x45914f(0x24a):return _0x45914f(0x21c);case'novel':return _0x45914f(0x1c8);default:return'资料';}}function splitIntoChunks(_0x383f73,_0x79ca98,_0x5bb98c){const _0x42f90a=_0x532886,{chunkSize:_0xfa2993,overlap:_0x14ae16}=settings[_0x42f90a(0x22b)],_0x259b83=[];if(!_0x383f73||_0xfa2993<=0x0)return _0x259b83;const _0x1e0e28=/(第\s*[一二三四五六七八九十百千万零\d]+\s*卷)/gim,_0x3fae46=/(第\s*[一二三四五六七八九十百千万零\d]+\s*[章回节部])|^(Chapter\s+\d+)/gim;let _0x37b25d=0x0,_0x2e9a2b=0x1,_0x3c48a7=0x1,_0x2aabbe=![];const _0x2cb617=_0x383f73[_0x42f90a(0x255)]('\x0a');let _0x2eea18=_0x42f90a(0x1d8),_0xa05494=_0x42f90a(0x1f3),_0x137ba8=[];function _0x1ac0d6(){const _0x24799b=_0x42f90a;if(_0x137ba8[_0x24799b(0x212)]===0x0)return;const _0x4c2090=_0x137ba8['join']('\x0a');let _0x1ea3bb=0x0,_0x89dadb=0x1;while(_0x1ea3bb<_0x4c2090[_0x24799b(0x212)]){const _0x34c17b=Math[_0x24799b(0x1b3)](_0x1ea3bb+_0xfa2993,_0x4c2090[_0x24799b(0x212)]),_0xfc9f73=_0x4c2090[_0x24799b(0x20a)](_0x1ea3bb,_0x34c17b);if(_0xfc9f73[_0x24799b(0x1ef)]()['length']>0x0){const _0x4a70cd={'source':_0x79ca98,'sourceName':_0x5bb98c,'timestamp':new Date()[_0x24799b(0x248)](),'globalIndex':_0x37b25d++,'volume':_0x2eea18,'chapter':_0xa05494,'section':_0x89dadb},_0x142724=getTagForSource(_0x79ca98),_0x16cb1e=_0x24799b(0x1b0)+_0x5bb98c+',\x20'+_0x2eea18+',\x20'+_0xa05494+_0x24799b(0x1a9)+_0x89dadb+'节]',_0x3cbe89='<'+_0x142724+'>\x0a'+_0x16cb1e+'\x0a'+_0xfc9f73+_0x24799b(0x259)+_0x142724+'>';_0x259b83['push']({'text':_0x3cbe89,'metadata':_0x4a70cd}),_0x89dadb++;}_0x1ea3bb+=_0xfa2993-_0x14ae16;if(_0x1ea3bb>=_0x4c2090[_0x24799b(0x212)])break;}_0x137ba8=[];}for(const _0x3755e9 of _0x2cb617){const _0x594e5b=_0x3755e9[_0x42f90a(0x1ef)]();if(_0x1e0e28[_0x42f90a(0x201)](_0x594e5b))_0x1ac0d6(),_0x2eea18=_0x594e5b,_0xa05494='第1章',_0x2e9a2b++,_0x3c48a7=0x1,_0x2aabbe=!![];else _0x3fae46[_0x42f90a(0x201)](_0x594e5b)?(_0x1ac0d6(),_0xa05494=_0x594e5b,_0x3c48a7++):_0x137ba8[_0x42f90a(0x1bd)](_0x3755e9);}_0x1ac0d6();if(_0x259b83[_0x42f90a(0x212)]===0x0&&_0x383f73[_0x42f90a(0x212)]>0x0){let _0x16d179=0x0,_0x15d3cf=0x1;while(_0x16d179<_0x383f73['length']){const _0x18f050=Math['min'](_0x16d179+_0xfa2993,_0x383f73[_0x42f90a(0x212)]),_0x2e1d85=_0x383f73[_0x42f90a(0x20a)](_0x16d179,_0x18f050),_0x3ef5c3={'source':_0x79ca98,'sourceName':_0x5bb98c,'timestamp':new Date()['toISOString'](),'globalIndex':_0x259b83['length'],'volume':_0x42f90a(0x1d8),'chapter':_0x42f90a(0x1f3),'section':_0x15d3cf},_0x138fe1=getTagForSource(_0x79ca98),_0x34a965=_0x42f90a(0x1b0)+_0x5bb98c+_0x42f90a(0x23a)+_0x15d3cf+'节]',_0x13f7c2='<'+_0x138fe1+'>\x0a'+_0x34a965+'\x0a'+_0x2e1d85+_0x42f90a(0x259)+_0x138fe1+'>';_0x259b83[_0x42f90a(0x1bd)]({'text':_0x13f7c2,'metadata':_0x3ef5c3}),_0x15d3cf++,_0x16d179+=_0xfa2993-_0x14ae16;}}return _0x259b83;}import{getCollectionId as _0x20aad2,getCharacterName}from'./utils/context-utils.js';function getCollectionId(){return lockedCollectionId||_0x20aad2();}function toggleSessionLock(){return lockedCollectionId?(lockedCollectionId=null,![]):(lockedCollectionId=_0x20aad2(),!![]);}function isSessionLocked(){return lockedCollectionId!==null;}function getLockedSessionInfo(){const _0x4e9189=_0x532886;if(!lockedCollectionId)return null;return{'id':lockedCollectionId,'name':_0x4e9189(0x224)+lockedCollectionId[_0x4e9189(0x20a)](0x0,0x8)+_0x4e9189(0x257)};}function generateHash(_0x3f2ba2){const _0x16523e=_0x532886;let _0x4ea3a9=0x0;for(let _0x3f85a7=0x0;_0x3f85a7<_0x3f2ba2['length'];_0x3f85a7++){const _0x77cbbc=_0x3f2ba2[_0x16523e(0x1ae)](_0x3f85a7);_0x4ea3a9=(_0x4ea3a9<<0x5)-_0x4ea3a9+_0x77cbbc,_0x4ea3a9=_0x4ea3a9&_0x4ea3a9;}return Math[_0x16523e(0x1fc)](_0x4ea3a9)['toString'](0x24);}function getSanitizedBaseUrl(_0x50d40d){const _0x2ea468=_0x532886;let _0x45c91f=_0x50d40d['trim']();return _0x45c91f[_0x2ea468(0x1f7)]('/')&&(_0x45c91f=_0x45c91f[_0x2ea468(0x25a)](0x0,-0x1)),_0x45c91f[_0x2ea468(0x1f7)](_0x2ea468(0x1c7))&&(_0x45c91f=_0x45c91f[_0x2ea468(0x25a)](0x0,-0x3)),_0x45c91f[_0x2ea468(0x1f7)](_0x2ea468(0x1bc))&&(_0x45c91f=_0x45c91f['slice'](0x0,-0xb)),_0x45c91f;}async function fetchEmbeddingModels(){const _0x29aa31=_0x532886,{apiKey:_0x30f4d5}=settings['retrieval'],_0x3ff12f=getApiEndpointUrl(!![]);if(!_0x3ff12f||!_0x30f4d5)throw new Error('API\x20URL\x20或\x20Key\x20未提供。');const _0x41da2b=getSanitizedBaseUrl(_0x3ff12f),_0x14edd3=_0x41da2b+_0x29aa31(0x21e);console[_0x29aa31(0x20e)](_0x29aa31(0x260)+_0x14edd3+'\x20获取模型列表...');const _0x1d44a0=await fetch(_0x14edd3,{'method':'GET','headers':getApiHeaders()});if(!_0x1d44a0['ok']){const _0x40572e=await _0x1d44a0['text']();throw new Error('获取模型列表失败\x20('+_0x1d44a0[_0x29aa31(0x1e9)]+'):\x20'+_0x40572e);}const _0x555fdf=await _0x1d44a0[_0x29aa31(0x1b2)]();if(!_0x555fdf[_0x29aa31(0x1c3)]||!Array[_0x29aa31(0x1e2)](_0x555fdf[_0x29aa31(0x1c3)]))throw new Error('模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。');return _0x555fdf[_0x29aa31(0x1c3)]['map'](_0x1bb4cd=>_0x1bb4cd['id'])[_0x29aa31(0x1f9)]();}function _0x1675(_0x20851e,_0x6dce87){const _0x342c1a=_0x342c();return _0x1675=function(_0x167582,_0x4c6054){_0x167582=_0x167582-0x1a9;let _0x4319f7=_0x342c1a[_0x167582];return _0x4319f7;},_0x1675(_0x20851e,_0x6dce87);}function getRerankBaseUrl(_0x3eaaa9){const _0x23cae4=_0x532886;let _0x38e2b3=_0x3eaaa9[_0x23cae4(0x1ef)]();return _0x38e2b3[_0x23cae4(0x1f7)]('/')&&(_0x38e2b3=_0x38e2b3['slice'](0x0,-0x1)),_0x38e2b3[_0x23cae4(0x1f7)](_0x23cae4(0x1c7))&&(_0x38e2b3=_0x38e2b3['slice'](0x0,-0x3)),_0x38e2b3[_0x23cae4(0x1f7)]('/rerank')&&(_0x38e2b3=_0x38e2b3[_0x23cae4(0x25a)](0x0,-0x7)),_0x38e2b3;}async function fetchRerankModels(){const _0x3844c7=_0x532886,{url:_0x342d91,apiKey:_0x132e3e}=settings[_0x3844c7(0x1b9)];if(!_0x342d91||!_0x132e3e)throw new Error('Rerank\x20API\x20URL\x20或\x20Key\x20未提供。');const _0x1d7799=getRerankBaseUrl(_0x342d91),_0x12a2aa=_0x1d7799+'/v1/models';console['log']('[翰林院-Rerank]\x20正在从\x20'+_0x12a2aa+_0x3844c7(0x253));const _0xe0e86c=await fetch(_0x12a2aa,{'method':_0x3844c7(0x1cd),'headers':{'Authorization':_0x3844c7(0x1ad)+_0x132e3e}});if(!_0xe0e86c['ok']){const _0x569ed4=await _0xe0e86c[_0x3844c7(0x214)]();throw new Error(_0x3844c7(0x25e)+_0xe0e86c[_0x3844c7(0x1e9)]+_0x3844c7(0x1ee)+_0x569ed4);}const _0x1e4d1b=await _0xe0e86c[_0x3844c7(0x1b2)]();if(!_0x1e4d1b[_0x3844c7(0x1c3)]||!Array[_0x3844c7(0x1e2)](_0x1e4d1b['data']))throw new Error(_0x3844c7(0x263));return _0x1e4d1b[_0x3844c7(0x1c3)][_0x3844c7(0x254)](_0x3a9958=>_0x3a9958['id'])[_0x3844c7(0x1f9)]();}function getApiEndpointUrl(_0x238fdd=![]){const _0x19a1b2=_0x532886,{apiEndpoint:_0x15b150,customApiUrl:_0x240910}=settings[_0x19a1b2(0x1fa)];let _0x24947b;switch(_0x15b150){case _0x19a1b2(0x241):_0x24947b=_0x19a1b2(0x217);break;case'azure':case _0x19a1b2(0x232):_0x24947b=_0x240910;break;default:_0x24947b=_0x19a1b2(0x217);break;}if(_0x238fdd)return _0x24947b;return getSanitizedBaseUrl(_0x24947b)+_0x19a1b2(0x1eb);}function getApiHeaders(){const _0x5a0fc3=_0x532886,_0xef88c={'Content-Type':'application/json'},{apiKey:_0x5ea8d0,apiEndpoint:_0x13b7ad}=settings[_0x5a0fc3(0x1fa)];switch(_0x13b7ad){case'openai':case _0x5a0fc3(0x232):_0xef88c['Authorization']='Bearer\x20'+_0x5ea8d0;break;case'azure':_0xef88c[_0x5a0fc3(0x209)]=_0x5ea8d0;break;}return _0xef88c;}async function getEmbeddings(_0x15d53e,_0x5440f3=null){const _0x1bfa17=_0x532886;if(!settings[_0x1bfa17(0x1fa)]['apiKey'])throw new Error('请先配置API\x20Key');const _0x2bee94=getApiEndpointUrl(),_0x116a3f=getApiHeaders(),_0x1622f6=settings[_0x1bfa17(0x1fa)]['embeddingModel'],_0x3697b0=settings['retrieval'][_0x1bfa17(0x1fb)]||0x5,_0xd07be0=[];for(let _0x20e04d=0x0;_0x20e04d<_0x15d53e['length'];_0x20e04d+=_0x3697b0){if(_0x5440f3?.[_0x1bfa17(0x204)])throw new Error('AbortError');const _0x1cdc3e=_0x15d53e['slice'](_0x20e04d,_0x20e04d+_0x3697b0),_0xc8d994=await fetch(_0x2bee94,{'method':'POST','headers':_0x116a3f,'body':JSON[_0x1bfa17(0x200)]({'input':_0x1cdc3e,'model':_0x1622f6}),'signal':_0x5440f3});if(!_0xc8d994['ok']){const _0x2d02f9=await _0xc8d994[_0x1bfa17(0x214)]();throw new Error('神力获取失败\x20'+_0xc8d994[_0x1bfa17(0x1e9)]+':\x20'+_0x2d02f9);}const _0x58b32a=await _0xc8d994['json']();_0xd07be0[_0x1bfa17(0x1bd)](..._0x58b32a[_0x1bfa17(0x1c3)][_0x1bfa17(0x254)](_0x61e4cd=>_0x61e4cd[_0x1bfa17(0x205)])),_0x20e04d+_0x3697b0<_0x15d53e['length']&&await new Promise(_0x3f00fd=>setTimeout(_0x3f00fd,0xc8));}return _0xd07be0;}async function queryVectors(_0x2a1007){const _0x3941b6=_0x532886;console['log'](_0x3941b6(0x1f1));const _0x5a3119=getCollectionId();console['log'](_0x3941b6(0x261)+_0x5a3119);const _0x28d14f=(await getEmbeddings([_0x2a1007]))[0x0],_0x48210b={'collectionId':_0x5a3119,'searchText':_0x2a1007,'topK':settings['advanced'][_0x3941b6(0x211)],'threshold':settings[_0x3941b6(0x22b)][_0x3941b6(0x221)],'source':_0x3941b6(0x1d2),'embeddings':{[_0x2a1007]:_0x28d14f}};console['log'](_0x3941b6(0x1ea),JSON[_0x3941b6(0x200)](_0x48210b,null,0x2));const _0x43968a=await fetch('/api/vector/query',{'method':_0x3941b6(0x1e7),'headers':context[_0x3941b6(0x1bf)](),'body':JSON[_0x3941b6(0x200)](_0x48210b)});console[_0x3941b6(0x20e)](_0x3941b6(0x245)+_0x43968a['status']);if(!_0x43968a['ok']){const _0x8ebe52=await _0x43968a[_0x3941b6(0x214)]();console['error'](_0x3941b6(0x1cc),_0x8ebe52);throw new Error(_0x3941b6(0x1e4)+_0x43968a[_0x3941b6(0x1e9)]+':\x20'+_0x8ebe52);}const _0x31097c=await _0x43968a['json']();console[_0x3941b6(0x20e)]('[翰林院-日志]\x20/api/vector/query\x20响应内容:',_0x31097c);const _0x14246a=_0x31097c[_0x3941b6(0x1e8)]||_0x31097c[_0x3941b6(0x233)]||_0x31097c[_0x3941b6(0x1c3)]||[];return console['log'](_0x3941b6(0x203)+_0x14246a[_0x3941b6(0x212)]+_0x3941b6(0x20f)),_0x14246a;}async function insertVectors(_0x399f43,_0x185709=null,_0x65dbfb){const _0x516d22=_0x532886;if(!_0x65dbfb){console[_0x516d22(0x216)](_0x516d22(0x215)),_0x65dbfb=getCollectionId();if(!_0x65dbfb)throw new Error(_0x516d22(0x252));}if(_0x399f43[_0x516d22(0x212)]===0x0)return{'success':!![],'count':0x0};const _0x550b67=_0x399f43['map']((_0x1849e6,_0x2ead27)=>({'hash':generateHash(_0x1849e6[_0x516d22(0x214)]+Date[_0x516d22(0x1f5)]()+_0x2ead27),'text':_0x1849e6['text'],'metadata':_0x1849e6[_0x516d22(0x1e8)]||{'source':'unknown','timestamp':new Date()['toISOString']()}})),_0x2e2199=_0x550b67['reduce']((_0xf55b81,_0x285942,_0xfad3b4)=>{const _0x4218c6=_0x516d22;return _0xf55b81[_0x285942[_0x4218c6(0x214)]]=_0x399f43[_0xfad3b4][_0x4218c6(0x25c)],_0xf55b81;},{}),_0x2e6f24={'collectionId':_0x65dbfb,'items':_0x550b67,'source':'webllm','embeddings':_0x2e2199},_0x4833e0=await fetch(_0x516d22(0x1c5),{'method':_0x516d22(0x1e7),'headers':context[_0x516d22(0x1bf)](),'body':JSON[_0x516d22(0x200)](_0x2e6f24),'signal':_0x185709});if(!_0x4833e0['ok']){const _0x625734=await _0x4833e0[_0x516d22(0x214)]();console[_0x516d22(0x216)]('[翰林院-日志]\x20忆识存入API错误:',_0x625734);throw new Error(_0x516d22(0x1d7)+_0x4833e0[_0x516d22(0x1e9)]+':\x20'+_0x625734);}return{'success':!![],'count':_0x550b67['length']};}async function testApiConnection(){const _0x3d24aa=_0x532886;await getEmbeddings([_0x3d24aa(0x1e6)]);}async function getVectorCount(){const _0x50497d=_0x532886;console[_0x50497d(0x20e)](_0x50497d(0x1f0));const _0xe4dfb4=getCollectionId();console[_0x50497d(0x20e)](_0x50497d(0x1ed)+_0xe4dfb4);const _0xb27673={'collectionId':_0xe4dfb4,'source':'webllm','embeddings':{}};console[_0x50497d(0x20e)](_0x50497d(0x1e5),JSON[_0x50497d(0x200)](_0xb27673,null,0x2));const _0x3295e0=await fetch(_0x50497d(0x24e),{'method':_0x50497d(0x1e7),'headers':context[_0x50497d(0x1bf)](),'body':JSON[_0x50497d(0x200)](_0xb27673)});console['log'](_0x50497d(0x23f)+_0x3295e0[_0x50497d(0x1e9)]);if(!_0x3295e0['ok']){const _0x5b0df0=await _0x3295e0[_0x50497d(0x214)]();return console[_0x50497d(0x216)](_0x50497d(0x1c4),_0x5b0df0),0x0;}const _0x342c93=await _0x3295e0[_0x50497d(0x1b2)]();let _0x253c6e=0x0;if(Array['isArray'](_0x342c93))_0x253c6e=_0x342c93[_0x50497d(0x212)];else _0x342c93&&_0x342c93['hashes']&&(_0x253c6e=_0x342c93['hashes'][_0x50497d(0x212)]);return console['log'](_0x50497d(0x1f4)+_0x253c6e),_0x253c6e;}async function purgeStorage(){const _0x3c4160=_0x532886;console['log'](_0x3c4160(0x1df));const _0x5bd6dd=getCollectionId();console['log'](_0x3c4160(0x25f)+_0x5bd6dd);const _0x552aca={'collectionId':_0x5bd6dd};console[_0x3c4160(0x20e)](_0x3c4160(0x237),JSON[_0x3c4160(0x200)](_0x552aca,null,0x2));const _0x7d6271=await fetch(_0x3c4160(0x229),{'method':'POST','headers':context[_0x3c4160(0x1bf)](),'body':JSON['stringify'](_0x552aca)});console[_0x3c4160(0x20e)](_0x3c4160(0x1af)+_0x7d6271[_0x3c4160(0x1e9)]);if(!_0x7d6271['ok']){const _0x154397=await _0x7d6271['text']();console['error'](_0x3c4160(0x228),_0x154397);}else console[_0x3c4160(0x20e)](_0x3c4160(0x234));return _0x7d6271['ok'];}function getMessagesForCondensation(_0x5dfb63=null){const _0x26b77a=_0x532886;if(!settings[_0x26b77a(0x208)][_0x26b77a(0x1aa)])return showNotification('凝识之权未开启','warning'),[];const {layerStart:_0x2f1bbe,layerEnd:_0x56abda}=settings[_0x26b77a(0x208)],_0x2dd913=_0x5dfb63||settings[_0x26b77a(0x208)]['messageTypes'],_0x23b159=context[_0x26b77a(0x1ce)][_0x26b77a(0x212)],_0x395c70=Math[_0x26b77a(0x246)](0x0,_0x2f1bbe-0x1),_0x3b19ad=_0x56abda===0x0||_0x56abda>_0x23b159?_0x23b159:Math[_0x26b77a(0x1b3)](_0x23b159,_0x56abda),_0x522484=context[_0x26b77a(0x1ce)][_0x26b77a(0x25a)](_0x395c70,_0x3b19ad);return _0x522484[_0x26b77a(0x239)](_0xb3add1=>{const _0xd920=_0x26b77a,_0x740668=_0xb3add1[_0xd920(0x258)]===!![],_0x20b2c8=_0xb3add1[_0xd920(0x258)]===![];if(!_0xb3add1[_0xd920(0x1e0)]||!_0xb3add1[_0xd920(0x1e0)][_0xd920(0x1ef)]())return![];return _0x2dd913['user']&&_0x740668||_0x2dd913['ai']&&_0x20b2c8;});}async function processCondensation(_0x3d2b58,_0x2f6b44=()=>{},_0x1a6efa=null){const _0x15d70d=_0x532886;if(!_0x3d2b58||_0x3d2b58[_0x15d70d(0x212)]===0x0)return{'success':![],'error':_0x15d70d(0x20d)};try{const _0x766b96=getCollectionId();if(!_0x766b96)throw new Error('无法确定当前忆识宝库的ID,请确认角色已正确加载。');_0x2f6b44(_0x15d70d(0x1e3)+_0x766b96,_0x15d70d(0x262));const _0x40cbd7=[],_0x1ff638=context[_0x15d70d(0x1ce)],{chunkSize:_0xae507c,overlap:_0x384c1c}=settings[_0x15d70d(0x22b)];for(const _0x2bc70c of _0x3d2b58){const _0x44d2d8=(_0x2bc70c[_0x15d70d(0x1e0)]||'')[_0x15d70d(0x22f)](/<[^>]*>/g,'')['trim']();if(_0x44d2d8[_0x15d70d(0x212)]===0x0)continue;const _0x12191e=_0x1ff638['findIndex'](_0x3db5fc=>_0x3db5fc===_0x2bc70c),_0x4cf8d0=_0x12191e!==-0x1?_0x12191e+0x1:-0x1,_0xa0a09={'source':_0x15d70d(0x219),'sourceName':_0x15d70d(0x1d4)+_0x4cf8d0,'floor':_0x4cf8d0,'is_user':_0x2bc70c[_0x15d70d(0x258)],'timestamp':new Date(_0x2bc70c[_0x15d70d(0x1cb)])['toISOString']()};let _0xbe64b6=0x0;while(_0xbe64b6<_0x44d2d8[_0x15d70d(0x212)]){const _0x3baea3=Math['min'](_0xbe64b6+_0xae507c,_0x44d2d8[_0x15d70d(0x212)]),_0x41e8fb=_0x44d2d8['substring'](_0xbe64b6,_0x3baea3),_0x23bc13=_0x15d70d(0x1b4)+_0xa0a09[_0x15d70d(0x231)]+']\x0a'+_0x41e8fb+_0x15d70d(0x1cf);_0x40cbd7['push']({'text':_0x23bc13,'metadata':_0xa0a09}),_0xbe64b6+=_0xae507c-_0x384c1c;if(_0xbe64b6>=_0x44d2d8[_0x15d70d(0x212)])break;}}if(_0x40cbd7[_0x15d70d(0x212)]===0x0)return{'success':!![],'count':0x0};_0x2f6b44(_0x15d70d(0x1b6)+_0x3d2b58[_0x15d70d(0x212)]+_0x15d70d(0x1f8)+_0x40cbd7[_0x15d70d(0x212)]+_0x15d70d(0x210),'info');const _0x44b347=settings['retrieval'][_0x15d70d(0x1fb)]||0x5;let _0x2935be=0x0;for(let _0x2545a6=0x0;_0x2545a6<_0x40cbd7[_0x15d70d(0x212)];_0x2545a6+=_0x44b347){const _0x15bbda=_0x40cbd7['slice'](_0x2545a6,_0x2545a6+_0x44b347),_0x2fa5f4=_0x15bbda[_0x15d70d(0x254)](_0x564060=>_0x564060[_0x15d70d(0x214)]),_0x9bf044=await getEmbeddings(_0x2fa5f4);if(_0x15bbda[_0x15d70d(0x212)]!==_0x9bf044[_0x15d70d(0x212)])throw new Error('文本块和向量数量不匹配');const _0x31066b=_0x15bbda[_0x15d70d(0x254)]((_0x2cc220,_0xf01526)=>({..._0x2cc220,'vector':_0x9bf044[_0xf01526]}));await insertVectors(_0x31066b,null,_0x766b96),_0x2935be+=_0x15bbda[_0x15d70d(0x212)];}if(_0x1a6efa){const _0x3d2792=_0x1a6efa[_0x15d70d(0x1ec)]===0x0?context['chat'][_0x15d70d(0x212)]:_0x1a6efa['end'];settings[_0x15d70d(0x22d)][_0x766b96]={'start':_0x1a6efa[_0x15d70d(0x24c)],'end':_0x3d2792,'timestamp':new Date()[_0x15d70d(0x248)]()},saveSettings(),_0x2f6b44(_0x15d70d(0x1d5)+_0x766b96+'\x20记录凝识范围:\x20'+_0x1a6efa[_0x15d70d(0x24c)]+'-'+_0x3d2792,_0x15d70d(0x262));}_0x2f6b44(_0x15d70d(0x250)+_0x2935be+_0x15d70d(0x1d3),_0x15d70d(0x244));const _0x86d4c6=_0x3d2b58['map'](_0x52b070=>{const _0xc0bbb9=_0x15d70d,_0x47e81a=_0x1ff638[_0xc0bbb9(0x1c9)](_0x2fcc38=>_0x2fcc38===_0x52b070),_0x1830f3=_0x47e81a!==-0x1?_0x47e81a+0x1:-0x1,_0x1b5fe7=_0x52b070[_0xc0bbb9(0x258)]?'用户':getCharacterName()||'AI';return'['+_0x1b5fe7+_0xc0bbb9(0x222)+_0x1830f3+']\x20的消息已成功凝识。';});return{'success':!![],'count':_0x2935be,'messages':_0x86d4c6};}catch(_0x155512){return console[_0x15d70d(0x216)]('[翰林院-核心]\x20processCondensation\x20失败:',_0x155512),_0x2f6b44(_0x15d70d(0x1d9)+_0x155512['message'],_0x15d70d(0x216)),{'success':![],'error':_0x155512[_0x15d70d(0x25d)]};}}async function rerankResults(_0x215102,_0x506ee9,_0x547f5a){const _0x52362f=_0x532886;let _0x401d2e=_0x215102;if(_0x547f5a['rerank'][_0x52362f(0x1aa)]&&_0x215102[_0x52362f(0x212)]>0x0){console['log'](_0x52362f(0x226));try{const _0x5ea334=_0x215102[_0x52362f(0x254)]((_0x52dbe8,_0x12ff4e)=>({'text':_0x52dbe8[_0x52362f(0x214)],'original_index':_0x12ff4e})),_0x30d6e6=getRerankBaseUrl(_0x547f5a[_0x52362f(0x1b9)][_0x52362f(0x1fd)]),_0x3f9b5b=_0x30d6e6+_0x52362f(0x1c2),_0x56da48=await fetch(_0x3f9b5b,{'method':_0x52362f(0x1e7),'headers':{'Content-Type':_0x52362f(0x247),'Authorization':'Bearer\x20'+_0x547f5a['rerank'][_0x52362f(0x1ca)]},'body':JSON['stringify']({'query':_0x506ee9,'documents':_0x5ea334['map'](_0x40fbe0=>_0x40fbe0[_0x52362f(0x214)]),'model':_0x547f5a[_0x52362f(0x1b9)][_0x52362f(0x243)],'top_n':_0x547f5a[_0x52362f(0x1b9)][_0x52362f(0x1de)]})});if(!_0x56da48['ok'])throw new Error(_0x52362f(0x1ac)+_0x56da48[_0x52362f(0x1e9)]+_0x52362f(0x1ee)+await _0x56da48[_0x52362f(0x214)]());const _0x48e9b7=await _0x56da48[_0x52362f(0x1b2)](),_0x223c24=_0x215102[_0x52362f(0x254)]((_0x53ce0a,_0x22c540)=>({..._0x53ce0a,'original_index':_0x22c540}));_0x401d2e=_0x223c24[_0x52362f(0x254)](_0x2bd1e5=>{const _0x7c0057=_0x52362f,_0x557ac5=_0x48e9b7['results'][_0x7c0057(0x223)](_0x2715b2=>_0x2715b2[_0x7c0057(0x230)]===_0x2bd1e5['original_index']),_0x203f1b=_0x557ac5?_0x557ac5['relevance_score']:0x0;return{..._0x2bd1e5,'rerank_score':_0x203f1b};});if(_0x547f5a['rerank'][_0x52362f(0x1b8)])showNotification('外部Rerank完成',_0x52362f(0x244));}catch(_0x916241){console[_0x52362f(0x216)](_0x52362f(0x220),_0x916241);if(_0x547f5a[_0x52362f(0x1b9)][_0x52362f(0x1b8)])showNotification(_0x52362f(0x1b7)+_0x916241[_0x52362f(0x25d)],_0x52362f(0x216));_0x401d2e['forEach'](_0x3bede6=>_0x3bede6[_0x52362f(0x23b)]=0x0);}}else _0x401d2e[_0x52362f(0x207)](_0x2d6549=>_0x2d6549[_0x52362f(0x23b)]=0x0);console[_0x52362f(0x20e)](_0x52362f(0x23e));const _0x1476d0=context['chat'][_0x52362f(0x212)],_0x3cfc82=_0x547f5a[_0x52362f(0x1b9)]['hybrid_alpha'],_0x365ce5=_0x401d2e[_0x52362f(0x254)](_0x23d551=>{const _0x5ad6cb=_0x52362f;let _0x426ffa=0x1;const _0x6a714=_0x23d551[_0x5ad6cb(0x1e8)]||{};switch(_0x6a714[_0x5ad6cb(0x24b)]){case _0x5ad6cb(0x242):_0x426ffa*=1.2;break;case _0x5ad6cb(0x24a):_0x426ffa*=1.1;break;case _0x5ad6cb(0x219):if(_0x6a714[_0x5ad6cb(0x21d)]&&_0x1476d0>0x0){const _0x1d658d=_0x6a714[_0x5ad6cb(0x21d)]/_0x1476d0;_0x426ffa*=0x1+_0x1d658d;}break;}const _0x5540dc=_0x23d551[_0x5ad6cb(0x23b)]*_0x3cfc82+(_0x23d551['score']||0x0)*(0x1-_0x3cfc82),_0x7e9225=_0x5540dc*_0x426ffa;return{..._0x23d551,'final_score':_0x7e9225};});return _0x365ce5['sort']((_0x59978b,_0x4f4b0d)=>(_0x4f4b0d[_0x52362f(0x22e)]||0x0)-(_0x59978b[_0x52362f(0x22e)]||0x0)),console[_0x52362f(0x20e)]('[翰林院-Rerank]\x20元数据加权排序完成。'),_0x365ce5[_0x52362f(0x25a)](0x0,_0x547f5a[_0x52362f(0x1b9)][_0x52362f(0x1de)]);}async function rearrangeChat(_0x34126a,_0x46f5c1,_0x2aa462,_0x1b2726){const _0x3af388=_0x532886;setExtensionPrompt(_0x3af388(0x249),'',settings[_0x3af388(0x1d0)][_0x3af388(0x1f2)],settings['injection'][_0x3af388(0x235)],![],settings[_0x3af388(0x1d0)]['depth_role']);if(_0x1b2726==='quiet'||!settings[_0x3af388(0x1fa)]['enabled'])return;const _0x31ad09=_0x34126a[_0x3af388(0x25a)](-settings[_0x3af388(0x22b)][_0x3af388(0x1c1)]);if(_0x31ad09[_0x3af388(0x212)]===0x0)return;const _0x12f407=_0x31ad09[_0x3af388(0x254)](_0x409938=>_0x409938[_0x3af388(0x1e0)])[_0x3af388(0x213)]('\x20')[_0x3af388(0x22f)](/<[^>]*>/g,'')['trim']();if(!_0x12f407)return;try{const _0x57bd75=await queryVectors(_0x12f407);if(_0x57bd75[_0x3af388(0x212)]===0x0)return;const _0x5b6d6b=await rerankResults(_0x57bd75,_0x12f407,settings);if(_0x5b6d6b[_0x3af388(0x212)]===0x0)return;const _0xb046c5=_0x5b6d6b[_0x3af388(0x254)](_0x20db60=>_0x20db60[_0x3af388(0x214)])[_0x3af388(0x213)]('\x0a\x0a'),_0x4b65a6=settings['injection'][_0x3af388(0x1ab)][_0x3af388(0x22f)](_0x3af388(0x21b),_0xb046c5);setExtensionPrompt(_0x3af388(0x249),_0x4b65a6,settings[_0x3af388(0x1d0)][_0x3af388(0x1f2)],settings['injection'][_0x3af388(0x235)],![],settings[_0x3af388(0x1d0)][_0x3af388(0x25b)]);}catch(_0x307aad){console[_0x3af388(0x216)](_0x3af388(0x1da),_0x307aad);if(settings[_0x3af388(0x1fa)][_0x3af388(0x1b8)])showNotification(_0x3af388(0x21a)+_0x307aad[_0x3af388(0x25d)],'error');}}
|