跳转到内容

产品概览

Omnibot

面向 AI Agent 的浏览器基础设施。

Omnibot 让 LLM 客户端能够读取、检查、操作、调试和验证用户的真实 Chromium 浏览器:真实标签页、真实登录态、真实扩展,通过本地守护进程加 CLI 显式选择标签页。

本页面是当前 Omnibot 功能和路线图的概览。如需详细的实现状态,请参阅 产品路线图

快速开始

安装 CLI:

Terminal window
npm install -g @omniaibot/omnibot

检查本地运行时和扩展连接:

Terminal window
omnibot doctor
omnibot status
omnibot tabs

安装 Agent 技能,让 AI 客户端学会正确的操作模式:

Terminal window
omnibot skills install --agent codex
omnibot skills install --agent claude
omnibot skills install --agent opencode
omnibot skills install --agent hermes --profile nuwa

观察一个标签页,执行一次操作,然后验证:

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>

它是什么

Omnibot 是 Agent 运行时与用户已打开浏览器之间的本地桥接。它专为普通 HTTP 请求或静态爬取无法胜任的任务而设计:

  • 已认证的应用和仪表盘。
  • 客户端渲染的页面。
  • 包含丰富控件、弹窗、组合框、模态框、对话框和编辑器的站点。
  • 需要截图、控制台日志、网络证据或标签页感知状态的工作流。
  • 应当显式、可检查、可恢复的 Agent 操作。

核心的产品规则很简单:

观察 → 操作 → 验证

Agent 应当检查页面,进行一次有意的操作,并验证预期的状态变化,然后再继续。

当前能力

运行时与分发

Omnibot v2 包含本地 CLI 和守护进程运行时。CLI 可以自动启动或连接到守护进程,而浏览器扩展维护浏览器侧的连接。

当前命令面:

  • omnibot doctorstatusstartstoprun
  • 本地守护进程 API 在 127.0.0.1:18764
  • 浏览器扩展 WebSocket 连接在 127.0.0.1:18765
  • HTTP 长轮询回退在 127.0.0.1:18766
  • 通过主 CLI 包和平台特定二进制包进行 npm 分发。
  • 打包的 Agent 技能和 omnibot skills install
  • 许可证状态、持久化的激活状态、使用次数和扩展状态刷新。

读取与页面理解

Omnibot 为 Agent 提供多种检查浏览器状态的方式,具体取决于意图。

当目标是内容理解时使用 read

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article

当下一步是浏览器操作时使用 snapshot -i

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>

当前的读取功能包括:

  • 干净的渲染后页面读取,支持屏幕预算和 JSON/文本输出。
  • 无障碍树快照,带有可操作的 @eN 引用。
  • 交互式过滤、紧凑/深度/URL 选项和选择器作用域。
  • 弹窗/模态控件和组合框选项探测。
  • 富文本编辑器对 contenteditable 编辑器的引用。
  • 通过 getis 进行窄状态读取。
  • 语义 find 定位器,支持 role、text、label、placeholder、alt、title、testid 和第 n 个匹配。

类用户浏览器操作

Omnibot 可以通过引用、语义定位器、选择器、DOM 回退和坐标回退来操作页面。

常用命令:

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
OMNIBOT_SESSION_TOKEN=search omnibot type --tab-id <TAB_ID> @e3 "omnibot"
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>

已实现的操作面包括:

  • clickdblclickfilltypepresshoverfocus
  • selectcheckuncheckscrollscrollintoview
  • 元素级别的 drag。
  • 通过 CDP、DOM 节点回退和 JS DataTransfer 回退进行文件上传。
  • 导航、标签页生命周期、窗口创建、frame 定位、历史、重载和 pushstate。
  • 对选择器、文本、URL、加载状态、JavaScript 函数和固定时间的等待。
  • JSON 和文件驱动的批量命令。

调试与证据

Omnibot 将证据视为浏览器工作流的一部分,而非事后补充。

已实现的证据工具包括:

  • 截图:普通、全页、带标注的、PNG/JPEG、base64 和文件输出。
  • 控制台捕获:日志、错误路径和清空。
  • JavaScript 对话框:日志、清空、接受、驳回和 prompt 文本处理。
  • 网络捕获:开始、停止、清空、日志和摘要。
  • 用于最后手段检查的原始 CDP 调用。

示例:

Terminal window
OMNIBOT_SESSION_TOKEN=debug omnibot screenshot --tab-id <TAB_ID> -o /tmp/page.png
OMNIBOT_SESSION_TOKEN=debug omnibot console logs --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot network summary --tab-id <TAB_ID>

回退表面

理想路径是语义定位器或快照引用。当这失败时,Omnibot 暴露更低级别的表面,而不是强迫 Agent 直接使用原始 JavaScript。

当前的回退层级包括:

  • 选择器操作。
  • DomCUA 可见节点操作。
  • 通过 CDP input 事件进行坐标鼠标操作。
  • 通过页面上下文进行剪贴板读写。
  • 视口 get/set。
  • 资源元数据列表/导出。
  • 浏览器/会话元数据。
  • 站点技能探索和生成的操作记忆。

架构

Omnibot 有四个主要部分:

  1. Agent 客户端调用 omnibot 命令。
  2. CLI 连接到本地守护进程或启动它。
  3. 守护进程维护浏览器会话并分派动作。
  4. Chromium 扩展将真实浏览器标签页连接到守护进程。

页面状态命令需要显式选择标签页:

Terminal window
OMNIBOT_SESSION_TOKEN=<workflow> omnibot snapshot -i --tab-id <TAB_ID>

OMNIBOT_SESSION_TOKEN 隔离工作流状态,如引用、跟踪、录制、别名和临时资源。--tab-id 选择实际的浏览器标签页。诸如 @e4 的引用是标签页作用域的,不应跨标签页重用。

典型工作流

检查并点击

Terminal window
omnibot tabs
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>

读取已认证页面

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>

调试损坏的工作流

Terminal window
OMNIBOT_SESSION_TOKEN=debug omnibot console clear --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot network clear --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot network start --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot click --tab-id <TAB_ID> @e7
OMNIBOT_SESSION_TOKEN=debug omnibot network stop --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot console logs --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug omnibot network summary --tab-id <TAB_ID>

操作富控件

Terminal window
OMNIBOT_SESSION_TOKEN=editor omnibot snapshot -i --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=editor omnibot fill --tab-id <TAB_ID> @e12 "第一段。\n\n第二段。"

snapshot -i 可以暴露正常无障碍树中缺失的弹窗控件、自定义组合框选项和富文本编辑器。

命令示例

本节将产品面映射到具体命令。大多数页面状态命令同时使用 OMNIBOT_SESSION_TOKEN--tab-id <TAB_ID>,让 Agent 将工作流记忆与正在操作的浏览器标签页分开。

运行时、健康和版本

Terminal window
omnibot doctor
omnibot status
omnibot start
omnibot stop
omnibot run
omnibot version
omnibot license status

标签页发现与定位

Terminal window
omnibot tabs
OMNIBOT_SESSION_TOKEN=research omnibot tab list
OMNIBOT_SESSION_TOKEN=research omnibot tab new https://docs.example.com --label docs
OMNIBOT_SESSION_TOKEN=research omnibot tab close docs

读取页面内容

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot read --json --screens 5 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article

快照引用和 UI 结构

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -c -d 4 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -s "#main" -u --tab-id <TAB_ID>

窄状态读取

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get text "#main" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get html "#main" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get value "input[name=email]" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get attr "a.login" href --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get count ".item" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get box "#submit" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot get styles "#submit" --tab-id <TAB_ID>

元素状态检查

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot is visible "#submit" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "#submit" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot is checked "#agree" --tab-id <TAB_ID>

语义查找

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot find text "Sign in" --action click --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot find placeholder "Search" --action type --action-value "omnibot" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot find testid submit-button --action click --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot find nth ".card" 2 --action click --tab-id <TAB_ID>

点击、填充、输入和键盘

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
OMNIBOT_SESSION_TOKEN=checkout omnibot dblclick --tab-id <TAB_ID> @e7
OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
OMNIBOT_SESSION_TOKEN=search omnibot type --tab-id <TAB_ID> @e3 "omnibot"
OMNIBOT_SESSION_TOKEN=search omnibot press Enter --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot keyboard type "hello" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot keyboard inserttext "hello" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot keydown Shift --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot keyup Shift --tab-id <TAB_ID>

悬停、聚焦、选择和复选框状态

Terminal window
OMNIBOT_SESSION_TOKEN=menu omnibot hover --tab-id <TAB_ID> @e5
OMNIBOT_SESSION_TOKEN=form omnibot focus "input[name=email]" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot select @e5 "US" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot check @e6 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=form omnibot uncheck @e6 --tab-id <TAB_ID>

滚动和拖拽

Terminal window
OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --selector "#list" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=read omnibot scrollintoview @e7 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=board omnibot drag @e8 @e9 --tab-id <TAB_ID>

上传文件

Terminal window
OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/file.png --tab-id <TAB_ID>

导航、历史、窗口和 frame

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com --same-tab --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot window new
OMNIBOT_SESSION_TOKEN=research omnibot frame main

等待

Terminal window
OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#ready" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=checkout omnibot wait 500 --tab-id <TAB_ID>

批量命令

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"cdp","method":"Runtime.evaluate","params":{"expression":"document.title","returnByValue":true}}]' --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>

截图

Terminal window
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --tab-id <TAB_ID> -o /tmp/omni-shot.png
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --annotate --tab-id <TAB_ID> -o /tmp/omni-annotated.png

控制台证据

Terminal window
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console logs --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console errors --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console clear --tab-id <TAB_ID>

网络证据

Terminal window
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network clear --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network start --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network stop --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network logs --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network summary --tab-id <TAB_ID>

JavaScript 对话框

Terminal window
OMNIBOT_SESSION_TOKEN=dialog omnibot dialog logs --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=dialog omnibot dialog clear --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=dialog omnibot dialog handle accept --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=dialog omnibot dialog handle dismiss --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=dialog omnibot dialog handle accept --text "prompt value" --tab-id <TAB_ID>

剪贴板

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot clipboard read --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=research omnibot clipboard write "text" --tab-id <TAB_ID>

视口

Terminal window
OMNIBOT_SESSION_TOKEN=visual omnibot viewport get --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=visual omnibot viewport set 1280 720 --tab-id <TAB_ID>

资源

Terminal window
OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=extract omnibot assets export -o /tmp/assets.zip --tab-id <TAB_ID>

DomCUA 回退

Terminal window
OMNIBOT_SESSION_TOKEN=repair omnibot dom visible --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot dom click n1 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot dom dblclick n1 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot dom scroll n1 --dy 800 --tab-id <TAB_ID>

坐标鼠标回退

Terminal window
OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --click-count 2 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot mouse move --x 50 --y 60 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot mouse scroll --x 100 --y 200 --dy 500 --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot mouse drag --from-x 0 --from-y 0 --to-x 100 --to-y 0 --fast --tab-id <TAB_ID>

JavaScript 和原始 CDP 回退

Terminal window
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "return location.href" --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js --file /tmp/repair.js --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp Runtime.evaluate '{"expression":"document.title"}' --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp DOM.getDocument '{"depth":1}' --tab-id <TAB_ID>

人工验证检查

Terminal window
OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID>
OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID> --no-image

可见性模式

Terminal window
omnibot visibility status
omnibot visibility set background
omnibot visibility set visible
omnibot visibility launch headless --user-data-dir /tmp/omnibot-headless

浏览器和会话元数据

Terminal window
OMNIBOT_SESSION_TOKEN=research omnibot browser list
OMNIBOT_SESSION_TOKEN=research omnibot browser current
OMNIBOT_SESSION_TOKEN=research omnibot browser claim 123
OMNIBOT_SESSION_TOKEN=research omnibot browser release 123
OMNIBOT_SESSION_TOKEN=checkout omnibot session name "checkout"
OMNIBOT_SESSION_TOKEN=checkout omnibot session list

录制、回放和跟踪

Terminal window
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record start
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record stop -o flow.json
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot replay flow.json
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace start
OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace stop -o trace.zip

技能和站点记忆

Terminal window
omnibot skills path
omnibot skills install --agent codex
omnibot skills list-sites
omnibot skills install --agent opencode --site xhs
omnibot skills install --agent opencode --all-sites
omnibot explore run https://www.xiaohongshu.com --name xhs --goal "发布图文笔记"
omnibot explore list
omnibot explore show xhs
omnibot explore promote xhs --goal publish-note --version 2026-06-17T21-30-00Z

部分或实验性表面

这些功能已存在,但应谨慎使用:

  • 人工验证检查可以检测和提取网易易盾验证码组件的元数据,但不解决验证码。
  • 逼真的鼠标拖拽是实验性的;稳定的拖拽路径是快速线性模式。
  • 控制台和网络捕获表面已存在,但调用者应验证过滤行为和扩展版本兼容性。
  • 录制、回放和跟踪命令具有基础的有效负载/文件形状,但尚未成为完整的持久宏工作流。
  • 可见性模式对可见、后台、专用配置文件和无头状态进行建模,但专用/无头启动尚未达到生产就绪。
  • 资源导出目前侧重于元数据和 zip 输出,而非完整的离线镜像或 HAR 质量的归档。

路线图

Omnibot 的下一个里程碑从稳定的本地真实浏览器桥接扩展到更丰富的自动化记忆、可观测性和平台深度。

M1:稳定本地浏览器表面

重点:

  • 保持 snapshot + click/fill/type/wait 作为主要工作流。
  • 扩展对弹窗控件、富文本编辑器、上传、网络/对话框捕获和显式标签页定位的端到端覆盖。
  • 保持技能、命令文档和发布包的一致性。

M2:完成录制和跟踪

计划:

  • 将动作分派接入一致的录制和跟踪事件。
  • 定义稳定的回放模式。
  • 支持更多可回放的浏览器动作。
  • 添加跟踪导出验证和可读的跟踪报告。

M3:专用配置文件和可见性启动

计划:

  • 实现实际的专用配置文件浏览器启动。
  • 记录登录状态和扩展加载限制。
  • 决定无头模式是成为受支持的模式还是保持实验性。

M4:可观测性和归档深度

计划:

  • 改进控制台和网络过滤。
  • 添加更丰富的资源导出和 HAR 风格的摘要。
  • 评估跟踪查看属于 CLI 形式还是单独的 UI。

M5:平台扩展

未来产品方向:

  • 远程守护进程作为受支持的模式。
  • 托管/团队工作流和策略控制。
  • 云浏览器提供商和替代浏览器后端。
  • 移动自动化研究。
  • 仪表盘、计费/支付集成和账户管理。

计划中的能力差距

以下功能在今天尚未完整:

  • 完整的 Playwright 兼容定位器和操作对等。
  • 跨 DOM 变更和 frame 的稳定 DomCUA 节点生命周期。
  • 完整的 CUA 策略层和确认工作流。
  • 健壮的跨源 iframe 内省。
  • 下载管理、PDF 导出、完整页面归档和完整 HAR 导出。
  • 持久的 cookie/存储/状态保管库和认证配置文件管理。
  • 探查器、Web Vitals、React/Vue 组件内省和性能时间线。
  • 长时间运行操作的流式事件源。
  • AI 辅助的验证码解决。

何时使用 Omnibot

在浏览器运行时状态很重要时使用 Omnibot:

  • 用户已经登录。
  • 页面由客户端 JavaScript 渲染。
  • 任务需要真实的扩展行为。
  • Agent 必须点击、填充、检查或验证 UI 状态。
  • 截图、控制台日志、对话框或网络活动等证据很重要。

在静态文件、API 调用或普通 HTTP 请求足够时不要使用 Omnibot。Omnibot 用于真实的浏览器状态。

设计原则

  • 可靠性优于便利性。
  • 显式状态优于隐式状态。
  • 模式优于命令记忆。
  • 观察、操作,然后验证。
  • 优先使用语义定位器和引用,再使用选择器。
  • 有意识地回退,并提供证据。
  • 将结构化结果保留在 stdout,将诊断保留在 stderr。