借助面向智能体的 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 或截取屏幕截图,以确认背景已变为灰色,从而证明样板正常运行。