Claude in Chrome 有两种工作模式, 一种是独立的 AI 对话模式, 用户可以在插件里直接下发任务。 另一种是与 Claude Code 配合, 用户在 Claude Code 可以使用插件暴露的浏览器能力,使用用户的浏览器完成额外任务。
我们先从第一种模式开始介绍其原理
逆向插件的工作方式很简单。打开 Claude Chrome 插件,右击 inspect 监控插件的网络请求,如图。

我们发现,任务执行过程中会通过不断请求 Claude 的/v1/messages 接口,这是 Claude 的官方大模型接口(类比 ChatGPT 的/chat/completions 接口), 从请求体中我们可以拿到 system prompt 、tools 定义。 我已经开源整理在 https://github.com/AIPexStudio/system-prompts-of-claude-chrome
具体的 system prompt 比较多(40+kb),我在这里不多做介绍,主要包含:
(1)安全防护
(2) 行为规范
(3) 操作分类
(4) 版权保护
(5) 工具使用要求
(6) 运行环境相关
(7) 多标签页管理
(8) 响应流程控制
其中 tools 包含以下工具,按功能分类如下:
| 工具名称 | 功能描述 |
|---|---|
read_page |
获取页面元素的无障碍树( Accessibility Tree )表示 |
find |
使用自然语言查询查找页面元素 |
get_page_text |
从页面提取原始文本内容 |
navigate |
导航到指定 URL 或浏览器历史记录 |
| 工具名称 | 功能描述 |
|---|---|
computer |
鼠标和键盘交互,以及截图功能 |
form_input |
在表单元素中设置值 |
javascript_tool |
在页面上下文中执行 JavaScript 代码 |
| 工具名称 | 功能描述 |
|---|---|
tabs_create |
创建新的浏览器标签页 |
tabs_context |
获取标签页的上下文信息 |
| 工具名称 | 功能描述 |
|---|---|
upload_image |
上传图片到文件输入框或拖放目标 |
gif_creator |
录制并导出浏览器操作为动画 GIF |
| 工具名称 | 功能描述 |
|---|---|
read_console_messages |
读取浏览器控制台消息 |
read_network_requests |
读取 HTTP 网络请求信息 |
| 工具名称 | 功能描述 |
|---|---|
resize_window |
调整浏览器窗口尺寸 |
| 工具名称 | 功能描述 |
|---|---|
update_plan |
更新并向用户展示计划以获取批准 |
turn_answer_start |
标记一轮响应的开始 |
claude chrome 插件组合这些负责页面的理解、点击、填写表单、截图、调试的工具,就能完成复杂的人物。 其中 update_plan 和 turn_answer_start 是自定义工具,会在插件里有独特的 UI 展示。update_plan 会请求用户 Approve Plan 或者 Make Changes, turn_answer_start 会请求用户二次确认任务开始。图为 update_plan 的 UI 展示。

Claude Chrome 请求了 nativeMessaging 的权限,这个权限允许扩展与本地应用程序进行双向通信。通过这个权限,Claude Chrome 可以与安装在用户电脑上的 Claude Code (或其他支持 Native Messaging 的应用程序)建立连接。
manifest.json 中声明 nativeMessaging 权限┌─────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Claude Code │ ◄─────► │ Native Messaging │ ◄─────► │ Claude Chrome│
│ (本地应用) │ JSON │ Host (桥接层) │ JSON │ (浏览器扩展) │
└─────────────────┘ └──────────────────┘ └──────────────┘

工作流程:
此时,Claude Chrome 扩展就不再是个 Agent ,而只是作为 MCP server 将浏览器工具暴露给 Claude Code , 由 Claude Code 去进行使用。

我尝试使用 Claude in Chrome 跑了官方给的样例
Navigate to Zillow and find me a 2-bedroom apartment in San Francisco under $4000/month. Filter for places available within the next 30 days and show me the top 3 options with photos.
我发现他运行了 10 分钟才执行完成,于是我就看了下这个过程中哪里出了问题。发现 claude chrome 插件主要用两种模式去理解页面, 一种是使用页面的无障碍树,在无障碍达成不了目标时会使用截图。
很多人可能对无障碍树没有概念,我稍微介绍一下。
无障碍树( Accessibility Tree )是浏览器为了支持辅助技术(如屏幕阅读器)而构建的页面结构表示。它包含了页面上所有可交互元素的语义信息,比如:
相比直接解析 DOM 树,无障碍树提供了更简洁、更语义化的页面表示。对于 AI 来说,无障碍树比原始 HTML 更容易理解,因为它已经过滤掉了大量样式和布局相关的信息,只保留了功能性的语义信息。 但无障碍树是有局限性的,依赖于网站的无障碍树构建是否完善,如果网站的无障碍树构建不完善,可能会导致无障碍树的表示不准确,从而影响 AI 的理解。
这里我发现 claude chrome 的一个问题是对于同一个页面的多次快照,都保存在了上下文中,但其实过去的快照是无意义的,可以丢弃的。并且,claude in chrome 会将整个页面的无障碍树 放进上下文,在对长页面进行任务时,上下文会迅速爆炸。
另一个问题是 claude in chrome 在无障碍树失败时会使用截图,然而一次截图多大呢,100kb-500kb 不等,我这次任务截图是 335kb 。 这样的一张截图信息会一直存在于后续的上下文中,上下文的爆炸从而引起任务的慢、无效以及贵。 其实大可不必把截图信息原封不动放进上下文,为了理解页面其实可以先降低清晰度,处理之后放进上下文。AIPex 的经验是可以压缩 10-20 倍。
当然了,claude 是首个提出上下文工程的,我相信不久之后插件的上下文优化算法也会上线,敬请期待。
claude in chrome 的 UI 让人非常舒服,用户可以记录 workflow 并进行编辑,下一次直接用命令唤起。Claude in Chrome 的一个卖点是说自己支持后台运行, 但其实 claude in chrome 的操作都依赖于 debugger 权限,而 debugger 权限在被使用时,浏览器一定会获取用户焦点,强制展示在最前端,这就使得“后台运行”成为无稽之谈。 有个做法是不使用 debugger ,但这样的话需要自己抛弃无障碍树、以及用其他方式完成点击、输入等操作。
本来是抱着学习的心态使用并逆向了 Claude in Chrome 插件,但在跑完第一个用例之后,我就明白了这个插件目前的上下文效率是存在很大问题的,那会导致任务的慢和低效。 AIPex 已经走过这些坑,并在上下文工程上做了很多工作,同一个任务 AIPex 能比 claude in chrome 至少快 2 倍以上,任务越复杂越明显。AIPex 的上下文核心实践已整理在了 https://www.claudechrome.com/zh/blog/ai-browser-automation-challenges. 同时 AIPex 支持 BYOK ,你可以用自己的大模型密钥免费尝试。

1
lovestudykid 1 天前
弄个虚拟机平台托管下,然后再给一堆大 V 发邀请码试用,再安排点人上闲鱼炒作邀请码
|
2
ropzislaw OP @lovestudykid 不错 可以用 AIPex 搭配 deepseek key 试一下
|
3
haoxuexiaoyao 17 小时 11 分钟前
不能使用第三方中转的 API 啊 Claude 的
|
4
ropzislaw OP @haoxuexiaoyao 是哪个中转方,麻烦你告诉我一下,然后中转方应该用 custom provider 尝试下
|
5
haoxuexiaoyao 12 小时 15 分钟前
闲鱼买的 别人搭建的中转 API 试了不行 本地 Claude code 里面正常使用
|
6
ropzislaw OP @haoxuexiaoyao got ,如果你想用 claude chrome 插件的话,如果后面的 path 都是/v1/messages 。你可以通过写 etc/host 将 claude.ai 指向你的中转站试试
|