3.3 KiB
3.3 KiB
Visual Agent Phase 0 PoC
验证 "截屏 → 火山 VLM → 解析 → nut.js 点击/粘贴 → 发送" 端到端链路在微信 4.x 文件传输助手能不能跑通。
用什么模型
读取 netaclaw_model_channel id=2 的火山引擎配置(doubao-seed-2-0-pro-260215,2026-02 多模态)。
当前火山 channel 未配置 doubao-1.5-ui-tars-250428。如果 Seed 2.0 Pro 成功率 ≥ 80%,直接进 Phase A;若 < 80%,先去火山控制台开 UI-TARS 模型,再用
MODEL_NAME=doubao-1.5-ui-tars-250428环境变量重跑。
准备
- 打开 PC 微信 4.x 并登录
- 在微信里打开"文件传输助手"对话(主窗口可见,不要最小化到托盘)
- 让微信窗口在屏幕上清晰可见,最好最大化或大窗口
- 关闭其他可能弹窗的程序(防止抢前台)
- 确保仓库已
pnpm install过(backend 依赖已就绪,需要node-screenshots/@nut-tree-fork/nut-js/clipboardy/koffi/openai)
安装 PoC 需要的额外依赖
PoC 用的几个原生模块当前不在 backend deps 里,先装上:
cd packages/backend
pnpm add node-screenshots @nut-tree-fork/nut-js clipboardy koffi
(这一步等于 plan v2 的 Task 1 — 提前做也无所谓,反正后续要装。)
跑 PoC
# 在仓库根目录
pnpm --filter @neta/backend exec tsx ../../tools/visual_agent_probe/run-once.ts 3
- 参数
3= 跑 3 次(快速验证用) - 完整门禁验证应跑
20
启动后:
- 控制台打印环境信息和窗口句柄
- 倒计时 3 秒,期间不要碰键盘鼠标
- 之后每次自动:Ctrl+1(聊天 tab)→ Ctrl+F(搜索)→ 输入"文件传输助手"→ 回车 → 截图 + VLM 验证已进群 → 粘贴
[probe-i-ts]→ 回车 → 截图 + VLM 验证消息已发送 - 两次 VLM 调用 / 条
- 每条间 cooldown 3 秒
看什么
控制台最后会输出 Summary:
Summary
total runs: 3
successes: 3
success rate: 100.0%
...
门禁标准:
- ✅
success rate >= 80%→ 可进 Phase A,把脚本里录到的 VLM raw 输出转成 Task 3 的测试 fixtures - ❌
success rate < 80%→ STOP,讨论:- 换
doubao-1.5-ui-tars-250428试一次(在火山控制台先开通) - 或换 Claude Sonnet 4.6 vision
- 或调整 prompt
- 或放弃视觉路线
- 换
原始报告
完整 raw results(含每次的动作 trace 和 VLM 原始输出)落盘到:
docs/superpowers/followups/2026-05-14-visual-agent-poc-raw.json
这份文件后续用来:
- 生成 Phase A Task 3 的 50+ fixture 测试用例
- 校验 spec §7.3 的成本估算表
- 失败模式分析
失败排查
| 失败状态 | 含义 | 怎么办 |
|---|---|---|
window-missing |
没找到微信进程 | 确保微信已打开,窗口未最小化到托盘 |
verify-failed (step 4) |
Ctrl+F 搜索没生效 / 未进入文件传输助手 | 手动验一遍快捷键是否被微信支持;不行则改路线(直接点击) |
verify-failed (step 7) |
消息确实没发出去 / VLM 没看到 | 看 trace 里 vlm-2 的 raw 输出,可能是 prompt 太严 |
model-failed |
VLM API 调用失败 | 检查 apiKey + baseUrl 是否对,网络是否能通火山 |
exception |
截屏/键鼠/koffi 异常 | 看 error 字段 |
action-failed |
模型输出无法解析 | 看 raw 输出,可能不是合法 JSON |