多模态协作系统
模块概述
版本: v3.2.0 状态: ✅ 已实现 IPC处理器: 12个 最后更新: 2026-03-05
多模态输入融合与输出生成系统。支持 5 种输入模态 (文本/图像/音频/文档/屏幕)、7 种文档格式解析和 6 种输出格式生成,提供跨模态上下文感知和会话管理。
核心特性
- 5 种输入模态: 文本 / 图像 / 音频 / 文档 / 屏幕截图
- 模态融合: 加权融合策略,自动上下文关联
- 7 种文档解析: PDF / DOCX / XLSX / TXT / MD / CSV / JSON
- 6 种输出格式: Markdown / HTML / Chart (ECharts) / Slides (Reveal.js) / JSON / CSV
- 上下文管理: 4000 token 上限,5 分钟缓存 TTL
- 会话追踪: 多模态会话与工件持久化
1. 架构设计
1.1 整体架构图
┌──────────────────────────────────────────────────────────────────┐
│ 前端 (Vue3) │
├──────────────────────────────────────────────────────────────────┤
│ 多模态交互界面 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ 文件上传 │ │ 截图输入 │ │ 输出预览 │ │ 会话管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
↕ IPC (12个通道, mm: 前缀)
┌──────────────────────────────────────────────────────────────────┐
│ 主进程 (Electron) │
├──────────────────────────────────────────────────────────────────┤
│ multimodal-collab-ipc.js (287行) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ ModalityFusion (592行) │ DocumentParser (542行) │ │
│ │ 5 模态加权融合 │ 7 格式文档解析 │ │
│ │ text(1.0) image(0.8) │ PDF/DOCX/XLSX/TXT/ │ │
│ │ document(0.9) audio(0.7) │ MD/CSV/JSON │ │
│ │ screen(0.6) │ │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ MultimodalContext (378行) │ MultimodalOutput (501行) │ │
│ │ 上下文管理 │ 6 格式输出生成 │ │
│ │ 4000 token 上限 │ Markdown/HTML/Chart/ │ │
│ │ 5min 缓存 TTL │ Slides/JSON/CSV │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ SQLite Database (2 tables) │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘1.2 多模态处理流程
用户输入 (文本/文件/截图/音频)
↓
DocumentParser → 文档解析 (PDF/DOCX/XLSX等)
↓
ModalityFusion → 模态融合 (加权聚合)
↓ 按权重合并多模态信息
MultimodalContext → 上下文构建 (≤4000 tokens)
↓
LLM 推理
↓
MultimodalOutput → 输出生成 (6种格式)
↓
前端渲染 (Markdown/ECharts/Reveal.js/...)1.3 核心组件
| 组件 | 文件 | 行数 | 说明 |
|---|---|---|---|
| ModalityFusion | modality-fusion.js | 592 | 5模态加权融合 |
| DocumentParser | document-parser.js | 542 | 7格式文档解析 |
| MultimodalContext | multimodal-context.js | 378 | 上下文管理 |
| MultimodalOutput | multimodal-output.js | 501 | 6格式输出生成 |
| Multimodal IPC | multimodal-collab-ipc.js | 287 | 12个IPC处理器 |
2. 核心模块
2.1 ModalityFusion
javascript
class ModalityFusion extends EventEmitter {
async initialize(deps) // 初始化
// 融合
async fuse(inputs) // 融合多模态输入
async addModality(sessionId, modality, data) // 添加模态
async getSessionModalities(sessionId) // 获取会话模态
// 配置
setWeights(weights) // 设置权重
getWeights() // 获取权重
}模态权重:
| 模态 | 权重 | 说明 |
|---|---|---|
text | 1.0 | 文本 (最高优先级) |
document | 0.9 | 文档 (结构化内容) |
image | 0.8 | 图像 (OCR/描述) |
audio | 0.7 | 音频 (语音转文字) |
screen | 0.6 | 屏幕截图 |
2.2 DocumentParser
javascript
class DocumentParser extends EventEmitter {
async initialize(deps)
// 解析
async parse(filePath, options?) // 解析文档
async parseBuffer(buffer, mimeType, options?) // 解析Buffer
// 格式支持
async parsePDF(filePath) // PDF (pdf-parse)
async parseDOCX(filePath) // DOCX (mammoth)
async parseXLSX(filePath) // XLSX (xlsx)
async parseTXT(filePath) // 纯文本
async parseMD(filePath) // Markdown
async parseCSV(filePath) // CSV
async parseJSON(filePath) // JSON
// 工具
getSupportedFormats() // 获取支持的格式
}2.3 MultimodalContext
javascript
class MultimodalContext extends EventEmitter {
async initialize(deps) // 初始化 (无db参数)
// 上下文
async buildContext(sessionId, inputs) // 构建上下文
async getContext(sessionId) // 获取上下文
async clearContext(sessionId) // 清除上下文
async trimContext(context, maxTokens) // 裁剪到token上限
}上下文配置:
javascript
{
maxTokens: 4000, // 最大 token 数
cacheTTL: 300000, // 缓存 TTL (5分钟)
priorityOrder: ['text', 'document', 'image', 'audio', 'screen'],
}2.4 MultimodalOutput
javascript
class MultimodalOutput extends EventEmitter {
async initialize() // 初始化 (无参数)
// 输出生成
async generate(content, format, options?) // 生成指定格式
async generateMarkdown(content) // Markdown
async generateHTML(content, options?) // HTML
async generateChart(data, chartType?) // ECharts 图表
async generateSlides(content, options?) // Reveal.js 幻灯片
async generateJSON(data) // JSON
async generateCSV(data) // CSV
// 查询
getSupportedFormats() // 获取支持的输出格式
}输出格式:
| 格式 | 引擎 | 说明 |
|---|---|---|
markdown | 内置 | Markdown 格式文本 |
html | 内置 | HTML 页面 |
chart | ECharts | 交互式图表 (折线/柱状/饼图等) |
slides | Reveal.js | 演示幻灯片 |
json | 内置 | 结构化 JSON |
csv | 内置 | CSV 表格 |
3. 数据模型
3.1 multimodal_sessions
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 会话ID |
| modalities | TEXT(JSON) | 输入模态列表 |
| context | TEXT(JSON) | 上下文数据 |
| status | TEXT | 状态 (active/completed) |
| token_count | INTEGER | Token 使用量 |
| created_at | INTEGER | 创建时间 |
| updated_at | INTEGER | 更新时间 |
3.2 multimodal_artifacts
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 工件ID |
| session_id | TEXT FK | 会话ID |
| type | TEXT | 类型 (input/output) |
| modality | TEXT | 模态类型 |
| format | TEXT | 格式 |
| content | TEXT | 内容 |
| metadata | TEXT(JSON) | 元数据 |
| created_at | INTEGER | 创建时间 |
4. IPC接口 (12个)
4.1 模态融合 (3个)
| 通道 | 说明 | 参数 |
|---|---|---|
mm:fuse | 融合多模态输入 | inputs |
mm:add-modality | 添加模态到会话 | sessionId, modality, data |
mm:get-modalities | 获取会话模态 | sessionId |
4.2 文档解析 (2个)
| 通道 | 说明 | 参数 |
|---|---|---|
mm:parse-document | 解析文档 | filePath, options? |
mm:get-supported-formats | 获取支持格式 | - |
4.3 上下文管理 (3个)
| 通道 | 说明 | 参数 |
|---|---|---|
mm:build-context | 构建上下文 | sessionId, inputs |
mm:get-context | 获取上下文 | sessionId |
mm:clear-context | 清除上下文 | sessionId |
4.4 输出生成 (2个)
| 通道 | 说明 | 参数 |
|---|---|---|
mm:generate-output | 生成输出 | content, format, options? |
mm:get-output-formats | 获取输出格式 | - |
4.5 会话管理 (2个)
| 通道 | 说明 | 参数 |
|---|---|---|
mm:get-session | 获取会话 | sessionId |
mm:list-sessions | 列出会话 | options? |
5. 事件
| 事件 | 负载 | 说明 |
|---|---|---|
modality:added | 模态添加 | |
fusion:completed | 融合完成 | |
document:parsed | 文档解析完成 | |
context:built | 上下文构建 | |
output:generated | 输出生成 |
6. 文件结构
desktop-app-vue/src/main/ai-engine/cowork/
├── modality-fusion.js # 5模态加权融合 (592行)
├── document-parser.js # 7格式文档解析 (542行)
├── multimodal-context.js # 上下文管理 (378行)
├── multimodal-output.js # 6格式输出生成 (501行)
└── multimodal-collab-ipc.js # 12个IPC处理器 (287行)7. 相关文档
文档版本: 1.0 最后更新: 2026-03-05
