使用 AI 智能体调试 Chrome 扩展程序

借助面向智能体的 Chrome 开发者工具,您的智能体可以使用 MCP 服务器启动浏览器会话,并安装 Chrome 扩展程序或与之互动。这样,您的编码智能体就可以控制扩展程序的生命周期:安装、重新加载和触发操作。

您无需再手动加载未打包的扩展程序,每次更改代码时都点击扩展程序管理页面中的“重新加载”按钮,并手动触发扩展程序进行测试,而是可以指示 AI 智能体自主管理整个过程。这样便弥合了静态代码生成与实时扩展程序测试之间的差距。

您可以使用扩展程序工具执行以下操作:

  • 安装扩展程序: 从本地目录路径安装未打包的 Chrome 扩展程序。
  • 列出扩展程序: 检索所有已安装的 Chrome 扩展程序的列表,包括其名称、ID、版本和启用状态。
  • 重新加载扩展程序: 按 ID 重新加载未打包的 Chrome 扩展程序,以立即应用代码更改。
  • 触发操作: 按 ID 触发扩展程序的默认操作, 例如打开菜单或执行后台脚本操作(请参阅 API 文档中的 chrome.action)。
    • 卸载扩展程序: 按 ID 从浏览器会话中移除 Chrome 扩展程序。

前提条件

在使用扩展程序工具之前,请确保您具备以下条件:

  • 实验性标志: 默认情况下,面向智能体的开发者工具中未启用“扩展程序”类别。您必须配置 MCP 服务器,并使用 --categoryExtensions 标志。
  • 未打包的扩展程序: install_extension 等工具需要未打包的扩展程序文件夹的绝对路径,因此非常适合本地开发。
  • 对扩展程序文件夹的文件访问权限: 服务器只能读取其工作区根目录中的文件。这些根目录是 MCP 客户端提供的根目录,例如项目目录。如果客户端未提供根目录,服务器只能访问操作系统临时目录。在 macOS 上,此目录不是 /tmp。如果扩展程序文件夹位于这些根目录之外,install_extension 会失败并显示 Access denied 错误。如需允许其他文件夹,请将 --filesystemRoot 标志(别名 --workspace)添加到服务器实参:

    "args": ["chrome-devtools-mcp@latest", "--categoryExtensions", "--filesystemRoot=/path/to/extensions"]
    

    如需了解详情,请参阅允许在临时 目录之外访问文件。

Chrome 扩展程序工具的应用场景

在开发和修复 bug 时,指示智能体管理扩展程序的生命周期。

注意: 智能体执行步骤是潜在行为的示例。您的智能体可能会采取不同的行动。

快速迭代并重新加载扩展程序

每次更改文件后手动重新加载扩展程序会减慢开发速度。 指示智能体应用代码修复程序并立即重新加载扩展程序,以验证新行为,而无需手动干预。

提示示例:

您可以使用一般方法:

Verify the extension has access to the active tab.

或者,您可以提供更详细的信息:

Update the manifest.json to include the "activeTab" permission. Then, reload the extension with ID 'abc123xyz' and trigger its default action to ensure it works.

智能体执行示例: 您的智能体会在文件系统上修改 manifest.json 文件。然后,它会使用提供的 ID 调用 reload_extension 工具。 最后,它会调用 trigger_extension_action 工具来激活扩展程序,并验证控制台中是否抛出了任何权限错误。

测试扩展程序在目标页面上的默认操作

您通常需要测试内容脚本或扩展程序操作与特定网站的互动方式。您可以指示智能体导航到该网站、安装扩展程序并触发它,从而自动执行此过程。

提示示例:

您可以使用一般方法:

Test my extension on example.com and verify it works correctly.

或者,您可以提供更详细的信息:

Navigate to example.com, install the unpacked extension located at '/Users/dev/my-extension', and trigger the extension action. Check the console logs to verify the content script executed correctly.

智能体执行示例: 您的智能体使用 navigate_page 导航到目标网址。然后,它会使用 install_extension 和提供的绝对路径。加载扩展程序后,它会执行 trigger_extension_action 来模拟用户点击。最后,它会使用 list_console_messages 来确认内容脚本已运行并生成了预期输出。

验证已安装的扩展程序并进行清理

在自动化测试期间,您可能需要验证扩展程序是否已正确加载并使用了正确的版本,或者将其移除以确保下一个测试处于干净状态。

提示示例:

Uninstall 'My Test Extension' from the browser.

智能体执行示例: 您的智能体使用 list_extensions 工具检索已安装的扩展程序及其元数据的列表。它会解析输出,以识别与“My Test Extension”关联的 ID。然后,它会使用该 ID 和 uninstall_extension 工具,安全地从浏览器中移除该扩展程序。

创建新扩展程序并对其进行测试

从头开始创建新的 Chrome 扩展程序通常需要创建样板文件,并手动将未打包的目录加载到浏览器中进行测试。您可以指示智能体生成初始代码、加载扩展程序并验证其基本功能,从而跳过此手动设置,只需一步即可完成端到端测试。

提示示例:

Build a Chrome extension that turns the page background gray when I click its icon. Save the files to a 'gray-bg-ext' folder in my project, navigate to example.com, load the extension, and verify that it works.

智能体执行示例: 您的智能体会创建一个基本的清单 V3 manifest.json 和一个监听 chrome.action.onClicked 事件的后台 Service Worker。然后,它会导航到测试页面,调用 install_extension,并使用 trigger_extension_action 来模拟用户点击。最后,它会检查 DOM 或截取屏幕截图,以确认背景已变为灰色,从而证明样板正常运行。