mirror of
https://github.com/Cola-Echo/memory-manager-concurrent.git
synced 2026-06-06 15:55:52 +00:00
544 lines
17 KiB
Markdown
544 lines
17 KiB
Markdown
# 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/`。
|