运行时依赖
安装命令
点击复制技能文档
Zero令牌 浏览器自动化(OpenClaw)
教会 代理 使用 Zero令牌 MCP 做浏览器自动化、轨迹录制与脚本重放。旨在让 OpenClaw 执行定时/重复任务时尽量少消耗 令牌。
Zero令牌 项目主页:https://github.com/AMOS144/zero令牌
何时使用 / 何时不该用 适合使用: 需要通过 OpenClaw + Zero令牌 MCP 做浏览器自动化,并且未来会 重复 / 定时执行 的任务。 已经有一次完整的浏览器操作轨迹,希望将其 转成低 令牌 消耗的脚本 来复用。 不适合使用: 只想临时操作一次、没有复用需求的场景(直接用 Zero令牌 MCP 即可)。 页面强依赖人工决策,大量步骤都需要 fuzzy_point 介入、无人值守难以兜底的任务。 前置条件 当前环境中已能通过 MCP 访问名为 zero令牌 的服务器(或等价的 MCP server id)。 执行浏览器操作前需先调用 browser_init;完成后可选调用 browser_close。 OpenClaw 使用前准备(HTTP 模式)
当通过 OpenClaw / MCPorter 使用 Zero令牌 时,因其每次调用会新建进程,导致 browser 状态丢失。需改用 流able HTTP 传输模式,服务常驻:
手动启动 HTTP 服务(在后台常驻): zero令牌-mcp-http,或 zero令牌-mcp --transport 流able-http 默认端口 8000,可用 --port 或环境变量 ZERO令牌_HTTP_PORT 覆盖。 OpenClaw 配置:在 OpenClaw.json 的 mcpServers.zero令牌 中,使用 URL 而非 command: { "mcpServers": { "zero令牌": { "url": "http://localhost:8000/mcp" } } }
具体字段名以 OpenClaw 文档为准(可能为 流able-http 或 url)。 MCP 未配置 / 未安装 Zero令牌 时的处理
当调用 Zero令牌 相关 MCP 工具失败,并出现类似以下症状时:
找不到名为 zero令牌 的 MCP server; browser_init / trajectory_启动 等工具报「工具 not found」「MCP server unavAIlable」或 导入 相关错误;
代理 应按以下顺序处理:
明确告知用户:Zero令牌 MCP 尚未在当前环境安装或启用,暂时无法使用浏览器自动化脚本能力。 询问用户当前所用平台(如「Cursor / OpenClaw / 其他支持 MCP 的客户端」),并指导用户安装 Zero令牌 及浏览器依赖: OpenClaw + MCPorter:mcporter 安装 zero令牌 --tar获取 OpenClaw --配置。重要:OpenClaw 需用 HTTP 模式,先在后台运行 zero令牌-mcp-http,再在 OpenClaw.json 中将 mcpServers.zero令牌 配置为 {"url": "http://localhost:8000/mcp"}(见上文「OpenClaw 使用前准备」)。 如果平台有 MCP Marketplace / 插件市场: 提示用户在市场中搜索并启用 zero令牌 MCP。 如果是本地 Python 环境(如命令行 / 开发机): 提示用户依次执行: 安装包:pip 安装 zero令牌 安装 Playwright 浏览器依赖(否则浏览器工具会报错): 普通环境:playwright 安装 chromium 如使用 uv:uv 运行 playwright 安装 chromium --with-deps 启动 MCP Server:OpenClaw 在后台运行 zero令牌-mcp-http;Cursor 等 IDE 运行 zero令牌-mcp(或由客户端自动拉起)。 在客户端中,将该 MCP server 注册为 id 为 zero令牌 的 MCP;OpenClaw 需在 OpenClaw.json 中配置 URL(见「OpenClaw 使用前准备」)。 在用户确认 Zero令牌 已安装并启用后,代理 再次从 browser_init 开始执行 Zero令牌 相关步骤。 MCP 工具与流程 工具清单(与 MCP 对齐) browser:browser_init(可选 stealth: true 反爬)、browser_close、browser_open、browser_命令行工具ck、browser_输入、browser_获取_text、browser_获取_html、browser_screenshot、browser_wAIt_for、browser_提取_data trajectory:trajectory_启动、trajectory_complete、trajectory_获取、trajectory_列出、trajectory_load、trajectory_删除、trajectory_to_script(轨迹转脚本并保存到数据库) script: script_save、script_列出、script_load、script_删除 运行_script:无 LLM 回放脚本执行 启动 模式:{ "task_id": "...", "vars"?: {...} } 恢复 模式(高级用法):{ "会话_id": "...", "resolution": {...} }(由上层编排器在 DFU/模糊点暂停后恢复) 运行_script_by_job_id:定时任务一步执行,{ "binding_key": "job_id", "vars"?: {...} },内部查绑定并执行 会话:会话_列出、会话_获取(会话_id):查询录制 / 回放会话明细,用于 调试、审计、定时任务复盘
脚本、轨迹与会话均由 MCP 后端存储在 SQLite 数据库 中,通过上述工具访问,不依赖本地文件路径。
可选参数:include_screenshot: false 减少响应体积;auto_save: true / adaptive: true 用于自适应元素定位。
Quick Reference 工具 / action 典型用途 browser_init 初始化浏览器会话(可选 headless/stealth) browser_open 打开登录页或任意目标页面 browser_命令行工具ck 点击按钮、链接、tab 等 browser_输入 在输入框内输入用户名、密码、搜索关键字等 browser_获取_text/获取_html 读取文本或整段 HTML,用于后续解析 browser_wAIt_for 等待某段文本出现/消失,避免页面还没加载完 browser_screenshot 截图留档或调试 browser_提取_data 从列表 / 表格中抽数据 trajectory_启动/complete 录制一次完整的浏览器操作轨迹 典型流程 录制:trajectory_启动(task_id, goal) → browser_init → browser_open / browser_命令行工具ck / browser_输入 等 → trajectory_complete(导出_for_AI: true) 复用:trajectory_列出 查 task_id → trajectory_load(task_id, 格式化) 获取轨迹 管理:trajectory_删除(task_id) 删除;browser 工具可传 include_screenshot: false 错误:失败时返回 成功: false、code、retryable,可按 retryable 决定是否重试 何时才生成脚本
仅在以下情况根据轨迹生成可复用脚本(避免徒增 令牌):
重复任务:用户明确说会多次执行(如「以后每天跑」「定时执行」「重复任务」),或 cron/上下文表明是定时/周期任务。 用户明确要求:用户说「生成可复用脚本」「保存成脚本下次用」「导出为脚本」等。
不主动生成:未提复用、未提定时/重复时,只做轨迹录制与保存。若用户后续要脚本再生成。
定时任务如何找到对应脚本(基于 job_id 绑定)
当 OpenClaw 以定时任务触发本 技能 时,事件参数中会携带该任务的 job_id。Zero令牌 使用 job_id 作为绑定键(binding_key),并在 MCP 数据库的 script_bindings 表中维护「job_id ↔ 脚本」关系。
代理 必须遵守以下约定:
优先使用 运行_script_by_job_id(binding_key=job_id, vars?) 一步执行:MCP 内部查绑定、合并 default_vars、执行脚本。 若需分步控制,可调用 script_binding_获取(binding_key=job_id),再 运行_script(task_id, vars=merged_vars)。 若 运行_script_by_job_id 或 script_binding_获取(job_id) 返回「未找到」: 提示用户「当前 job_id 尚未绑定 Zero令牌 脚本」; 不要随意尝试其他脚本或自动新建脚本。 对于没有 job_id 或未标记为定时任务的场景: 视为「一次性任务」,只使用 browser_ + trajectory_ 完成当前需求,不主动查找/执行脚本。
开发者应在 Zero令牌 侧或 OpenClaw 的集成层中,使用 script_binding_设置(binding_key=job_id, script_task_id=..., default_vars?, description?) 预先将定时任务 job_id 与脚本 task_id 明确绑定。本 技能 仅通过 job_id 查询绑定,不对映射关系做额外推断。
配置定时任务(完整流程)
当 代理 收到带 job_id 的定时任务配置请求(如用户说「设为每日执行」「把这个任务设为定时」),且 OpenClaw 已传入 job_id 时,必须完成以下端到端流程:
确定 task_id:用户指定、或最近录制的 trajectory 的 task_id(如 trajectory_列出 取最新)。 检查轨迹:trajectory_load(task_id) 检查轨迹是否存在;若无则提示用户先录制。 生成脚本:script_load(task_id) 检查脚本是否存在;若无则调用 trajectory_to_script(task_id, stealth?) 根据轨迹生成并保存。 绑定:script_binding_设置(binding_key=job_id, script_task_id=task_id, default_vars?, description?) 将 job_id 与脚本绑定。
重要:task_id 贯穿 trajectory → script