🌑

Mocha's Blog

目录
  1. 背景
  2. 解决思路
    1. 前置条件
    2. Prompt
    3. For 手工仙人
  3. MCP 配置及工具配置
  4. 这样做的好处

给 Agent 一个专属 Chrome

发布时间:2026年4月3日

最新推荐 Ego Lite:https://lite.ego.app/zh-cn

背景

最近我在用 openclaw 连接自己日常使用的 Chrome 做 CDP 调试时,反复遇到如下弹窗。有时候一次任务能弹十几次,非常影响体验。更麻烦的是,agent 和我共用同一个浏览器实例,标签页、焦点和登录态都会互相干扰。

给 Agent 一个专属 Chrome:配图 1

为了解决这个问题,我先是用 Playwright 安装了独立版本的 Chrome,但出现了 Dock 栏冲突的问题(点击 A Chrome 的图标唤起的是 B Chrome)。

一番折腾下偶然看到了这个 issue chrome-devtools-mcp 的 issue #825,发现这个问题已经有人反馈:在 Chrome 144+ 配合 --autoConnect 时,每次连接都可能要求重新授权,但是这个能力被标记为 Closed as not planned,官方因为安全问题明确拒绝了无感连接提案,但也给了另外一个方案 —— 给 agent 单独准备一个浏览器实例。

解决思路

核心思路其实很简单:不要让 agent 连接人日常使用的 Chrome,而是单独启动一个专供 CDP 使用的 Chrome Chromium,并给它一个独立的 profile。

前置条件

安装 Chrome Chromium https://download-chromium.appspot.com/,将解压出来的 Chromium 移动到应用程序中

Prompt

直接发给 Agent

你是在一个 macOS 环境中执行任务的工程代理,请直接完成操作,而不是只输出示例代码。

目标:
创建一个可以双击运行的 macOS App,名称为:
Agent Browser.app

功能:
启动 /Applications/Chromium.app,并附带以下参数:
--remote-debugging-port=9876
--user-data-dir=$HOME/data/agent-browser
--no-first-run
--no-default-browser-check

要求:
1. 先执行:
   xattr -rd com.apple.quarantine /Applications/Chromium.app
   如果失败可以忽略
2. 确保目录存在:
   mkdir -p ~/data/agent-browser
3. 必须实际创建 .app,而不是只输出脚本

实现方式(二选一,任选更稳的):
A. 使用 osacompile 生成 applet
B. 手动构建标准 macOS .app bundle(包含 Info.plist + 可执行脚本)

4. 输出路径优先:
   /Applications/Agent Browser.app
   如果没有权限,则使用:
   ~/Applications/Agent Browser.app

5. 启动命令需要后台执行(不阻塞)

6. 处理路径空格问题(Chromium.app / Agent Browser.app)

7. 创建完成后:
   - 设置 LSUIElement=true(不在 Dock 显示)
   - 确保 app 可直接双击运行

8. 最后输出:
   - 实际创建路径
   - 简短成功提示

注意:
- 不要只输出 shell 脚本模板
- 不要解释原理
- 直接执行并完成任务

For 手工仙人

分为三步:

  1. 运行如下命令 xattr -rd com.apple.quarantine /Applications/Chromium.app修复 Chromium 无法打打问题
  2. 创建 profile 目录,mkdir -p ~/data/agent-browser
  3. 用“自动操作”创建一个应用程序,功能是执行下面 shell,具体代码和截图如下:
/usr/bin/open -n -a "Chromium" --args \
  --remote-debugging-port=9876 \
  --user-data-dir="$HOME/data/agent-browser" \
  --no-first-run \
  --no-default-browser-check \
  >/dev/null 2>&1 &

**0410 更新:**使用 9222 端口的时候会偶现 Agent 拉起默认 Chrome 的情况,这里把端口修改为 9876(或者你喜欢的)

给 Agent 一个专属 Chrome:配图 2

给 Agent 一个专属 Chrome:配图 3

给 Agent 一个专属 Chrome:配图 4

MCP 配置及工具配置

在你的 Coding 或者 Agent 工具中,添加如下 MCP Server

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--browserUrl=http://127.0.0.1:9876"
      ]
    }
  }
}

添加全局规则

CDP 可连接的调试浏览器运行在 9876 端口,如果发现浏览器未处于运行状态,可通过 open "/Applications/Agent Browser.app" 手动拉起。

这样做的好处

这个方案有三个直接收益:

  • 不再去连接日常使用的 Chrome,远程调试弹窗问题基本绕开了
  • agent 和人各用各的浏览器,不会抢窗口、抢标签页,也不会互相打架
  • 浏览器状态天然隔离,调试、登录、测试都更可控

另外,这种做法也更符合 Chrome 现在的安全约束。Chrome 官方在 2025-03-17 的说明里明确提到,从 Chrome 136 开始,--remote-debugging-port 必须配合非默认 --user-data-dir 使用。

Powered By Hexo.js Hexo and Minima. Support By Oracle & Docker-Compose.