# Memory-Manager-Concurrent 模块参考手册 > 版本: v0.4.0 | 架构: 模块化 + Webpack 打包 ## 目录结构总览 ``` src/ ├── index.js # 主入口文件 ├── core/ # 核心基础模块 ├── config/ # 配置管理模块 ├── worldbook/ # 世界书处理模块 ├── api/ # AI API 调用模块 ├── memory/ # 记忆处理模块 ├── hooks/ # 钩子拦截模块 ├── ui/ # 用户界面模块 └── utils/ # 工具函数模块 ``` --- ## 1. core/ - 核心基础模块 ### 1.1 logger.js **功能**:统一日志输出管理 | 导出 | 类型 | 说明 | |-----|------|------| | `Logger` | Object | 日志工具对象 | | `Logger.log()` | Function | 普通日志 | | `Logger.debug()` | Function | 调试日志 | | `Logger.warn()` | Function | 警告日志 | | `Logger.error()` | Function | 错误日志(始终输出) | **使用示例**: ```javascript import Logger from '@core/logger'; Logger.log('初始化完成'); Logger.error('发生错误:', error); ``` ### 1.2 constants.js **功能**:全局常量和路径检测 | 导出 | 类型 | 说明 | |-----|------|------| | `EXTENSION_NAME` | String | 插件名称标识 | | `EXTENSION_FOLDER` | String | 插件文件夹名 | | `detectExtensionPath()` | Function | 检测插件路径 | | `getExtensionPath()` | Function | 获取插件路径 | ### 1.3 error.js **功能**:错误处理和用户提示 | 导出 | 类型 | 说明 | |-----|------|------| | `MemoryManagerError` | Class | 自定义错误类 | | `handleError()` | Function | 统一错误处理 | ### 1.4 sillytavern-api.js **功能**:封装 SillyTavern API 访问 | 导出 | 类型 | 说明 | |-----|------|------| | `getContext()` | Function | 获取 ST 上下文 | | `getEventSource()` | Function | 获取事件源 | | `getEventTypes()` | Function | 获取事件类型 | | `getExtensionSettings()` | Function | 获取扩展设置 | | `saveSettingsDebounced()` | Function | 防抖保存设置 | | `getRequestHeaders()` | Function | 获取请求头(含CSRF) | --- ## 2. config/ - 配置管理模块 ### 2.1 config-manager.js **功能**:配置的加载、保存和访问 | 导出 | 类型 | 说明 | |-----|------|------| | `loadConfig()` | Function | 加载配置 | | `saveConfig()` | Function | 保存配置 | | `getGlobalSettings()` | Function | 获取全局设置 | | `updateGlobalSettings()` | Function | 更新全局设置 | | `getMemoryConfig()` | Function | 获取记忆配置 | | `getSummaryConfig()` | Function | 获取总结配置 | | `getAIConfig()` | Function | 获取 AI 配置 | | `updateAIConfig()` | Function | 更新 AI 配置 | ### 2.2 default-config.js **功能**:默认配置定义 | 导出 | 类型 | 说明 | |-----|------|------| | `defaultConfig` | Object | 默认配置对象(冻结) | ### 2.3 imported-books.js **功能**:已导入世界书名称管理 | 导出 | 类型 | 说明 | |-----|------|------| | `getImportedBookNames()` | Function | 获取已导入书名列表 | | `saveImportedBookNames()` | Function | 保存书名列表 | | `addImportedBook()` | Function | 添加书名 | | `removeImportedBook()` | Function | 移除书名 | ### 2.4 prompt-files.js **功能**:提示词文件存储管理 | 导出 | 类型 | 说明 | |-----|------|------| | `getImportedPromptFiles()` | Function | 获取所有提示词文件 | | `savePromptFileData()` | Function | 保存提示词文件 | | `getPromptFileData()` | Function | 获取单个文件 | | `deletePromptFileData()` | Function | 删除文件 | | `hasPromptFile()` | Function | 检查文件是否存在 | --- ## 3. worldbook/ - 世界书处理模块 ### 3.1 api.js **功能**:世界书 API 操作 | 导出 | 类型 | 说明 | |-----|------|------| | `getAllAvailableWorldBooks()` | Function | 获取所有可用世界书 | | `loadWorldBookByName()` | Function | 按名称加载世界书 | | `getImportedWorldBooks()` | Function | 获取已导入的世界书 | | `getWorldBookList()` | Function | 快速获取世界书列表 | ### 3.2 parser.js **功能**:世界书内容解析 | 导出 | 类型 | 说明 | |-----|------|------| | `parseWorldBook()` | Function | 解析世界书结构 | | `formatAsWorldBook()` | Function | 格式化为世界书格式 | | `getSummaryContent()` | Function | 获取总结内容 | ### 3.3 refresh.js **功能**:世界书列表刷新和 UI 更新 | 导出 | 类型 | 说明 | |-----|------|------| | `refreshWorldBookList()` | Function | 刷新世界书列表 | | `updateWorldBookUI()` | Function | 更新世界书 UI | --- ## 4. api/ - AI API 调用模块 ### 4.1 adapter.js **功能**:统一的 API 调用适配器 | 导出 | 类型 | 说明 | |-----|------|------| | `APIAdapter` | Object | API 适配器主对象 | | `APIAdapter.call()` | Function | 调用 AI API | | `APIAdapter.callWithRetry()` | Function | 带重试的调用 | | `APIAdapter.callWithMessages()` | Function | 多消息调用 | | `APIAdapter.testConnection()` | Function | 测试连接 | ### 4.2 providers/openai.js **功能**:OpenAI 兼容 API 调用 | 导出 | 类型 | 说明 | |-----|------|------| | `callOpenAI()` | Function | 调用 OpenAI API | ### 4.3 providers/anthropic.js **功能**:Anthropic Claude API 调用 | 导出 | 类型 | 说明 | |-----|------|------| | `callAnthropic()` | Function | 调用 Claude API | ### 4.4 providers/google.js **功能**:Google Gemini API 调用 | 导出 | 类型 | 说明 | |-----|------|------| | `callGoogle()` | Function | 调用 Gemini API | ### 4.5 providers/custom.js **功能**:自定义 API 调用 | 导出 | 类型 | 说明 | |-----|------|------| | `callCustom()` | Function | 调用自定义 API | --- ## 5. memory/ - 记忆处理模块 ### 5.1 processor.js **功能**:记忆处理核心逻辑 | 导出 | 类型 | 说明 | |-----|------|------| | `processCategory()` | Function | 处理单个分类 | | `processSummaryBook()` | Function | 处理总结世界书 | | `processMemoryForMessage()` | Function | 为消息处理记忆 | ### 5.2 result-merger.js **功能**:AI 返回结果合并 | 导出 | 类型 | 说明 | |-----|------|------| | `mergeResults()` | Function | 合并多个结果 | | `deduplicateKeywords()` | Function | 关键词去重 | ### 5.3 jailbreak.js **功能**:破限词管理 | 导出 | 类型 | 说明 | |-----|------|------| | `JAILBREAK_PROMPTS` | Array | 破限词列表 | | `getJailbreakPrefix()` | Function | 获取破限前缀 | ### 5.4 prompt-builder.js **功能**:提示词构建 | 导出 | 类型 | 说明 | |-----|------|------| | `buildDataInjection()` | Function | 构建数据注入 | | `injectDataToPrompt()` | Function | 注入数据到提示词 | | `buildUserPrompt()` | Function | 构建用户提示词 | | `replacePromptVariables()` | Function | 替换提示词变量 | --- ## 6. hooks/ - 钩子拦截模块 ### 6.1 send-button-hook.js **功能**:发送按钮拦截 | 导出 | 类型 | 说明 | |-----|------|------| | `hookSendButton()` | Function | 挂载发送按钮钩子 | | `stopProcessing()` | Function | 停止当前处理 | | `isProcessing` | Boolean | 是否正在处理 | ### 6.2 interceptor.js **功能**:生成拦截器注册 | 导出 | 类型 | 说明 | |-----|------|------| | `registerInterceptor()` | Function | 注册 generate_interceptor | --- ## 7. ui/ - 用户界面模块 ### 7.1 template-loader.js **功能**:HTML 模板加载 | 导出 | 类型 | 说明 | |-----|------|------| | `loadTemplate()` | Function | 加载 HTML 模板 | | `loadAllTemplates()` | Function | 加载所有模板 | ### 7.2 events.js **功能**:UI 事件绑定 | 导出 | 类型 | 说明 | |-----|------|------| | `bindEvents()` | Function | 绑定所有事件 | | `bindPanelEvents()` | Function | 绑定面板事件 | | `bindSettingsEvents()` | Function | 绑定设置事件 | ### 7.3 menu-button.js **功能**:扩展菜单按钮 | 导出 | 类型 | 说明 | |-----|------|------| | `createExtensionMenuButton()` | Function | 创建菜单按钮 | | `updateMenuButtonStatus()` | Function | 更新按钮状态 | ### 7.4 float-ball.js **功能**:悬浮球控制 | 导出 | 类型 | 说明 | |-----|------|------| | `createFloatBall()` | Function | 创建悬浮球 | | `updateFloatBallVisibility()` | Function | 更新可见性 | | `showFloatBall()` | Function | 显示悬浮球 | | `hideFloatBall()` | Function | 隐藏悬浮球 | ### 7.5 components/progress-tracker.js **功能**:进度追踪器 | 导出 | 类型 | 说明 | |-----|------|------| | `ProgressTracker` | Class | 进度追踪器类 | | `progressTracker` | Instance | 全局实例 | ### 7.6 components/message-progress.js **功能**:消息进度面板 | 导出 | 类型 | 说明 | |-----|------|------| | `MessageProgressPanel` | Class | 消息进度面板类 | | `messageProgressPanel` | Instance | 全局实例 | ### 7.7 components/search-panel.js **功能**:记忆搜索助手 | 导出 | 类型 | 说明 | |-----|------|------| | `initSearchPanel()` | Function | 初始化搜索面板 | | `showSearchPanel()` | Function | 显示搜索面板 | | `hideSearchPanel()` | Function | 隐藏搜索面板 | ### 7.8 components/plot-optimize.js **功能**:剧情优化助手 | 导出 | 类型 | 说明 | |-----|------|------| | `initPlotOptimizePanel()` | Function | 初始化面板 | | `showPlotOptimizePanel()` | Function | 显示面板 | | `hidePlotOptimizePanel()` | Function | 隐藏面板 | ### 7.9 modals/config-modal.js **功能**:配置弹窗 | 导出 | 类型 | 说明 | |-----|------|------| | `showConfigModal()` | Function | 显示配置弹窗 | | `hideConfigModal()` | Function | 隐藏配置弹窗 | | `bindConfigModalEvents()` | Function | 绑定弹窗事件 | ### 7.10 modals/worldbook-selector.js **功能**:世界书选择器弹窗 | 导出 | 类型 | 说明 | |-----|------|------| | `showWorldbookSelector()` | Function | 显示选择器 | | `hideWorldbookSelector()` | Function | 隐藏选择器 | ### 7.11 modals/request-preview.js **功能**:请求预览弹窗 | 导出 | 类型 | 说明 | |-----|------|------| | `showRequestPreview()` | Function | 显示请求预览 | | `hideRequestPreview()` | Function | 隐藏请求预览 | ### 7.12 modals/summary-check.js **功能**:汇总检查弹窗 | 导出 | 类型 | 说明 | |-----|------|------| | `showSummaryCheck()` | Function | 显示汇总检查 | | `hideSummaryCheck()` | Function | 隐藏汇总检查 | ### 7.13 modals/flow-config.js **功能**:流程配置弹窗 | 导出 | 类型 | 说明 | |-----|------|------| | `showFlowConfig()` | Function | 显示流程配置 | | `hideFlowConfig()` | Function | 隐藏流程配置 | | `loadFlowConfig()` | Function | 加载流程配置 | | `saveFlowConfig()` | Function | 保存流程配置 | ### 7.14 modals/prompt-editor.js **功能**:提示词编辑器 | 导出 | 类型 | 说明 | |-----|------|------| | `showPromptEditor()` | Function | 显示编辑器 | | `hidePromptEditor()` | Function | 隐藏编辑器 | | `loadPromptFiles()` | Function | 加载提示词文件 | | `savePromptFile()` | Function | 保存提示词 | | `saveAsPromptFile()` | Function | 另存为 | | `switchPromptType()` | Function | 切换提示词类型 | | `getCurrentPromptType()` | Function | 获取当前类型 | --- ## 8. utils/ - 工具函数模块 ### 8.1 message.js **功能**:消息处理工具 | 导出 | 类型 | 说明 | |-----|------|------| | `getLastUserMessage()` | Function | 获取最后用户消息 | | `getRecentContext()` | Function | 获取最近上下文 | | `injectMemory()` | Function | 注入记忆到聊天 | ### 8.2 tag-filter.js **功能**:标签过滤 | 导出 | 类型 | 说明 | |-----|------|------| | `filterContentByTags()` | Function | 按标签过滤内容 | ### 8.3 prompt-template.js **功能**:提示词模板加载 | 导出 | 类型 | 说明 | |-----|------|------| | `getPromptTemplate()` | Function | 获取关键词提示词模板 | | `getHistoricalPromptTemplate()` | Function | 获取历史提示词模板 | | `getPlotOptimizeTemplate()` | Function | 获取剧情优化模板 | --- ## 模块依赖关系图 ``` ┌─────────────────────────────────────────────────────────────┐ │ src/index.js │ │ (主入口) │ └─────────────────────────┬───────────────────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────────┐ ┌─────────┐ │ core/ │◄───────│ ui/ │ │ hooks/ │ │ logger │ │ components │ │ send- │ │ const │ │ modals │ │ button │ │ error │ │ events │ │ inter- │ │ st-api │ └──────┬──────┘ │ ceptor │ └────┬────┘ │ └────┬────┘ │ │ │ │ ┌─────┴─────┐ │ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ config/ │◄──│ world- │ │ memory/ │──►│ api/ │ │ manager │ │ book/ │ │ process │ │ adapter │ │ default │ │ api │ │ merger │ │ openai │ │ books │ │ parser │ │ prompt │ │ claude │ │ prompts │ │ refresh │ │ jailbrk │ │ google │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ └──────┬──────┘ │ ┌────┴────┐ │ utils/ │ │ message │ │ tag-flt │ │ prompt │ └─────────┘ ``` --- ## 常见维护场景 ### 场景 1:修改 AI API 调用逻辑 - 查看 `src/api/adapter.js` - 各提供商实现在 `src/api/providers/` ### 场景 2:修改配置保存逻辑 - 查看 `src/config/config-manager.js` - 默认值在 `src/config/default-config.js` ### 场景 3:修改提示词编辑器 - 查看 `src/ui/modals/prompt-editor.js` - 提示词文件存储在 `src/config/prompt-files.js` ### 场景 4:修改世界书处理 - 解析逻辑在 `src/worldbook/parser.js` - API 调用在 `src/worldbook/api.js` ### 场景 5:修改记忆处理流程 - 核心处理在 `src/memory/processor.js` - 结果合并在 `src/memory/result-merger.js` ### 场景 6:修改 UI 事件 - 事件绑定在 `src/ui/events.js` - 各弹窗在 `src/ui/modals/` --- ## 构建命令 ```bash # 开发模式(带 source map) npm run build:dev # 生产模式(压缩) npm run build # 监听模式(自动重建) npm run dev ``` --- ## 文件路径别名 在源代码中可以使用以下路径别名: | 别名 | 实际路径 | |-----|---------| | `@` | `src/` | | `@core` | `src/core/` | | `@config` | `src/config/` | | `@worldbook` | `src/worldbook/` | | `@api` | `src/api/` | | `@memory` | `src/memory/` | | `@hooks` | `src/hooks/` | | `@ui` | `src/ui/` | | `@utils` | `src/utils/` | --- ## 版本信息 - **版本**: v0.4.1 - **架构**: 模块化 + Webpack 打包 - **入口**: `dist/index.js` - **许可**: AGPL-3.0 - **作者**: 可乐、繁华 --- ## 版本号更新清单 发布新版本时,需要更新以下文件中的版本号: | 文件 | 位置 | 说明 | |-----|------|------| | `manifest.json` | `version` 字段 | 插件清单版本 | | `package.json` | `version` 字段 | NPM 包版本 | | `README.md` | 版本徽章 URL | 显示版本徽章 | | `CHANGELOG.md` | 新版本条目 | 更新日志 | | `ui/panel.html` | 第92行 `mm-author-text` | 界面显示版本 | | `docs/MODULE_REFERENCE.md` | 版本信息章节 | 模块文档版本 | **更新后必须重新构建**: ```bash npm install npm run build ``` 构建后 `dist/index.js` 会更新,发布前删除 `node_modules/`。