mirror of
https://github.com/SilenceLurker/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 11:15:50 +00:00
2 lines
8.6 KiB
JavaScript
2 lines
8.6 KiB
JavaScript
(function(_0x149a48,_0x4b56c4){const _0x5919c2=_0x2bf3,_0x451839=_0x149a48();while(!![]){try{const _0x2b2c93=parseInt(_0x5919c2(0x1f6))/0x1*(-parseInt(_0x5919c2(0x20c))/0x2)+parseInt(_0x5919c2(0x21b))/0x3+parseInt(_0x5919c2(0x206))/0x4*(parseInt(_0x5919c2(0x1f9))/0x5)+parseInt(_0x5919c2(0x20a))/0x6+-parseInt(_0x5919c2(0x1ff))/0x7+parseInt(_0x5919c2(0x20f))/0x8*(parseInt(_0x5919c2(0x204))/0x9)+parseInt(_0x5919c2(0x1fb))/0xa*(parseInt(_0x5919c2(0x210))/0xb);if(_0x2b2c93===_0x4b56c4)break;else _0x451839['push'](_0x451839['shift']());}catch(_0x50a071){_0x451839['push'](_0x451839['shift']());}}}(_0x413c,0x52d67));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat}from'/script.js';import{renderTables}from'../../ui/table-bindings.js';import{extensionName}from'../../utils/settings.js';function _0x2bf3(_0x55d571,_0x42dd8f){const _0x413c7e=_0x413c();return _0x2bf3=function(_0x2bf3ca,_0x551ce0){_0x2bf3ca=_0x2bf3ca-0x1ef;let _0x4ab635=_0x413c7e[_0x2bf3ca];return _0x4ab635;},_0x2bf3(_0x55d571,_0x42dd8f);}import{updateTableFromText,getBatchFillerRuleTemplate,getBatchFillerFlowTemplate,convertTablesToCsvString,saveStateToMessage,getMemoryState}from'./manager.js';import{getPresetPrompts,getMixedOrder}from'../../PresetSettings/index.js';function _0x413c(){const _0x2f3328=['secondary-api','[Amily2-副API]\x20未能获取AI响应内容。','chat','prompt','filling_mode','error','thinkingFramework','secondary_filler','请严格根据以下\x22最新消息\x22中的内容进行填写表格,并按照指定的格式输出,不要添加任何额外信息。\x0a\x0a<最新消息>\x0a','222324Sjieow','timeEnd','[Amily2-副API]\x20发生严重错误:','replace','secondaryApiUrlWarned','length','[Amily2-副API]\x20消息内容为空,跳过填表任务。','system','parse','groupCollapsed','1uOgxWK','getItem','user','1092495sqhRAF','log','30wrEbmq','主API的URL或模型未配置,分步填表功能无法启动。','push','{{{Amily2TableData}}}','2397640AeRVxp','coreContent','groupEnd','ruleTemplate','\x0a</最新消息>','1428066JGnKqI','name1','8VegkmX','[副API填表]\x20加载混合顺序失败:','amily2_prompt_presets_v2_mixed_order','message','800220OYVIuG','[Amily2号-副API-原始回复]:','676322LZeGld','mes','type','8lILNyJ','795058sBdnwI','副API填表任务总耗时'];_0x413c=function(){return _0x2f3328;};return _0x413c();}import{callAI,generateRandomSeed}from'../api.js';export async function fillWithSecondaryApi(_0x3b99db){const _0x21c168=_0x2bf3,_0x5e8389=extension_settings[extensionName],_0x25b38a=_0x5e8389[_0x21c168(0x216)]||'main-api';if(_0x25b38a!=='secondary-api')return;if(window['AMILY2_SYSTEM_PARALYZED']===!![]){console[_0x21c168(0x217)]('[Amily2-制裁]\x20系统完整性已受损,所有外交活动被无限期中止。');return;}const {apiUrl:_0xa22e35,apiKey:_0x2fb1b7,model:_0x6b832e,temperature:_0x6012a6,maxTokens:_0x5a7db1,forceProxyForCustomApi:_0x2a4610}=_0x5e8389;if(!_0xa22e35||!_0x6b832e){!window[_0x21c168(0x1f0)]&&(toastr['error'](_0x21c168(0x1fc),'Amily2-分步填表'),window[_0x21c168(0x1f0)]=!![]);return;}try{const _0x48675b=_0x3b99db[_0x21c168(0x20d)];if(!_0x48675b||!_0x48675b['trim']()){console[_0x21c168(0x1fa)](_0x21c168(0x1f2)),console[_0x21c168(0x21c)](_0x21c168(0x211)),console['groupEnd']();return;}const _0x44b418=getContext(),_0x2fa311=_0x44b418[_0x21c168(0x205)]||'用户',_0xb6218f=_0x44b418['name2']||'角色',_0x593517=_0x44b418[_0x21c168(0x214)],_0x3f7147=_0x593517[_0x21c168(0x1f1)]>0x1&&_0x593517[_0x593517['length']-0x2]['is_user']?_0x593517[_0x593517[_0x21c168(0x1f1)]-0x2]:null,_0x58d157=_0x3f7147?_0x2fa311+'(用户)最新消息:'+_0x3f7147[_0x21c168(0x20d)]+'\x0a'+_0xb6218f+'(AI)最新消息,[核心处理内容]:'+_0x48675b:_0xb6218f+'(AI)最新消息,[核心处理内容]:'+_0x48675b;let _0x2d8dbd;try{const _0x408fb7=localStorage[_0x21c168(0x1f7)](_0x21c168(0x208));_0x408fb7&&(_0x2d8dbd=JSON[_0x21c168(0x1f4)](_0x408fb7));}catch(_0x1e28c6){console[_0x21c168(0x217)](_0x21c168(0x207),_0x1e28c6);}const _0x47466c=getMixedOrder('secondary_filler')||[],_0x2526ae=getPresetPrompts(_0x21c168(0x219)),_0x360e1a=[{'role':_0x21c168(0x1f3),'content':generateRandomSeed()}],_0x39f351=getBatchFillerRuleTemplate(),_0x21bdc1=getBatchFillerFlowTemplate(),_0xd8ba15=convertTablesToCsvString(),_0x1f301a=_0x21bdc1[_0x21c168(0x1ef)](_0x21c168(0x1fe),_0xd8ba15);let _0x33db6d=0x0;for(const _0xa9d011 of _0x47466c){if(_0xa9d011[_0x21c168(0x20e)]===_0x21c168(0x215))_0x2526ae&&_0x2526ae[_0x33db6d]&&(_0x360e1a[_0x21c168(0x1fd)](_0x2526ae[_0x33db6d]),_0x33db6d++);else{if(_0xa9d011['type']==='conditional')switch(_0xa9d011['id']){case _0x21c168(0x202):_0x360e1a['push']({'role':_0x21c168(0x1f3),'content':_0x39f351});break;case'flowTemplate':_0x360e1a[_0x21c168(0x1fd)]({'role':_0x21c168(0x1f3),'content':_0x1f301a});break;case _0x21c168(0x200):_0x360e1a['push']({'role':_0x21c168(0x1f8),'content':_0x21c168(0x21a)+_0x58d157+_0x21c168(0x203)});break;case _0x21c168(0x218):_0x360e1a[_0x21c168(0x1fd)]({'role':_0x21c168(0x1f3),'content':'#\x20通用表格转换思考框架\x0a##\x20核心原则\x0a1.\x20将叙事内容转化为结构化数据\x0a2.\x20聚焦关键元素变更\x0a3.\x20保证数据真实性与一致性\x0a##\x20思考流程\x20(<thinking></thinking>)\x0a请严格按此框架思考并在<thinking>标签内输出:\x0a<thinking>\x0a1.\x20【时间地点分析】\x0a\x20\x20\x20-\x20当前时态:现在是什么年份/季节/日期?具体几点几分?\x0a\x20\x20\x20-\x20空间定位:故事发生在什么场景(建筑/自然等)?具体位置?\x0a\x20\x20\x20-\x20变更检测:相比之前,时间地点是否有显著变化?\x0a2.\x20【角色动态分析】\x0a\x20\x20\x20-\x20在场角色:当前场景有哪些角色存在?\x0a\x20\x20\x20-\x20新增角色:是否有首次出现的角色?\x0a\x20\x20\x20-\x20角色变化:\x0a\x20\x20\x20\x20\x20-\x20外貌特征:体型/发型/穿戴着装\x0a\x20\x20\x20\x20\x20-\x20状态变化:受伤/情绪/随身物品\x0a\x20\x20\x20\x20\x20-\x20关系变动:新建立/改变的关系\x0a\x20\x20\x20-\x20角色语录:有否揭示角色背景的关键对话?\x0a3.\x20【任务进展追踪】\x0a\x20\x20\x20-\x20活跃任务:正在进行哪些重要事项?\x0a\x20\x20\x20-\x20新任务:是否产生新的承诺/任务?\x0a\x20\x20\x20-\x20状态更新:任何任务进度变化?\x0a\x20\x20\x20-\x20任务闭环:有无完成或失败的任务?\x0a4.\x20【关键物品识别】\x0a\x20\x20\x20-\x20特殊物品:有无意义重大的物品出现?\x0a\x20\x20\x20-\x20物品变动:\x0a\x20\x20\x20\x20\x20-\x20获取/丢失物品\x0a\x20\x20\x20\x20\x20-\x20使用/损耗情况\x0a\x20\x20\x20\x20\x20-\x20所有权变更\x0a5.\x20【系统指令响应】\x20(仅处理明确指令)\x0a\x20\x20\x20-\x20识别:是否有来自叙事者的指令?(括号标注)\x0a\x20\x20\x20-\x20响应:完全执行/拒绝无效指令\x0a6.\x20【逻辑校验】\x0a\x20\x20\x20-\x20矛盾解决:处理相互冲突的信息\x0a\x20\x20\x20-\x20数据溯源:标注信息提取位置(例:第3段)\x0a\x20\x20\x20-\x20过滤机制:忽略临时/不重要的描写\x0a\x20\x20\x20-\x20必须填表:无论表格是否为新,都需要结合正文与现有表格内容,进行更新。\x0a\x20\x20\x20-\x20必须填充:当内容为\x22未知\x22或者\x22无\x22的表格,必须结合现知内容补全。\x0a##\x20通用输出规范\x0a-\x20时间格式:YYYY-MM-DD\x20HH:MM\x0a-\x20地点格式:[建筑]>[具体位置]\x20(例:城堡>东侧塔楼)\x0a-\x20角色引用:统一使用全名首次出现\x0a-\x20状态标记:使用标准状态词(进行中/已完成/已取消)\x0a</thinking>\x0a<Amily2Edit>\x0a<!--\x0a(这里是你的填表内容)\x0a-->\x0a</Amily2Edit>\x0a<finsh>The\x20form\x20filling\x20work\x20has\x20been\x20completed.</finsh>'});break;}}}const _0xbf536a=_0x5e8389[_0x21c168(0x216)]||'main-api';_0xbf536a===_0x21c168(0x212)&&(console[_0x21c168(0x1f5)]('[Amily2\x20分步填表]\x20即将发送至\x20API\x20的内容'),console['dir'](_0x360e1a),console[_0x21c168(0x201)]());const _0x577529=await callAI(_0x360e1a);if(!_0x577529){console[_0x21c168(0x217)](_0x21c168(0x213));return;}console['log'](_0x21c168(0x20b),_0x577529),updateTableFromText(_0x577529);const _0x181950=getContext();if(_0x181950['chat']&&_0x181950[_0x21c168(0x214)][_0x21c168(0x1f1)]>0x0){const _0x414465=_0x181950['chat'][_0x181950[_0x21c168(0x214)]['length']-0x1];if(saveStateToMessage(getMemoryState(),_0x414465)){saveChat(),renderTables();return;}}saveChatDebounced();}catch(_0x41af8e){console[_0x21c168(0x217)](_0x21c168(0x21d),_0x41af8e),toastr[_0x21c168(0x217)]('副API填表失败:\x20'+_0x41af8e[_0x21c168(0x209)],'严重错误');}}
|