Milestone · two hands

一双手,伸进了
你的浏览器,
和你的屏幕。

10·01 做了很多事,但只有两件改变了形态:V Browser 的跨 harness 契约打通——同一套调用在四个 runtime 上一致;Mac 节点级 computer use 打通——从那以后,「看屏幕、点鼠标」不再只有本机一台能做。两件都不容易,而且都是可复用的。

V
V · 手伸出去的那天
4runtime 同一套契约worker / vcodex / vds / vcc
v0.4.7V Browser 发布版本10·01 12:49 · main @04f2848
24Mac 节点动作面Peekaboo · contract v2
1200×502本轮实测截图现场复核,非记录转述
01 / V Browser × 跨 harness

不是「功能上线」,是
四个 runtime 用同一套契约。

跨 harness 的难点从来不是能不能连上浏览器,而是:同一个动作,换一个 runtime 还成不成立。0.4.7 之前,答案是「有些成立」。

BEFORE · 0.4.7 之前

插件改参数 → Codex 轮次直接失败

旧插件在自己的 hook 里改写了 browser 参数。Codex harness 不允许任何东西改写它的 app-server 审批参数,于是每一轮都报错。

  • OpenClaw tool policy rewrote Codex app-server approval params.
  • 表现不是「功能弱」,是整轮不可用 → V Browser 只在部分 runtime 活着
AFTER · 0.4.7 起

不改写,改成显式契约

新插件不再改写参数,把原本藏在 hook 里的东西摊到台面上:谁调用,谁负责把参数带全。

  • acquire 返回 browserParams(profile + target)
  • 后续每次 browser 调用原样带上,直到 release
  • 漏传会被拒绝,且错误信息直接告诉你该传什么
v_browser_acquire     →  { profile: "vbrowser-03", target: "host" }
browser  (每次调用)   →  原样带上 profile + target,直到 release
v_browser_release     →  结束租约 · finally 必须调用
同一套契约,四个 runtime 都验过:worker(生产默认)· vcodex(OpenAI + Codex)· vds(DeepSeek + Codex)· vcc(Claude CLI)。VLab 与 V 上都用真实飞书消息走过一遍——也就是说,换模型、换 harness,这句话仍然成立。
10·01 上午

通道被拦停

本 DM 里 v_browser_* 调用被策略 hook 拦停,你的指令是「直接用我的 mac,不用 vbrowser 了」。

10·01 上午

同时铺了第二条路

在 Mac 上起独立调试 Chrome(专用 profile,不碰日常 Chrome),走本机 CDP loopback —— 导航 register.si 成功并读到正文。

10·01 12:49

根因修复发布

v0.4.7 发布到 V:仓库 main @04f2848,插件不再改写 Codex 的 app-server 审批参数。

10·01 13:25

从 Codex 轮次复验

在 Codex harness 的飞书私聊轮次里复验:devices 返回在线的 Tianyi Mac Chrome,审批参数被改写的报错消失。

10·02 02:4x

本轮现场复核

再次调用 v_browser_devices → 返回 online=true 的 Tianyi Mac Chrome(consentScope=browser / access=owner)。

组件版本 · 各自独立部署

四个版本号,别混着看

组件版本核验
V Browser platform / Workerv0.4.72026-10-01
Broker @versa/v-browser-assistv0.3.12026-08-07
OpenClaw plugin @versa/openclaw-v-browser-devicev0.4.72026-10-01
Chrome 扩展v0.2.42026-08-05
本轮现场复核 · 02:4x

它现在真的在线

写这页之前我重新调了一次设备列表,不是引用记录:

  • Tianyi Mac Chrome · online = true
  • consentScope = browser(整浏览器授权)
  • access = owner · 另有 1 台离线副本
  • 10-01 13:25 Codex 轮次复验同样通过

未闭环 · Skill 契约同步

已安装 skill 当天同步到新契约(备份 SKILL.md.bak-20261001);生产 / VLab 两份 skill 副本仍需向上游同步。

未闭环 · Mac 上的已知限制

经扩展驱动 Mac Chrome 时,action=text 带 selector、以及 aria 格式快照可能超时 → 优先用默认快照。

未闭环 · 下载不在范围内

download / waitForDownload 明确不属于 V Browser 能力 —— 需要下载时应报「不支持」,而不是「回归失败」。

未闭环 · 边界不变

OpenClaw 管 Browser/CDP 语义;V Browser 只管 设备/用户/Tab 授权 + 独占 Session 租约 + 路由与清理。

02 / Mac 节点 computer use

差一步,那一步
不在代码里,在系统授权里。

它一度看起来像「节点离线」。实际是:请求已经打到节点上了,被 macOS 的隐私授权挡在门外。所以修它的地方不是配置,是你 Mac 上的两个开关。

现象 · 一开始的误判

「离线」其实不是离线

节点已配对、已批准、在线,caps 里明确写着 canvas / computer / screen,但 computer screenshot 返回 screen snapshot failed。

  • 错误结论:以为 MacBook Pro 节点离线
  • 更正:请求已到达节点,被系统权限拦住 —— 不是离线,也不是 tool policy 拦截
  • permissions 全 false:accessibility / screenRecording / camera / microphone / notifications / location
  • 同一台硬件有两条独立通道:Tianyi Mac 管 shell,MacBook Pro 管电脑控制(Mac17,9)
修正后 · 本轮实测

眼睛和手一起到位

授权完成后,我现场跑了一次截图:返回的是一张真实屏幕,不是错误码。

  • screenshot → 1200×502(screen 0)
  • permissions: accessibility=true · screenRecording=true
  • provider: Peekaboo(peekaboo-v2)· contractVersion 2
  • 观测: 图像 + 无障碍树 | 目标: screen / window / element
  • 投递: background / foreground | multiDisplay = true
1

OpenClaw.app → 菜单栏 → Settings → General → Capabilities

确认 Allow Computer Control 开启,provider = Peekaboo;在同一面板分别 Grant Accessibility / Event Posting / Screen Recording。

2

macOS 系统设置 → 隐私与安全性

给 OpenClaw 勾上「辅助功能」与「屏幕与系统音频录制」。

3

改完必须退出并重开 OpenClaw

macOS 把辅助功能授权缓存在进程生命周期上 —— 不重启,权限就是旧值。

4

若报 Accessibility grant may be stale

在辅助功能列表用 − 删掉 OpenClaw,再重新加回 /Applications/OpenClaw.app。

screenshotleft_clickright_clickmiddle_clickdouble_clicktriple_clickmouse_moveleft_click_dragleft_mouse_downleft_mouse_upscrolltypekeyhold_keylist_appslist_windowsget_accessibility_treeget_cursor_positionget_window_statelaunch_appkill_appbring_to_frontset_valueinvoke_menu
能力
24 个动作截图、点击、双击、拖拽、滚动、打字、按键、窗口与应用管理、菜单、设值
观测
图像 + 无障碍树两条互补:看得见画面,也找得到元素
授权
持久、无逐动作确认开启后不会每次询问 —— 这是收得回、但不拦路的那种授权
02.1 / 通用化的含义

除了本机,节点也能当手用。

这是你昨天那句话的准确版本:不只是「Mac 能用了」,而是 computer use 从「本机特性」变成了「按节点选择的资源」。

节点平台provider观测动作面目标
MacBook Pro
支持屏幕操作
macOS 27.0.0 · v2026.9.6Peekaboo (peekaboo-v2)图像 + 无障碍树24 项:截图 / 点击 / 打字 / 按键 / 滚动 / 窗口与应用管理 / 菜单 / 设值screen / window / element
V host desktop
支持屏幕操作
Linux · v2026.9.1CUA Computer (cua-computer)图像 + 无障碍树 + 浏览器更多:+ zoom、录制、browser_*(导航 / 点击 / 输入 / 上传 / 下载)screen / window / element / browser
Tianyi Mac(同一台硬件的另一条通道)
仅 shell / 文件
macOS · node-host—不做屏幕只广播 shell / file / mcp / local-inference无鼠标键盘
容易混的一点:「Mac 上能跑命令」和「Mac 上能看屏幕、点鼠标」是两条通道、两个开关,互不影响。shell 那条从 09·20 起就在用;眼睛和手这条是 10·01 才接上的。Linux 侧(V host desktop)走的是另一个 provider,动作面更大 —— 多出 zoom、录制和 browser_* 一整组浏览器动作,但它的 recording = true、Mac 侧 recording = false,这两个别互相套用。

边界 · 授权方式

macOS 的 computer-use 是持久授权、无逐动作确认。开启后 V 在你屏幕上点击 / 输入不会每次询问 —— 这一点你有权知道,也必须知道。

边界 · 收回方式

关掉 Allow Computer Control,节点停止广播该能力,不需要重新配对。Remote Management 账号需要有 Observe + Control。

边界 · 我的纪律

截图可能包含私人信息。画面不进报告、不进群、不外发;只回报结论,不回报画面。这页从头到尾没有放任何一张屏幕截图。

边界 · 不代表万能

屏幕能操作 ≠ 什么都能做。外部发送、花钱、改配置仍然走红线;越出授权范围的动作,仍然是先问再做。

03 / 为什么这两件是一类事

上一次是手,
这一次是眼睛。

09·20 我把执行面伸出了这台机器(跑命令、编译、读本机文件);10·01 补上的是另一半天赋 —— 看得见、点得动。少了任何一半,「在外面干活」都只是半句话。

Before · 两条路都是残的

要么没有登录态,要么要人配合

浏览器只有两难:用我自己那台(干净、但没有你的登录态),或者把每一步都推给你。屏幕控制只有本机一台,够不着任何远端设备。

  • 能读页面 ≠ 能以你的身份操作
  • 能跑命令 ≠ 能看到界面上发生了什么
  • 换 harness 就失效 → 不是能力,是碰巧
After · 两条路都通了

授权范围内的真浏览器 + 按节点选的一双手

V Browser 给的是你明确授权的那台 Chrome(tab 级或整浏览器,随时可撤),而且四个 runtime 行为一致;computer use 给的是「看 + 点」,可以指定在哪个节点上执行。

  • 独立性:一路挂了不代表另一路不能用(昨天上午就是现成的例子)
  • 可撤销:两个能力都有明确的关闭开关,不需要重新配对或重装
  • 可复用:契约固定下来了,下次是一句话,不是一次排查
04 / Also today

其他都算小点,
压缩在这里。

不是不重要,是形态没变 —— 它们是「做完了」,不是「V 以后不一样了」。

域名 .si 专项

makaron.si 双源确认可注册;versa.si / openclaw.si 疑同一运营方抢注挂牌($99,888 / $899)。本机密钥库无任何注册商账号与支付方式 → 硬阻塞,V 下不了单。

Mac 独立调试 Chrome

专用 profile 不碰日常 Chrome,本机 CDP loopback。关键坑:Chrome 136+ 起默认 profile 会直接忽略 --remote-debugging-port,必须给独立 --user-data-dir。

Nexus 建站链路大修

客户发文件「没反应」= agent 不走入库管线 + 入库脚本对空参崩溃,两层都修完发生产,7 租户已切;SKILL 从 33,846 字符拆成主文件 7,112 + 6 份 references。

希望树 FOH × 潘浩

小树(Mac mini)陪跑:Stage 0 地基 / Stage 1 五条 LESSON / Stage 2 知识沉淀 + 晨报定稿,跨公司 A2A 四轮定稿。

lark-cli

1.0.94,doctor 全绿;28 个内嵌 skill 全量同步到 ~/.agents/skills/(新增 265 / 更新 147)。

Night Shift

6 张卡全部 workboard_complete:1080×1920 / 30fps / 15.000s / 单音轨,QC passed。

⚠ V 侧输出路径缺陷 ①(未修)

内部笔记 / 草稿进外部群 4 次(Handoff、open items、memory 摘要),每次由小树当场指出,V 自己没发现。

⚠ V 侧输出路径缺陷 ②(未修)

长 / 结构化文本被自动升级为卡片,对端只看到「请升级至最新版本客户端」,正文丢失 ≥6 次 —— 根因未查明。

⚠ 小树晨报验收

10/2 09:00 首次发布,需连续 3 天(10/2–10/4)四段齐全、第三段不为空、非敏感、纯文本,才算 Stage 2 闭环。

05 / 证据分级

哪句是我实测的,
哪句是记录转述的。

这两件事都是「基础设施」,所以更要分清:什么是这一轮我真的跑过的,什么是从发布记录里读来的。

说法证据级别
V Browser 跨 harness 可用10-01 13:25 Codex-harness 飞书私聊轮次复验 + 本轮 v_browser_devices 返回 online 设备实测
Mac 节点 computer use 可用本轮实测 screenshot 返回 1200×502 真实屏 + nodes status 权限 accessibility/screenRecording 均为 true实测
四个 runtime 契约一致发布记录写明 worker / vcodex / vds / vcc 一致,VLab 与 V 上用真实飞书消息验过记录 · 本轮未逐一复跑
Chrome 136+ 需独立 --user-data-dir官方行为 + 当天本机实测(默认 profile 直接忽略调试端口参数)实测 + 文档
节点动作面清单nodes status 返回的 computerUse 契约字段(provider / contractVersion / actions / targets)实测
06 / 收在这

两个 runtime 无关的能力,
比两个能用的功能值钱。

今天这两件之所以重要,不是因为「多了两个功能」,而是因为它们的成立条件不再依赖某一次巧合:浏览器那条,换模型换 harness 都成立;屏幕那条,换节点也成立(macOS 一套 provider、Linux 另一套)。这才是能往上叠东西的地基。还有没做完的部分 —— 生产 / VLab 的 skill 副本还要向上游同步、Mac 经扩展的少数动作仍会超时、下载明确不支持、两条输出路径缺陷还挂着 —— 我把它们和已验证的部分分开写了,没有混在一起。