chrome-cdp-skill:让 AI 直接操控你正在使用的 Chrome 会话
让 AI 直接操控你正在用的 Chrome:chrome-cdp-skill 是如何做到的
功能与原则
chrome-cdp-skill 是一个轻量级 Chrome DevTools Protocol (CDP) 工具,让 AI Agent 能够直接访问并操控用户本机正在运行的 Chrome 浏览器会话——无需重新登录、无需启动独立浏览器实例、无需复杂的配置流程。一条命令启用,AI 立即”看见”用户已打开的标签页、Gmail 账户、GitHub 状态、内部工具页面,并在用户授权后执行点击、填表、导航等操作。
核心设计原则:用户始终处于控制地位。所有操作必须经过 Chrome 原生的”允许调试”弹窗确认,Daemon 20 分钟无操作自动退出,不会产生静默后台控制。
认可度
- GitHub Star:约 3,200(截至 2026-08-11)
- Fork:201
- 作为 Aradotso/trending-skills 收录的第一个 Skill,被列入 Claude Code / Codex / Cursor 等主流 Agent 的可安装技能清单
- 在 CSDN、SourceForge 等中文技术社区有持续的教学和实践文章产出
链接
GitHub:https://github.com/pasky/chrome-cdp-skill
原作者
pasky(GitHub @pasky)——专注浏览器协议层工具开发,同名作者也是 chrome-devtools-mcp 项目维护者。
介绍
大多数浏览器自动化工具(包括 Puppeteer、Playwright)会启动一个全新的、隔离的浏览器实例。这意味着 AI 无法看到用户已登录的会话、正在工作的标签页、页面的真实中间状态——它只能操作一个”干净”的浏览器环境。
chrome-cdp-skill 换了一条思路。它不启动新浏览器,而是直接通过 Chrome 的远程调试 WebSocket 连接到用户已有的 Chrome 实例。用户只需打开 chrome://inspect/#remote-debugging 并开启开关,AI 就能看到并操控所有已打开的标签页。
连接建立后,一个轻量级后台 Daemon 保持会话活跃,首次访问每个标签页时会弹出一次”允许调试”授权,之后的多次命令复用该授权而不再打扰用户。这种架构同时解决了两个问题:一是无需重新登录(你的 Gmail、Slack、内部工具都已在登录状态);二是能处理 100+ 标签页(而基于 Puppeteer 的工具在标签页过多时经常超时)。
工具本身是纯 Node.js 脚本(scripts/cdp.mjs),无需 npm install,运行时仅依赖 Node.js 22+ 内置的 WebSocket 模块。CLI 支持 macOS、Linux、Windows,自动检测 Chrome、Chromium、Brave、Edge、Vivaldi 的安装路径。
特点
- 零配置接入:不需要安装任何额外浏览器,不需要配置浏览器参数,只需开启 Chrome 远程调试开关
- 复用已有登录态:Gmail、GitHub、内部系统——所有已在浏览器中登录的会话,AI 都能直接访问
- 多标签页可靠处理:支持 100+ 同时打开的标签页,不会在枚举阶段超时(这正是 Puppeteer 系工具的痛点)
- 用户授权优先:每个新标签页首次访问都需要用户在 Chrome 弹窗中点击”允许”,Daemon 20 分钟空闲自动退出
- 跨平台兼容:macOS、Linux、Windows 全支持,自动识别干 Chrome 系浏览器(Chrome、Chromium、Brave、Edge、Vivaldi)
使用方法
安装(通过 Claude Code):
/plugin marketplace add pasky/chrome-cdp-skill
/plugin install chrome-cdp
或者通过 pi / npx:
pi install git:github.com/pasky/chrome-cdp-skill@v1.0.1
启用 Chrome 远程调试:
- 在 Chrome 地址栏输入
chrome://inspect/#remote-debugging - 开启 “Discover USB devices” 开关
基本命令:
# 列出所有打开的标签页
scripts/cdp.mjs list
# 截图
scripts/cdp.mjs shot <target>
# 获取页面结构(无障碍树)
scripts/cddp.mjs snap <target>
# 获取完整 HTML
scripts/cdp.mjs html <target>
# 执行 JavaScript
scripts/cdp.mjs eval <target> "document.title"
# 点击元素
scripts/cdp.mjs click <target> ".button-selector"
# 输入文字(支持跨域 iframe)
scripts/cdp.mjs type <target> "Hello World"
# 导航到 URL
scripts/cdp.mjs nav <target> https://example.com
# 滚动加载(点击"加载更多"直到内容全部展开)
scripts/cdp.mjs loadall <target> ".load-more-button"
<target> 是 list 命令返回的 targetId 前缀,支持唯一前缀匹配。
使用场景与人群
适用场景:
– AI Agent 需要操作用户已登录的 Web 应用(Gmail、Google Sheets、内部 CRM)
– 在用户当前工作的标签页中执行任务,而非打开新标签页重新开始
– 对接需要登录态的网页数据抓取
– 跨站点自动化操作(填表、点击、导航)
目标用户:
– 深度使用 Claude Code / Codex / Cursor 等 AI 编程工具的开发者
– 需要 AI 操控已登录 Web 会话的技术用户
– 研究浏览器协议、CDP 开发的工程师
输入与输出案例
案例 1:读取用户已登录的 Gmail 邮件列表
# 目标:在 AI Agent 的自然语言指令下,读取用户 Chrome 中已打开的 Gmail 页面内容
# 前提:用户已在 Chrome 登录 Gmail,且打开了收件箱标签页
# 1. 列出当前打开的标签页,找到 Gmail tab
scripts/cdp.mjs list
# → 输出: 6BE827FA Gmail - 收件箱 (57) - username@gmail.com - Google Mail
# 2. 获取页面无障碍结构(确定收件箱列表的 CSS 选择器)
scripts/cdp.mjs snap 6BE827FA
# → 输出紧凑的语义化页面结构,包含邮件标题、发件人、时间等
# 3. 若需完整 HTML
scripts/cdp.mjs html 6BE827FA "table[role='grid']"
# → 返回收件箱表格的完整 HTML,供 AI 进一步解析
案例 2:在 AI 辅助下完成跨站填表任务
# 目标:AI Agent 根据用户指示,在已打开的 CRM 系统中填入一条新客户记录
# 前提:用户 Chrome 已登录 CRM 系统并打开了"新建客户"表单页面
# 1. 获取表单结构
scripts/cdp.mjs html 6BE827FA "form"
# 2. AI 分析表单字段后,执行填表操作
scripts/cdp.mjs type 6BE827FA "Acme Corp"
scripts/cdp.mjs click 6BE827FA "#industry-select"
scripts/cdp.mjs click 6BE827FA "option[value='technology']"
scripts/cdp.mjs click 6BE827FA "button[type='submit']"
# 3. 截图确认提交结果
scripts/cdp.mjs shot 6BE827FA "confirmation.png"
chrome-cdp-skill 的核心价值在于消除浏览器自动化的登录壁垒——不需要 API Key,不需要 OAuth 流程,不需要 Selenium Grid,用户授权浏览器本身即可。这种”操作系统级”的接入方式,让 AI Agent 能够真正成为用户工作流程的无缝延伸,而非一个需要从零开始的独立机器人。
评论区
登录后可评论。