Skip to content

坐标化 computer-use 模式:截图→定位→模拟输入回路(含 <1B 本地视觉模型兜底) #71

Description

@nehcuh

坐标化 computer-use 模式(截图 → 定位 → 模拟输入 → 验证回路)

背景

App 页签 P1 解决了「启动」;spike(scripts/spike/uia-cloudmusic-spike-report.md,结论归档于 #70 评论)证明:

  • UIA 语义自动化对 Chrome/正规 Electron 应用可行(同机 Chrome 实测 163 节点、输入框可读)
  • 对网易云这类 OSR 自绘应用不可行(OrpheusBrowserHost 5 节点、无水合)
  • 可操作性是 per-app 属性

因此对自绘应用,唯一通用路径是坐标化操作:截图 → 视觉定位元素 → SendInput 模拟点击/输入 → 截图验证效果

Owner 核心需求

集成一个小的图形识别模型:当用户没有配置视觉模型时,可以本地完成截图识别。开源界有 1B 以内的图形识别模型。

初步调研(2026-07-18,待规划阶段核实)

<1B 候选:

  • TinyClick(Samsung,0.27B,Florence-2-Base 底座):ScreenSpot 73.8% / OmniAct 58.3%,~250ms 延迟,专为单击定位训练;~250ms CPU 级延迟可行。⚠️ 论文自述为 research artifact,新应用上真实准确率会掉;HF 权重许可证待核实(Florence-2 是 MIT,TinyClick 权重许可需查)
  • Florence-2-Base/Large(0.23B/0.77B,MIT):原生 ScreenSpot≈0(未微调不能做点定位),但 OCR/检测/短语接地可用
  • 2-3B 边界(供参考,超出 1B 限制):ShowUI-2B(75.1% zero-shot)、ZonUI-3B(86.4%)

分层定位策略(规划基线假设):

  1. UIA 优先——免费、精确、可靠(spike 已证 Chrome/Electron 可用)
  2. Windows.Media.OCR——Windows 内置 WinRT OCR,零下载、中英文、返回 bounding box,覆盖「找到'搜索'按钮」类文本锚点
  3. 本地小模型(TinyClick 类)——用户未配视觉模型时的兜底
  4. 用户配置的云端视觉模型——上限能力

关键工程约束

  • 运行时:companion 是 Node TS SEA 单 exe;本地模型推理路径(onnxruntime-node 原生绑定 vs sidecar 进程)是核心架构决策
  • 模型分发:不能打进 SEA exe(体积);按需下载到 ~/.cmspark-agent/models/,sha256 校验 + 许可证确认门
  • 同 IL 原则:SendInput 对同权限应用无需 UIAccess/EV 证书(spike 结论);UAC/安全桌面硬性不可达,必须 fail-closed

安全焦点(对抗阶段必查)

  • 截图注入:屏幕内容是不可信输入——恶意窗口可以在屏幕上「写指令」骗过 VLM 驱动回路;规划必须含 VLM 提示词隔离与「屏幕指令绝不视为用户指令」原则
  • 误点击/错误窗口竞争;DPI 与多显示器坐标映射
  • 禁区:密码框、支付确认、UAC 弹窗——硬拒绝
  • 证据链:每动作前后截图存证(脱敏存储)
  • 与 App 页签白名单绑定:坐标化操作仅限白名单应用的窗口

流程

按 owner 规则:规划 agent → 对抗 agent →(owner 审)→ 开发 agent → 评审 agent。
规划产出:docs/decisions/coordinate-computer-use-plan.md
对抗产出:docs/decisions/coordinate-computer-use-adversary.md

非目标(初拟,规划可修订)

  • macOS/Linux(先 Windows)
  • 连续录制/全天候屏幕理解(screenpipe 类)
  • 游戏/全屏独占应用
  • 自动化绕过任何应用的反自动化机制

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions