模态处理与模型分工
完整规格见 00-product-spec.md。推理栈见 13-inference-and-dependencies.md。
1. 总原则
Section titled “1. 总原则”YZOS 观察一个多模态的世界,但不会把所有信息都交给一个大模型处理。处理顺序是:结构化来源优先,其次是区域级 OCR,再到视觉语义,最后才是文本 triage。
| 原则 | 说明 |
|---|---|
| 结构优先 | app adapter、AX、DOM 优先于 OCR |
| 专模专用 | OCR 用 Vision.framework,语音用 sherpa-onnx,文本结晶用纯文本 LLM |
| ROI OCR | OCR 只处理 layout region(ROI),不做无差别整屏扫描 |
| VLM 低频使用 | VLM 只处理视觉密集、OCR 结果为空、或 canvas 场景 |
| 证据先行 | 所有模态先转换为 evidence,再进入 triage |
| Preflight 就绪 | 模态在对应 Preflight check 通过后运行;非关键 check 失败给 SKIP,但 runtime 继续 observing |
2. 模态总览
Section titled “2. 模态总览”flowchart TD
Observe[Observe]
subgraph Structured[structured sources]
AILogs[AI tool logs]
AXDOM[AX / DOM / app adapter]
end
subgraph Visual[visual sources]
Seg[ScreenCaptureKit segments]
ROI[ROI OCR boxes]
VLM[VLM labels]
end
subgraph Audio[audio sources]
VAD[VAD / ASR / speaker]
end
Observe --> Structured
Observe --> Visual
Observe --> Audio
Structured --> Evidence[evidence bundle]
Visual --> Evidence
Audio --> Evidence
Evidence --> Triage[text-only triage]
Triage --> Out[entities / OKF / tasks]
3. 结构化信号
Section titled “3. 结构化信号”| 来源 | 内容 | 角色 |
|---|---|---|
| AI tool logs | prompt、tool use、cwd、source file | 项目和任务的主证据 |
| AX tree | role、value、label、focus、selection、bounds | UI layout 的主证据 |
| DOM / browser | URL、title、selected node、accessibility tree | Web app 的主证据 |
| app adapter | 来自 Figma、Cursor、Terminal 等的专用数据 | 高可信结构化来源 |
| clipboard | copied text、timestamp、target context | copy / paste 行为的证据 |
4. 图像与屏幕
Section titled “4. 图像与屏幕”| 子任务 | 技术 | 输出 |
|---|---|---|
| screen evidence | ScreenCaptureKit | mp4 segment |
| keyframe extraction | ffmpeg | png keyframe |
| OCR | Vision.framework | text boxes |
| OCR postprocess | bbox 排序、置信度过滤 | paragraphs |
| layout label | 启发式规则 + AX bounds | ui_regions |
| visual semantics | VLM | screen_semantics |
处理顺序:
flowchart LR Regions[ui_regions] --> Crop[crop ROI] Crop --> OCR[Vision OCR] OCR --> Boxes[text boxes] Boxes --> Paras[paragraphs] Paras --> Merge[merge evidence]
5. VLM
Section titled “5. VLM”VLM 用于以下场景:
- Figma、Preview、设计工具、图片查看器。
- OCR 文本极少,但 session 中有明显的视觉类工作。
canvas、image、video、design_surfaceregion。- 需要
screen_semantics支撑 triage 判断。
VLM 不直接产出 task 或 entity。最终的结晶始终由纯文本 triage 阶段完成。
| 类型 | 来源 | 处理方式 |
|---|---|---|
| screen segment | 后台屏幕证据 | 抽取关键帧 -> ROI OCR / VLM |
| user video file | 会议录制或导入的文件 | ffmpeg 抽帧 + 音轨分离 |
默认不对完整视频跑 Video-LLM。
| 子任务 | 技术 | 输出 |
|---|---|---|
| VAD | sherpa Silero | speech segments |
| ASR | sherpa SenseVoice | transcript |
| diarization | sherpa pipeline | speaker timeline |
| voiceprint | 3D-Speaker | person match |
语音证据会与 activity session、person entity、meeting event 关联。
8. 文本与知识
Section titled “8. 文本与知识”| 子任务 | 模型 | 输出 |
|---|---|---|
| triage | Qwen2.5-7B + grammar | JSON decision |
| summary | Qwen2.5-7B | OKF body |
| entity update | Qwen2.5-7B | summary / links |
| embedding | multilingual-e5-small 或当前激活的 embedder | vector |
| PII | 规则 + NER | redacted text |
triage 的输入是 evidence bundle,而不是原始的整屏截图。
9. 阶段交付
Section titled “9. 阶段交付”| 阶段 | 模态能力 |
|---|---|
| P0 | activity、AI logs、clipboard、OKF、MCP |
| P1 | screen segments、OCR、VLM smoke test、screen_semantics |
| P2 | UI snapshots、layout regions、ROI OCR、behavior events |
| P3 | app adapters、audio、chat、multi-device |
10. 明确不做的事情(及原因)
Section titled “10. 明确不做的事情(及原因)”| 不做 | 原因 |
|---|---|
| 把整屏 OCR 作为行为识别的主路径 | 噪声过大,无法稳定判断行为 |
| 每帧都跑 VLM | 功耗和延迟成本无法接受 |
| 让 VLM 直接产出最终 JSON | 缺少 grammar 约束和 evidence 校验 |
| 对完整录制跑 Video-LLM | 后台观察的成本过高 |
| 把 Python ML 作为主路径 | 打包和跨平台成本过高 |