chrome-plugin
无 CDP 检查并安装项目内置 Chrome unpacked 插件。BrowserWorker 是操控浏览器工具,必须安装。必须先检查目标插件;已安装时立即成功返回,不启动或关闭 Chrome。默认目标是 BrowserWorker,也可安装 1688 插件。Windows 未安装时优先用 pywinauto,macOS 未安装时打开 chrome://extensions/ 并引导用户手动加载
SKILL.mdskills/chrome-plugin/SKILL.md
GitHubChrome 插件安装
本技能用于把当前安装环境中的项目内置 unpacked Chrome 插件安装到 sandbox Chrome profile。它不调用 CDP Extensions.loadUnpacked。
[!IMPORTANT] BrowserWorker 是系统的操控浏览器工具,必须安装。 没有安装 BrowserWorker 插件时,自动化浏览器操控功能将无法正常工作。
关键原则:插件路径必须由脚本在当前运行环境解析,不得向用户展示开发机硬编码路径。安装环境下真实路径可能是用户目录里的 .manai_worker/storage/tools/...,不是开发目录。
当前内置插件别名:
browserworker->BrowserWorker-extension1688->1688-extension
强制前置检查
处理任何目标插件前,必须先执行对应的 run.py check,不得直接执行 open 或 install:
# BrowserWorker
python3 {baseDir}/run.py check
# 1688
python3 {baseDir}/run.py check --extension-name 1688
# 自定义插件目录
python3 {baseDir}/run.py check --extension "/actual/install/storage/tools/target-extension"
根据命令输出中的 success 分支处理:
success: true:目标插件已经安装并启用。立即向用户返回成功并结束任务。- 已安装成功后,禁止继续执行
run.py open、run.py install或任何带--close-existing的命令。 - 已安装成功后,不得再次打开
chrome://extensions/,不得关闭或重启 sandbox Chrome,也不得输出人工安装指引。 success: false:只有此时才进入后续平台安装流程。
run.py install 内部也包含相同的已安装短路检查:如果插件已经加载,会直接返回 success: true 和 Chrome extension is already loaded in this profile.,不会启动或关闭 Chrome。
触发条件
当用户提出以下需求时使用本技能:
- “不要 CDP,安装 Chrome 插件”
- “安装 BrowserWorker 插件”
- “安装 1688 插件”
- “打开 chrome://extensions 加载插件”
- “Windows 自动点击安装插件”
- “macOS 引导用户手动加载插件”
- “一次加载后后续启动保留插件”
策略
- 所有平台:第一步必须检查目标插件,已安装时立即成功返回。
- Windows:只使用
pywinauto识别 ManAI Profile 的 Chrome 窗口并导航到chrome://extensions/。不得自动点击开发者模式、“加载已解压”或文件选择器;页面打开后立即停止工具操作并让用户手动安装。 - macOS:不采用自动点击方案。脚本只负责打开 sandbox Chrome 到
chrome://extensions/并输出人工指引。 - 自动失败:降级为人工引导,不要反复盲点坐标。
- 安装后:用
run.py check读取 profile 的Default/Preferences和Default/Secure Preferences检查插件是否已加载。
命令
检查默认插件 BrowserWorker:
python3 {baseDir}/run.py check
打开 sandbox Chrome 到扩展页,并输出人工引导:
python3 {baseDir}/run.py open --close-existing
安装默认插件 BrowserWorker:
python3 {baseDir}/run.py install --close-existing
安装 1688 插件:
python3 {baseDir}/run.py install --extension-name 1688 --close-existing
只输出人工安装指引:
python3 {baseDir}/run.py guide
python3 {baseDir}/run.py guide --extension-name 1688
指定其它插件目录:
python3 {baseDir}/run.py install --extension "/actual/install/storage/tools/BrowserWorker-extension"
路径解析
脚本解析顺序:
- 优先导入项目
gui_src/gui_utils/path_manager.py的PathManager。 - 使用
PathManager.sand_profile_dir作为 profile。 - 默认使用
PathManager.tools_dir / "BrowserWorker-extension"作为插件目录。 - 指定
--extension-name 1688时使用PathManager.tools_dir / "1688-extension"。 - 如果无法导入
PathManager,再按MANAI_WORKSPACE_ROOT/MANAI_HOME/ 当前工作区回退到storage/tools。
Agent 不要自己拼开发环境路径;必须使用脚本输出里的 extension 字段或 guide 文本里的路径。
Windows 自动安装
Windows 自动方案需要 pywinauto。流程:
- 启动 Google Chrome,不带 CDP,不带
--load-extension,指定 sandbox profile。 - 只选择命令行包含 sandbox profile 的 Chrome 窗口,禁止操作用户日常 Chrome。
- 用 UI Automation 聚焦地址栏,输入并打开
chrome://extensions/。 - 检测到开发者模式或“加载已解压”控件后,立即返回
manual_required: true、page_opened: true和插件目录。 - Agent 展示人工安装步骤后立即结束任务,不得点击页面、不得操作文件选择器、不得再次执行安装命令。
Enter- 再
Enter或点击“选择文件夹”
- 读取 profile 偏好确认插件已安装。
如果 pywinauto 未安装、找不到按钮、找不到文件夹选择器,立即输出人工引导。
Windows 人工引导方式:
- 在已打开的 Chrome 进入
chrome://extensions/。 - 打开
Developer mode/开发者模式。 - 点击
Load unpacked/加载已解压的扩展程序。 - 文件夹选择器弹出后按
Alt+D。 - 粘贴脚本输出的插件路径。
- 回车,再回车确认。
macOS 降级方案
macOS 不做自动点击,因为无辅助功能权限时 pyautogui 能移动鼠标但点击可能不会被 Chrome WebUI 接收。脚本只打开 sandbox Chrome 到 chrome://extensions/ 并输出路径。
macOS 人工引导方式:
- 在已打开的 Chrome 进入
chrome://extensions/。 - 打开“开发者模式”。
- 点击“加载未打包的扩展程序”。
- 文件选择器弹出后,点击文件选择器窗口,让它获得焦点。
- 按
Command+Shift+G。 - 粘贴脚本输出的插件路径。
- 回车,再回车确认。
注意:Command+Shift+G 不是文件选择器里的可见按钮;它会打开“前往文件夹”的路径输入框。
Agent 处理规则
- 先执行
run.py check;安装 1688 时执行run.py check --extension-name 1688。 - 如果
check返回success: true,直接告诉用户目标插件已安装并立即结束;不得继续调用任何安装、打开、关闭或重启 Chrome 的命令。 - 如果未安装:
- Windows 执行
run.py install --close-existing,安装 1688 时加--extension-name 1688。terminal 外层 timeout 至少设置 30 秒。命令返回manual_required: true后,向用户显示插件目录并立即结束,不得重试或继续点击。 - macOS 执行
run.py open --close-existing,安装 1688 时加--extension-name 1688,然后把输出里的 manual guide 告诉用户。
- Windows 执行
- 用户完成手动加载后,再执行对应
run.py check。 - 不要提示用户使用开发环境路径;只使用脚本输出的
extension路径。 - 不要用 CDP 作为本技能的安装方式。
- 不要修改 BrowserWorker 或 1688 插件源码。
- 不要在网站登录、验证码、滑块上做绕过;遇到安全验证让用户人工处理。