mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 18:35:50 +00:00
### 新功能
- **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 解析失败"
- 修复 `fillWithSecondaryApi` 入口处过早设置 `secondaryFillerRunning = true`,导致防抖/总开关关闭/聊天过短/非分步模式/系统瘫痪五条早返路径均不解锁的死锁问题(特别是防抖路径——锁住后 setTimeout 回调撞上自己的锁,永久跳过后续触发)。锁的获取已挪到所有早返检查之后、`try` 块之前
- **填表设置面板**:新增"手动解除填表锁"按钮(位于触发延迟下方),用于兜底应急——若仍遇到"分步填表正在进行中,跳过本次触发"反复刷屏,可手动点击释放
- **API 调用层全面支持 AbortController**(`callAI` / `callAIForTools` / `callNccsAI` 及其全部下游 provider):
- 新增 `options.signal` 透传,OpenAI 兼容 / OpenAI(测试) / Google 直连 / ST 后端 / FC 等所有 `fetch` 调用均接受 `AbortSignal`
- `callSillyTavernBackend` 由 `$.ajax` 改写为 `fetch`,以原生支持 signal
- `callSillyTavernPreset` / `callNccsSillyTavernPreset` 通过 `raceAgainstSignal` 兜底,外部不可终止的 `ConnectionManagerRequestService.sendRequest` 也能在 signal 触发时即时返回 AbortError
- 全部 catch 块识别 `AbortError`,rethrow 而不弹错误 toast;FC 重试逻辑识别中断后跳过重试
- **填表设置面板**:在"手动解除填表锁"旁新增"强制中断当前填表"按钮——通过 AbortController 真正掐断 fetch 连接(fetch 立即抛错),结果会被丢弃,不会污染表格 / hash / `saveChat`
54 lines
3.6 KiB
JavaScript
54 lines
3.6 KiB
JavaScript
// Side-effect imports (独立模块/自初始化模块)
|
|
import "./PresetSettings/index.js";
|
|
import "./PreOptimizationViewer/index.js";
|
|
import "./WorldEditor/WorldEditor.js";
|
|
import './core/amily2-updater.js';
|
|
import './SL/bus/Amily2Bus.js'
|
|
import './utils/config/ConfigManager.js'
|
|
import './utils/config/api-key-store/ApiKeyStore.js'
|
|
import './utils/config/ApiProfileManager.js'
|
|
import './utils/config/RuleProfileManager.js'
|
|
import './core/table-system/TableSystemService.js'
|
|
|
|
// Re-exports (重新导出供 index.js 使用)
|
|
export { createDrawer } from "./ui/drawer.js";
|
|
export { showPlotOptimizationProgress, updatePlotOptimizationProgress, hidePlotOptimizationProgress } from './ui/optimization-progress.js';
|
|
export { registerSlashCommands } from "./core/commands.js";
|
|
export { onMessageReceived, handleTableUpdate } from "./core/events.js";
|
|
export { processPlotOptimization } from "./core/summarizer.js";
|
|
|
|
// External SillyTavern scripts (外部脚本)
|
|
export { getContext, extension_settings } from "/scripts/extensions.js";
|
|
export { characters, this_chid, eventSource, event_types, saveSettingsDebounced } from '/script.js';
|
|
|
|
// Core Systems
|
|
export { injectTableData, generateTableContent } from "./core/table-system/injector.js";
|
|
export { initialize as initializeRagProcessor } from "./core/rag-processor.js";
|
|
export { loadSettingsToUI as loadHanlinyuanSettingsToUI } from "./ui/hanlinyuan-bindings.js";
|
|
export { loadTables, clearHighlights, rollbackAndRefill, rollbackState, commitPendingDeletions, saveStateToMessage, getMemoryState, clearUpdatedTables } from './core/table-system/manager.js';
|
|
export { fillWithSecondaryApi, resetSecondaryFillerLock, isSecondaryFillerRunning, abortCurrentSecondaryFiller } from './core/table-system/secondary-filler.js';
|
|
export { renderTables } from './ui/table-bindings.js';
|
|
export { log } from './core/table-system/logger.js';
|
|
export { checkForUpdates, fetchMessageBoardContent } from './core/api.js';
|
|
export { setUpdateInfo, applyUpdateIndicator } from './ui/state.js';
|
|
export { pluginVersion, extensionName, defaultSettings } from './utils/settings.js';
|
|
export { configManager } from './utils/config/ConfigManager.js';
|
|
export { apiKeyStore } from './utils/config/api-key-store/ApiKeyStore.js';
|
|
export { apiProfileManager, PROFILE_TYPES, SLOTS } from './utils/config/ApiProfileManager.js';
|
|
export { ruleProfileManager, RULE_SLOTS, resolveSlotRuleConfig, resolveCondensationRuleConfig, resolveQueryPreprocessingRuleConfig, resolveTableRuleConfig, resolveHistoriographyRuleConfig, resolveRuleConfig } from './utils/config/RuleProfileManager.js';
|
|
export { bindApiConfigPanel } from './ui/api-config-bindings.js';
|
|
export { bindRuleConfigPanel } from './ui/rule-config-bindings.js';
|
|
export { checkAuthorization, refreshUserInfo } from './utils/auth.js';
|
|
export { tableSystemDefaultSettings } from './core/table-system/settings.js';
|
|
export { manageLorebookEntriesForChat } from './core/lore.js';
|
|
|
|
// Feature Modules
|
|
export { initializeCharacterWorldBook } from './CharacterWorldBook/cwb_index.js';
|
|
export { cwbDefaultSettings } from './CharacterWorldBook/src/cwb_config.js';
|
|
export { bindGlossaryEvents } from './glossary/GT_bindings.js';
|
|
export { updateOrInsertTableInChat, startContinuousRendering, stopContinuousRendering } from './ui/message-table-renderer.js';
|
|
export { initializeRenderer } from './core/tavern-helper/renderer.js';
|
|
export { initializeApiListener, registerApiHandler, amilyHelper, initializeAmilyHelper } from './core/tavern-helper/main.js';
|
|
export { registerContextOptimizerMacros, resetContextBuffer } from './core/context-optimizer.js';
|
|
export { initializeSuperMemory } from './core/super-memory/SuperMemoryService.js';
|