Files
ST-Amily2-Chat-Optimisation/core/api.js
2025-07-13 18:29:33 +08:00

2 lines
14 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.
const _0x17c755=_0x34a7;(function(_0x1c08e9,_0x119d45){const _0x2d6342=_0x34a7,_0x2bb138=_0x1c08e9();while(!![]){try{const _0x300e9b=-parseInt(_0x2d6342(0x1c3))/0x1*(parseInt(_0x2d6342(0x1d4))/0x2)+parseInt(_0x2d6342(0x1a5))/0x3*(parseInt(_0x2d6342(0x212))/0x4)+-parseInt(_0x2d6342(0x1a9))/0x5*(-parseInt(_0x2d6342(0x205))/0x6)+parseInt(_0x2d6342(0x1e9))/0x7+parseInt(_0x2d6342(0x1ed))/0x8*(parseInt(_0x2d6342(0x1c5))/0x9)+-parseInt(_0x2d6342(0x1fb))/0xa*(parseInt(_0x2d6342(0x1f6))/0xb)+-parseInt(_0x2d6342(0x1f4))/0xc;if(_0x300e9b===_0x119d45)break;else _0x2bb138['push'](_0x2bb138['shift']());}catch(_0x52d78d){_0x2bb138['push'](_0x2bb138['shift']());}}}(_0x2011,0x89af3));import{extension_settings,getContext}from'/scripts/extensions.js';import{characters}from'/script.js';import{world_names}from'/scripts/world-info.js';import{extensionName}from'../utils/settings.js';import{extractContentByTag,replaceContentByTag,extractFullTagBlock}from'../utils/tagProcessor.js';import{getCombinedWorldbookContent,findLatestSummaryLore,DEDICATED_LOREBOOK_NAME,getChatIdentifier}from'./lore.js';const UPDATE_CHECK_URL=_0x17c755(0x213);export async function checkForUpdates(){const _0x11c30d=_0x17c755;if(!UPDATE_CHECK_URL||UPDATE_CHECK_URL[_0x11c30d(0x1a4)]('YourUsername'))return console[_0x11c30d(0x1cb)](_0x11c30d(0x1ef)),null;try{console[_0x11c30d(0x1cb)](_0x11c30d(0x1b6));const _0x5206ad=await fetch(UPDATE_CHECK_URL,{'method':_0x11c30d(0x1ac),'cache':_0x11c30d(0x1cd),'mode':_0x11c30d(0x1f7)});if(!_0x5206ad['ok'])throw new Error('远方服务器响应异常,状态:\x20'+_0x5206ad[_0x11c30d(0x1ea)]);const _0x37a056=await _0x5206ad['json']();return console[_0x11c30d(0x1cb)](_0x11c30d(0x1e8)),_0x37a056;}catch(_0x2e427f){return console[_0x11c30d(0x1c9)]('[Amily2号-外交部]\x20紧急军情外交任务失败',_0x2e427f),null;}}function _0x34a7(_0x5238ee,_0x5bc1af){const _0x201168=_0x2011();return _0x34a7=function(_0x34a778,_0xa3b677){_0x34a778=_0x34a778-0x198;let _0x8da62b=_0x201168[_0x34a778];return _0x8da62b;},_0x34a7(_0x5238ee,_0x5bc1af);}let isFetchingModels=![];function _0x2011(){const _0x237fcc=['这里是优化后的文本内容...','X-Custom-Proxy','text','groupEnd','16436vKTvNd','https://raw.githubusercontent.com/Wx-2025/ST-Amily2-Chat-Optimisation/refs/heads/main/amily2_update_info.json','loreDepth','外交任务总耗时','summarizationEnabled','网络连接失败请检查API地址和网络状态','AMILY2_SYSTEM_PARALYZED','maxTokens','push','端点错误','[Amily2-外交部]\x20已将史册律法附加至国书准备发往下一站。','statusText','mes','API请求失败:\x20','groupCollapsed','love.qinyan.xyz','[错误详情]\x20获取模型列表失败:','403','includes','807BafumC','请严格遵循以下指令:基于所有提供的背景和对话内容,生成一段精炼的剧情摘要。直接输出摘要文本,不要包含任何多余的解释、标签或前缀。\x0a\x0a[总结核心要求]:\x0a','认证错误','disabled','134840KqIqop','获取模型列表成功\x20(','+总结','GET','origin','成功获取\x20','slice','###AMILY2-SUMMARY###','success','v1/models','map','endsWith','个):','[Amily2号-外交部]\x20已派遣使者前往云端获取最新情报...','Amily2-ChatPlugin','陛下:\x20','val','is_user','toLocaleTimeString','正在获取模型列表,请稍候...','data','choices','\x20个可用模型','prop','无法解析错误响应','请先配置API\x20URL','983173YkINoN','apiUrl','36cGVbhs','/v1/chat/completions','info','/v1','error','stack','log','apiKey','no-store','location','embed','网络错误','dir','[Amily2-外交部]\x20目标标签\x20<','[Amily2号-外交任务]\x20','2FXdmuD','404','isArray','Amily2-外交部','trim','/models','stringify','replace','world','mainPrompt','\x20|\x20模式:\x20','Bearer\x20','获取模型','401','filter','/v1/models','[Amily2-制裁]\x20系统完整性已受损所有外交活动被无限期中止。','lorebookTarget','user','\x0a姐姐Amily:\x20','[Amily2号-外交部]\x20情报已成功获取并解析。','4885125vFworH','status','获取模型失败','length','1937032pCHrmd','POST','[Amily2号-外交部]\x20任务取消陛下尚未配置情报来源URL。','Failed\x20to\x20fetch','system','#amily2_refresh_models','<i\x20class=\x22fas\x20fa-sync-alt\x22></i>\x20刷新模型','20122944hCEHZG','Amily2号任务失败:\x20','13948JvZJaD','cors','姐姐Amily','严重错误','[上下文参考]:\x0a','4940GYRBjb','[更新]\x20模型列表请求地址:','models','content','loreSettings','systemPrompt','join','search','[输出格式与附加任务指令]:\x0a你的输出必须严格遵循以下完整结构\x0a\x0a','loreInsertionPosition','240rCQMfA','message','time','application/json','timeEnd','html','json','extensions','optimizationEnabled'];_0x2011=function(){return _0x237fcc;};return _0x2011();}export async function fetchSupportedModels(){const _0x217043=_0x17c755,_0x3f87bc=$('#amily2_api_url')['val']()[_0x217043(0x1d8)](),_0x1a3076=$('#amily2_api_key')[_0x217043(0x1b9)]()['trim']();if(!_0x3f87bc)return toastr[_0x217043(0x1c9)](_0x217043(0x1c2),_0x217043(0x1eb)),[];if(isFetchingModels)return toastr[_0x217043(0x1c7)](_0x217043(0x1bc),_0x217043(0x1e0)),[];isFetchingModels=!![],$(_0x217043(0x1f2))['prop'](_0x217043(0x1a8),!![])[_0x217043(0x20a)]('<i\x20class=\x22fas\x20fa-spinner\x20fa-spin\x22></i>\x20加载中');try{let _0x7d523c;if(_0x3f87bc[_0x217043(0x1a4)](_0x217043(0x1c6)))_0x7d523c=_0x3f87bc[_0x217043(0x1db)]('/v1/chat/completions',_0x217043(0x1e3));else{if(_0x3f87bc[_0x217043(0x1b4)](_0x217043(0x1c8)))_0x7d523c=_0x3f87bc+_0x217043(0x1d9);else _0x3f87bc[_0x217043(0x1b4)]('/')?_0x7d523c=_0x3f87bc+_0x217043(0x1b2):_0x7d523c=_0x3f87bc+_0x217043(0x1e3);}console[_0x217043(0x1cb)](_0x217043(0x1fc),_0x7d523c);const _0x23cf6b={'Content-Type':_0x217043(0x208),'Accept':_0x217043(0x208)};if(_0x1a3076)_0x23cf6b['Authorization']='Bearer\x20'+_0x1a3076;_0x7d523c[_0x217043(0x1a4)](_0x217043(0x1a1))&&(_0x23cf6b[_0x217043(0x20f)]=_0x217043(0x1b7),_0x23cf6b['Origin']=window[_0x217043(0x1ce)][_0x217043(0x1ad)]);const _0x26a102=await fetch(_0x7d523c,{'method':_0x217043(0x1ac),'headers':_0x23cf6b,'mode':_0x217043(0x1f7),'credentials':'omit'});if(!_0x26a102['ok']){let _0x2621e9='';try{const _0x272410=await _0x26a102[_0x217043(0x20b)]();_0x2621e9=_0x272410[_0x217043(0x1c9)]?.[_0x217043(0x206)]?'\x20-\x20'+_0x272410[_0x217043(0x1c9)][_0x217043(0x206)]:await _0x26a102[_0x217043(0x210)]();}catch(_0x544555){_0x2621e9=_0x217043(0x1c1);}throw new Error('API返回错误:\x20'+_0x26a102[_0x217043(0x1ea)]+'\x20'+_0x26a102[_0x217043(0x19d)]+_0x2621e9);}const _0x45cc29=await _0x26a102[_0x217043(0x20b)]();let _0x3d7c0a=[];if(Array[_0x217043(0x1d6)](_0x45cc29))_0x3d7c0a=_0x45cc29['map'](_0x5a41d1=>_0x5a41d1['id']||_0x5a41d1);else{if(_0x45cc29[_0x217043(0x1bd)]&&Array[_0x217043(0x1d6)](_0x45cc29[_0x217043(0x1bd)]))_0x3d7c0a=_0x45cc29['data'][_0x217043(0x1b3)](_0x7fa984=>_0x7fa984['id']);else{if(_0x45cc29[_0x217043(0x1fd)]&&Array[_0x217043(0x1d6)](_0x45cc29['models']))_0x3d7c0a=_0x45cc29[_0x217043(0x1fd)];else throw new Error('未知的模型列表格式');}}const _0x2d23fd=_0x3d7c0a[_0x217043(0x1e2)](_0x1a10d9=>!_0x1a10d9[_0x217043(0x1a4)](_0x217043(0x1cf))&&!_0x1a10d9['includes'](_0x217043(0x202))&&!_0x1a10d9[_0x217043(0x1a4)]('similarity')&&!_0x1a10d9['includes']('audio'));return _0x2d23fd['sort'](),console[_0x217043(0x1cb)](_0x217043(0x1aa)+_0x2d23fd[_0x217043(0x1ec)]+_0x217043(0x1b5),_0x2d23fd),toastr[_0x217043(0x1b1)](_0x217043(0x1ae)+_0x2d23fd[_0x217043(0x1ec)]+_0x217043(0x1bf),'模型加载完成'),_0x2d23fd;}catch(_0x27ab18){console['error'](_0x217043(0x1a2),{'message':_0x27ab18['message'],'stack':_0x27ab18[_0x217043(0x1ca)]});if(_0x27ab18[_0x217043(0x206)][_0x217043(0x1a4)](_0x217043(0x1f0)))toastr['error'](_0x217043(0x217),_0x217043(0x1d0));else{if(_0x27ab18[_0x217043(0x206)][_0x217043(0x1a4)](_0x217043(0x1e1))||_0x27ab18[_0x217043(0x206)]['includes'](_0x217043(0x1a3)))toastr[_0x217043(0x1c9)]('API密钥无效或权限不足',_0x217043(0x1a7));else{if(_0x27ab18['message'][_0x217043(0x1a4)](_0x217043(0x1d5)))toastr[_0x217043(0x1c9)]('API端点不存在请确保URL指向OpenAI兼容的/v1/models端点',_0x217043(0x19b));else toastr[_0x217043(0x1c9)]('获取模型失败:\x20'+_0x27ab18['message'],'错误');}}return[];}finally{isFetchingModels=![],$(_0x217043(0x1f2))[_0x217043(0x1c0)](_0x217043(0x1a8),![])[_0x217043(0x20a)](_0x217043(0x1f3));}}export async function checkAndFixWithAPI(_0x2cae92,_0x34ce49){const _0x22e63f=_0x17c755;if(window[_0x22e63f(0x198)]===!![])return console[_0x22e63f(0x1c9)](_0x22e63f(0x1e4)),null;const _0x23d5df=extension_settings[extensionName],_0x336ea3=_0x23d5df[_0x22e63f(0x20d)],_0x21813d=_0x23d5df[_0x22e63f(0x216)];if(!_0x336ea3&&!_0x21813d)return null;if(!_0x23d5df['apiUrl']||!_0x23d5df[_0x22e63f(0x1c4)][_0x22e63f(0x1d8)]())return toastr[_0x22e63f(0x1c9)]('API\x20URL\x20未配置。',_0x22e63f(0x1d7)),null;console[_0x22e63f(0x1a0)](_0x22e63f(0x1d3)+new Date()[_0x22e63f(0x1bb)]()+_0x22e63f(0x1de)+(_0x336ea3?'优化':'')+(_0x21813d?_0x336ea3?_0x22e63f(0x1ab):'仅总结':'')),console[_0x22e63f(0x207)]('外交任务总耗时');try{const _0x1c2596=_0x2cae92['mes'],_0x5bac1a=_0x23d5df['optimizationTargetTag']||_0x22e63f(0x1fe);let _0x226da5;if(_0x336ea3){_0x226da5=extractFullTagBlock(_0x1c2596,_0x5bac1a);if(!_0x226da5||extractContentByTag(_0x226da5,_0x5bac1a)?.['trim']()===''){console[_0x22e63f(0x1cb)](_0x22e63f(0x1d2)+_0x5bac1a+'>\x20未找到或为空优化任务已跳过。'),_0x226da5=_0x1c2596;if(!_0x21813d)return console[_0x22e63f(0x209)](_0x22e63f(0x215)),console['groupEnd'](),{'optimizedContent':_0x1c2596,'summary':null};}}else _0x226da5=_0x1c2596;const _0x364c77=_0x34ce49[_0x22e63f(0x1ec)]>0x0&&_0x34ce49[_0x34ce49[_0x22e63f(0x1ec)]-0x1][_0x22e63f(0x1ba)]?_0x34ce49[_0x34ce49[_0x22e63f(0x1ec)]-0x1]:null,_0x583f7e=_0x364c77?_0x34ce49[_0x22e63f(0x1af)](0x0,-0x1):_0x34ce49,_0x49c75b=_0x583f7e['map'](_0x27b5b1=>_0x27b5b1['mes']&&_0x27b5b1[_0x22e63f(0x19e)][_0x22e63f(0x1d8)]()?(_0x27b5b1[_0x22e63f(0x1ba)]?'陛下':_0x22e63f(0x1f8))+':\x20'+_0x27b5b1[_0x22e63f(0x19e)]['trim']():null)[_0x22e63f(0x1e2)](Boolean)[_0x22e63f(0x201)]('\x0a');let _0x265cd4='';if(_0x23d5df['worldbookEnabled']){const _0x2f72d4=getContext(),_0x67bfad=characters[_0x2f72d4['characterId']];_0x67bfad?.[_0x22e63f(0x1bd)]?.['extensions']?.[_0x22e63f(0x1dc)]&&(_0x265cd4=await getCombinedWorldbookContent(_0x67bfad[_0x22e63f(0x1bd)][_0x22e63f(0x20c)][_0x22e63f(0x1dc)]));}const _0x1474e1=[];_0x23d5df['mainPrompt']?.['trim']()&&_0x1474e1['push']({'role':'system','content':_0x23d5df[_0x22e63f(0x1dd)][_0x22e63f(0x1d8)]()});if(_0x336ea3){if(_0x23d5df[_0x22e63f(0x200)]?.['trim']())_0x1474e1[_0x22e63f(0x19a)]({'role':_0x22e63f(0x1f1),'content':_0x23d5df[_0x22e63f(0x200)]['trim']()});}if(_0x336ea3&&_0x21813d){const _0x3acd13=(_0x22e63f(0x203)+_0x226da5[_0x22e63f(0x1db)](extractContentByTag(_0x226da5,_0x5bac1a),_0x22e63f(0x20e))+'\x0a\x0a###AMILY2-SUMMARY###\x0a\x0a这里是根据对话生成的剧情摘要...\x0a\x0a[总结核心要求]:\x0a'+(_0x23d5df['summarizationPrompt']?.[_0x22e63f(0x1d8)]()||'生成一段简短的剧情摘要。'))[_0x22e63f(0x1d8)]();_0x1474e1[_0x22e63f(0x19a)]({'role':_0x22e63f(0x1f1),'content':_0x3acd13});}else{if(!_0x336ea3&&_0x21813d){const _0x458014=_0x22e63f(0x1a6)+_0x23d5df['summarizationPrompt'][_0x22e63f(0x1d8)]();_0x1474e1[_0x22e63f(0x19a)]({'role':'system','content':_0x458014});}}if(_0x265cd4)_0x1474e1[_0x22e63f(0x19a)]({'role':'user','content':'[世界书档案]:\x0a'+_0x265cd4});if(_0x49c75b)_0x1474e1[_0x22e63f(0x19a)]({'role':_0x22e63f(0x1e6),'content':_0x22e63f(0x1fa)+_0x49c75b});let _0x507f17=_0x364c77?_0x22e63f(0x1b8)+_0x364c77[_0x22e63f(0x19e)]+_0x22e63f(0x1e7)+_0x226da5:_0x226da5;_0x1474e1[_0x22e63f(0x19a)]({'role':_0x22e63f(0x1e6),'content':'[核心处理内容]:\x0a'+_0x507f17}),console['groupCollapsed']('[Amily2号-最终国书内容\x20(发往AI)]'),console[_0x22e63f(0x1d1)](_0x1474e1),console[_0x22e63f(0x211)]();let _0x52192f=_0x23d5df[_0x22e63f(0x1c4)][_0x22e63f(0x1d8)]();!_0x52192f[_0x22e63f(0x1b4)](_0x22e63f(0x1c6))&&(_0x52192f=new URL(_0x22e63f(0x1c6),_0x52192f)['href']);const _0x178af6=await fetch(_0x52192f,{'method':_0x22e63f(0x1ee),'headers':{'Content-Type':_0x22e63f(0x208),..._0x23d5df[_0x22e63f(0x1cc)]&&{'Authorization':_0x22e63f(0x1df)+_0x23d5df['apiKey']}},'body':JSON[_0x22e63f(0x1da)]({'model':_0x23d5df['model'],'messages':_0x1474e1,'max_tokens':_0x23d5df[_0x22e63f(0x199)],'temperature':_0x23d5df['temperature'],'stream':![]})});if(!_0x178af6['ok'])throw new Error(_0x22e63f(0x19f)+_0x178af6[_0x22e63f(0x1ea)]+'\x20'+_0x178af6[_0x22e63f(0x19d)]+'\x20-\x20'+await _0x178af6['text']());const _0x472e1f=await _0x178af6['json'](),_0x47e14e=_0x472e1f[_0x22e63f(0x1be)]?.[0x0]?.[_0x22e63f(0x206)]?.[_0x22e63f(0x1fe)];if(!_0x47e14e)return null;console[_0x22e63f(0x1a0)]('[Amily2号-原始回复]'),console['log'](_0x47e14e),console[_0x22e63f(0x211)]();let _0x24c7df=_0x1c2596,_0x58af86=null;if(_0x336ea3&&_0x21813d){const _0x2095e1=_0x22e63f(0x1b0),_0x1e6c0d=_0x47e14e['split'](_0x2095e1),_0x30a21f=_0x1e6c0d[0x0]?.['trim']();_0x58af86=_0x1e6c0d[0x1]?.[_0x22e63f(0x1d8)]()||null;if(_0x30a21f){const _0x3c7ae6=extractContentByTag(_0x30a21f,_0x5bac1a);_0x3c7ae6?.[_0x22e63f(0x1d8)]()&&(_0x24c7df=replaceContentByTag(_0x1c2596,_0x5bac1a,_0x3c7ae6));}}else{if(_0x336ea3){const _0x1c0e79=extractContentByTag(_0x47e14e,_0x5bac1a);_0x1c0e79?.['trim']()&&(_0x24c7df=replaceContentByTag(_0x1c2596,_0x5bac1a,_0x1c0e79));}else _0x58af86=_0x47e14e[_0x22e63f(0x1d8)]();}const _0x30c7fd={'optimizedContent':_0x24c7df,'summary':_0x58af86};return _0x58af86&&_0x21813d&&(_0x30c7fd[_0x22e63f(0x1ff)]={'activationMode':_0x23d5df['loreActivationMode'],'insertionPosition':_0x23d5df[_0x22e63f(0x204)],'depth':_0x23d5df[_0x22e63f(0x214)],'keywords':_0x23d5df['loreKeywords'],'target':_0x23d5df[_0x22e63f(0x1e5)]},console[_0x22e63f(0x1cb)](_0x22e63f(0x19c),_0x30c7fd['loreSettings'])),console[_0x22e63f(0x209)](_0x22e63f(0x215)),console['groupEnd'](),_0x30c7fd;}catch(_0xe2ad84){return console[_0x22e63f(0x1c9)]('[Amily2-外交部]\x20发生严重错误:',_0xe2ad84),toastr[_0x22e63f(0x1c9)](_0x22e63f(0x1f5)+_0xe2ad84[_0x22e63f(0x206)],_0x22e63f(0x1f9)),console[_0x22e63f(0x209)](_0x22e63f(0x215)),console[_0x22e63f(0x211)](),null;}}