Files
ST-Amily2-Chat-Optimisation…/core/historiographer.js
2025-07-13 18:30:38 +08:00

2 lines
16 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 _0x243cb7=_0x3dba;(function(_0x53a914,_0x149947){const _0x4ac356=_0x3dba,_0x112b4b=_0x53a914();while(!![]){try{const _0x303b00=-parseInt(_0x4ac356(0x165))/0x1*(parseInt(_0x4ac356(0x1cc))/0x2)+parseInt(_0x4ac356(0x1c5))/0x3+-parseInt(_0x4ac356(0x19c))/0x4*(parseInt(_0x4ac356(0x171))/0x5)+-parseInt(_0x4ac356(0x1b0))/0x6+-parseInt(_0x4ac356(0x1ab))/0x7+-parseInt(_0x4ac356(0x1d8))/0x8+parseInt(_0x4ac356(0x1be))/0x9;if(_0x303b00===_0x149947)break;else _0x112b4b['push'](_0x112b4b['shift']());}catch(_0x47faf6){_0x112b4b['push'](_0x112b4b['shift']());}}}(_0xb173,0xf2e3e));import{getContext,extension_settings}from'/scripts/extensions.js';function _0xb173(){const _0x5d716c=['用户消息:','圣谕传达','character_main','text','国史馆','replace','远征军已在营中,无需下达停战敕令。','宏史卷重铸','【信函正文\x20(messages)】:','》天机时出错:','远征已遵从您的敕令暂停!随时可以【继续远征】。','table','\x20层历史分\x20','\x20(宏史卷重铸)','未知的史册写入指令','world','historiographyLargeRefinePrompt','/chat/completions','1113732aUtINT','编年史已成功更新!','dedicated','鸣金收兵','historiographySmallAutoEnable','userName','dispatchEvent','groupCollapsed','[大史官-通讯失败]','请严格根据以下“对话记录”中的内容进行总结,不要添加任何额外信息。\x0a\x0a<对话记录>\x0a','loreInsertionPosition','mes','国史已是最新,远征军无需出动。','远征已在准备阶段遵令暂停!','json','8242073PXvBFf','status','log','模型B召唤失败:\x20','loreDepth','1496784vVDRLC','\x20层的对话历史...','史册已成功重铸,并保存于《','远征军已开拔!目标:','国库空虚','values','historiographySmallSummaryPrompt','[大史官]\x20阅览《','以下是依照顺序已发生剧情','length','name','stringify','楼总结已完成】否则后续总结无法进行。','split','36087318EaHsig','filter','assign','Bearer\x20','content','选定的楼层范围内无有效对话。','toLocaleTimeString','4498149bHuNrD','historiographySmallTriggerThreshold','宏史卷重铸完毕','》中的【微言录合集】...','comment','未知的史册写入目标,远征军无法开拔!','远征途中遭遇重大挫折,任务中止!您可以随时【继续远征】。','2mlMJZo','找不到指定的史册条目,重铸任务中止。','史册条目中无可供重铸的内容。','\x0a\x0a---\x0a\x0a【','choices','historiographyLargeJailbreakPrompt','user','远征开始','success','时发生错误。','entries','【信函参数】','8565200dMbiuC','characterId','微言录\x20(自动)','楼详细总结记录】\x0a','map','角色回复:','停战敕令已下达!远征军将在完成当前批次的任务后休整。','push','\x20至\x20','》时出错:','微言录\x20(手动)','当前角色未绑定主世界书,无法写入总结。','min','system','1738221OMmlyP','【敕史局】对话流水总帐','warning','find','[大史官]\x20重铸任务失败:','[大史官-通讯异常]','includes','disable','远征完毕','以下内容是【1楼-','error','\x0a\x0a本条勿动【前','5CazbsW','chat','凯旋!远征大捷!所有未载之史均已化为帝国永恒的记忆!','[大史官]\x20','写入失败:','amily2-expedition-state-change','is_user','slice','与模型B通讯时发生网络异常','data','Amily2-Lore-','通讯异常','遵旨!正在为您熔铸\x20','info','trim','圣谕有误','ceil','通讯中断','extensions','[大史官-远征失败]','lorebookTarget','遵旨!正在为您重铸《','\x20批次战役准备中...\x20(','圣谕悉知','[大史官]\x20检阅《'];_0xb173=function(){return _0x5d716c;};return _0xb173();}function _0x3dba(_0x5382e9,_0x196a75){const _0xb17308=_0xb173();return _0x3dba=function(_0x3dba4e,_0x19889f){_0x3dba4e=_0x3dba4e-0x160;let _0x14882e=_0xb17308[_0x3dba4e];return _0x14882e;},_0x3dba(_0x5382e9,_0x196a75);}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(_0x8831a7){const _0x15536e=_0x3dba,_0x4155e4=extension_settings[extensionName],{apiUrl:_0x545967,apiKey:_0x5d764a,model:_0xabc01,temperature:_0x195fdc,maxTokens:_0x53f092}=_0x4155e4;if(!_0x545967||!_0xabc01)return toastr[_0x15536e(0x16f)]('API\x20URL或模型未配置无法召唤模型B。',_0x15536e(0x182)),null;console[_0x15536e(0x1a3)]('[Amily2-大史官]\x20准备向模型B发送机密信函...\x20@\x20'+new Date()[_0x15536e(0x1c4)]()),console[_0x15536e(0x1ad)](_0x15536e(0x1d7),{'model':_0xabc01,'temperature':_0x195fdc,'maxTokens':_0x53f092}),console[_0x15536e(0x1ad)](_0x15536e(0x192)),console[_0x15536e(0x195)](_0x8831a7),console['groupEnd']();try{const _0x55eac8=await fetch(_0x545967+_0x15536e(0x19b),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x15536e(0x1c1)+_0x5d764a},'body':JSON[_0x15536e(0x1bb)]({'model':_0xabc01,'messages':_0x8831a7,'temperature':_0x195fdc,'max_tokens':_0x53f092,'stream':![]})});if(!_0x55eac8['ok']){const _0x128b89=await _0x55eac8[_0x15536e(0x18d)]();return console['error'](_0x15536e(0x1a4),_0x55eac8[_0x15536e(0x1ac)],_0x128b89),toastr['error'](_0x15536e(0x1ae)+_0x55eac8['status'],'通讯失败'),null;}const _0x242800=await _0x55eac8[_0x15536e(0x1aa)]();return _0x242800[_0x15536e(0x1d0)][0x0]['message'][_0x15536e(0x1c2)];}catch(_0x172687){return console[_0x15536e(0x16f)](_0x15536e(0x16a),_0x172687),toastr[_0x15536e(0x16f)](_0x15536e(0x179),_0x15536e(0x17c)),null;}}const RUNNING_LOG_COMMENT=_0x243cb7(0x166),PROGRESS_SEAL_REGEX=/本条勿动【前(\d+)楼总结已完成】否则后续总结无法进行。$/;async function readGoldenLedgerProgress(_0x3268b1){const _0x592138=_0x243cb7;if(!_0x3268b1)return 0x0;try{const _0x232bdd=await loadWorldInfo(_0x3268b1);if(!_0x232bdd||!_0x232bdd[_0x592138(0x1d6)])return 0x0;const _0x3b50cf=Object[_0x592138(0x1b5)](_0x232bdd[_0x592138(0x1d6)])['find'](_0x2bc232=>_0x2bc232['comment']===RUNNING_LOG_COMMENT&&!_0x2bc232['disable']);if(!_0x3b50cf)return 0x0;const _0x5cba24=_0x3b50cf[_0x592138(0x1c2)]['match'](PROGRESS_SEAL_REGEX);return _0x5cba24?parseInt(_0x5cba24[0x1],0xa):0x0;}catch(_0x339105){return console[_0x592138(0x16f)](_0x592138(0x1b7)+_0x3268b1+_0x592138(0x193),_0x339105),0x0;}}export async function checkAndTriggerAutoSummary(){const _0x55a81f=_0x243cb7,_0x27324d=extension_settings[extensionName];if(!_0x27324d[_0x55a81f(0x1a0)])return;const _0x53b987=getContext();let _0x38172b=null;switch(_0x27324d['lorebookTarget']){case _0x55a81f(0x18c):_0x38172b=characters[_0x53b987[_0x55a81f(0x1d9)]]?.['data']?.[_0x55a81f(0x183)]?.['world'];break;case'dedicated':const _0x243e9e=await getChatIdentifier();_0x38172b='Amily2-Lore-'+_0x243e9e;break;default:return;}if(!_0x38172b)return;const _0x2d04bb=await readGoldenLedgerProgress(_0x38172b),_0x5e8a39=_0x53b987['chat'][_0x55a81f(0x1b9)],_0x1fa1de=_0x5e8a39-_0x2d04bb;if(_0x1fa1de>=_0x27324d[_0x55a81f(0x1c6)]){const _0x47dc82=_0x2d04bb+0x1,_0x227209=_0x5e8a39;await executeManualSummary(_0x47dc82,_0x227209,!![]);}}export async function getAvailableWorldbooks(){return[...world_names];}export async function getLoresForWorldbook(_0x50f9ff){const _0x27575b=_0x243cb7;if(!_0x50f9ff)return[];try{const _0x43507c=await loadWorldInfo(_0x50f9ff);if(!_0x43507c||!_0x43507c[_0x27575b(0x1d6)])return[];return Object['entries'](_0x43507c[_0x27575b(0x1d6)])[_0x27575b(0x1bf)](([,_0x1c44d9])=>!_0x1c44d9[_0x27575b(0x16c)])[_0x27575b(0x1dc)](([_0x11cf76,_0x257759])=>({'key':_0x11cf76,'comment':_0x257759[_0x27575b(0x1c9)]||'无标题条目'}));}catch(_0x436c49){return console[_0x27575b(0x16f)](_0x27575b(0x189)+_0x50f9ff+_0x27575b(0x160),_0x436c49),[];}}export async function executeManualSummary(_0x24f4cc,_0x4d0014,_0x14a7f1=![]){const _0xacad80=_0x243cb7,_0x117e57=_0x14a7f1?_0xacad80(0x1da):_0xacad80(0x161);toastr[_0xacad80(0x17e)](_0xacad80(0x17d)+_0x24f4cc+_0xacad80(0x1e0)+_0x4d0014+_0xacad80(0x1b1),_0x117e57);const _0x5c1329=getContext(),_0x12cc23=_0x5c1329[_0xacad80(0x172)],_0x39309e=extension_settings[extensionName],_0xd13f0e=_0x12cc23[_0xacad80(0x178)](_0x24f4cc,_0x4d0014+0x1);if(_0xd13f0e[_0xacad80(0x1b9)]===0x0){toastr[_0xacad80(0x167)](_0xacad80(0x1c3),_0xacad80(0x180));return;}const _0x3a6830=_0x5c1329[_0xacad80(0x1a1)]||'用户',_0x1b6949=characters[_0x5c1329[_0xacad80(0x1d9)]]?.[_0xacad80(0x1ba)]||'角色';let _0x50552c='';const _0x51c0c6=[];for(let _0x2d6441=0x0;_0x2d6441<_0xd13f0e['length'];_0x2d6441++){if(_0xd13f0e[_0x2d6441][_0xacad80(0x177)]){const _0x1497fa=_0xacad80(0x18a)+_0xd13f0e[_0x2d6441][_0xacad80(0x1a7)];if(_0x2d6441+0x1<_0xd13f0e[_0xacad80(0x1b9)]&&!_0xd13f0e[_0x2d6441+0x1]['is_user']){const _0x5f681a='角色回复:'+_0xd13f0e[_0x2d6441+0x1][_0xacad80(0x1a7)];_0x51c0c6[_0xacad80(0x1df)](_0x1497fa+'。'+_0x5f681a),_0x2d6441++;}else _0x51c0c6[_0xacad80(0x1df)](_0x1497fa);}else _0x51c0c6['push'](_0xacad80(0x1dd)+_0xd13f0e[_0x2d6441]['mes']);}_0x50552c=_0x51c0c6[_0xacad80(0x1dc)]((_0x5d380d,_0x19179c)=>_0x19179c+0x1+''+_0x5d380d)['join']('\x0a');const _0x2afa97=[{'role':_0xacad80(0x164),'content':_0x39309e['historiographySmallJailbreakPrompt']},{'role':_0xacad80(0x164),'content':_0x39309e[_0xacad80(0x1b6)]},{'role':_0xacad80(0x1d2),'content':_0xacad80(0x1a5)+_0x50552c+'\x0a</对话记录>'}],_0x12cddc=await callAmily2Model(_0x2afa97);if(!_0x12cddc)return;try{let _0x3be460=null;switch(_0x39309e[_0xacad80(0x185)]){case _0xacad80(0x18c):_0x3be460=characters[_0x5c1329[_0xacad80(0x1d9)]]?.[_0xacad80(0x17a)]?.[_0xacad80(0x183)]?.['world'];if(!_0x3be460){toastr[_0xacad80(0x16f)](_0xacad80(0x162),_0xacad80(0x18e));return;}break;case'dedicated':const _0x1ccb40=await getChatIdentifier();_0x3be460=_0xacad80(0x17b)+_0x1ccb40;!world_names[_0xacad80(0x16b)](_0x3be460)&&await createNewWorldInfo(_0x3be460);break;default:toastr[_0xacad80(0x16f)](_0xacad80(0x198),'圣谕不明');return;}const _0xe2efd0=await loadWorldInfo(_0x3be460),_0x51859d=Object[_0xacad80(0x1b5)](_0xe2efd0['entries'])[_0xacad80(0x168)](_0x199e38=>_0x199e38['comment']===RUNNING_LOG_COMMENT&&!_0x199e38[_0xacad80(0x16c)]),_0x4cec77=_0xacad80(0x170)+_0x4d0014+_0xacad80(0x1bc),_0xcc164c=_0xacad80(0x1cf)+_0x24f4cc+'楼至'+_0x4d0014+_0xacad80(0x1db)+_0x12cddc;if(_0x51859d){const _0x4e1b27=_0x51859d['content']['replace'](PROGRESS_SEAL_REGEX,'')[_0xacad80(0x17f)]();_0x51859d[_0xacad80(0x1c2)]=_0x4e1b27+_0xcc164c+_0x4cec77;}else{const _0x737537=_0xacad80(0x1b8)+_0xcc164c,_0x51d8f2=createWorldInfoEntry(_0x3be460,_0xe2efd0),_0x3ed3b1=_0x39309e['loreKeywords'][_0xacad80(0x1bd)](',')[_0xacad80(0x1dc)](_0x4fe99a=>_0x4fe99a[_0xacad80(0x17f)]())[_0xacad80(0x1bf)](Boolean),_0x4111b6=_0x39309e['loreActivationMode']==='always',_0x301f79={'before_char':0x0,'after_char':0x1,'before_an':0x2,'after_an':0x3,'at_depth':0x4};Object[_0xacad80(0x1c0)](_0x51d8f2,{'comment':RUNNING_LOG_COMMENT,'content':_0x737537+_0x4cec77,'key':_0x3ed3b1,'constant':_0x4111b6,'position':_0x301f79[_0x39309e[_0xacad80(0x1a6)]]??0x4,'depth':_0x39309e[_0xacad80(0x1af)],'disable':![]});}await saveWorldInfo(_0x3be460,_0xe2efd0,!![]),toastr['success'](_0xacad80(0x19d),_0x117e57+'完毕');}catch(_0x599c31){console[_0xacad80(0x16f)](_0xacad80(0x174)+_0x117e57+_0xacad80(0x175),_0x599c31),toastr[_0xacad80(0x16f)]('写入'+_0x117e57+_0xacad80(0x1d5),_0xacad80(0x18e));}}export async function executeRefinement(_0x3bd521,_0x32a30b){const _0x19ee62=_0x243cb7;toastr[_0x19ee62(0x17e)](_0x19ee62(0x186)+_0x3bd521+_0x19ee62(0x1c8),_0x19ee62(0x191));try{const _0x2b22f8=await loadWorldInfo(_0x3bd521),_0x45b4ff=_0x2b22f8?.[_0x19ee62(0x1d6)][_0x32a30b];if(!_0x45b4ff){toastr[_0x19ee62(0x16f)](_0x19ee62(0x1cd),'圣谕有误');return;}const _0x18ad2e=_0x45b4ff[_0x19ee62(0x1c2)],_0x3b6e10=extension_settings[extensionName];let _0x3c0e85=_0x18ad2e,_0x335d2d='',_0x551248=0x0;const _0x5b8cf1=_0x18ad2e['match'](PROGRESS_SEAL_REGEX);_0x5b8cf1&&(_0x335d2d=_0x5b8cf1[0x0],_0x551248=parseInt(_0x5b8cf1[0x1],0xa),_0x3c0e85=_0x18ad2e[_0x19ee62(0x18f)](PROGRESS_SEAL_REGEX,'')[_0x19ee62(0x17f)]());if(!_0x3c0e85[_0x19ee62(0x17f)]()){toastr[_0x19ee62(0x167)](_0x19ee62(0x1ce),_0x19ee62(0x1b4));return;}const _0x277812=[{'role':_0x19ee62(0x164),'content':_0x3b6e10[_0x19ee62(0x1d1)]},{'role':_0x19ee62(0x164),'content':_0x3b6e10[_0x19ee62(0x19a)]},{'role':_0x19ee62(0x1d2),'content':'请将以下多个零散的“详细总结记录”提炼并融合成一段连贯的章节历史。原文如下:\x0a\x0a'+_0x3c0e85}],_0x2473ef=await callAmily2Model(_0x277812);if(!_0x2473ef)return;const _0x501c1d=_0x19ee62(0x16e)+_0x551248+'楼】已发生的剧情回顾。\x0a\x0a---\x0a\x0a',_0x4ec76c=_0x501c1d+_0x2473ef;_0x45b4ff[_0x19ee62(0x1c2)]=_0x4ec76c+('\x0a\x0a'+_0x335d2d),_0x45b4ff[_0x19ee62(0x1c9)]=_0x45b4ff[_0x19ee62(0x1c9)][_0x19ee62(0x18f)](/\s*\(已精炼\)|\s*\(宏史卷重铸\)/g,''),_0x45b4ff['comment']+=_0x19ee62(0x197),await saveWorldInfo(_0x3bd521,_0x2b22f8,!![]),toastr['success'](_0x19ee62(0x1b2)+_0x3bd521+'》!',_0x19ee62(0x1c7));}catch(_0x76c25f){console[_0x19ee62(0x16f)](_0x19ee62(0x169),_0x76c25f),toastr[_0x19ee62(0x16f)]('重铸史册时发生错误。','国史馆');}}export async function executeExpedition(){const _0x7588c=_0x243cb7;if(isExpeditionRunning){toastr['info']('远征军已在途中,无需重复下令。',_0x7588c(0x188));return;}isExpeditionRunning=!![],manualStopRequested=![],document[_0x7588c(0x1a2)](new CustomEvent(_0x7588c(0x176),{'detail':{'isRunning':!![]}}));try{const _0x42e74a=extension_settings[extensionName],_0xb51060=getContext();let _0x549888=null;switch(_0x42e74a['lorebookTarget']){case _0x7588c(0x18c):_0x549888=characters[_0xb51060[_0x7588c(0x1d9)]]?.[_0x7588c(0x17a)]?.['extensions']?.[_0x7588c(0x199)];if(!_0x549888){toastr[_0x7588c(0x16f)]('当前角色未绑定主世界书,远征军无法开拔!','圣谕不明'),isExpeditionRunning=![],document[_0x7588c(0x1a2)](new CustomEvent('amily2-expedition-state-change',{'detail':{'isRunning':![],'manualStop':![]}}));return;}break;case _0x7588c(0x19e):const _0x57d51b=await getChatIdentifier();_0x549888=_0x7588c(0x17b)+_0x57d51b;break;default:toastr[_0x7588c(0x16f)](_0x7588c(0x1ca),'圣谕不明'),isExpeditionRunning=![],document[_0x7588c(0x1a2)](new CustomEvent(_0x7588c(0x176),{'detail':{'isRunning':![],'manualStop':![]}}));return;}const _0x82d411=await readGoldenLedgerProgress(_0x549888),_0x1dba6d=_0xb51060['chat'][_0x7588c(0x1b9)],_0x36bee9=_0x1dba6d-_0x82d411;if(_0x36bee9<=0x0){toastr['info'](_0x7588c(0x1a8),'凯旋'),isExpeditionRunning=![],document[_0x7588c(0x1a2)](new CustomEvent(_0x7588c(0x176),{'detail':{'isRunning':![],'manualStop':![]}}));return;}const _0x23bc6=_0x42e74a['historiographySmallTriggerThreshold'],_0x1ea482=Math[_0x7588c(0x181)](_0x36bee9/_0x23bc6);toastr[_0x7588c(0x17e)](_0x7588c(0x1b3)+_0x36bee9+_0x7588c(0x196)+_0x1ea482+'\x20批次征服',_0x7588c(0x1d3));let _0x2ec678=_0x82d411;for(let _0x213e64=0x0;_0x213e64<_0x1ea482;_0x213e64++){if(manualStopRequested){toastr[_0x7588c(0x167)](_0x7588c(0x194),_0x7588c(0x19f));break;}const _0x31f316=_0x2ec678+0x1,_0x231d7a=Math[_0x7588c(0x163)](_0x2ec678+_0x23bc6,_0x1dba6d),_0x4fe3b7='远征战役\x20('+(_0x213e64+0x1)+'/'+_0x1ea482+')',_0x420450=0x7d0;_0x213e64>0x0&&(toastr[_0x7588c(0x17e)]('第\x20'+(_0x213e64+0x1)+_0x7588c(0x187)+_0x420450/0x3e8+'秒后接敌)',_0x4fe3b7),await new Promise(_0x1fc047=>setTimeout(_0x1fc047,_0x420450)));if(manualStopRequested){toastr[_0x7588c(0x167)](_0x7588c(0x1a9),_0x7588c(0x19f));break;}await executeManualSummary(_0x31f316,_0x231d7a,!![]),_0x2ec678=_0x231d7a;}!manualStopRequested&&toastr[_0x7588c(0x1d4)](_0x7588c(0x173),_0x7588c(0x16d));}catch(_0x23a7ac){console[_0x7588c(0x16f)](_0x7588c(0x184),_0x23a7ac),toastr[_0x7588c(0x16f)](_0x7588c(0x1cb),'远征失败');}finally{isExpeditionRunning=![],document[_0x7588c(0x1a2)](new CustomEvent('amily2-expedition-state-change',{'detail':{'isRunning':![],'manualStop':manualStopRequested}}));}}export function stopExpedition(){const _0x16ac11=_0x243cb7;isExpeditionRunning?(manualStopRequested=!![],toastr[_0x16ac11(0x17e)](_0x16ac11(0x1de),_0x16ac11(0x18b))):toastr['warning'](_0x16ac11(0x190),_0x16ac11(0x188));}