本页内容
@mearl/setup
使用 @3 选择最新稳定 3.x 安装器,并配套安装同版的运行包和扩展。
Mearl 环境的一次性安装、更新、卸载与配置工具。无需先全局安装 setup:
安装前用 node --version 确认 Node.js >= 20.18.0。
npx @mearl/setup [install] [--local] [--cloud] [--cloud-mode <id>] [--mcp]
npx @mearl/setup update [--local] [--cloud] [--cloud-mode <id>] [--mcp]
npx @mearl/setup uninstall [--local] [--cloud] [--cloud-mode <id>] [--mcp] [--full]
npx @mearl/setup extension [--full] [--force]
npx @mearl/setup extension --extract
npx @mearl/setup plugin [name] <path>
npx @mearl/setup plugin install <skills add 参数...>
npx @mearl/setup plugin uninstall <name>
npx @mearl/setup provider <install|update|uninstall> <package|id>
npx @mearl/setup profile install <来源> [--browser <标识或名称>]
npx @mearl/setup preset apply [来源]
npx @mearl/setup preset <update|status|uninstall>
无交互终端时,install 自动采用安装默认项,无需额外传 --yes;交互终端保留安装提示。非交互卸载仍需显式传 --yes 或 --non-interactive。
--skip-skill 保留独立管理的 Mearl Skill,不影响 preset 的选择、安装或其声明的托管资源。已有本机 preset、浏览器受信选择和发行默认配置仍按正常优先级处理。
浏览器 Provider 独立安装和演进。安装后运行 mearl <providerId> 查看该版本声明的能力、
配置和启动参数。
可选云协议先通过 preset 安装对应能力,再用 --cloud-mode <id> 选择。Qoder 配对见 @mearl/plugin-qoder;setup 不默认包含或安装它。
安装端模拟
npx @mearl/setup profile install mearlhq/profile-wechat
来源支持公开 GitHub 仓库的 owner/repo、owner/repo@ref,或能力包清单的完整 HTTPS 地址。GitHub 来源从解析后的提交读取根目录 bundle.json。命令安装能力包声明的全部端模拟配置,保留当前 Preset。有多个本地扩展连接时,用 --browser 选择目标。若扩展提示授权,请确认来源。
在扩展快捷设置的客户端下拉菜单中选择「添加端模拟」,可以选择官方端模拟或输入来源。列表为空时,点击「客户端」可直接打开安装弹窗。
安装与注册 Skill 插件
一个命令安装 skill 并注册它的 CLI、SDK 和 MCP 能力:
npx @mearl/setup plugin install mearlhq/mearl --github --skill browser-tab-manager --yes
mearl tabs summary
安装参数传给公共 Skills CLI,使用全局共享目录。默认由 npx 按当前 Node.js 版本解析 skills。公共 CLI 的默认 symlink 和复制模式都可注册;复制模式通过 list –global –json 确认本次成功结果对应的 canonical path,不猜测目录,也不扫描其他 Skills。自定义 CLI 可通过 MEARL_SKILLS_PATH 指定。参数不接受截断后置选项的 – 分隔符。
安装宿主提供的本地插件目录决定哪些能力由 preset 管理。install/update 维护目录中的托管注册,保留用户自行注册的插件。卸载最后一个依赖环境时移除托管插件与 Mearl Skill;其他环境需要时保留。配置准备、宿主同步和实际安装状态共用 安装合同。
Native preset 批次新建的插件注册使用 setup 托管归属,后续通过 Agent 更新仍保留该归属;同目录已有的用户注册保持原归属,自定义用户别名也会保留。托管卸载遇到用户别名共用同一 Skill 时,只清除托管注册并保留 Skill 文件。
GUI 和 CLI 使用同一套 preset 安装器及覆盖规则。preset apply 接受 URL 或本地文件路径。省略来源时使用已保存的快照重试。preset update 重新读取当前来源。重试时可显式重复指定 --replace-skill,授权本次替换这些 Skill 的来源或同名旧插件注册。
npx @mearl/setup preset apply --replace-skill example-skill --replace-skill another-skill
已安装的 Skill 仅修复注册;来源冲突项重新安装。未列出的冲突仍会阻止安装,声明外的工具名与变更后的安装身份也会被拒绝。覆盖授权不会保留到后续普通修复或自动更新。缺少浏览器权限时仍需在扩展中授权。输出沿用 preset JSON,已就绪退出 0、仍有待完成项退出 3、安装失败退出 1,无效参数退出 2。
运行 preset uninstall 清理本机 preset 和匹配的已连接扩展。卸载会移除 preset 托管的能力包和当前目录中由 setup 托管的插件注册,保留独立安装的能力、Skill 文件、Provider 和浏览器权限。查看卸载范围
自动注册默认使用安装目录名;入口可声明 name 指定简短命令名。
重装会刷新同名绑定。JavaScript 入口必须默认导出 register(app),Python 入口必须导出 register(app) 函数;完整协议见
插件运行时合同。
已通过其他渠道分发的 skill 或自定义入口,可以直接传入路径注册:
npx @mearl/setup plugin /absolute/path/to/browser-tab-manager
npx @mearl/setup plugin custom ./skills/custom/entry.mjs
path 接受目录或具体文件;目录默认读取 scripts/main.mjs 或 scripts/main.py,相对路径基于调用工作目录解析。插件名优先使用显式 name,其次读取入口的 name metadata,最后回退到 Skill 目录名;常规注册只传 path,显式 name 仅用于覆盖或兼容旧入口。Python 插件要求 python3 >= 3.9,可通过 MEARL_PYTHON 指定解释器路径;setup 只验证入口可加载,不安装 Python,也不执行 pip install。
命令检查入口注册函数,然后保存绝对入口路径,同名注册更新绑定。
两种注册流程都会检查本机 @mearl/client 和 @mearl/native-host:缺失或低于当前 setup 版本时,
复用已有包管理器安装 setup 的对应版本,更新后再次验证;更高版本保持不动。
native-host 会幂等初始化 Skills 模式。基础环境补齐或初始化失败时保留已安装的 skill,并停止注册。
JavaScript 插件可导出 setup({ runCommand }),在注册前准备 Skill 自己的依赖。两种安装入口都会等待执行完成,失败时停止注册。首次使用的依赖检查由 Skill 自行处理,见 client 契约。
注册后可在任意目录运行 mearl <name> --help,也可通过 @mearl/client 的 invokePlugin 或 MCP 的 plugin_invoke 工具调用。日常调用不更新 Skill 源码;已选目录中的缺失插件会触发一次按需安装。Skill 自身的依赖由安装钩子和首次使用检查准备。
不再需要插件时执行:
npx @mearl/setup plugin uninstall tabs
若入口位于 ~/.agents/skills/<skill>/,setup 会先执行
skills remove <skill> --global --yes,成功后清除该 Skill 对应的全部插件注册;
入口目录已被手动删除时会让 Skills 仍能识别本次移除,从而一并清理其跟踪记录。
移除失败时保留注册以便重试。手工注册的其他路径只解除 Mearl 注册,不删除源码。
重复卸载未注册名称会成功返回,不产生改动。
管理浏览器 Provider
Provider 由 npm 包分发,但包本身无需暴露 CLI 或安装脚本。setup 使用当前 npm 包管理器
完成全局包生命周期,再读取包内的 package.json#mearl.provider 元数据登记协议入口、
可创建的浏览器类型名称及其表单参数:
npx @mearl/setup provider install @example/mearl-provider-device
npx @mearl/setup provider update example-device
npx @mearl/setup provider uninstall example-device
安装参数接受包名、版本或 dist-tag;更新和卸载可使用 providerId 或完整包名。核心 @mearl 包固定使用公共 npm registry;其余 scope 沿用调用方的包管理器配置。安装沿用启动 setup 的包管理器, 更新和卸载沿用当前 Provider 的原包管理器。Provider 登记只保存 经过校验的包名、安装目录和包内入口;不接受包自行注入启动命令、参数、工作目录或环境变量。 卸载仅在包管理器成功移除包后清除登记,以便失败时可以重试。
行为
- Mearl 自有 npm 包的安装和更新固定使用
https://registry.npmjs.org/,与最新版本查询使用同一来源;第三方包沿用当前包管理器的源配置。 install可以省略;直接执行npx @mearl/setup等同于npx @mearl/setup install。 以选项开头时也默认安装,例如npx @mearl/setup --cloud --yes。install未指定环境时默认--local。-h/--help显示帮助,-v/--version显示 setup 版本。update和uninstall未指定环境时,从当前PATH中的mearl-native-host、mearl-cloud-server、mearl-mcp-server自动检测,可同时处理 多个已安装环境。--local、--cloud与--mcp可以组合,显式传入时只处理选中的环境;--cloud-mode <id>同时选择 cloud 环境,模式实现必须来自已安装能力。- 已有环境沿用其原包管理器和全局安装前缀;首次安装沿用启动 setup 的包管理器。
uninstall也识别npm link或dev:link注册到 npm 全局目录的开发软链, 通过原 npm 前缀移除包与命令链接,保留仓库源码。安装和更新的自动检测仅处理常规全局安装。- cloud 环境统一管理
@mearl/cloud-server与@mearl/client:WebSocket 模式首次安装后 启动 Server,更新后仅在 Server 原本运行时重启;其他 mode 由安装的cloud.server.<id>处理;卸载前均调用stop。 - local/cloud 共用一份
@mearl/client;组合安装只处理一次,卸载单个环境时若另一个环境仍在使用则保留。 - 从 2.5.x 更新 cloud 环境时会先卸载旧
@mearl/cloud-client,避免它遗留的mearlbin 与统一 client 冲突。 - local/cloud 共用的全局 mearl skill 通过
skills的 JSON 清单定位,只处理一次。 - 安装和更新通过
skills add从公开仓库重新安装全局 mearl skill,并关联当前检测到的 Agent;更新须确认本次安装完成并核对全局 JSON 清单,不能仅依据第三方更新命令的退出码。 可用--skip-skill跳过。 - 卸载一个环境但另一个仍依赖全局 mearl skill 时会保留 skill。
- 已选择 preset 的自动维护保留用户注册;托管卸载遇到同目录的用户别名时只移除托管注册并保留共享 Skill。
uninstall --full在环境卸载之外,还会逐项卸载所有已注册 CLI 插件与浏览器 Provider。 Skills 安装的插件会同时移除 Skill;手工注册的外部插件只清除注册、保留源码;Provider 只有在包管理器成功卸载 npm 包后才清除注册。单项失败不阻止其他项继续清理,命令最终返回非零。 该选项不删除 Chrome 扩展;extension --full仍表示安装扩展及完整本地环境。uninstall --full在所有环境、插件与 Provider 成功移除后统一收尾:停止插件执行服务, 确认没有活跃或退出状态未明的任务,再删除任务历史、源码快照、服务日志和已结束宿主的页面会话文件。只卸载部分环境、单项失败或服务重新启动时保留共享缓存。 即使包和注册已移除,也可以再次运行该命令完成缓存收尾。自定义MEARL_PLUGIN_DIR只清理该注册表的执行缓存。 记事本、迭代记录、配置与身份、插件持久状态、Provider 私有数据、浏览器配置及用户导出的设计稿均保留; CDP 标签 ID 计数也保留,防止旧请求命中新标签。--mcp的客户端配置和清理由@mearl/mcp-server自己的命令完成。- 默认的
install/update不处理浏览器扩展。extension是独立命令:从https://github.com/mearlhq/mearl/releases/download/v<version>/读取同版本 beta 扩展发行元数据(正式 setup 使用releases/latest/download/)并下载对应的mearl-chrome-v*.zip,原子解压到~/.mearl/chrome-extension。首次安装通过浏览器级 CDP 的Extensions.loadUnpacked加载;后续更新由mearl check --local --json确认当前扩展仍来自 setup 管理目录后,直接替换 文件并通过 Native Host 触发扩展 reload。固定目录和 manifest 中的key保证扩展 ID 与浏览器存储保持稳定。 extension --full会先安装或更新扩展,再复用 local profile 安装@mearl/client、安装并初始化@mearl/native-host,最后安装全局 Mearl Skill。 两部分都会尽量执行;任一步失败时命令返回非零退出码,已安装的部分会保留。它不安装 cloud 或 MCP 环境。- 下载前会通过 CDP 检查同 ID 插件的来源。未安装,或来源为固定目录中的
UNPACKED插件时可继续;Chrome 商店、企业策略或其他本地目录安装的版本默认保持不变。只有显式 传入--force才会接管并替换这些版本。
安装或更新浏览器扩展
首次使用时,先运行 npx @mearl/setup,再加载同版的离线 ZIP。商店提供同版扩展时,也可以直接安装。安装步骤
如需由 setup 管理扩展,运行下面的命令。
npx @mearl/setup extension
加上 --full 可以在同一次运行中安装本机 CLI、Native Host 和 Skill。
需要手动导入时,运行 npx @mearl/setup extension --extract。setup 会下载发行 ZIP,
在 ~/.mearl/extension-downloads/ 下创建新目录并解压,然后打印完整路径。打开
chrome://extensions/,启用开发者模式,点击加载已解压的扩展程序并选择该目录。
Chrome 使用扩展期间请保留目录。Chrome 关闭或远程调试关闭时也可以下载。
自动安装在首次安装、旧版 setup 扩展首次迁移,或 Native Host reload 不可用时使用 CDP。如果
Chrome 尚未开放 CDP,交互命令会提示打开
chrome://inspect/#remote-debugging、启用远程调试并允许连接,然后等待安装完成。面向人的
安装指引不要添加 --yes。无 TTY 环境使用 npx @mearl/setup extension --yes;它只尝试
一次,CDP 不可用时立即中断。无法确认 setup 管理来源且 CDP 不可用时不会下载或修改插件
目录,打开 CDP 后重新执行同一命令即可。Chrome 版本过低、缺少扩展安装所需的 CDP 方法时,
命令会中断并提示升级 Chrome。
该命令每次都读取下载页上的最新插件版本,不要求与 setup、CLI 或 Native Host 同版本。
CDP 来源检查和 Extensions.loadUnpacked 复用同一条连接,避免一次安装重复请求授权。
安装成功后目录内会保存 setup 管理标记;mearl check --local --json 同时从当前运行扩展读取该
标记,只有两侧路径一致时才允许无 CDP 更新。如果用户后来改装 Chrome 商店版本,运行中
的扩展不会返回 setup 标记,命令会重新通过 CDP 检查来源,并在未传 --force 时保持商店
版本不变。
setup 管理的扩展会读取远端 config.json 检查新版本,但不会静默更新。发现更高版本后,
DevTools 面板的设置按钮会显示红点,快捷设置中提供“立即更新”和对应版本的“更新日志”。
只有用户点击“立即更新”后,Native Host 才会重新校验远端版本、setup 管理标记、下载地址、
可选的 SHA256 和压缩包 manifest,再原子替换目录并 reload。该入口不会回退到 CDP;商店版、
企业策略版和其他本地目录版本不会进入 setup 更新链路。对于 Chrome 自身管理并已下载完成的
更新,扩展只被动监听 runtime.onUpdateAvailable,沿用相同的更新提示并由用户点击 reload;不会
调用 runtime.requestUpdateCheck() 主动检查。
跟随浏览器扩展自动更新
浏览器扩展与 Native Host 首次建联时会交换版本。每次扩展后台启动只检查一次;当扩展
进入更高的 major.minor release line 时,旧 Host 会在保持当前连接可用的前提下,调用
对应 major.minor.x 范围内最新的 @mearl/setup,把 @mearl/native-host 与
@mearl/client 一起更新到该范围内的最新版本。成功后 Host 退出,扩展通过已有重连机制
启动新版本。只有两个本地 CLI 版本一致且都属于扩展的 release line 时,更新才会被视为成功。
自动更新不会降级较新的 Host,也不会改动 cloud、MCP 或独立安装的 Mearl Skill。
目标 npm 版本尚未发布、网络不可用或更新失败时,旧 Host 会继续运行;下一次扩展后台
生命周期可重新尝试,也可手动执行 npx @mearl/setup update --local。
人工与 Agent 使用
- 人工在终端执行时不加
--yes,需要选择 Skill 安装目标或 MCP 客户端时会显示交互提示。 - Agent、CI 或其他无 TTY 环境应加
--yes(也可写--non-interactive)。首次安装会选择已检测到的 Agent / MCP 客户端,卸载会清理 所有已检测到的相关配置。 - 无 TTY 环境执行
install或uninstall却未加上述参数时,会在任何改动前退出并提示正确命令。 - 退出码
0表示完整成功,1表示执行未完成,2表示参数或交互模式不适用。
示例
# 默认安装本地浏览器环境
npx @mearl/setup
# 与上一条等价
npx @mearl/setup install
# Agent / CI 无交互安装
npx @mearl/setup --yes
# 安装云端 Agent 环境
npx @mearl/setup --cloud
# 同一台机器同时作为本地浏览器宿主和云端 Agent
npx @mearl/setup --local --cloud
# 自动更新当前 PATH 中检测到的全部 Mearl 环境
npx @mearl/setup update
# 独立安装或更新到最新浏览器扩展
npx @mearl/setup extension
# 安装完整本地环境(client、Native Host、Skill 和扩展)
npx @mearl/setup extension --full
# 只卸载本地环境
npx @mearl/setup uninstall --local
# 自动检测并无交互卸载
npx @mearl/setup uninstall --yes
# 卸载环境,并清理全部 CLI 插件与 Provider
npx @mearl/setup uninstall --full
# 安装可选浏览器 Provider
npx @mearl/setup provider install @example/mearl-provider-device
npx @mearl/setup provider install @example/mearl-provider-cloud
原有 Mearl 环境包的 npm/npx 安装方式和 CLI 保持可用;setup 是统一的便利入口。
Preset 安装
mearl-setup preset apply <source-url-or-path> 准备确切资源、激活本机 Node 选择,并向已连接的兼容扩展同步浏览器资源。preset update 保留用户覆盖,preset status 报告本机就绪情况和已连接扩展的状态。CLI setup 返回退出码 3 表示仍有本机组件待同步或安装。 本机安装合同
install/update 在替换包前保存选中 Preset 的确切资源和期望选择,运行时初始化后同步宿主并安装 Skills;extension --full 在替换扩展前完成同一准备流程。已有本机选择优先保留,显式 --preset 用于更新或修复资源。配置或资源不可用时停止包变更;部分升级后的重试使用已保存记录。卸载不准备或安装 Preset。
默认目录为公共站点的 installation.json,可通过 MEARL_INSTALLATION_CONFIG_URL 指定其他 HTTPS 目录(本地验证允许回环 HTTP)。目录采用网页安装的校验合同;本机与浏览器未全部确认时报告 pending。
浏览器 preset 与发行入口
主动执行 setup 时,先沿用本机已选 preset;本机未选择时,在运行时初始化后、安装 Skill 前采用已连接浏览器的受信 preset。显式 --preset <source> 优先。多个浏览器的选择不同、来源不受信或状态读取失败时要求显式选择。首次连接最多等待约一分钟;浏览器关闭时只安装基础环境并说明重试方式。普通连接和后台核心更新不会自动安装首次本机 preset。
发行包可设置本机进程环境变量 MEARL_SETUP_DEFAULT_PRESET 提供默认清单来源;默认值仅在两端均无选择时生效,插件、Provider、卸载等子命令保持原行为。安装与状态核验仍由安装器负责。
发行包可设置 MEARL_SETUP_STATUS_FORMAT=text,让生命周期命令结束时显示警告和待处理提示。preset status 仍输出 JSON,退出码仍表示实际就绪情况。