Files
memory-manager-concurrent/docs/MODULE_REFERENCE.md
2026-02-04 10:33:49 +08:00

544 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/`