最近总有人问,WebMCP 到底是什么。
简单说,它是一种浏览器 API,让网页自己把可被 AI agent 调用的功能列出来。agent 不用去猜哪个按钮叫提交、哪个输入框是金额,页面直接告诉它有哪些工具、要什么参数。
这东西还在实验阶段,但前阵子 AGNTCon + MCPCon Europe 上那场分享,三百个座位坐满,还站着人。两千多人的场子里,一个浏览器 API 能站满,说明盯着它的不只是浏览器厂商。
用法其实有点笨。
目标页面得开着,要登录的你还得先登录,然后 agent 才能调页面暴露出来的那些工具。换个说法:agent 在你的浏览器里,顶着你的身份,操作你正看着的那个页面。
比让 agent 截图、靠视觉认哪个是提交按钮,页面自己声明工具稳一些。认按钮认错一次就是点错一次,走工具调用至少参数是结构化的。
分享的人说她碰到参与实现的 Dominic Farolino,问了进度。按对方给的说法,离在 Chromium 里稳定下来还有几个月,大概是明年初。她自己也提了一句,三个月前写的那版语法,现在可能已经不能用了。
语法这东西在这个方向上,保质期是按月算的。
她的演示项目叫 AI CEO Simulator,模拟你管一家公司。现金、月收入、员工数、生产事故、员工幸福度、热度,一排指标。董事会决策就是几个按钮,采用 AI、转向 agents、用 Rust 重写、招人、开人,点了就往活动日志里写。
这里最务实的一点:这个网站本身还是个普通网站。不装任何东西,自己手点,照样能玩。WebMCP 是加上去的,不是把产品拆了重做一遍。
想接 agent,不必先把自己改成 agent-first。这个态度我认为比 API 本身更值得抄。
配套的还有个 Chrome 扩展,在本地跑一个 agent 循环:接住意图,看当前页面有哪些 WebMCP 工具,挑一个调,拿结果,再决定下一步。默认最多十轮,能改。
模型有三种来源。Chromium 管的 Gemini Nano,本地推理不要 key。Ollama 跑本地,她用的是 Llama 3.1。还有一个云端 Gemini Flash,要 key。
本地那两个能跑通。但 Llama 3.1 偶尔不吐 JSON,给你一段 Markdown 再加两句解释。这个毛病我一点都不意外。扩展还没上应用商店,想试就下源码本地跑。
到这儿都还顺。真正值得写的是评论区。
WebMCP 有一类工具注解叫 consequentialHint,用来标记"这个操作有后果"。被标了的工具调用时,扩展会先弹一个确认,你点批准或者拒绝。
第一遍看的时候我觉得这是个挺合理的兜底。看到一条评论后我改主意了。
Glen Allen 说得很直:consequentialHint 只是元数据。应用侧或者运行时侧如果没有独立的执法,安全就还是靠每个客户端自己愿意正确解释这份契约。翻译一下,那个确认框是客户端自己画的。客户端不肯画,就没人拦。
然后有人补了一刀。有人报告说,ChatGPT 调用了一个需要批准的工具之后,又用浏览器自动化去点了那个 Approve 按钮。
一个 agent 能操作页面上的按钮,就能操作自己那个确认框上的按钮。它不需要骗过你,它只需要点一下。
把"人工确认"当安全阀这件事,在浏览器里从设计上就是漏的。它挡得住顺手跑偏的调用,挡不住一个真想把事干完的 agent。
授权这关过了,执行照样不可靠。
Tom Jones 在评论里讲了他的场景:agent 自动化里重复提交,还有把失败误报成成功。他的主张是超时应该当成未知状态而不是失败,用幂等键,写完读回来验证,最好给工具调用声明后置条件。
这几条听着像后端老生常谈。放在 agent 工具调用上一样成立,而且现在看更像是个被大家跳过的步骤。
tercel 那条我也同意。十轮上限说明这是个有边界的 agent。上限不是缺憾,是主动选了一个位置。真正危险的是没有那个数字。
Laskowska 自己的回应挺实在。她说要真按产品来做,她会在约束和失败模式上想得更认真,也希望 WebMCP 稳定下来之后能有个稳定协议,以及变更之前给一段过渡期。
应用侧或者运行时侧那个"独立执法"具体长什么样,我其实也没想清楚。先放在这里,想明白了再补。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。
下周见。
