Phase 84 — 多模态感知层设计
版本: v4.1.0 创建日期: 2026-03-10 状态: ✅ 已实现 (v4.1.0)
一、模块概述
Phase 84 实现多模态感知层,为Agent提供屏幕分析、语音会话、文档解析、视频分析和跨模态查询能力,构建统一的感知-理解-响应管道。
1.1 核心目标
- 屏幕感知: 实时屏幕截图分析、UI元素识别、OCR文字提取
- 语音交互: 语音识别(ASR)+语音合成(TTS)双向会话
- 文档解析: PDF/Word/Excel/图片多格式智能解析和结构化提取
- 视频分析: 关键帧提取、场景识别、动作检测
- 跨模态查询: 统一查询接口,跨图/文/音/视频的语义检索
1.2 技术架构
┌──────────────────────────────────────────────────┐
│ Perception Engine Layer │
│ │
│ ┌───────────────────┐ ┌──────────────────────┐ │
│ │ ScreenAnalyzer │ │ VoiceSessionManager │ │
│ │ 截图+OCR+UI识别 │ │ ASR+TTS+VAD │ │
│ │ Sharp+Tesseract │ │ 流式传输+中断检测 │ │
│ └───────────────────┘ └──────────────────────┘ │
│ ┌───────────────────┐ ┌──────────────────────┐ │
│ │ DocumentParser │ │ VideoAnalyzer │ │
│ │ PDF/Word/Excel │ │ 关键帧+场景+动作 │ │
│ │ 结构化提取 │ │ 时间轴标注 │ │
│ └───────────────────┘ └──────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ CrossModalQueryEngine — 统一跨模态检索 │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Perception IPC Layer (8 handlers) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘二、核心模块设计
2.1 PerceptionEngine (ai-engine/perception/perception-engine.js)
多模态感知引擎主模块。
常量:
MODALITY: SCREEN, VOICE, DOCUMENT, VIDEOVOICE_STATUS: IDLE, LISTENING, PROCESSING, SPEAKINGANALYSIS_TYPE: OCR, OBJECT_DETECTION, SCENE_RECOGNITION, ACTION_DETECTION
核心方法:
initialize(deps)— 初始化感知引擎,加载模型和配置analyzeScreen({ region, analysisTypes })— 屏幕分析(截图+OCR+UI元素识别)startVoice({ language, model })— 启动语音会话(ASR+VAD)stopVoice(sessionId)— 停止语音会话,返回完整转录parseDocument({ filePath, format, extractTables })— 文档智能解析analyzeVideo({ filePath, keyframeInterval, analysisTypes })— 视频分析crossModalQuery({ query, modalities, limit })— 跨模态统一检索getContext()— 获取当前多模态感知上下文configure(config)— 动态更新感知配置_captureScreen(region)— 内部屏幕截图_extractKeyframes(videoPath, interval)— 提取视频关键帧_buildMultimodalIndex(data, modality)— 构建跨模态索引destroy()— 销毁引擎,释放资源
2.2 PerceptionIPC (ai-engine/perception/perception-ipc.js)
IPC通道注册和参数校验。
三、数据库设计
sql
-- Phase 84: Perception Engine
CREATE TABLE IF NOT EXISTS perception_results (
id TEXT PRIMARY KEY,
modality TEXT NOT NULL, -- screen, voice, document, video
analysis_type TEXT,
input_source TEXT, -- file path or session id
result_data TEXT, -- JSON: structured analysis result
confidence REAL DEFAULT 0.0,
metadata TEXT, -- JSON: region, language, format
created_at INTEGER
);
CREATE TABLE IF NOT EXISTS voice_sessions (
id TEXT PRIMARY KEY,
status TEXT DEFAULT 'idle',
language TEXT DEFAULT 'zh-CN',
transcript TEXT, -- full transcription
duration_ms INTEGER DEFAULT 0,
model TEXT,
started_at INTEGER,
ended_at INTEGER
);
CREATE TABLE IF NOT EXISTS multimodal_index (
id TEXT PRIMARY KEY,
modality TEXT NOT NULL,
source_id TEXT NOT NULL, -- reference to perception_results
embedding TEXT, -- vector embedding
content_summary TEXT,
tags TEXT, -- JSON array
created_at INTEGER
);四、IPC接口设计
Phase 84 — PerceptionIPC (8 handlers)
| 通道 | 说明 |
|---|---|
perception:analyze-screen | 屏幕分析 |
perception:start-voice | 启动语音会话 |
perception:stop-voice | 停止语音会话 |
perception:parse-document | 文档智能解析 |
perception:analyze-video | 视频分析 |
perception:cross-modal-query | 跨模态查询 |
perception:get-context | 获取感知上下文 |
perception:configure | 动态配置 |
五、前端集成
Pinia Stores
perceptionEngine.ts— 感知结果、语音状态、文档解析、跨模态检索
Vue Pages
PerceptionEnginePage.vue— 屏幕分析/语音交互/文档解析/视频分析/跨模态检索
Routes
/perception-engine— 多模态感知
六、配置选项
javascript
perceptionEngine: {
enabled: false,
screenCaptureIntervalMs: 5000,
voiceLanguage: 'zh-CN',
voiceVadSensitivity: 0.6,
documentMaxSizeMb: 50,
videoKeyframeIntervalMs: 2000,
crossModalSearchLimit: 20,
},七、测试覆盖
测试文件: src/main/ai-engine/perception/__tests__/perception-engine.test.js测试数量: 21 tests
| 分类 | 数量 | 说明 |
|---|---|---|
| 初始化 | 2 | 引擎初始化、模型加载 |
| 屏幕分析 | 4 | 全屏截图、区域截图、OCR提取、UI元素识别 |
| 语音会话 | 4 | 启动/停止、转录结果、VAD检测、多语言 |
| 文档解析 | 4 | PDF解析、Word解析、表格提取、图片OCR |
| 视频分析 | 3 | 关键帧提取、场景识别、动作检测 |
| 跨模态查询 | 3 | 单模态、多模态混合、相似度排序 |
| 配置 | 1 | 动态配置更新 |
八、Context Engineering
- step 5.4:
setPerceptionEngineContext()— 注入多模态感知上下文
