Pilot:让AI助手操作真实浏览器,实现免登录自动化
2026/5/2 4:55:27 网站建设 项目流程

1. 项目概述:让AI助手在你的真实浏览器里“开飞机”

如果你用过Claude Code、Cursor这类AI编程助手,或者深度体验过各种AI Agent,肯定对它们“上网查资料”的能力又爱又恨。爱的是,它们确实能帮你搜索、阅读文档、总结网页内容;恨的是,它们用的往往是一个“匿名”的浏览器环境——一个全新的、没有任何登录状态的浏览器实例。这意味着,当你让它“去看看我的GitHub通知”或者“登录到公司内网查一下数据”时,它要么直接告诉你“无法访问”,要么就卡在登录页面,因为那个浏览器里根本没有你的会话和Cookies。

这就是Pilot要解决的核心痛点。它不是一个独立的浏览器自动化工具,而是一个连接你的AI助手和你正在使用的真实Chrome浏览器的桥梁。想象一下,你的AI助手(Agent)就像一名飞行员(Pilot),而你的Chrome浏览器就是它的座驾。Pilot让这位飞行员直接坐进你已经启动、并且登录了所有账号的驾驶舱,而不是每次任务都去开一架全新的、冷启动的飞机。

它的实现非常巧妙:一个运行在你本地的MCP服务器,加上一个安装在Chrome里的扩展程序。通过这个组合,你的AI助手(比如Claude Code)发出的任何浏览器操作指令,都会通过MCP协议转发到你的真实Chrome标签页中执行。结果就是,Agent看到的就是你看到的页面,它拥有和你一模一样的登录状态、Cookies和历史记录。无论是需要双重认证的内部系统,还是被Cloudflare严格防护的网站,对它来说都畅通无阻,因为它看起来就是一个“真人用户”在操作。

2. 核心设计思路:为什么是“真实浏览器”+ MCP?

2.1 传统方案的困境与Pilot的破局点

在Pilot出现之前,让AI进行网页自动化主要有两种路径,但都有明显的短板。

路径一:基于Playwright/Puppeteer的无头浏览器。这是目前绝大多数AI工具(包括Anthropic官方的一些演示)采用的方式。它们会在后台启动一个全新的Chromium实例。问题显而易见:

  1. 零会话状态:这个浏览器和你日常用的Chrome是彻底隔离的。所有需要登录的网站(GitHub, Gmail, Jira, 公司OA)都得重新登录。
  2. 容易被识别为机器人:全新的浏览器指纹、没有正常的用户行为历史,很容易触发Cloudflare等反爬虫机制的挑战,导致访问被阻断。
  3. 资源与性能开销:每次启动一个完整的浏览器实例,都会消耗不小的内存和CPU资源。

路径二:使用浏览器扩展直接注入。有些方案尝试开发一个功能强大的浏览器扩展,让AI直接在扩展的上下文中运行脚本。这种方式虽然能获取到会话,但存在严重的安全与权限问题。让一个AI拥有直接操控你浏览器所有标签页、读取所有数据的权限,想想就让人不安。而且,这种强耦合的设计也限制了AI工具的通用性。

Pilot的设计聪明地避开了上述陷阱。它的核心思路是“职责分离”与“安全通道”

  • MCP服务器负责逻辑与通信:它作为标准的MCP服务器运行,接收来自Claude Code、Cursor等客户端的标准化指令。它不直接操作浏览器,只负责解析指令、管理任务状态。
  • Chrome扩展负责安全的执行环境:扩展只做一件事——在一个新的、独立的标签页里,接收来自本地MCP服务器的指令并执行。这个标签页虽然共享了你整个Chrome的会话和Cookies,但它被严格限制在这个标签页内活动,无法干扰你其他标签页的浏览。扩展通过WebSocket只与本地127.0.0.1通信,杜绝了外部访问的可能。

这种架构带来了几个关键优势:

  • 即开即用,无需登录:Agent直接继承你的所有登录状态。
  • 天然绕过基础反爬:在网站看来,这就是一次来自真实Chrome浏览器的普通访问。
  • 安全性高:Agent的操作被隔离在专属标签页,并通过严格的本地通信协议控制。
  • 通用性强:只要是支持MCP协议的AI客户端都能用,不绑定某个特定AI。

2.2 MCP:实现通用性的关键协议

Pilot能无缝对接Claude Code和Cursor,核心在于采用了Model Context Protocol。你可以把MCP理解为AI世界的“USB协议”。在MCP生态中:

  • AI客户端(如Claude Code)是“主机”,它需要各种外设(工具)来扩展能力。
  • MCP服务器(如Pilot)是“外设”,它向主机声明自己提供哪些“工具”(Tools),比如navigate(导航)、click(点击)。
  • 它们通过标准的stdio(标准输入输出)进行通信,AI客户端调用工具,MCP服务器执行并返回结果。

这意味着,只要Pilot按照MCP的规范实现了navigatesnapshot等工具,任何兼容MCP的AI客户端都能立即识别并使用它,无需为每个客户端单独开发适配器。这是Pilot能够“开箱即用”的基石。

注意:MCP是一个新兴但发展迅速的协议,由Anthropic主导推动。除了Claude Code和Cursor,未来会有越来越多的AI应用支持MCP。选择基于MCP开发或使用工具,意味着你的工作流具备很好的未来兼容性。

3. 从零开始配置与实战

3.1 环境准备与安装

假设你已经在使用Claude Code或Cursor,并且系统环境是macOS或Linux(Windows支持在开发中,需关注项目更新)。安装过程非常简洁。

第一步:在AI客户端中配置Pilot MCP服务器你需要告诉你的AI客户端,去哪里找到Pilot这个“外设”。以Claude Code为例,它的MCP服务器配置通常位于~/.config/claude-code/mcp.json(路径可能略有不同)。编辑这个文件,添加Pilot的配置:

{ "mcpServers": { "pilot": { "command": "npx", "args": ["-y", "pilot-mcp"], "env": { "PILOT_PROFILE": "standard" } } } }
  • command: "npx":告诉客户端使用npx命令来启动Pilot。npx会自动下载并运行npm包,你本地无需提前安装。
  • args: ["-y", "pilot-mcp"]-y参数表示对所有提示自动回答“是”,pilot-mcp是Pilot在npm上的包名。
  • env: 这里我们设置了环境变量PILOT_PROFILEstandard,这是推荐配置,平衡了功能丰富度和LLM的调用能力。

保存文件后,重启你的Claude Code或Cursor。重启后,客户端会读取新的配置,并尝试连接Pilot服务器。

第二步:安装Chrome扩展程序仅仅配置MCP服务器还不够,我们还需要“执行器”——Chrome扩展。在终端执行以下命令:

npx pilot-mcp --install-extension

这个命令会做两件事:

  1. 它会在后台启动Pilot服务器(可能会短暂运行)。
  2. 在终端输出一个路径,并自动打开Chrome的扩展程序管理页面(chrome://extensions/)。

在扩展管理页面,开启右上角的“开发者模式”,然后点击“加载已解压的扩展程序”按钮。在弹出的文件选择器中,定位到终端输出的那个路径(通常是一个临时目录,包含manifest.json等文件的文件夹),选择它并确认。

安装成功后,你应该能在扩展列表里看到Pilot。更重要的是,你会注意到Chrome的右上角多了一个Pilot的图标。当它正常连接时,图标是彩色的;如果断开,则会变成灰色。

3.2 首次连接验证与基础操作

完成上述两步后,你的AI工作流就多了一个强大的“手”和“眼”。我们来做一个最简单的测试。

在你的Claude Code对话窗口中,尝试输入:

请用Pilot导航到GitHub首页 (https://github.com)。

如果一切配置正确,Claude Code会理解你的意图,并调用Pilot的navigate工具。几秒钟内,你的Chrome浏览器会自动打开一个新的标签页,页面的标题栏可能会带有“[Pilot]”前缀或特定的颜色边框(用于区分不同Agent),并且直接加载GitHub。

关键观察点

  1. 登录状态:如果你的Chrome已经登录了GitHub账号,这个新打开的标签页里的GitHub应该已经是登录状态。这就是Pilot的核心魔法——会话共享。
  2. 标签页隔离:这个标签页是独立存在的,不会影响你其他正在浏览的标签页。
  3. AI的反馈:Claude Code在调用工具后,会返回一个结果,比如“已成功导航至GitHub”。它还可以进一步使用snapshot工具来获取页面快照,然后为你总结页面内容。

实操心得:理解工具调用的“对话”AI并不是在“远程桌面”控制你的浏览器。整个过程更像是一场对话:

  1. :提出请求(“总结我的GitHub通知”)。
  2. AI:制定计划(“我需要先导航到GitHub,然后找到通知页面,接着获取内容,最后总结”)。
  3. AI → Pilot:AI按步骤调用Pilot的工具(navigate("https://github.com/notifications")->snapshot()-> ...)。
  4. Pilot → 浏览器:Pilot通过扩展在专属标签页中执行这些操作。
  5. Pilot → AI:Pilot将结果(如页面快照文本)返回给AI。
  6. AI → 你:AI分析结果,生成最终答案给你。

在这个过程中,你是和AI对话,AI则是和Pilot这个“工具人”对话。Pilot让AI拥有了在真实网络环境中安全执行任务的能力。

4. 核心工具集深度解析与高效使用指南

Pilot提供了多达61个工具,但并非所有工具都需要一次性加载。它设计了三个智能配置档位(Profile),这是其设计的一大亮点,充分考虑了大语言模型(LLM)的上下文限制和工作效率。

4.1 工具集配置档位:Core, Standard, Full

LLM在处理大量工具定义时,性能会下降,容易出现“工具混淆”或调用错误。Pilot通过预定义的Profile来解决这个问题。

档位工具数量核心能力适用场景
core9最基础的浏览、点击、输入、截图、获取快照。快速验证、执行最简单的线性任务(如“打开某个页面并截图”)。
standard30在Core基础上,增加了标签页管理、滚动、悬停、拖拽、表单操作、链接处理、iframe支持、元素状态检测等。日常绝大多数自动化场景。例如,填写复杂表单、在多标签页间操作、与iframe内容交互。
full61包含Standard所有工具,并加入网络请求拦截、断言、剪贴板操作、地理位置模拟、CDP协议直接调用、执行JavaScript、PDF生成、响应式测试等高级能力。深度开发、测试、需要精细控制浏览器行为的复杂场景。

如何选择与配置?在MCP配置文件的env字段中设置PILOT_PROFILE即可。如前文所示,"standard"是默认也是推荐值。除非你有非常明确的高级需求,否则不建议使用full,过多的工具定义可能会降低AI制定计划的准确性和速度。

{ "mcpServers": { "pilot": { "command": "npx", "args": ["-y", "pilot-mcp"], "env": { "PILOT_PROFILE": "standard" // 或 "core", "full" } } } }

4.2 关键工具实战与技巧

让我们深入几个最常用也最强大的工具,看看如何在实际中用好它们。

1.navigatesnapshot:浏览与观察的基础这是最常用的组合。navigate负责跳转,snapshot负责获取当前页面的结构化文本快照。

  • snapshot的精髓:它返回的不是完整的HTML,也不是一张图片,而是经过处理的、包含语义信息的文本。例如,它会将按钮标识为[按钮]登录[/按钮],将链接标识为[链接]文档[/链接]。这种格式极大方便了LLM理解页面结构和可交互元素。
  • 技巧:在让AI执行一系列操作前,通常先让它snapshot一下当前页面,以便了解“战场”情况。

2.snapshot_diff:智能节省上下文的关键这是Pilot相比其他方案的王牌功能。在传统的自动化中,AI每操作一步,为了知道页面发生了什么变化,都需要重新获取整个页面的快照(可能高达5-10万字符)。这迅速耗尽了LLM宝贵的上下文窗口,且大部分是重复信息。snapshot_diff工具则只返回自上一次快照以来,页面发生变化的部分。例如,你点击了一个“加载更多”的按钮,新加载的内容可能只有2KB,snapshot_diff就只返回这2KB的新内容,而不是重新获取整个50KB的页面。

  • 使用模式snapshot(初始全量快照) -> 执行操作(如click) ->snapshot_diff(获取增量变化)。这能将上下文消耗降低一个数量级,使得处理长流程任务成为可能。

3.clickfill:精准交互的核心

  • click:如何让AI点中正确的按钮?Pilot采用了基于引用的元素选择策略。AI在snapshot中看到的元素都带有唯一的引用ID。当AI决定点击“提交”按钮时,它发出的指令是click(ref_id: "abc123"),而不是模糊的“点击提交按钮”。这确保了操作的精确性。
  • fill:用于向输入框填充文本。同样需要目标元素的引用ID和要输入的内容。对于需要输入密码等敏感信息的场景,切勿直接在给AI的指令中包含明文密码。正确的做法是让AI执行到输入步骤时暂停,或结合其他安全机制。

4. 处理复杂场景:iframehandoff

  • iframe支持:很多网页(如在线编辑器、支付页面)使用iframe嵌套。Pilot的standard及以上档位提供了switch_to_iframe等工具,允许AI将操作上下文切换到iframe内部,从而操作其中的元素。
  • handoff/resume:人工接管机制:这是应对CAPTCHA(验证码)或复杂非标流程的终极方案。当AI遇到无法处理的验证码时,你可以让它调用pilot_handoff。此时,浏览器标签页的控制权会交还给。你手动完成验证码识别和点击后,再让AI调用pilot_resume,它就能继续之前的自动化流程。这个设计体现了“人机协作”的先进理念,不追求全自动的乌托邦,而是在自动化的边界上优雅地引入人工干预。

5. 高级场景与故障排查实录

5.1 无扩展回退模式与Cookie导入

Pilot优先使用Chrome扩展进行通信,因为这是最无缝的方式。但如果扩展没有安装或连接失败,Pilot会自动降级到**“Headed Fallback”模式**——即启动一个可见的、独立的Chromium浏览器窗口。

在这个模式下,最大的问题就是没有登录状态。Pilot提供了一个强大的补救工具:pilot_import_cookies

// 这是一个AI可能调用的工具示例(参数已简化) { "name": "pilot_import_cookies", "arguments": { "browser": "chrome", "domains": [".github.com", ".example.com"] } }
  • 原理:这个工具会从你指定的真实浏览器(如Chrome、Arc、Brave等)的加密Cookie存储中,导出指定域名的Cookies,然后注入到Pilot启动的独立Chromium实例中。
  • 支持平台:在macOS上,它通过Keychain访问;在Linux上,通过libsecret。这需要系统权限,第一次执行时可能会弹出系统授权对话框。
  • 用途:当你需要在无扩展模式下,让AI操作需要登录的网站时,提前导入Cookies是关键一步。你可以指示AI:“请先从我的Chrome中导入GitHub的Cookies,然后再导航到通知页面。”

重要安全提示:Cookie导入功能涉及访问敏感的浏览器存储数据。Pilot是开源项目,其代码可以审查,且所有操作均在本地完成。尽管如此,对于任何要求系统权限的工具,都应保持警惕,仅从官方渠道获取。

5.2 常见问题与解决方案速查表

在实际使用中,你可能会遇到以下问题。这里是我踩过坑后总结的排查清单:

问题现象可能原因解决方案
AI客户端提示“无法连接到Pilot服务器”1. MCP配置文件路径或格式错误。
2.npx网络问题或首次下载慢。
1. 检查mcp.json文件路径和JSON语法(可用在线校验工具)。
2. 在终端手动运行npx pilot-mcp --help,看能否正常下载和运行。
Chrome扩展图标为灰色扩展未成功连接到本地Pilot MCP服务器。1. 确保已通过npx pilot-mcp --install-extension正确安装扩展。
2. 重启Chrome浏览器。
3. 检查是否有多余的Pilot MCP进程在运行(用ps aux | grep pilot查看并结束)。
AI可以导航,但页面是未登录状态1. 扩展模式:可能是浏览器多用户Profile问题。
2. 回退模式:未导入Cookies。
1. 确认你安装扩展的Chrome,和你日常登录网站的Chrome是同一个用户Profile。
2. 在回退模式下,明确指示AI先执行pilot_import_cookies
操作过程中页面卡住或AI无响应1. 页面加载慢或元素未出现。
2. AI的“思考”或生成计划耗时过长。
1. 在AI的指令中,可以建议它在关键操作后使用wait工具等待几秒,或使用element_state检查元素是否可交互。
2. 检查网络和AI服务本身是否稳定。
遇到验证码,自动化中断这是预期行为,Pilot的设计不鼓励暴力破解验证码。使用pilot_handoffpilot_resume组合。让AI在遇到验证码时调用handoff,你手动解决后,再令其resume
snapshot返回内容为空或很少页面可能是SPA(单页应用),内容由JavaScript动态加载。1. 在navigate后增加wait时间。
2. 使用scroll工具滚动页面以触发加载。
3. 考虑使用fullProfile中的evaluate工具执行JS来获取状态。

5.3 性能优化与最佳实践

  1. 善用snapshot_diff:对于多步骤任务,积极引导AI使用snapshot->action->snapshot_diff的循环,而非每次都进行全量snapshot。这能显著降低token消耗,提升任务长度上限和响应速度。
  2. 明确指令,分步进行:给AI的指令不宜过于复杂笼统。将“帮我订一张明天北京飞上海的最便宜机票”拆解为:“1. 导航到携程首页。2. 找到机票搜索框。3. 填入从北京到上海,明天出发。4. 点击搜索。5. 获取结果列表并找出价格最低的一项。”分步指令成功率更高。
  3. Profile按需选择:大多数日常信息搜集、表单填写任务,standard档位完全足够。只有在需要进行网页自动化测试、性能监控等开发任务时,才考虑切换到full档位。
  4. 结合AI的“规划”能力:像Claude 3.5 Sonnet这类模型,具备很强的任务规划能力。你可以给它一个高目标,它会自己分解步骤并调用Pilot工具。信任它的规划,并在它卡住时给予更具体的子指令。

Pilot这个项目,在我看来代表了AI Agent发展的一个务实方向:不追求取代人类,而是作为人类能力的延伸,在安全和可控的前提下,将我们从不擅长的重复性、高精度网络操作中解放出来。它的“真实浏览器”架构和“人机协作”设计,巧妙地平衡了能力、安全与实用性。随着MCP生态的成熟,这类专注于解决具体场景“最后一公里”问题的工具,将会成为我们AI工作流中不可或缺的齿轮。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询