AI 博客

Safari MCP、Chrome DevTools MCP、Playwright MCP 与扩展式智能体对比

在这件事上,工具数量什么也决定不了。真正决定「浏览器智能体能不能干活」以及「遇上恶意页面会有多糟」的那根轴,是它握着哪个会话——一个隔离的自动化上下文、一个在悄悄累积登录态的专用配置档,还是你自己那个已登录的浏览器。今年交付了 MCP 服务器的两家浏览器厂商都有意把你自己的会话排除在外,这正是它们都做不了大家以为会有的「智能体帮你下单」演示的原因。

作者 智能体 AI 维基 24 分钟读完

每一篇比较智能体浏览器工具的文章都以工具数量开场,而工具数量什么也决定不了。真正决定「这东西到底能不能用」以及「页面变恶意时会有多糟」的那根轴,是智能体拿到哪个会话:没有身份、一个由它自己积累起来的专用配置档,还是你用来登录银行的那个浏览器。苹果、谷歌、微软和扩展厂商各选了一个不同的答案,而一旦你按这根轴把它们排开,选择就不再关于功能,而是关于:你愿意把什么交给一个刚刚读完一个不可信页面的模型。

一览

给智能体一个浏览器的四种方式,按它握着你多少东西排序。

方案它是什么智能体拿到的会话最擅长
Safari MCP 苹果自家的服务器,safaridriver --mcp,自 Safari 27 起进入稳定版 一个隔离的自动化会话——没有 cookie、密码或历史 在你无法仿真的那个浏览器上调试 WebKit 渲染
Chrome DevTools MCP 谷歌对 DevTools 协议的封装 一个专用 Chrome 配置档,跨多次运行持久保留 性能追踪与网络层面的诊断
Playwright MCP 微软的服务器,在无障碍树上行动 默认一个专用配置档;--isolated 给你无尘室 可复现地驱动流程,横跨三个引擎
扩展式智能体 浏览器内的助手,例如 Claude in Chrome 你真实的配置档,带着你已有的每一个登录态 在你已登录、又无法脚本化的站点上办事
How much of your identity the agent holds Horizontal bars for four options. Safari MCP is shortest, running an isolated automation session with no cookies or logins. Chrome DevTools MCP and Playwright MCP are mid-length, each using a dedicated profile that accumulates logins across runs. Extension agents are longest, holding the user's own profile and every existing session. Share of your identity the agent holds Safari MCP isolated session — no cookies, no logins Chrome DevTools MCP dedicated profile, reused across runs Playwright MCP dedicated profile, or --isolated Extension agents your own profile — every session you have less capable, fails safe more capable, fails open
同一把梯子既量能力也量暴露面。没有哪一档能只给你其中一样。

为什么会话就是全部的决定

Three session models and what an injected instruction reaches Three columns: a clean automation context holding no credentials, a dedicated profile that accumulates logins over time, and the user's own profile carrying every existing session. Each column lists what the context holds and what an instruction injected into a visited page can therefore reach, with a closing note that the reach is the cookie jar. One injected line, three cookie jars Clean automation context Dedicated profile Your own profile HOLDS no cookies, no saved passwords, no history, no AutoFill whatever you have logged it into, accumulating, no lifecycle every session you have — mail, bank, repos, admin consoles CAN DO THE ERRAND? No — it is not you anywhere On the systems you signed it into Yes, anywhere you are signed in Page carries an injected instruction SO THE INJECTION REACHES public pages, the local filesystem if exposed, and nothing of yours everything that profile has ever been logged into, reviewed by nobody account takeover as you, acting as you Capability and exposure are the same variable; the cookie jar is the dial.
一条被注入的指令,能伸多远,就等于智能体手里那只 cookie 罐有多大。

能力与暴露面是同一个变量

一个处在干净上下文里的智能体,可以加载公开页面、读 DOM、跑 JavaScript、截图。它查不了你的订单状态,因为它不是你。把你的配置档给它,它就能把整件事办完——而它访问的任何页面上的一段话,现在对话的对象是一个握着你全部会话的进程。提示词注入不再是抓取层面的烦恼,而成了账户接管的原语;不是因为模型变弱了,而是因为影响半径变大了。

这正是今年交付了 MCP 服务器的两家浏览器厂商都把你自己的会话排除在外的原因。苹果干脆走到了梯子最低那一档:一个与你的浏览相隔离的专用自动化会话,够不着 cookie、已保存的密码、自动填充或历史。谷歌则停在往上一档,在自己的缓存目录下启动一个单独的 Chrome 配置档,而不是接上你那个。两者都不是疏漏,也不是 v1 的局限——对一个任何 MCP 客户端都能接上的服务器来说,这是唯一站得住脚的默认值,而这也正是它们谁都做不了大家以为「浏览器会说 MCP 了」之后就该有的那个「智能体帮你下单」演示的原因。

中间那一档才是人们最容易读错的

一个专用配置档不是无尘室。Chrome DevTools MCP 在多次运行之间复用它的 user-data 目录,除非你显式要求隔离;Playwright MCP 默认同样是持久的。这是有意为之,也很方便:你只需登录预发环境一次,智能体就一直保持登录。但这意味着那个配置档会在数周里不断累积凭据、没人去复核里面有什么,而它就躺在一个没有任何生命周期的缓存目录里。半年之后,「一个专用配置档」里可能装着比谁记得授予过的更多会话。

Safari MCP —— 看见 WebKit 的唯一途径,而且刻意无权

它做什么

苹果把这个服务器做成了 safaridriver 的一个模式,先在 Safari 技术预览版里,现在进了稳定版 Safari 27。它暴露约十七个工具,覆盖调试闭环:截图、页面内容、JavaScript 求值、点击/输入/滚动/悬停交互、缓冲的控制台消息、网络请求列表与详情、一次无障碍审计,以及用于暗色模式、减弱动态效果等的媒体特性仿真。它以本地 stdio 子进程运行,自身不发任何网络请求。

打开它要翻两层开关

你先在 Safari 的「高级」设置里启用面向网页开发者的功能,再到「开发」面板里允许远程自动化与外部智能体。这点摩擦也是它的企业侧故事:这是一个消费级浏览器里的按用户设置,作为车队策略的依据相当单薄,值得在围绕它做规划之前先知道。

它适合谁

任何在调一个真实 WebKit bug 的人。Playwright 的 WebKit 构建很接近,但它不是 macOS 或 iOS 上的 Safari,而这个区别要紧的那一类缺陷,恰恰就是你在别处复现不出来的那一类。除此之外,隔离的会话与更小的工具面,使它成为四者中最不实用的一个。

Chrome DevTools MCP —— 诊断的那一个

它做什么

谷歌的服务器是对 Chrome DevTools 协议的一层薄而标准的封装,通过 Puppeteer 驱动 Chrome,工具面比苹果那边大好几倍——大约六十个。有区分度的那一半不是点击,而是带有提炼出的洞察的性能追踪、网络请求检视与控制台访问。如果问题是「这个页面为什么慢、为什么吵、为什么某个请求失败」,那这一个有直接的杠杆,因为它把人打开 DevTools 时看的那份数据交给了智能体。

要紧的那个配置档细节

它默认用自己在用户缓存路径下的 user-data 目录启动稳定版 Chrome,跨多次运行复用,并且同一时刻只允许一个浏览器使用它。打开 isolated 选项,你会得到一个临时目录,浏览器关闭时被清掉。在 CI 里你想要 isolated;在一次长跑的调试会话里通常不想——而这正是应当显式决定、而不是被动继承的那个选择。

它适合谁

前端与性能工作,仅限 Chrome,且智能体的活是解释一个页面而不是在上面完成一段流程。它也是四者中可复现性最弱的,因为一个持久配置档加一个真实浏览器,意味着大量隐藏状态。

Playwright MCP —— 会驱动的那一个,也是对状态最诚实的那一个

它做什么

微软的服务器在页面的无障碍树而不是截图上工作,这对智能体的意义比听起来更大:模型收到的是带角色与名称的结构化文本,于是它按语义选中元素,而不是去猜像素坐标;而每一次观察都便宜、可 diff、可记录。它能跑 Chromium、Firefox 与 WebKit,这让它成为此处唯一的跨引擎选项。

关于状态,说得很明

配置档默认持久,按渠道与工作区存放在平台缓存目录下,于是不同项目自动拿到不同的配置档,并可用 --user-data-dir 覆盖。加上 --isolated,每次会话从零开始、关闭时丢弃其存储;再配 --storage-state,就能只种入某个测试需要的那一份登录态、而不多一分。它另外还有一个扩展模式,可以接上你自己浏览器里的一个标签页——那会把它挪到梯子最上面那一档,连带所有含义。

持久、隔离、或从文件种入这三件套,是四者之中对「会话」这个问题给出的最完整的答案;尤其「带种入的隔离」正是你做评测时想要的形状:可复现、凭据范围受限,并且能从一份你可以评审的文件里重建。

它适合谁

凡是智能体要去完成一段流程、而不是去描述一个页面的场合:端到端测试、发布时的 QA、表单驱动的工作流,以及任何必须跑在 Chrome 之外的智能体。它是默认选择;而无障碍树这条路子,也正是它的轨迹最容易保留下来的原因——关于这为什么比看起来更要紧,见截图与 DOM 产物。

扩展式智能体 —— 唯一真能替你办事的那一类

它们做什么

像 Claude in Chrome 这样的浏览器内助手——自 2026 年 8 月下旬起在付费方案上全面可用——会读你正在看的那个页面并在上面行动:点击、输入、跳转、填表,用的是你已有的登录态。最后那半句就是整个产品。它也正是下面几档谁都替代不了它的原因:没有哪个自动化配置档认识你的账户。

安全记录就是论点本身,不是脚注

Claude 扩展上已公开的两类缺陷,把这种暴露面从理论变成了具体。ShadowPrompt 把一个过于宽松的来源白名单——任何匹配 *.claude.ai 的子域都能提交一条提示词去执行——串成了从被访问页面发起的零点击注入;在 2025 年 12 月底披露之后,Anthropic 在扩展 1.0.41 版把它收紧为精确来源校验。另一个 ClaudeBleed 则建立在这样一个观察上:任何已安装的 Chrome 扩展都能发送命令,因为信任被放在了命令的来源上,而不是放在它的执行上下文上。

两者都已修复。修复之后仍然成立的是那个结构性论点:一个在你受信会话内部运行的智能体是以你的身份执行的,所以一次成功的注入能读文件、读邮件、读代码,能在你的账户上行动,事后还能把界面收拾干净。下面几档是靠「没有凭据」而失败安全;这一档是设计上就失败敞开。请把它用在那些你本来也会在那个标签页里亲手做的事上、用在你自己挑的站点上,并且不要在浏览开放互联网时让它一直挂着。

真正把它们分开的那几根轴

The three axes that separate browser tooling for agents Three axes; tool count is not one of them Which session What it observes Reproducible state Decides: how far an injected line on any page can reach Decides: reliability across a redesign, and trace size Decides: whether a failure can be re-run and scored Check: open the profile and list what it is logged into Check: is a step an a11y tree, a screenshot, or a CDP trace? Check: can a colleague re-run this failure from a file? Isolated → dedicated → yours Pixels → tree → protocol data Persistent → isolated → seeded Answer these three and the shortlist is one; the tool list never separated them.
会话决定暴露面,观察面决定可靠性,状态决定一次失败能不能被重跑。

越过会话,第二根真实的轴是智能体观察到什么。像素通用而昂贵:需要视觉模型、每步一件大产物,而坐标在一次布局变更后就会失效。无障碍树是文本,所以便宜、有语义、可 grep,这也是 Playwright 的选中更常能活过一次改版的原因。协议数据——追踪、请求、控制台——两者都不是,而它是只有 DevTools 那个服务器才真正给得起的东西。

第三根是可复现性,它直接跟着配置档那个决定,也是团队最容易被烧到的地方。一个持久配置档制造的是你在另一台机器上重现不出来的失败;带种入的隔离制造的是你能重现的那种。对任何你打算打分的运行来说,这不是偏好问题。

该选哪一个

情形选为什么要留神
智能体必须完成一段流程,可能还要在 Firefox 或 WebKit 上Playwright MCP基于无障碍树的动作、三个引擎、显式的状态模式默认是持久配置档
「这个页面为什么慢/为什么报错」Chrome DevTools MCP别家没有的性能追踪与网络数据仅限 Chrome;隐藏的配置档状态
一个真正的 WebKit 或 Safari 专属 bugSafari MCP检视真实引擎的唯一途径隔离会话;按用户的开关
在你已登录的站点上办一件事扩展式智能体别的都没有你的会话注入即账户接管;限定站点范围
你打算打分的评测或 CIPlaywright MCP,isolated 加种入状态可复现且凭据范围受限storage-state 文件属于机密

常见问题

Safari 交付了 MCP 服务器,是不是意味着智能体现在能在 Safari 里替我买东西?

不能,而且这是设计如此。这个服务器驱动的是一个专用自动化会话,够不着你的 cookie、已保存的密码、自动填充或历史,所以它在任何站点上都无法以你的身份行动。它是一个开发者调试工具,只是恰好会说一种消费级智能体也会说的协议。

「专用配置档」可以当沙箱来看吗?

单凭它自己不行。它是一只单独的 cookie 罐,相对你的个人身份而言是真实的隔离,但它在多次运行之间持久保留,并且会累积你让它登录过的一切。请把它当共享服务账号那样复核:知道里面有什么、别把生产凭据放进去,并且对任何你想要可复现的事情使用 isolated 模式。

无障碍树还是截图——智能体该基于哪一个行动?

只要树存在就用树。它更便宜、有语义、更能活过视觉改版,还留下一份你能脱敏、能搜索的轨迹。截图是画布密集型应用的兜底,也是在某个决策点上确认「页面当时到底长什么样」的手段。

我能同时跑其中多个吗?

能,而且这是常见配置:Playwright MCP 负责驱动,DevTools MCP 负责诊断。请留神配置档的锁——DevTools 那个服务器对每个 user-data 目录只允许一个浏览器——也请留神你的上下文预算,因为两个服务器可能给每一次请求加上远超一百条工具定义。

在让它们中的任何一个接触真实站点之前,最该加的那一项控制是什么?

出网与目标限制,而不是一个更好的模型。决定浏览器可以到达哪些来源、把每个页面都当作不可信输入、并对不可逆动作要求确认——因为无论你选了四者中的哪一个,页面就是那个攻击面。

延伸阅读

本站相关:

项目文档: