release: v2.2.3 [2026-05-27 21:24:56]

### 新功能
- Function Call 填表开关下方新增公益站风险提示横幅:部分公益站会屏蔽 tools 参数,请确认支持情况避免被意外封禁
### 修复
- **Function Call 填表**:
  - 修复 ST 代理以 HTTP 200 + error body 形式返回错误、导致降级重试机制从未触发的问题
  - 修复思考模式模型(如 DeepSeek v4-flash)因 tool_choice 不兼容返回 Bad Request 后正确降级并重试
  - 重试时自动追加强制调用指令,防止思考模型绕过工具直接输出文本造成无效二次开销
- **超级记忆 / 翰林院**:
  - 修复 `getRagSettings()` 读写顶层路径而非嵌套路径,导致打开超级记忆面板后向量化、归档等开关在重载时被全默认值覆盖的问题
  - 修复自动归档失效问题
  - 修复归档管理器在同一事件中被三次触发的回归问题
  - 修复翰林院设置旧版迁移逻辑异常
This commit is contained in:
Jenkins CI
2026-05-27 21:24:56 +08:00
parent 3e217e8ed8
commit 42e0bdec19
12 changed files with 57 additions and 13 deletions

View File

@@ -26,3 +26,23 @@
- NGMS / NCCS API 配置槽位标签修正NGMS→总结NCCS→填表
- API Profile 面板选择逻辑统一重构,修复多处旧字段覆盖新配置的问题
- 世界书控制参数兼容性修复(排除递归、插入位置、扫描深度等,适配 ST 1.17.0+
---
## v2.2.3
### 新功能
- Function Call 填表开关下方新增公益站风险提示横幅:部分公益站会屏蔽 tools 参数,请确认支持情况避免被意外封禁
### 修复
- **Function Call 填表**
- 修复 ST 代理以 HTTP 200 + error body 形式返回错误、导致降级重试机制从未触发的问题
- 修复思考模式模型(如 DeepSeek v4-flash因 tool_choice 不兼容返回 Bad Request 后正确降级并重试
- 重试时自动追加强制调用指令,防止思考模型绕过工具直接输出文本造成无效二次开销
- **超级记忆 / 翰林院**
- 修复 `getRagSettings()` 读写顶层路径而非嵌套路径,导致打开超级记忆面板后向量化、归档等开关在重载时被全默认值覆盖的问题
- 修复自动归档失效问题
- 修复归档管理器在同一事件中被三次触发的回归问题
- 修复翰林院设置旧版迁移逻辑异常

View File

@@ -304,7 +304,10 @@
<span class="slider"></span>
</label>
</div>
<p class="notes" style="margin-bottom: 10px;">仅支持 openai 直连接口tableFilling 槽位)。启用后跳过 &lt;Amily2Edit&gt; 文本解析,由模型直接返回操作列表。</p>
<p class="notes" style="margin-bottom: 6px;">仅支持 openai 直连接口tableFilling 槽位)。启用后跳过 &lt;Amily2Edit&gt; 文本解析,由模型直接返回操作列表。</p>
<div style="background: rgba(255, 160, 0, 0.12); border-left: 3px solid #ffa000; border-radius: 3px; padding: 6px 10px; margin-bottom: 10px; font-size: 0.85em; color: #ffcc80;">
⚠️ 部分公益站因禁止用于跑代码会屏蔽 tools 参数,请确认公益站是否支持 tools 调用,避免被意外封禁。
</div>
<hr class="section-divider" style="margin: 10px 0;">

View File

@@ -10,8 +10,16 @@ export function initializeArchiveManager() {
console.log('[归档管理器] 已启动,正在监控表格状态...');
}
/** Bus 直调路径:由 super-memory/manager.js 的 pushUpdate 调用,接受纯 payload 对象。 */
export function handleArchiveUpdate(payload) {
return handleArchivePayload(payload);
}
async function handleTableUpdate(event) {
const { tableName, data, role } = event.detail;
return handleArchivePayload(event.detail);
}
async function handleArchivePayload({ tableName, data, role }) {
const settings = getSettings();
if (!settings.archive || !settings.archive.enabled) return;
@@ -24,6 +32,7 @@ async function handleTableUpdate(event) {
if (isArchiving) return;
let hasNotice = false;
let realRows = data;
if (data.length > 0 && data[0][2] && data[0][2].includes('已自动归档')) {
hasNotice = true;

View File

@@ -342,6 +342,11 @@ function getSettings() {
}
}
// 旧版设置 rerank.priorityRetrieval 可能只有 enabled 字段而缺少 sources补全
if (s.rerank?.priorityRetrieval && !s.rerank.priorityRetrieval.sources) {
s.rerank.priorityRetrieval.sources = structuredClone(ragDefaultSettings.rerank.priorityRetrieval.sources);
}
return s;
}

View File

@@ -9,10 +9,11 @@ const RAG_MODULE_NAME = 'hanlinyuan-rag-core';
function getRagSettings() {
if (!extension_settings[extensionName]) extension_settings[extensionName] = {};
if (!extension_settings[RAG_MODULE_NAME]) {
extension_settings[RAG_MODULE_NAME] = structuredClone(ragDefaultSettings);
const root = extension_settings[extensionName];
if (!root[RAG_MODULE_NAME]) {
root[RAG_MODULE_NAME] = structuredClone(ragDefaultSettings);
}
return extension_settings[RAG_MODULE_NAME];
return root[RAG_MODULE_NAME];
}
export function bindSuperMemoryEvents() {

View File

@@ -6,6 +6,7 @@ import { syncToLorebook, ensureMemoryBook, updateTransientHint, getMemoryBookNam
import { getMemoryState, loadMemoryState, saveMemoryState } from "../table-system/manager.js";
import { TABLE_UPDATED_EVENT } from "../table-system/events-schema.js";
import { eventSource, event_types } from "/script.js";
import { handleArchiveUpdate } from "../archive-manager.js";
/* ── [AMILY2-MODIFIED] ── pipeline integration: awaitSync() export ── */
let isInitialized = false;
@@ -110,10 +111,15 @@ export function pushUpdate(payload) {
updateQueue.push({ tableName, data, role, headers, rowStatuses });
_syncPromise = processQueue();
// Bus 路径下 document event 不再分发,需直接通知归档管理器
handleArchiveUpdate(payload);
}
/** CustomEvent 降级路径Bus 未就绪时的兜底监听器) */
function handleTableUpdate(event) {
// Bus 已就绪时 pushUpdate 已由 dispatchTableUpdate 直调,跳过避免重复处理
if (window.Amily2Bus?.query('SuperMemory')?.pushUpdate) return;
pushUpdate(event.detail);
}

View File

@@ -1,7 +1,7 @@
{
"name": "Amily2号聊天优化助手",
"display_name": "Amily2号助手",
"version": "2.2.2",
"version": "2.2.3",
"author": "Wx-2025",
"description": "一个拥有独立UI的智能引擎正文优化、自动总结、记忆表格、rag向量、隐藏楼层、剧情推进等多功能整合。",
"minSillyTavernVersion": "1.10.0",

View File

@@ -674,7 +674,7 @@ export function loadSettingsToUI() {
const sources = ['novel', 'chat_history', 'lorebook', 'manual'];
sources.forEach(source => {
const sourceSettings = prioritySettings.sources[source];
const sourceSettings = prioritySettings.sources?.[source];
if (sourceSettings) {
const enabledCheckbox = document.querySelector(`[data-setting-key="rerank.priorityRetrieval.sources.${source}.enabled"]`);
const countInput = document.querySelector(`[data-setting-key="rerank.priorityRetrieval.sources.${source}.count"]`);

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 @@
const a0_0x3ee1f1=a0_0x2a0e;function a0_0x2a0e(_0x38cd22,_0x16d32d){_0x38cd22=_0x38cd22-0x1ae;const _0x257820=a0_0x2578();let _0x2a0e0a=_0x257820[_0x38cd22];if(a0_0x2a0e['RPvibr']===undefined){var _0x158371=function(_0x16443c){const _0x54d3f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f8e40='',_0x1b5bc6='';for(let _0x28b506=0x0,_0x33bf62,_0x31537a,_0xc4de32=0x0;_0x31537a=_0x16443c['charAt'](_0xc4de32++);~_0x31537a&&(_0x33bf62=_0x28b506%0x4?_0x33bf62*0x40+_0x31537a:_0x31537a,_0x28b506++%0x4)?_0x3f8e40+=String['fromCharCode'](0xff&_0x33bf62>>(-0x2*_0x28b506&0x6)):0x0){_0x31537a=_0x54d3f0['indexOf'](_0x31537a);}for(let _0x3b3d6e=0x0,_0x326a89=_0x3f8e40['length'];_0x3b3d6e<_0x326a89;_0x3b3d6e++){_0x1b5bc6+='%'+('00'+_0x3f8e40['charCodeAt'](_0x3b3d6e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1b5bc6);};const _0x934c81=function(_0x6ef6ee,_0x57522c){let _0x27c7dc=[],_0x47a323=0x0,_0x12ab87,_0x5892b9='';_0x6ef6ee=_0x158371(_0x6ef6ee);let _0x273ba8;for(_0x273ba8=0x0;_0x273ba8<0x100;_0x273ba8++){_0x27c7dc[_0x273ba8]=_0x273ba8;}for(_0x273ba8=0x0;_0x273ba8<0x100;_0x273ba8++){_0x47a323=(_0x47a323+_0x27c7dc[_0x273ba8]+_0x57522c['charCodeAt'](_0x273ba8%_0x57522c['length']))%0x100,_0x12ab87=_0x27c7dc[_0x273ba8],_0x27c7dc[_0x273ba8]=_0x27c7dc[_0x47a323],_0x27c7dc[_0x47a323]=_0x12ab87;}_0x273ba8=0x0,_0x47a323=0x0;for(let _0x401f02=0x0;_0x401f02<_0x6ef6ee['length'];_0x401f02++){_0x273ba8=(_0x273ba8+0x1)%0x100,_0x47a323=(_0x47a323+_0x27c7dc[_0x273ba8])%0x100,_0x12ab87=_0x27c7dc[_0x273ba8],_0x27c7dc[_0x273ba8]=_0x27c7dc[_0x47a323],_0x27c7dc[_0x47a323]=_0x12ab87,_0x5892b9+=String['fromCharCode'](_0x6ef6ee['charCodeAt'](_0x401f02)^_0x27c7dc[(_0x27c7dc[_0x273ba8]+_0x27c7dc[_0x47a323])%0x100]);}return _0x5892b9;};a0_0x2a0e['mxAREK']=_0x934c81,a0_0x2a0e['lzBRZc']={},a0_0x2a0e['RPvibr']=!![];}const _0x46d961=_0x257820[0x0],_0x269550=_0x38cd22+_0x46d961,_0x22c767=a0_0x2a0e['lzBRZc'][_0x269550];return!_0x22c767?(a0_0x2a0e['QPJYAC']===undefined&&(a0_0x2a0e['QPJYAC']=!![]),_0x2a0e0a=a0_0x2a0e['mxAREK'](_0x2a0e0a,_0x16d32d),a0_0x2a0e['lzBRZc'][_0x269550]=_0x2a0e0a):_0x2a0e0a=_0x22c767,_0x2a0e0a;}(function(_0x3940a9,_0xf6356){const _0x48dea6=a0_0x2a0e,_0x39748b=_0x3940a9();while(!![]){try{const _0xc6eec9=parseInt(_0x48dea6(0x1ca,'6s45'))/0x1*(parseInt(_0x48dea6(0x1bb,'TUm!'))/0x2)+-parseInt(_0x48dea6(0x1b2,'TH$F'))/0x3+-parseInt(_0x48dea6(0x1b3,'TUm!'))/0x4*(parseInt(_0x48dea6(0x1c7,'qkOo'))/0x5)+-parseInt(_0x48dea6(0x1c4,'!1pR'))/0x6*(-parseInt(_0x48dea6(0x1b8,'ulDC'))/0x7)+-parseInt(_0x48dea6(0x1b0,'uLGZ'))/0x8*(-parseInt(_0x48dea6(0x1c8,'Z6JT'))/0x9)+parseInt(_0x48dea6(0x1c6,'nXp4'))/0xa*(-parseInt(_0x48dea6(0x1be,'kCE]'))/0xb)+parseInt(_0x48dea6(0x1bd,'ZQ0e'))/0xc;if(_0xc6eec9===_0xf6356)break;else _0x39748b['push'](_0x39748b['shift']());}catch(_0x5298e8){_0x39748b['push'](_0x39748b['shift']());}}}(a0_0x2578,0xdbdaf));function a0_0x2578(){const _0x3ce75e=['tdNcTCoxamkj','WO3dN8o0we98wSo9W5ddQq','vSk5W6ZdVtVdGCoNgq','q8ozndPWz29s','t8kmxf3dIN9MWPLAdrOelG','WQRcKcjmW7pdH8o4vNi','eSoLW6NdOWtdVSoxkCkXfmolwf16WQpdGSkVWRdcQ1NcUCkVf8kP','t8kgwfVdG3LLW7TfosqGbCoW','hCkyjZHbwej2WQXz','kSo2EIr5xIWr','smoOESk5hCkNW58','aMZcPY83WPPkW5RdJSkm','W6FdGqldI0hdPmkaWODBWR7dJSoBdW','WQRcKs8YWRZcQmklw07dP0SDDG','mwrEqCoelhxcRCoDieVcRmkkW5K','WRLkCmkrWQZcT1/cRmoNcc9jhvK','W4XAW7DAWPbWW5FcJXvChmkoW4K','wt/dS21dWO9BW7JdUSk+Ca','W7hcMsa0W5JcGCk5','DSkHEHzqEriRW6T1','WPjxW73dJ8k6dvuYWQ4','W7FdHMDlWOFdSmkSWOhdQCk/qCod','W4b1ucldPbrqWQKduGWf','W4NcLCkJdtO4amo1W5hdKCkCCSkD','utCSWRRdHX/cGIG','W4VcLSkHdtTPs8oFW6tdM8kj','xt7dTw9cW5jVW5xdMCkMDKK','fubBWPfmWQKrWORcHWlcVq','W4fzWPJdMt3cPSkd','Bmoqtmo4svzZ','x8khWRNdLCoQoCk6nCkuv1lcKG','W4PyW7TtWPnXW5dcIavscSk0W70'];a0_0x2578=function(){return _0x3ce75e;};return a0_0x2578();}export const SENSITIVE_KEYS=new Set([a0_0x3ee1f1(0x1ae,'[TFb'),a0_0x3ee1f1(0x1bc,'btK0'),a0_0x3ee1f1(0x1b4,'uLGZ'),a0_0x3ee1f1(0x1c1,'nZps'),a0_0x3ee1f1(0x1b9,'Z6JT'),a0_0x3ee1f1(0x1b6,'DbOj'),a0_0x3ee1f1(0x1c9,'&Rtf'),a0_0x3ee1f1(0x1af,'qkOo')]);
function a0_0x3b40(_0x52863f,_0x598139){_0x52863f=_0x52863f-0x10b;const _0x399b59=a0_0x399b();let _0x3b40b9=_0x399b59[_0x52863f];if(a0_0x3b40['EhwDdC']===undefined){var _0x14ff08=function(_0x51be5a){const _0xc21f70='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x318f72='',_0x15280f='';for(let _0x4eb1ac=0x0,_0xdf062f,_0x336f71,_0x3dbe27=0x0;_0x336f71=_0x51be5a['charAt'](_0x3dbe27++);~_0x336f71&&(_0xdf062f=_0x4eb1ac%0x4?_0xdf062f*0x40+_0x336f71:_0x336f71,_0x4eb1ac++%0x4)?_0x318f72+=String['fromCharCode'](0xff&_0xdf062f>>(-0x2*_0x4eb1ac&0x6)):0x0){_0x336f71=_0xc21f70['indexOf'](_0x336f71);}for(let _0x479e87=0x0,_0x5e403d=_0x318f72['length'];_0x479e87<_0x5e403d;_0x479e87++){_0x15280f+='%'+('00'+_0x318f72['charCodeAt'](_0x479e87)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15280f);};const _0x7cd2e2=function(_0x5079b0,_0x2a786a){let _0x17841d=[],_0x15faea=0x0,_0x383827,_0x2b33c7='';_0x5079b0=_0x14ff08(_0x5079b0);let _0x472953;for(_0x472953=0x0;_0x472953<0x100;_0x472953++){_0x17841d[_0x472953]=_0x472953;}for(_0x472953=0x0;_0x472953<0x100;_0x472953++){_0x15faea=(_0x15faea+_0x17841d[_0x472953]+_0x2a786a['charCodeAt'](_0x472953%_0x2a786a['length']))%0x100,_0x383827=_0x17841d[_0x472953],_0x17841d[_0x472953]=_0x17841d[_0x15faea],_0x17841d[_0x15faea]=_0x383827;}_0x472953=0x0,_0x15faea=0x0;for(let _0x256392=0x0;_0x256392<_0x5079b0['length'];_0x256392++){_0x472953=(_0x472953+0x1)%0x100,_0x15faea=(_0x15faea+_0x17841d[_0x472953])%0x100,_0x383827=_0x17841d[_0x472953],_0x17841d[_0x472953]=_0x17841d[_0x15faea],_0x17841d[_0x15faea]=_0x383827,_0x2b33c7+=String['fromCharCode'](_0x5079b0['charCodeAt'](_0x256392)^_0x17841d[(_0x17841d[_0x472953]+_0x17841d[_0x15faea])%0x100]);}return _0x2b33c7;};a0_0x3b40['DFoPSr']=_0x7cd2e2,a0_0x3b40['YEajuv']={},a0_0x3b40['EhwDdC']=!![];}const _0x49bd5f=_0x399b59[0x0],_0x20b5cf=_0x52863f+_0x49bd5f,_0x5312cc=a0_0x3b40['YEajuv'][_0x20b5cf];return!_0x5312cc?(a0_0x3b40['hUoguf']===undefined&&(a0_0x3b40['hUoguf']=!![]),_0x3b40b9=a0_0x3b40['DFoPSr'](_0x3b40b9,_0x598139),a0_0x3b40['YEajuv'][_0x20b5cf]=_0x3b40b9):_0x3b40b9=_0x5312cc,_0x3b40b9;}const a0_0x1b65c5=a0_0x3b40;(function(_0x83808a,_0x28aa75){const _0x2691e8=a0_0x3b40,_0x23f642=_0x83808a();while(!![]){try{const _0x3f6f8e=parseInt(_0x2691e8(0x127,'7zr3'))/0x1*(-parseInt(_0x2691e8(0x119,'[M&$'))/0x2)+-parseInt(_0x2691e8(0x11c,'sG)e'))/0x3*(parseInt(_0x2691e8(0x114,'#Pe^'))/0x4)+parseInt(_0x2691e8(0x120,'pAQS'))/0x5+-parseInt(_0x2691e8(0x110,')OMX'))/0x6+-parseInt(_0x2691e8(0x10e,'^Fo0'))/0x7*(-parseInt(_0x2691e8(0x10f,')De%'))/0x8)+-parseInt(_0x2691e8(0x10d,'1bb9'))/0x9*(-parseInt(_0x2691e8(0x113,'jnhv'))/0xa)+-parseInt(_0x2691e8(0x129,'I5i*'))/0xb*(-parseInt(_0x2691e8(0x118,'sG)e'))/0xc);if(_0x3f6f8e===_0x28aa75)break;else _0x23f642['push'](_0x23f642['shift']());}catch(_0x382331){_0x23f642['push'](_0x23f642['shift']());}}}(a0_0x399b,0x34593));export const SENSITIVE_KEYS=new Set([a0_0x1b65c5(0x125,'HHVc'),a0_0x1b65c5(0x115,'o2#t'),a0_0x1b65c5(0x122,')De%'),a0_0x1b65c5(0x128,'1G#I'),a0_0x1b65c5(0x112,'R%T)'),a0_0x1b65c5(0x124,'t441'),a0_0x1b65c5(0x11a,'GBUk'),a0_0x1b65c5(0x11f,'rYY2')]);function a0_0x399b(){const _0x102bff=['W5OuldLYWPCmjSoEWQaNWO8','WQ4DW6DbW4vnDszDyIqbdGG','W7JdGSkVWQm/WO7cPHXBWR0sW60','jbFcOvZdG8oIDWJdOqyjmGy','WOldL8kEoSk4eXXUW7ZdHrhcISol','W5j7sCodvuH6','wIRcS8k3W4BcJ8kxgrmtWPe','bvddQ8ozlCo1p8kzBs3cIJf8','WONcUCofz8obxvK','WPWlW6NcVmk+WOvs','rmkAW5a0W51kW4q0oSkLW4zL','DmkICSogWQlcTSk2WOWmW7y','WOLLdmkhgCkzW7jIWQ3cO3DKda','WPtdQc4GzG3cOfG','WRLCevHDWQ9hWRBcLCkMoComWP/cRLVdICohCCkaW4DhvZRcKa','AGnBWPFdMa7dMta','lCoDWPGdW5BdUmoCW5Hwca','WOrEW4XUCXS','mefWWOJcKf4wW5RcS8oSd8kF','WPdcMCkZa8kXASkNv8k/W5LfW6S','tMyVWR7cSrRdMJO9aW','kSo5W65ldCkBWPP/','WPDLWRldOCohW4SxemkzW7rYCZ4','FWVcHZvlWRhdSa','FL5SrCkFvmkN','yKT6WPJdQX/dVq','W5ZdKandWRPgWPPF','W7GdsHqIW694WRdcS8kRdSo6','W7yLuhlcOmoBpsCpWR7cGCkGWQy','W6JcUZ9/CmkShSk3D8oYW7BdKb4','pConW4e9W7NcG8oHgriJ','W69BqMDnW4GGzae0vmodWQa'];a0_0x399b=function(){return _0x102bff;};return a0_0x399b();}