跳转到内容

模态处理与模型分工

完整规格见 00-product-spec.md。推理栈见 13-inference-and-dependencies.md

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
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]
来源 内容 角色
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 行为的证据
子任务 技术 输出
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]

VLM 用于以下场景:

  • Figma、Preview、设计工具、图片查看器。
  • OCR 文本极少,但 session 中有明显的视觉类工作。
  • canvasimagevideodesign_surface region。
  • 需要 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 关联。

子任务 模型 输出
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,而不是原始的整屏截图。

阶段 模态能力
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
不做 原因
把整屏 OCR 作为行为识别的主路径 噪声过大,无法稳定判断行为
每帧都跑 VLM 功耗和延迟成本无法接受
让 VLM 直接产出最终 JSON 缺少 grammar 约束和 evidence 校验
对完整录制跑 Video-LLM 后台观察的成本过高
把 Python ML 作为主路径 打包和跨平台成本过高