release: v2.2.2 [2026-05-27 11:10:55]

### 新功能
- **Function Call 填表模式**:在填表设置中新增独立开关,启用后支持通过 OpenAI 兼容接口(DeepSeek / OpenRouter / 各类中转等)直接返回结构化操作列表,绕过 `<Amily2Edit>` 文本解析路径,填表更稳定
  - 遇到不支持 `tool_choice` 的接口时自动降级重试
  - 对思考模型注入强制调用指令,防止绕过工具直接输出文本
  - 全部走 ST 后端代理,修复 CSP 拦截直连外部 URL 的问题
- **主界面新增提示词链编辑器入口**,同时调换了记忆管理与角色世界书的按钮位置
- **规则中心**新增"自动排除用户楼层"选项
### 修复
- 提示词链按钮点击无响应(改为事件委托方式绑定)
- 拖拽组件微抖误触发(加 5px 移动阈值过滤)
- 填表检查窗若干问题修复;翰林院(批量回填)修复;防抖逻辑落地
- 角色世界书入口添加使用警告弹窗(强制 10 秒倒计时),提示该功能长期未维护
- ApiProfile `fakeStream` 字段保存丢失问题
- 正文优化默认改为关闭状态
- NGMS / NCCS API 配置槽位标签修正(NGMS→总结,NCCS→填表)
- API Profile 面板选择逻辑统一重构,修复多处旧字段覆盖新配置的问题
- 世界书控制参数兼容性修复(排除递归、插入位置、扫描深度等,适配 ST 1.17.0+)
This commit is contained in:
Jenkins CI
2026-05-27 11:10:55 +08:00
parent e00302d04b
commit 2c3072a3d8
29 changed files with 865 additions and 125 deletions

View File

@@ -1371,6 +1371,7 @@ export function bindTableEvents(panelElement = null) {
const batchSlider = document.getElementById('secondary-filler-batch');
const bufferSlider = document.getElementById('secondary-filler-buffer');
const maxRetriesSlider = document.getElementById('secondary-filler-max-retries'); // 【新增】
const delaySlider = document.getElementById('secondary-filler-delay');
const tableRuleProfileSelect = document.getElementById('table-rule-profile-select');
@@ -1438,13 +1439,34 @@ export function bindTableEvents(panelElement = null) {
if (maxRetriesSlider) {
const value = extension_settings[extensionName]?.secondary_filler_max_retries ?? 2;
maxRetriesSlider.value = value;
maxRetriesSlider.addEventListener('change', function() {
updateAndSaveTableSetting('secondary_filler_max_retries', parseInt(this.value, 10));
toastr.info(`最大重试次数已设置为 ${this.value}`);
});
}
if (delaySlider) {
const value = extension_settings[extensionName]?.secondary_filler_delay ?? 0;
delaySlider.value = value;
delaySlider.addEventListener('change', function() {
const parsed = Math.max(0, parseInt(this.value, 10) || 0);
this.value = parsed;
updateAndSaveTableSetting('secondary_filler_delay', parsed);
toastr.info(`触发延迟已设置为 ${parsed} 毫秒。`);
});
}
const fcToggle = document.getElementById('table-fill-function-call-enabled');
if (fcToggle) {
fcToggle.checked = extension_settings[extensionName]?.tableFillFunctionCall ?? false;
fcToggle.addEventListener('change', function() {
updateAndSaveTableSetting('tableFillFunctionCall', this.checked);
toastr.info(`Function Call 填表已${this.checked ? '启用' : '禁用'}`);
});
}
updateFillingModeUI();
if (tableRuleProfileSelect) {