release: v2.2.4 [2026-05-30 13:03:07]

### 新功能
- **Function Call 填表**:
  - FC 首次请求时对 DeepSeek 系模型自动附加 `thinking: { type: "disabled" }`,避免思考模式与 tool_choice 冲突
  - 操作列表为空时在日志面板输出原始响应 JSON,便于区分"AI 判断无需变更"、"格式校验全部不通过"和"JSON 解析失败"三种情况
### 修复
- **剧情优化**:移除剧情优化页面遗留的 Jqyh 直连配置字段(URL / Key / Model),统一走 API 连接配置功能分配槽位
- **表格**:
  - 补全 `batch-filling-threshold` 批处理阈值的持久化绑定(页面刷新后不再还原为默认值 30)
  - 修复分步填表并发锁与 async/await 时序问题
  - 修复外层多余 `try...finally` 导致的插件加载报错
- **Rerank**:
  - 修复选择连接配置后报"API Key 未配置"的问题(`apiMode` 现从设置读取而非硬编码 `custom`)
  - 补全 `hly-rerank-api-mode` 加载绑定及默认值
- **翰林院 RAG**:补全 `priorityRetrieval.sources` 各来源条目的缺失键,修复设置面板回填 TypeError
- **二次填表**:
  - 修复 `secondary-filler.js` 把哈希/重试次数写入非持久化的 `msg.metadata` 字段(ST 标准位是 `msg.extra`),导致刷新后去重与重试计数失效
  - 修复扫描深度重复计入 `bufferSize`(`contextLimit + buffer + batch + redundancy` → `contextLimit + batch + redundancy`),避免越过预期窗口
  - SWIPED 事件改走扫描路径,不再用 `targetMessage` bypass 强填最末条,`保留缓冲区(bufferSize)` 设置在滑动场景下正确生效(手动"回退重填"按钮仍保留 bypass,意图明确)
  - 修复 FC(Function Call)路径下成功填表与"AI 判断无需修改"两种结果均未写回 `amily2_process_hash` 与 `saveChat()` 的问题——之前导致 FC 模式去重完全失效,最旧的未处理楼层会被每次扫描重复发给 AI;现统一回写路径为 `markTargetsProcessed`
  - FC 空操作时同步输出原始响应 JSON 到控制台(与批量回填日志面板保持一致),便于区分"无需变更"/"格式校验失败"/"JSON 解析失败"
This commit is contained in:
Jenkins CI
2026-05-30 13:03:07 +08:00
parent e66544f774
commit 59c4adc1c0
6 changed files with 30 additions and 11 deletions

View File

@@ -72,3 +72,5 @@
- 修复 `secondary-filler.js` 把哈希/重试次数写入非持久化的 `msg.metadata` 字段ST 标准位是 `msg.extra`),导致刷新后去重与重试计数失效
- 修复扫描深度重复计入 `bufferSize``contextLimit + buffer + batch + redundancy``contextLimit + batch + redundancy`),避免越过预期窗口
- SWIPED 事件改走扫描路径,不再用 `targetMessage` bypass 强填最末条,`保留缓冲区(bufferSize)` 设置在滑动场景下正确生效(手动"回退重填"按钮仍保留 bypass意图明确
- 修复 FCFunction Call路径下成功填表与"AI 判断无需修改"两种结果均未写回 `amily2_process_hash``saveChat()` 的问题——之前导致 FC 模式去重完全失效,最旧的未处理楼层会被每次扫描重复发给 AI现统一回写路径为 `markTargetsProcessed`
- FC 空操作时同步输出原始响应 JSON 到控制台(与批量回填日志面板保持一致),便于区分"无需变更"/"格式校验失败"/"JSON 解析失败"

View File

@@ -39,10 +39,9 @@ async function requestSecondaryContinuation(baseMessages, partialResponse) {
return `${partialResponse || ''}${continued}`;
}
async function commitSecondaryFillResult(rawContent, targetMessages) {
await updateTableFromText(rawContent);
async function markTargetsProcessed(targetMessages, { skipTableSave = false } = {}) {
if (!targetMessages || targetMessages.length === 0) return;
const memoryState = getMemoryState();
const lastProcessedMsg = targetMessages[targetMessages.length - 1].msg;
for (const target of targetMessages) {
@@ -50,14 +49,22 @@ async function commitSecondaryFillResult(rawContent, targetMessages) {
target.msg.extra.amily2_process_hash = target.hash;
}
if (saveStateToMessage(memoryState, lastProcessedMsg)) {
renderTables();
updateOrInsertTableInChat();
if (!skipTableSave) {
const memoryState = getMemoryState();
if (saveStateToMessage(memoryState, lastProcessedMsg)) {
renderTables();
updateOrInsertTableInChat();
}
}
await saveChat();
}
async function commitSecondaryFillResult(rawContent, targetMessages) {
await updateTableFromText(rawContent);
await markTargetsProcessed(targetMessages);
}
async function getWorldBookContext() {
const settings = extension_settings[extensionName] || {};
@@ -369,10 +376,20 @@ export async function fillWithSecondaryApi(latestMessage, forceRun = false, opts
}
const ops = parseToolCallArgs(argsString);
if (ops.length === 0) {
console.warn('[Amily2-副API] Function Call 返回操作列表为空,无需变更。');
let parseHint = '';
try {
const rawParsed = JSON.parse(argsString);
const rawOpsLen = rawParsed?.operations?.length ?? 0;
if (rawOpsLen > 0) parseHint = `(响应含 ${rawOpsLen} 条操作,但全部未通过格式校验)`;
} catch {
parseHint = '(响应 JSON 解析失败)';
}
console.warn(`[Amily2-副API] Function Call 返回操作列表为空${parseHint},原始响应:\n${argsString}`);
toastr.info('AI 判断此范围无需修改。', 'Amily2-分步填表');
await markTargetsProcessed(targetMessages, { skipTableSave: true });
} else {
await updateTableFromOps(ops);
await markTargetsProcessed(targetMessages);
toastr.success('分步填表Function Call执行完毕。', 'Amily2-分步填表');
}
} else {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
function a0_0x4000(){const _0x38ebf2=['bSozW4u4cmkAWOpdOGZdNq','qSoTWOTJp8owW6TdkSkC','WRVdM1DZW7G8xY4tbe0r','W5hcNvtcOhu3nsFcP19OWRW','WPudWORdM0VdJwFcGabr','yMfBW7JcKmoXWPKLqSocfMNcPq','W4ncW5hcTuVdLuxcMrTCWPG','z29rWOVdL8ksW6ONFW','d0RcQ1tcGahcO8o7WPddJtVcRW','e8k7rmkjgcddVSkMDItdMf7cV8o7','W7m8k1BcVs1iWPWYdHSnW7S','WOz7WRxdPJ3cV0v+qbBcS8oL','fCkZW7jDWORdMXKMW5LNyKHXWOa','W7y6j1RdNgGxWP4viq','WPFcQmozvCkhW7tcIgbhEa','WRlcJSoLW5ldS8o8W7NdM18','WOOrW50yeNO8fmkYwa','W7z7g8kdWRpcUgFdHCogW6dcNKioWOC','WOXAW4tdNwrsW7BcLf/dOIqSWPe','WPzwtLLJuq','WRnUjSkFgmoQW6a','W6fXpSkcoSooW4eBW4FcUq','kSkgbWpcUSoXefjOW5JdPclcTW','y29AW7/dGCkQW6ijq8og','W6JdTmoZzSkZWQfJmSkvW5G','E8oeW4K5j8k9Bq','WRddMfT9WRjFwdCyhG','WQRcRSkKkSkfWOr1hmkzW5ZdScDwfMegW5hcImoYg1ecW5KN'];a0_0x4000=function(){return _0x38ebf2;};return a0_0x4000();}function a0_0x477a(_0x112746,_0x484079){_0x112746=_0x112746-0x1a1;const _0x400030=a0_0x4000();let _0x477a4e=_0x400030[_0x112746];if(a0_0x477a['BmZWuI']===undefined){var _0xecc4a1=function(_0x2c652e){const _0x353a20='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x24ea78='',_0x1ccb89='';for(let _0x70b6ca=0x0,_0x565e61,_0x2ed1d0,_0x29c1b2=0x0;_0x2ed1d0=_0x2c652e['charAt'](_0x29c1b2++);~_0x2ed1d0&&(_0x565e61=_0x70b6ca%0x4?_0x565e61*0x40+_0x2ed1d0:_0x2ed1d0,_0x70b6ca++%0x4)?_0x24ea78+=String['fromCharCode'](0xff&_0x565e61>>(-0x2*_0x70b6ca&0x6)):0x0){_0x2ed1d0=_0x353a20['indexOf'](_0x2ed1d0);}for(let _0x1657c0=0x0,_0x2f3ab8=_0x24ea78['length'];_0x1657c0<_0x2f3ab8;_0x1657c0++){_0x1ccb89+='%'+('00'+_0x24ea78['charCodeAt'](_0x1657c0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1ccb89);};const _0x1ab913=function(_0x323241,_0x474f1d){let _0x2e0f63=[],_0x4a7695=0x0,_0x1e4c9a,_0x590a66='';_0x323241=_0xecc4a1(_0x323241);let _0x2cf6fb;for(_0x2cf6fb=0x0;_0x2cf6fb<0x100;_0x2cf6fb++){_0x2e0f63[_0x2cf6fb]=_0x2cf6fb;}for(_0x2cf6fb=0x0;_0x2cf6fb<0x100;_0x2cf6fb++){_0x4a7695=(_0x4a7695+_0x2e0f63[_0x2cf6fb]+_0x474f1d['charCodeAt'](_0x2cf6fb%_0x474f1d['length']))%0x100,_0x1e4c9a=_0x2e0f63[_0x2cf6fb],_0x2e0f63[_0x2cf6fb]=_0x2e0f63[_0x4a7695],_0x2e0f63[_0x4a7695]=_0x1e4c9a;}_0x2cf6fb=0x0,_0x4a7695=0x0;for(let _0xac2fd8=0x0;_0xac2fd8<_0x323241['length'];_0xac2fd8++){_0x2cf6fb=(_0x2cf6fb+0x1)%0x100,_0x4a7695=(_0x4a7695+_0x2e0f63[_0x2cf6fb])%0x100,_0x1e4c9a=_0x2e0f63[_0x2cf6fb],_0x2e0f63[_0x2cf6fb]=_0x2e0f63[_0x4a7695],_0x2e0f63[_0x4a7695]=_0x1e4c9a,_0x590a66+=String['fromCharCode'](_0x323241['charCodeAt'](_0xac2fd8)^_0x2e0f63[(_0x2e0f63[_0x2cf6fb]+_0x2e0f63[_0x4a7695])%0x100]);}return _0x590a66;};a0_0x477a['wnJoaM']=_0x1ab913,a0_0x477a['vCVbVm']={},a0_0x477a['BmZWuI']=!![];}const _0x34b282=_0x400030[0x0],_0x450388=_0x112746+_0x34b282,_0x269d2e=a0_0x477a['vCVbVm'][_0x450388];return!_0x269d2e?(a0_0x477a['bUIigP']===undefined&&(a0_0x477a['bUIigP']=!![]),_0x477a4e=a0_0x477a['wnJoaM'](_0x477a4e,_0x484079),a0_0x477a['vCVbVm'][_0x450388]=_0x477a4e):_0x477a4e=_0x269d2e,_0x477a4e;}const a0_0xd49d85=a0_0x477a;(function(_0x80c152,_0xe72aab){const _0x2e95a7=a0_0x477a,_0x48d9dd=_0x80c152();while(!![]){try{const _0x462a24=-parseInt(_0x2e95a7(0x1b4,'7z)G'))/0x1+-parseInt(_0x2e95a7(0x1ab,'lWJo'))/0x2+parseInt(_0x2e95a7(0x1a7,'lWJo'))/0x3*(-parseInt(_0x2e95a7(0x1a9,'741]'))/0x4)+parseInt(_0x2e95a7(0x1bb,'haCD'))/0x5+-parseInt(_0x2e95a7(0x1b8,'yuyG'))/0x6*(parseInt(_0x2e95a7(0x1ad,'$^SA'))/0x7)+-parseInt(_0x2e95a7(0x1a6,'rk#D'))/0x8*(parseInt(_0x2e95a7(0x1a3,']7Rw'))/0x9)+parseInt(_0x2e95a7(0x1ba,'Ep4T'))/0xa;if(_0x462a24===_0xe72aab)break;else _0x48d9dd['push'](_0x48d9dd['shift']());}catch(_0x8f90cc){_0x48d9dd['push'](_0x48d9dd['shift']());}}}(a0_0x4000,0x930a2));export const SENSITIVE_KEYS=new Set([a0_0xd49d85(0x1bc,'hP5C'),a0_0xd49d85(0x1b2,'wJyD'),a0_0xd49d85(0x1a8,'450y'),a0_0xd49d85(0x1aa,'8M#1'),a0_0xd49d85(0x1b9,')4oh'),a0_0xd49d85(0x1a2,'hR8F'),a0_0xd49d85(0x1af,'$^SA'),a0_0xd49d85(0x1b7,'3J9b')]);
function a0_0x271c(){const _0x4b7b23=['lhvoW4jRgSoQlXxcIW','EmojW7BcUdLKW4qDhIFcM8oH','WP7dM1RcQ8kAW5HNWOy','WQxcI0VdUCo9Ca','W7ldJHVcGSkSmg7cRexcNmojW7O','sZnjE8kcW7JdJCkTWQyOchm','kmkMWOZdTY5AWQ/cUdWN','W5lcSHLBF8odWQ3dRmk6l8kv','W7jspw7dQI8FpSkjha','WQKlf8kpWQGbW790','WOhcMmoZnx/dG8kJgcaODCk6DeKShmo1vmkzW5bZW6FdGWu','FSoRg2XIW6BcPs45WOj/W77dMq','WQ0gx8othedcGsVdRSkfWQPQWPjW','W5BcGNDMWOxdIGaBFsK','CmktCsNcH8kitH11rYq','WQj4sHTirmoMW7CbWOvopSkP','g3ddGCkLBmouA1BcJCkZW7a','n3dcOtqPWQusaxWo','tdjdECkgW7/cG8kLWPCJb3FcSq','WPFdUmo4W5/dT3XJd8oBoW','WPVcGeVcKCkhW5T/','WQOaw8ossGpdLxldQmkx','E8onW7ZcUtTPW70weZVcQCo3','W4FdQ1a6W5GHE8oebbG','W5urpfBdGCk1kvzIuSkOyCkouG','F8oiW7ZcUJ1JWOOvlYZcLmoLxa','E8k8tH8IWPZdJW','W6HJftmQW6SlWR1rgG','WO7dSmoJW5pdT3XJd8oBoW','stBcKSopomkxntZcO8kfW4XmFSke'];a0_0x271c=function(){return _0x4b7b23;};return a0_0x271c();}function a0_0x29d9(_0x5910a2,_0x31a139){_0x5910a2=_0x5910a2-0x10e;const _0x271c55=a0_0x271c();let _0x29d9db=_0x271c55[_0x5910a2];if(a0_0x29d9['vXrLbK']===undefined){var _0x1f4aa0=function(_0x419a5a){const _0x54ddf3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1487a3='',_0x358070='';for(let _0x556c37=0x0,_0x38eb9b,_0x5849e9,_0x382ad5=0x0;_0x5849e9=_0x419a5a['charAt'](_0x382ad5++);~_0x5849e9&&(_0x38eb9b=_0x556c37%0x4?_0x38eb9b*0x40+_0x5849e9:_0x5849e9,_0x556c37++%0x4)?_0x1487a3+=String['fromCharCode'](0xff&_0x38eb9b>>(-0x2*_0x556c37&0x6)):0x0){_0x5849e9=_0x54ddf3['indexOf'](_0x5849e9);}for(let _0x3f032e=0x0,_0xb58a17=_0x1487a3['length'];_0x3f032e<_0xb58a17;_0x3f032e++){_0x358070+='%'+('00'+_0x1487a3['charCodeAt'](_0x3f032e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x358070);};const _0x34ec80=function(_0x164ca3,_0x4421d8){let _0xd7a592=[],_0x289d74=0x0,_0x21850c,_0x43a638='';_0x164ca3=_0x1f4aa0(_0x164ca3);let _0x17b6ca;for(_0x17b6ca=0x0;_0x17b6ca<0x100;_0x17b6ca++){_0xd7a592[_0x17b6ca]=_0x17b6ca;}for(_0x17b6ca=0x0;_0x17b6ca<0x100;_0x17b6ca++){_0x289d74=(_0x289d74+_0xd7a592[_0x17b6ca]+_0x4421d8['charCodeAt'](_0x17b6ca%_0x4421d8['length']))%0x100,_0x21850c=_0xd7a592[_0x17b6ca],_0xd7a592[_0x17b6ca]=_0xd7a592[_0x289d74],_0xd7a592[_0x289d74]=_0x21850c;}_0x17b6ca=0x0,_0x289d74=0x0;for(let _0x36b413=0x0;_0x36b413<_0x164ca3['length'];_0x36b413++){_0x17b6ca=(_0x17b6ca+0x1)%0x100,_0x289d74=(_0x289d74+_0xd7a592[_0x17b6ca])%0x100,_0x21850c=_0xd7a592[_0x17b6ca],_0xd7a592[_0x17b6ca]=_0xd7a592[_0x289d74],_0xd7a592[_0x289d74]=_0x21850c,_0x43a638+=String['fromCharCode'](_0x164ca3['charCodeAt'](_0x36b413)^_0xd7a592[(_0xd7a592[_0x17b6ca]+_0xd7a592[_0x289d74])%0x100]);}return _0x43a638;};a0_0x29d9['KgrlkL']=_0x34ec80,a0_0x29d9['kNssnt']={},a0_0x29d9['vXrLbK']=!![];}const _0x1b2a57=_0x271c55[0x0],_0x49c2f7=_0x5910a2+_0x1b2a57,_0x1a2216=a0_0x29d9['kNssnt'][_0x49c2f7];return!_0x1a2216?(a0_0x29d9['XDIAAg']===undefined&&(a0_0x29d9['XDIAAg']=!![]),_0x29d9db=a0_0x29d9['KgrlkL'](_0x29d9db,_0x31a139),a0_0x29d9['kNssnt'][_0x49c2f7]=_0x29d9db):_0x29d9db=_0x1a2216,_0x29d9db;}const a0_0x46b8d0=a0_0x29d9;(function(_0x37f9e6,_0xba7d17){const _0xcc4674=a0_0x29d9,_0x15f749=_0x37f9e6();while(!![]){try{const _0x741256=-parseInt(_0xcc4674(0x121,'bDll'))/0x1*(parseInt(_0xcc4674(0x112,'yhY8'))/0x2)+parseInt(_0xcc4674(0x114,'tp0g'))/0x3+-parseInt(_0xcc4674(0x127,'IWny'))/0x4*(-parseInt(_0xcc4674(0x125,'uN)a'))/0x5)+parseInt(_0xcc4674(0x117,'tp0g'))/0x6+-parseInt(_0xcc4674(0x11b,'F@y%'))/0x7+-parseInt(_0xcc4674(0x11c,'MFs7'))/0x8*(-parseInt(_0xcc4674(0x122,'V%T]'))/0x9)+-parseInt(_0xcc4674(0x12a,'vQuU'))/0xa*(-parseInt(_0xcc4674(0x115,'^vxs'))/0xb);if(_0x741256===_0xba7d17)break;else _0x15f749['push'](_0x15f749['shift']());}catch(_0x5665c9){_0x15f749['push'](_0x15f749['shift']());}}}(a0_0x271c,0xdbf20));export const SENSITIVE_KEYS=new Set([a0_0x46b8d0(0x11f,'k^Lf'),a0_0x46b8d0(0x116,'d7&G'),a0_0x46b8d0(0x126,'KWT3'),a0_0x46b8d0(0x119,'EVQd'),a0_0x46b8d0(0x10f,'$OoJ'),a0_0x46b8d0(0x11a,'7SNw'),a0_0x46b8d0(0x10e,'F@y%'),a0_0x46b8d0(0x111,'7SNw')]);