pasky/chrome-cdp-skill

GitHub: pasky/chrome-cdp-skill

该项目让 AI agent 通过 Chrome 远程调试协议直接连接用户实时浏览器会话,实现对已打开标签页的读取与交互操作。

Stars: 3111 | Forks: 197

# chrome-cdp 让你的 AI agent 看到并与你的**实时 Chrome 会话**进行交互——包括你已经打开的标签页、已登录的账户以及当前的页面状态。无需浏览器自动化框架,无需单独的浏览器实例,也无需重新登录。 开箱即用,兼容任何 Chrome 安装版。只需拨动一个开关即可启用,无需安装任何其他内容。 ## 为什么这很重要 大多数浏览器自动化工具会启动一个全新且隔离的浏览器。而这个工具会直接连接到你正在运行的 Chrome,因此你的 agent 可以: - 读取你已登录的页面(Gmail、GitHub、内部工具等) - 与你正在积极操作的标签页进行交互 - 查看页面在工作流中途的实际状态,而不是一个重新加载的干净页面 ## 安装 ### 作为 pi skill ``` pi install git:github.com/pasky/chrome-cdp-skill@v1.0.1 ``` ### 对于其他 agent(Amp、Claude Code、Cursor 等) 将 `skills/chrome-cdp/` 目录克隆或复制到你的 agent 加载 skills 或 context 的任何位置。唯一的运行时依赖项是 **Node.js 22+** —— 无需 npm install。 ### 在 Chrome 中启用远程调试 导航到 `chrome://inspect/#remote-debugging` 并拨动开关。就这样。 CLI 会自动检测 macOS、Linux 和 Windows 上的 Chrome、Chromium、Brave、Edge 和 Vivaldi。如果你的浏览器将 `DevToolsActivePort` 存储在非标准位置,请将 `CDP_PORT_FILE` 环境变量设置为完整路径。 ## 用法 ``` scripts/cdp.mjs list # list open tabs scripts/cdp.mjs shot # screenshot → runtime dir scripts/cdp.mjs snap # accessibility tree (compact, semantic) scripts/cdp.mjs html [".selector"] # full HTML or scoped to CSS selector scripts/cdp.mjs eval "expression" # evaluate JS in page context scripts/cdp.mjs nav https://... # navigate and wait for load scripts/cdp.mjs net # network resource timing scripts/cdp.mjs click "selector" # click element by CSS selector scripts/cdp.mjs clickxy # click at CSS pixel coordinates scripts/cdp.mjs type "text" # type at focused element (works in cross-origin iframes) scripts/cdp.mjs loadall "selector" # click "load more" until gone scripts/cdp.mjs evalraw [json] # raw CDP command passthrough scripts/cdp.mjs open [url] # open new tab (triggers Allow prompt) scripts/cdp.mjs stop [target] # stop daemon(s) ``` `` 是由 `list` 显示的 targetId 的唯一前缀。 ## 为什么不用 chrome-devtools-mcp? [chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) 会在每次执行命令时重新连接,因此 Chrome 的“允许调试”弹窗可能会反复出现,并且在打开许多标签页时,目标枚举会超时。`chrome-cdp` 会为每个标签页保持一个持久的 daemon —— 该弹窗只会触发一次,并且它可以稳定处理 100 多个标签页。 ## 工作原理 直接连接到 Chrome 的远程调试 WebSocket —— 没有 Puppeteer,也没有任何中间件。在首次访问某个标签页时,会生成一个轻量级的后台 daemon 来保持会话开启。Chrome 的“允许调试”弹窗在每个标签页上只出现一次;随后的命令会静默复用该 daemon。Daemon 在不活动 20 分钟后会自动退出。 这种方法也是它能够稳定处理 100 多个打开的标签页的原因,而基于 Puppeteer 构建的工具在目标枚举期间经常会超时。
标签:Chrome DevTools Protocol, GNU通用公共许可证, MITM代理, Node.js, RPA, 浏览器自动化, 自定义脚本