Wink Pings

Agent 不用假装敲键盘了:wterm 让浏览器终端直接变成工具

wterm 支持 WebMCP 后,Agent 可以列举、读取、输入浏览器里的终端,还能按终端开启只读。演示里五个 fx agent 在四个终端里互相启动。评论区讨论最多的是读取范围、脱敏和 shell 权限边界。

Chris Tate 在 X 上发了一条更新:wterm 现在支持 WebMCP。页面里的终端可以直接被 Agent 使用,能力包括列举终端、读取屏幕和滚动缓存、等待输出、输入命令、按键。关键设置是按终端开启,且支持只读模式。演示里,五个 fx agent 在四个浏览器终端之间互相启动。

wterm 是 Vercel Labs 的实验项目,一个跑在浏览器里的终端模拟器。它用 DOM 渲染,文本选择、复制粘贴、浏览器查找、无障碍这些能力直接落在挂载的行上。核心用 Zig 写到 WASM,release 构建大约 26 KB。项目提供 React、Vue、Svelte 和 vanilla 绑定,仓库在 vercel-labs/wterm。

WebMCP 可以理解为页面把可调用工具暴露给 Agent 的一层接口。过去 Agent 操作网页终端,常见做法是抓 DOM,再伪造键盘事件。UI 一改,脚本就碎。现在终端把动作暴露成工具,Agent 调工具,不用猜页面结构。Ram Pathath 在回复里说,Agent 往终端里输入,不用假按键,感觉没那么脆。

但真正值得看的是边界。John Rood 说,按终端开启和只读是正确的默认。很多方案直接给 Agent 一个完整 shell,然后赌提示词能约束住,爆炸半径就是工作目录里恰好有什么。这个说法有点狠,也点到了问题。

只读也不是零风险。Zhao Liu 提醒,终端输出可能带 token、客户数据、日志。Max Petrusenko 补了一句,只读模式挡住输入,但终端打印出来的东西,照样会进入读它的 Agent 上下文。权限、可见范围、脱敏,得一起看。

评论区还有几个没被回答的问题。Moriarty 问,读取拿到的是完整 scrollback,还是只有当前屏幕,这决定 Agent 能不能跟完一段长构建日志。Asmir 问,拿到的是完整保留输出,还是 readText() 的快照。Ignacio Ferro Picón 问,wait-for-output 用的是 OSC 133 的提示符状态,还是静默超时。原始终端里,命令结束和命令很慢看起来一样,有 OSC 133 才有机会拿到退出码。Brent Summers 则问,一个 Agent 能不能读另一个终端的输出,还是只能读被点开的那些。这些问题比演示更重要,因为它们决定工具在真实工作流里能不能用。

WebMCP 的位置也有意思。Yiyang Suen 问,很多场景 CLI 比操作 UI 更直接,Agent 已经能开终端,为什么还要走 WebMCP。soren law 的回答是,页内终端用 WebMCP 是对层,DOM 假按键的 Agent 每次 UI 调整都会坏,opt-in 加只读可以先让 Agent 盯日志,不给写权限。

这个演示不大,信息量够。终端从人看的窗口,变成 Agent 能调用的接口。接口怎么开、开给谁、给多少,才是接下来要盯的部分。wterm 把默认设成按终端开启和只读,方向对。剩下的,要看实现里怎么回答读取范围和输出泄密。

发布时间: 2026-11-03 23:45