mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 15:05:51 +00:00
2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
const _0x246793=_0x474b;(function(_0xfdad77,_0x4bc066){const _0x306435=_0x474b,_0x372095=_0xfdad77();while(!![]){try{const _0x515e16=-parseInt(_0x306435(0xc1))/0x1+-parseInt(_0x306435(0x10c))/0x2*(parseInt(_0x306435(0xe0))/0x3)+-parseInt(_0x306435(0xe8))/0x4+-parseInt(_0x306435(0xf7))/0x5+-parseInt(_0x306435(0x10d))/0x6*(parseInt(_0x306435(0x11d))/0x7)+parseInt(_0x306435(0xc9))/0x8+parseInt(_0x306435(0xa2))/0x9;if(_0x515e16===_0x4bc066)break;else _0x372095['push'](_0x372095['shift']());}catch(_0xb77fb){_0x372095['push'](_0x372095['shift']());}}}(_0x3ea8,0x4c826));import{getContext,extension_settings}from'/scripts/extensions.js';import{characters}from'/script.js';import{world_names,loadWorldInfo,createNewWorldInfo,createWorldInfoEntry,saveWorldInfo}from'/scripts/world-info.js';import{extensionName}from'../utils/settings.js';import{getChatIdentifier}from'./lore.js';let isExpeditionRunning=![],manualStopRequested=![];async function callAmily2Model(_0x4378d3){const _0x4cf82f=_0x474b,_0x57d578=extension_settings[extensionName],{apiUrl:_0x29f12d,apiKey:_0x4a87d2,model:_0x4e2d5e,temperature:_0x42bf7d,maxTokens:_0x11166a}=_0x57d578;if(!_0x29f12d||!_0x4e2d5e)return toastr['error']('API\x20URL或模型未配置,大史官无法召唤模型B。',_0x4cf82f(0x9f)),null;let _0x2e65fe=_0x29f12d[_0x4cf82f(0xa0)]();try{const _0xa7f7e0=new URL(_0x2e65fe),_0x4ffeae=_0xa7f7e0['pathname'][_0x4cf82f(0xdb)](_0x4cf82f(0xa7))||_0xa7f7e0[_0x4cf82f(0x108)][_0x4cf82f(0xdb)]('/v1beta/openai');if(!_0x4ffeae){let _0x4d2d2a=_0xa7f7e0['pathname'];if(_0x4d2d2a[_0x4cf82f(0xdb)](_0x4cf82f(0xb8)))_0x4d2d2a=_0x4d2d2a[_0x4cf82f(0xad)](0x0,-0x1);else _0x4d2d2a[_0x4cf82f(0xdb)]('/v1')&&(_0x4d2d2a=_0x4d2d2a[_0x4cf82f(0xad)](0x0,-0x2));_0xa7f7e0[_0x4cf82f(0x108)]=_0x4d2d2a[_0x4cf82f(0xc2)](/\/$/,'')+_0x4cf82f(0xa7);}_0x2e65fe=_0xa7f7e0[_0x4cf82f(0xd6)];}catch(_0x5b6387){return console[_0x4cf82f(0xf0)](_0x4cf82f(0xc3),_0x5b6387),toastr[_0x4cf82f(0xf0)](_0x4cf82f(0xe9),_0x4cf82f(0x11f)),null;}console[_0x4cf82f(0x113)](_0x4cf82f(0xec)+new Date()['toLocaleTimeString']()),console[_0x4cf82f(0xf2)]('【目标地址】:\x20'+_0x2e65fe),console[_0x4cf82f(0xf2)]('【信函参数】',{'model':_0x4e2d5e,'temperature':_0x42bf7d,'maxTokens':_0x11166a}),console['log']('【信函正文\x20(messages)】:'),console[_0x4cf82f(0xcd)](_0x4378d3),console[_0x4cf82f(0x122)]();try{const _0x600e22=await fetch(_0x2e65fe,{'method':'POST','headers':{'Content-Type':_0x4cf82f(0xb1),'Authorization':_0x4cf82f(0x102)+_0x4a87d2},'body':JSON[_0x4cf82f(0xcc)]({'model':_0x4e2d5e,'messages':_0x4378d3,'temperature':_0x42bf7d,'max_tokens':_0x11166a,'stream':![]})});if(!_0x600e22['ok']){const _0x5cb74e=await _0x600e22[_0x4cf82f(0xa3)]();console['error'](_0x4cf82f(0xfa),_0x600e22[_0x4cf82f(0x118)],_0x5cb74e);throw new Error(_0x4cf82f(0xed)+_0x600e22[_0x4cf82f(0x118)]+_0x4cf82f(0xf1)+_0x5cb74e);}const _0x57cc62=await _0x600e22[_0x4cf82f(0xa4)]();return _0x57cc62[_0x4cf82f(0x116)][0x0]['message'][_0x4cf82f(0xa1)];}catch(_0x495bed){return console[_0x4cf82f(0xf0)](_0x4cf82f(0xaa),_0x495bed),toastr['error'](_0x4cf82f(0xe3)+_0x495bed[_0x4cf82f(0x10e)],_0x4cf82f(0xe4)),null;}}const RUNNING_LOG_COMMENT=_0x246793(0xe7),PROGRESS_SEAL_REGEX=/本条勿动【前(\d+)楼总结已完成】否则后续总结无法进行。$/;function _0x474b(_0x2cace1,_0x539d52){const _0x3ea814=_0x3ea8();return _0x474b=function(_0x474b6a,_0x385b51){_0x474b6a=_0x474b6a-0x9f;let _0x2aa9ab=_0x3ea814[_0x474b6a];return _0x2aa9ab;},_0x474b(_0x2cace1,_0x539d52);}async function readGoldenLedgerProgress(_0x384e55){const _0x438b3b=_0x246793;if(!_0x384e55)return 0x0;try{const _0x43eb57=await loadWorldInfo(_0x384e55);if(!_0x43eb57||!_0x43eb57[_0x438b3b(0x11c)])return 0x0;const _0x4e12e0=Object[_0x438b3b(0xeb)](_0x43eb57['entries'])[_0x438b3b(0xe1)](_0x2ea678=>_0x2ea678[_0x438b3b(0xd8)]===RUNNING_LOG_COMMENT&&!_0x2ea678[_0x438b3b(0x106)]);if(!_0x4e12e0)return 0x0;const _0x2dbee7=_0x4e12e0[_0x438b3b(0xa1)]['match'](PROGRESS_SEAL_REGEX);return _0x2dbee7?parseInt(_0x2dbee7[0x1],0xa):0x0;}catch(_0x376f80){return console[_0x438b3b(0xf0)](_0x438b3b(0xd1)+_0x384e55+_0x438b3b(0xdd),_0x376f80),0x0;}}export async function checkAndTriggerAutoSummary(){const _0x285901=_0x246793,_0x4d2581=extension_settings[extensionName];if(!_0x4d2581[_0x285901(0x105)])return;const _0x48912d=getContext();let _0x20b54e=null;switch(_0x4d2581['lorebookTarget']){case'character_main':_0x20b54e=characters[_0x48912d['characterId']]?.[_0x285901(0x121)]?.[_0x285901(0xd9)]?.[_0x285901(0xd5)];break;case _0x285901(0xb7):const _0x22c44c=await getChatIdentifier();_0x20b54e=_0x285901(0x100)+_0x22c44c;break;default:return;}if(!_0x20b54e)return;const _0x9ccd6d=await readGoldenLedgerProgress(_0x20b54e),_0x2e5290=_0x48912d[_0x285901(0xba)][_0x285901(0x10b)],_0x1fc8b3=_0x2e5290-_0x9ccd6d;if(_0x1fc8b3>=_0x4d2581['historiographySmallTriggerThreshold']){const _0x12636e=_0x9ccd6d+0x1,_0x4977c7=_0x2e5290;await executeManualSummary(_0x12636e,_0x4977c7,!![]);}}export async function getAvailableWorldbooks(){return[...world_names];}export async function getLoresForWorldbook(_0x4a2929){const _0x2c94be=_0x246793;if(!_0x4a2929)return[];try{const _0x3cbdb5=await loadWorldInfo(_0x4a2929);if(!_0x3cbdb5||!_0x3cbdb5[_0x2c94be(0x11c)])return[];return Object[_0x2c94be(0x11c)](_0x3cbdb5['entries'])[_0x2c94be(0xc5)](([,_0x3ae959])=>!_0x3ae959['disable'])[_0x2c94be(0xff)](([_0x59cdb3,_0x4eadac])=>({'key':_0x59cdb3,'comment':_0x4eadac[_0x2c94be(0xd8)]||_0x2c94be(0x10f)}));}catch(_0x1049c1){return console['error'](_0x2c94be(0x109)+_0x4a2929+_0x2c94be(0xd7),_0x1049c1),[];}}export async function executeManualSummary(_0x4daf44,_0x5d7ccf,_0x2eae69=![]){const _0x128c00=_0x246793,_0x500f9c=_0x2eae69?_0x128c00(0x111):_0x128c00(0xc8);toastr['info'](_0x128c00(0xe5)+_0x4daf44+_0x128c00(0xf9)+_0x5d7ccf+_0x128c00(0x110),_0x500f9c);const _0x10bdbf=getContext(),_0x2e0c8e=_0x10bdbf[_0x128c00(0xba)],_0x1376a0=extension_settings[extensionName],_0x2a90a9=_0x2e0c8e['slice'](_0x4daf44,_0x5d7ccf+0x1);if(_0x2a90a9[_0x128c00(0x10b)]===0x0){toastr['warning'](_0x128c00(0xef),_0x128c00(0x11f));return;}const _0xe57255=_0x10bdbf[_0x128c00(0xae)]||'用户',_0x24a47e=_0x10bdbf['name2']||'角色',_0x13b345=_0x2a90a9[_0x128c00(0xff)](_0x513968=>{const _0x277ae8=_0x128c00,_0x4e44d5=_0x513968['is_user']?_0xe57255:_0x24a47e;return _0x4e44d5+':\x20'+_0x513968[_0x277ae8(0xbb)][_0x277ae8(0xa0)]();})[_0x128c00(0xa5)]('\x0a'),_0x42acf0=[{'role':_0x128c00(0x11e),'content':_0x1376a0[_0x128c00(0xd2)]},{'role':_0x128c00(0x11e),'content':_0x1376a0[_0x128c00(0xac)]},{'role':'user','content':'请严格根据以下“对话记录”中的内容进行总结,不要添加任何额外信息。\x0a\x0a<对话记录>\x0a'+_0x13b345+_0x128c00(0xfb)}],_0x508bfc=await callAmily2Model(_0x42acf0);if(!_0x508bfc)return;try{let _0x488b1d=null;switch(_0x1376a0[_0x128c00(0x104)]){case _0x128c00(0xb0):_0x488b1d=characters[_0x10bdbf[_0x128c00(0x117)]]?.[_0x128c00(0x121)]?.[_0x128c00(0xd9)]?.[_0x128c00(0xd5)];if(!_0x488b1d){toastr[_0x128c00(0xf0)](_0x128c00(0xcb),_0x128c00(0xce));return;}break;case _0x128c00(0xb7):const _0x4b1880=await getChatIdentifier();_0x488b1d=_0x128c00(0x100)+_0x4b1880;!world_names[_0x128c00(0xde)](_0x488b1d)&&await createNewWorldInfo(_0x488b1d);break;default:toastr[_0x128c00(0xf0)](_0x128c00(0xaf),_0x128c00(0x10a));return;}const _0x5c703f=await loadWorldInfo(_0x488b1d),_0xf344ca=Object[_0x128c00(0xeb)](_0x5c703f[_0x128c00(0x11c)])['find'](_0xc74eeb=>_0xc74eeb[_0x128c00(0xd8)]===RUNNING_LOG_COMMENT&&!_0xc74eeb['disable']),_0xff3489=_0x128c00(0xd0)+_0x5d7ccf+_0x128c00(0xab),_0x994677=_0x128c00(0xb2)+_0x4daf44+'楼至'+_0x5d7ccf+'楼详细总结记录】\x0a'+_0x508bfc;if(_0xf344ca){const _0x51a454=_0xf344ca['content'][_0x128c00(0xc2)](PROGRESS_SEAL_REGEX,'')[_0x128c00(0xa0)]();_0xf344ca[_0x128c00(0xa1)]=_0x51a454+_0x994677+_0xff3489;}else{const _0x3b8b56='以下是依照顺序已发生剧情'+_0x994677,_0x275bb4=createWorldInfoEntry(_0x488b1d,_0x5c703f),_0x22eade=_0x1376a0[_0x128c00(0xe2)][_0x128c00(0xb4)](',')['map'](_0x521b7f=>_0x521b7f[_0x128c00(0xa0)]())[_0x128c00(0xc5)](Boolean),_0x415d40=_0x1376a0['loreActivationMode']===_0x128c00(0x101),_0x67087d={'before_char':0x0,'after_char':0x1,'before_an':0x2,'after_an':0x3,'at_depth':0x4};Object[_0x128c00(0xf4)](_0x275bb4,{'comment':RUNNING_LOG_COMMENT,'content':_0x3b8b56+_0xff3489,'key':_0x22eade,'constant':_0x415d40,'position':_0x67087d[_0x1376a0[_0x128c00(0xf8)]]??0x4,'depth':_0x1376a0[_0x128c00(0xf5)],'disable':![]});}await saveWorldInfo(_0x488b1d,_0x5c703f,!![]),toastr[_0x128c00(0xb5)](_0x128c00(0xf3),_0x500f9c+'完毕');}catch(_0x41f8b8){console[_0x128c00(0xf0)]('[大史官]\x20'+_0x500f9c+_0x128c00(0xe6),_0x41f8b8),toastr[_0x128c00(0xf0)]('写入'+_0x500f9c+'时发生错误。',_0x128c00(0xce));}}export async function executeRefinement(_0x61c44c,_0x4f3f6b){const _0x5866a1=_0x246793;toastr[_0x5866a1(0xb6)]('遵旨!正在为您重铸《'+_0x61c44c+_0x5866a1(0xbd),'宏史卷重铸');try{const _0x368166=await loadWorldInfo(_0x61c44c),_0x123024=_0x368166?.[_0x5866a1(0x11c)][_0x4f3f6b];if(!_0x123024){toastr[_0x5866a1(0xf0)](_0x5866a1(0xf6),_0x5866a1(0x11f));return;}const _0x29dd07=_0x123024[_0x5866a1(0xa1)],_0x2f8679=extension_settings[extensionName];let _0x44d445=_0x29dd07,_0x22b236='',_0x48b7d4=0x0;const _0x2b2d95=_0x29dd07[_0x5866a1(0xea)](PROGRESS_SEAL_REGEX);_0x2b2d95&&(_0x22b236=_0x2b2d95[0x0],_0x48b7d4=parseInt(_0x2b2d95[0x1],0xa),_0x44d445=_0x29dd07['replace'](PROGRESS_SEAL_REGEX,'')[_0x5866a1(0xa0)]());if(!_0x44d445[_0x5866a1(0xa0)]()){toastr[_0x5866a1(0x120)](_0x5866a1(0x114),_0x5866a1(0xbe));return;}const _0x184201=[{'role':_0x5866a1(0x11e),'content':_0x2f8679[_0x5866a1(0xca)]},{'role':_0x5866a1(0x11e),'content':_0x2f8679[_0x5866a1(0xa9)]},{'role':'user','content':_0x5866a1(0x11a)+_0x44d445}],_0x2f320d=await callAmily2Model(_0x184201);if(!_0x2f320d)return;const _0x27d8fd=_0x5866a1(0xbf)+_0x48b7d4+_0x5866a1(0xc7),_0x29a594=_0x27d8fd+_0x2f320d;_0x123024[_0x5866a1(0xa1)]=_0x29a594+('\x0a\x0a'+_0x22b236),_0x123024['comment']=_0x123024[_0x5866a1(0xd8)][_0x5866a1(0xc2)](/\s*\(已精炼\)|\s*\(宏史卷重铸\)/g,''),_0x123024['comment']+=_0x5866a1(0x107),await saveWorldInfo(_0x61c44c,_0x368166,!![]),toastr[_0x5866a1(0xb5)]('史册已成功重铸,并保存于《'+_0x61c44c+'》!',_0x5866a1(0xfd));}catch(_0x26c21f){console[_0x5866a1(0xf0)](_0x5866a1(0xda),_0x26c21f),toastr['error'](_0x5866a1(0xfe),_0x5866a1(0xce));}}function _0x3ea8(){const _0x15a5c5=['4iuJQXP','426qGrapY','message','无标题条目','\x20层的对话历史...','微言录\x20(自动)','远征失败','groupCollapsed','史册条目中无可供重铸的内容。','远征已在准备阶段遵令暂停!','choices','characterId','status','远征军已开拔!目标:','请将以下多个零散的“详细总结记录”提炼并融合成一段连贯的章节历史。原文如下:\x0a\x0a','dispatchEvent','entries','19523YIKzXq','system','圣谕有误','warning','data','groupEnd','通讯中断','trim','content','20270682IDrUSX','text','json','join','[大史官-远征失败]','/v1/chat/completions','鸣金收兵','historiographyLargeRefinePrompt','[大史官-通讯异常]','楼总结已完成】否则后续总结无法进行。','historiographySmallSummaryPrompt','slice','name1','未知的史册写入指令','character_main','application/json','\x0a\x0a---\x0a\x0a【','远征已遵从您的敕令暂停!随时可以【继续远征】。','split','success','info','dedicated','/v1/','停战敕令已下达!远征军将在完成当前批次的任务后休整。','chat','mes','historiographySmallTriggerThreshold','》中的【微言录合集】...','国库空虚','以下内容是【1楼-','国史已是最新,远征军无需出动。','573149QSrxEX','replace','[大史官-通讯异常]\x20您提供的API\x20URL格式不正确,无法解析。','远征军已在营中,无需下达停战敕令。','filter','amily2-expedition-state-change','楼】已发生的剧情回顾。\x0a\x0a---\x0a\x0a','微言录\x20(手动)','197832KCXZni','historiographyLargeJailbreakPrompt','当前角色未绑定主世界书,无法写入总结。','stringify','table','国史馆','圣谕传达','\x0a\x0a本条勿动【前','[大史官]\x20阅览《','historiographySmallJailbreakPrompt','\x20层历史,分\x20','远征途中遭遇重大挫折,任务中止!您可以随时【继续远征】。','world','href','》时出错:','comment','extensions','[大史官]\x20重铸任务失败:','endsWith','远征完毕','》天机时出错:','includes','远征军已在途中,无需重复下令。','911724sfQWBU','find','loreKeywords','与模型B通讯时发生异常:\x20','通讯异常','遵旨!正在为您熔铸\x20','写入失败:','【敕史局】对话流水总帐','1696084fImbHj','API\x20URL格式错误,大史官无法出征。','match','values','[Amily2-大史官]\x20准备向模型B发送机密信函...\x20@\x20','模型B召唤失败:\x20','min','选定的楼层范围内无有效对话。','error','\x20-\x20','log','编年史已成功更新!','assign','loreDepth','找不到指定的史册条目,重铸任务中止。','803200ZEPFZJ','loreInsertionPosition','\x20至\x20','[大史官-通讯失败]','\x0a</对话记录>','圣谕悉知','宏史卷重铸完毕','重铸史册时发生错误。','map','Amily2-Lore-','always','Bearer\x20','当前角色未绑定主世界书,远征军无法开拔!','lorebookTarget','historiographySmallAutoEnable','disable','\x20(宏史卷重铸)','pathname','[大史官]\x20检阅《','圣谕不明','length'];_0x3ea8=function(){return _0x15a5c5;};return _0x3ea8();}export async function executeExpedition(){const _0x466ee1=_0x246793;if(isExpeditionRunning){toastr[_0x466ee1(0xb6)](_0x466ee1(0xdf),_0x466ee1(0xfc));return;}isExpeditionRunning=!![],manualStopRequested=![],document[_0x466ee1(0x11b)](new CustomEvent(_0x466ee1(0xc6),{'detail':{'isRunning':!![]}}));try{const _0x276a84=extension_settings[extensionName],_0x2117db=getContext();let _0x17fed4=null;switch(_0x276a84[_0x466ee1(0x104)]){case'character_main':_0x17fed4=characters[_0x2117db[_0x466ee1(0x117)]]?.['data']?.['extensions']?.['world'];if(!_0x17fed4){toastr[_0x466ee1(0xf0)](_0x466ee1(0x103),_0x466ee1(0x10a)),isExpeditionRunning=![],document['dispatchEvent'](new CustomEvent(_0x466ee1(0xc6),{'detail':{'isRunning':![],'manualStop':![]}}));return;}break;case _0x466ee1(0xb7):const _0xd5a2c2=await getChatIdentifier();_0x17fed4=_0x466ee1(0x100)+_0xd5a2c2;break;default:toastr[_0x466ee1(0xf0)]('未知的史册写入目标,远征军无法开拔!',_0x466ee1(0x10a)),isExpeditionRunning=![],document[_0x466ee1(0x11b)](new CustomEvent(_0x466ee1(0xc6),{'detail':{'isRunning':![],'manualStop':![]}}));return;}const _0x3a2af6=await readGoldenLedgerProgress(_0x17fed4),_0x3e48ac=_0x2117db['chat'][_0x466ee1(0x10b)],_0x5ac9b2=_0x3e48ac-_0x3a2af6;if(_0x5ac9b2<=0x0){toastr['info'](_0x466ee1(0xc0),'凯旋'),isExpeditionRunning=![],document[_0x466ee1(0x11b)](new CustomEvent(_0x466ee1(0xc6),{'detail':{'isRunning':![],'manualStop':![]}}));return;}const _0x5deb27=_0x276a84[_0x466ee1(0xbc)],_0x19598d=Math['ceil'](_0x5ac9b2/_0x5deb27);toastr[_0x466ee1(0xb6)](_0x466ee1(0x119)+_0x5ac9b2+_0x466ee1(0xd3)+_0x19598d+'\x20批次征服!','远征开始');let _0x45260c=_0x3a2af6;for(let _0x439965=0x0;_0x439965<_0x19598d;_0x439965++){if(manualStopRequested){toastr[_0x466ee1(0x120)](_0x466ee1(0xb3),_0x466ee1(0xa8));break;}const _0x4a92d7=_0x45260c+0x1,_0xe9e01a=Math[_0x466ee1(0xee)](_0x45260c+_0x5deb27,_0x3e48ac),_0x4d83a2='远征战役\x20('+(_0x439965+0x1)+'/'+_0x19598d+')',_0x519c9c=0x7d0;_0x439965>0x0&&(toastr['info']('第\x20'+(_0x439965+0x1)+'\x20批次战役准备中...\x20('+_0x519c9c/0x3e8+'秒后接敌)',_0x4d83a2),await new Promise(_0x50f050=>setTimeout(_0x50f050,_0x519c9c)));if(manualStopRequested){toastr[_0x466ee1(0x120)](_0x466ee1(0x115),_0x466ee1(0xa8));break;}await executeManualSummary(_0x4a92d7,_0xe9e01a,!![]),_0x45260c=_0xe9e01a;}!manualStopRequested&&toastr['success']('凯旋!远征大捷!所有未载之史均已化为帝国永恒的记忆!',_0x466ee1(0xdc));}catch(_0x41ce96){console['error'](_0x466ee1(0xa6),_0x41ce96),toastr[_0x466ee1(0xf0)](_0x466ee1(0xd4),_0x466ee1(0x112));}finally{isExpeditionRunning=![],document[_0x466ee1(0x11b)](new CustomEvent(_0x466ee1(0xc6),{'detail':{'isRunning':![],'manualStop':manualStopRequested}}));}}export function stopExpedition(){const _0x2d7915=_0x246793;isExpeditionRunning?(manualStopRequested=!![],toastr[_0x2d7915(0xb6)](_0x2d7915(0xb9),_0x2d7915(0xcf))):toastr[_0x2d7915(0x120)](_0x2d7915(0xc4),_0x2d7915(0xfc));}
|