最佳 Stagehand 替代方案

Stagehand 是用来组装浏览器工作流的 SDK。ego(lite) 是你的编程 Agent 执行这些工作流的浏览器。 ego(lite) 省掉了 SDK 项目,让你的编程 Agent 直接运行工作流。精简的 Snapshot 和批量操作减少了模型轮次和 Token 用量。

ego(lite) 对比 Stagehand

ego(lite) 与 Stagehand 的功能对比。
功能ego(lite)Stagehand
你写什么什么都不用。对你已经在用的 AI Agent 说一句话一个 TypeScript 或 Python 项目:SDK、act/extract/observe,还得持续维护,保证它一直能跑
AI Agent 如何操作页面AI Agent 每个回合通过 /ego-browser 把多个操作打包进 JavaScript每个未缓存的 act、extract 或 observe 都要调一次模型;想跳过模型时可以用精确定位器
每个任务的 Token 消耗更低:Snapshot 加批量 JavaScript,按任务整体计算重复的流程可以复用缓存的选择器;新页面每次都要付一次全新的模型调用
复用你真实的 Chrome 登录状态支持,一键导入 Chrome 配置文件;AI Agent 通过 /ego-browser 控制 ego(lite)本地模式下并不可靠:Chrome 配置文件支持有未修复的 bug,browse 还需要远程调试
设置安装 ego(lite),在你的 Agent 里运行 /ego-browsernpm/pip 安装,模型 API key,外加一个项目
并行任务隔离同一个浏览器里 Space 数量不限,上限取决于你的机器浏览器实例要你自己的代码管理;用 Browserbase 则按套餐限制并发数
同时也是你的日常浏览器可以。你在自己的 Space 里浏览,Agent 在它们自己的 Space 里工作不能。它启动的是干净的自动化浏览器
可提交、可重复的自动化不是。任务是交互式的是:脚本有 git 历史、可以走代码评审,缓存也能提交
可复用技能(即将上线)把成功的运行提炼成可复用的技能,用于重复任务(限量测试中)只在重复流程上做动作缓存
价格免费,无订阅,无账号MIT 协议,安装免费;你要付模型 token 的钱(托管到 Browserbase 上则还要加一笔)

最近更新 2026年7月30日

开发者用户来自

  • Vercel
  • OpenAI
  • Anthropic
  • SpaceX
  • Google
  • Microsoft
  • DJI
  • DeepSeek
  • Kimi
  • TikTok
  • MiniMax
  • SAP
  • ZARA
  • eBay
  • Cisco
  • Trip.com
  • LINE
  • NHN
  • Hyundai Motor

为什么 ego(lite) 比 Stagehand 更好

选择在于:是把浏览器工作流构建进一个项目,还是给你的 Agent 一个马上就能用的浏览器。ego(lite) 能处理由 Agent 主导的各类网页工作,从查找和比较信息,到填写表单、检查应用流程,并在需要时提供你的浏览器状态和 Space。

真实任务中快 47% 到 63%

在 Stagehand 里,连续三次点击往往就是三次独立的模型往返,页面才动一下。Stagehand 自己的速度指南也展示了这个模式,并建议先调用 observe,让后面的点击能复用它找到的结果。运行 /ego-browser,你的编程 Agent 就能直接控制 ego(lite)。每个页面都以带稳定 @N 引用的 Snapshot 形式送达,Agent 可以立即在上面操作。在我们公开的 31 个线上网站任务基准测试中,ego(lite) 完成任务的速度比另外四款受测工具快 47% 到 63%。

Time to finish a task, shorter is better

  1. ego(lite)
    398 s
  2. agent browser
    605 s

Data source - Task: finish an average live-site job

并行多任务,执行更快

想同时跑多个 Stagehand 任务,就得在自己的代码里手动创建和销毁浏览器实例,或者转去用 Browserbase,撞上 3、25、100 的会话上限。想看发生了什么,得等任务跑完之后再打开回放。在 ego(lite) 里,同一个浏览器里能开多少个 Space 没有上限:每个 Space 都在自己导入的 Chrome 配置文件上同时运行任务,由 AI Agent 通过 /ego-browser 控制。它们永远不会抢占你正在用的标签页,你随时都能查看或接管任意一个 Space。

不再反复来回 消耗更少 Token

Stagehand 的动作缓存在同一个页面上重复同一个流程时很有用。但换到新站点,或者 DOM 发生变化后,每次调用还是要重新问一次模型,过期的缓存也得手动清理。运行 /ego-browser,AI Agent 每个回合会把好几个操作打包进几行 JavaScript 来控制 ego(lite)。叠加上 Snapshot 输入,同一个任务整体消耗的 token 要少得多。

Claude Code · ego(lite)
>/ego-browser Add the first product to the cart, then check checkout loads
●Bash(
ego-browser nodejs <<'EOF' await openOrReuseTab('localhost:3000') await click('.product-card') await click('.add-to-cart') await click('a[href="/checkout"]') cliLog('checkout loaded') EOF
)
⎿Output:
[t=4480ms] checkout loaded
Done. Both steps work.
─── 1 tool call · ↑ 1.1k tokens ───
Stagehand · env: "LOCAL"
>$ npx tsx run_task.ts const stagehand = new Stagehand({ env: "LOCAL" }) await stagehand.init()
await page.goto("http://localhost:3000")
// page = stagehand.context.pages()[0]
navigated: http://localhost:3000
↑ 1.6k tokens sent so far
await stagehand.act("click the first product card")
// LLM call #1 · model: gpt-5.6-sol
→ { success: true, message: "Action completed successfully",
actions: [{ selector: "/html/body/div[2]/main/div[1]/a",
method: "click", arguments: [] }] }
↑ 3.8k tokens sent so far
await stagehand.act("click add to cart")
// LLM call #2 · model: gpt-5.6-sol
→ { success: true, message: "Action completed successfully",
actions: [{ selector: "/html/body/div[2]/main/button[1]",
method: "click", arguments: [] }] }
↑ 5.9k tokens sent so far
await stagehand.observe("find the checkout link")
// LLM call #3 · model: gpt-5.6-sol
→ [{ selector: "/html/body/nav/a[href='/checkout']",
description: "Checkout link", method: "click", arguments: [] }]
↑ 8.0k tokens sent so far
await stagehand.act(action)
// no LLM: Action from observe()
→ { success: true, message: "Action completed successfully",
actions: [{ method: "click" }] }
navigated: /checkout
↑ 9.1k tokens sent so far
await stagehand.extract("is the payment form present?", z.object({ present: z.boolean() }))
// LLM call #4 · model: gpt-5.6-sol
→ { present: true }
↑ 11.4k tokens sent so far
await stagehand.extract("list the payment fields", z.object({ fields: z.array(z.string()) }))
// LLM call #5 · model: gpt-5.6-sol
→ { fields: ["card", "expiry", "cvc", "zip"] }
↑ 13.6k tokens sent so far
─── 7 model calls · ↑ 13.6k tokens ───

同样的任务,同样的模型。 左边:ego(lite) 里一次打包的 JavaScript 调用,总共 1.1k Token。 右边:Stagehand 脚本几乎每一步都要调模型,token 涨到 13.6k。

同一个 Chrome,为 Agent 而生

保持登录状态是本地跑 Stagehand 最麻烦的一环。Chrome 配置文件支持在 v3 里还有未修复的 bug,cookie 变通方案又常常漏掉关键的 HttpOnly 会话 cookie,browse CLI 也只有你自己用远程调试模式启动 Chrome 才能接上。基于 Chromium 打造,ego(lite) 一键就能导入你整套 Chrome 环境。AI Agent 运行 /ego-browser 时,控制的是已经登录好真实会话的 ego(lite),所以不会卡在你早就登录过的账号的 SSO、2FA 或验证码上。

让切换无缝衔接

已经在 CI 或定时任务里跑 Stagehand 脚本了?那些继续保留。把你希望 Agent 直接处理的浏览器工作迁过来,包括搜索、调研、数据提取、表单、测试和需要登录的工作流。

1

下载 ego(lite)

下载 ego(lite),一键导入你的 Chrome 浏览器配置文件,登录状态、Cookie 和扩展程序全部一起带过来。

2

用 /ego-browser 运行你的第一个任务

在 Claude Code、Codex 或 Cursor 里粘贴一句话,按下回车。不用 SDK,不用模型 API key,也不用 Zod schema。

粘贴到你的 Agent 里

/ego-browser 打开 ego.app 加入等候名单

3

看它开始工作

任务在自己的 Space 里运行,不会碰你原本打开的标签页。你可以随时旁观或接管,结果会直接回传到 Agent 的命令行里。

ego(lite) 的 Space 概览,四个浏览器任务并排运行:Claude Code 在 Yahoo Finance 上追踪苹果股价,Codex 在 cars.com 上按年份筛选车型,Hermes 在完成一项 SaaS 后台任务,一位用户在抓取 X 上的数据,还有一只手正在点击 + 打开另一个 Space

需要提交进仓库的自动化、类型化提取或确定性定位器时,继续用 Stagehand。

各工具的适用场景

以下情况选择 ego(lite)

  • 比起为浏览器工作维护一个 TypeScript 或 Python 项目,你更愿意直接把它描述给你的编程 Agent。
  • 任务在你自己的登录态背后,需要一开始就是已登录状态。
  • 想要能旁观的并行 Space,而不是在代码里手动管理浏览器实例。
  • AI Agent 本来就能做的事,你不想为它再加一个 SDK、模型 key 和项目。

何时选择 Stagehand

  • 自动化必须留在仓库里,能评审、能缓存,几个月后还能跑出一样的结果。
  • 需要一个确定性的退路:流程绝不能变时,用精确定位器兜底。
  • 需要用 Zod schema 把提取结果类型化进 TypeScript。
  • 任务必须在 CI 里跑,或是在 Browserbase 上跨大量云端浏览器运行。

将 ego(lite) 与其他浏览器自动化工具对比

与 Puppeteer、Playwright MCP、Claude Chrome extension、Browser Harness 以及另外 7 款工具的逐项对比。

常见问题

Stagehand 是什么?

Stagehand 是 Browserbase 出品、MIT 协议开源的 TypeScript/Python 浏览器自动化 SDK。它提供 act、extract、observe 和 agent 这些原语,也支持精确定位器,让你在需要时跳过模型调用。它可以单独在本地跑在 Chromium 上,也能配合 Browserbase 使用托管会话、缓存和回放功能。对于要提交进仓库、按计划运行的自动化任务,它依然是一个出色的选择。

ego(lite) 是不是一个好的 Stagehand 替代方案?

对于由 Agent 驱动的浏览器工作,是的:运行 /ego-browser,描述任务即可。对于要交付到 CI、带类型化提取和确定性定位器的已提交自动化,继续用 Stagehand。Stagehand 适合你要编码固化的工作流;ego(lite) 适合由你的 Agent 直接处理的工作流。

用 Stagehand 必须搭配 Browserbase 吗?

不需要。Stagehand 自己就能在本地跑在 Chromium 上。只有想用托管会话、服务端缓存和回放功能时,Browserbase 才是可选项。Browserbase 与 Stagehand 搭配使用,主要是为了云端集群,而不是你笔记本上的本地脚本。ego(lite) 没有托管路径:只跑本地,免费,无需账号。

Browserbase vs Stagehand:这两个都需要吗?

在生产环境里往往两个都需要,但原因不同。Stagehand 是你写 act、extract、observe 调用的 SDK。Browserbase 是这些脚本需要云端规模时运行的地方。如果只是在自己登录的站点上做点 Agent 杂活,你可能两个都不需要:运行 /ego-browser,让 Claude Code 或 Codex 直接驱动 ego(lite)。

Stagehand 相比 ego(lite) 要花多少钱?

Stagehand 是 MIT 协议,安装免费。每次未缓存的 act、extract 或 observe 调用都要付模型 token 的钱,托管到 Browserbase 上还要再加浏览器分钟数的费用。ego(lite) 免费,你只需要付 AI Agent 本来就在花的模型 token。

Stagehand 能用我现有的 Chrome 配置文件和登录状态吗?

目前在本地模式下并不靠得住。把 Stagehand 指向你的 Chrome 配置文件在 v3 里还有未修复的 bug,cookie 变通方案又常常漏掉关键的 HttpOnly 会话 cookie。ego(lite) 只需要导入一次 Chrome 配置文件,之后每个任务都从已登录状态开始。

Stagehand vs Browser Use:我该和哪一个比?

它们面向不同的开发者。Stagehand 以 TypeScript 为主,提供 act、extract、observe 这些原语,适合代码加 AI 混合的自动化。Browser Use 以 Python 为主,跑的是更自主的 Agent 循环。两者都是你要自己写、自己维护的框架。ego(lite) 则是 AI Agent 通过 /ego-browser 直接控制的 Chromium 浏览器。这方面可以看 ego(lite) vs Browser Use 这篇。

Stagehand vs agent-browser:有什么区别?

Stagehand 是一个 SDK:你在 TypeScript 或 Python 里写 act、extract、observe 调用。agent-browser 是一个 CLI,Agent 每次调用一条命令跟它交互。ego(lite) 两者都不是:运行 /ego-browser,AI Agent 就能用批量 JavaScript 控制 ego(lite)。详见 ego(lite) vs agent-browser。

Claude Code 能配合 Stagehand 使用吗?

不能作为原生 Skill 使用。Claude Code 只能去运行你自己写的 Stagehand 脚本,还得维护模型 API key 和项目。ego(lite) 是更短的路径:在 Claude Code、Codex 或 Cursor 里运行 /ego-browser,直接描述任务。不用装 SDK,不用写 schema,也不用单独一套模型计费。

为什么我的 Stagehand 脚本每次运行表现不同?

当一个动作没被缓存时,模型每次都要重新挑选目标,页面一旦变化,结果就可能不一样。缓存在 DOM 变化后也可能失效。流程绝不能变时,用 Stagehand 的精确定位器。ego(lite) 则是为跨越不断变化的页面和工作流、由 Agent 驱动的浏览器工作而打造的。

ego(lite) 需要 SDK 或 MCP 服务器吗?

都不需要。在 Claude Code、Codex、Cursor、Gemini CLI 或 OpenCode 里运行 /ego-browser 就行。macOS 和 Windows 均可免费使用,无需账号。

Stagehand 能自动下载报告并上传到 Google Drive 吗?

可以,前提是账号、报告和目标位置都已获授权,且工作流定义明确。用 Stagehand 的浏览器操作完成下载,核对文件名和内容,再上传到经审核批准的 Drive 文件夹;在运行日志里记下文件路径和来源 URL。分享、覆盖或发布报告之前要求人工批准,遇到 MFA 或其他访问控制提示时停下来。

在复杂流程上,怎样让 Stagehand UI 测试不再时好时坏?

为每个 worker 分配独立的测试数据,等待有意义的 UI 状态,对不能有偏差的断言使用稳定的 role、label 或 test-id 定位器。Stagehand 的自然语言 act 适合探索,但发布关卡应当使用确定性定位器、明确的 fixture、失败时的 trace,以及有上限的重试策略。ego(lite) 是一条可见的排查路径,而不是已提交 CI 套件的替代品。

从 Stagehand 迁移到 ego(lite),有什么切实可行的路径?

已经在 CI 或定时任务里运行的 Stagehand 脚本继续保留。迁移浏览器工作流的方法是:安装 ego(lite),导入一个已授权的 Chrome 上下文,然后让你的编程 Agent 在一个 Space 里运行任务。保留原有的断言和预期输出,对比一次运行结果;如果任务需要确定性回放、类型化提取或云端规模,就把它迁回 Stagehand。

对于 Python SDK 工作流,ego(lite) 能作为可用于生产的本地模式吗?

ego(lite) 是一款用于有人监督的 Agent 工作的本地浏览器,不是 Python SDK 运行时,也不是无人值守的生产服务。它可以在调研、测试和工作流开发中与本地的 Stagehand 或 Browser Use 项目互补,而生产任务仍然需要进程监管、密钥管理、重试、可观测性和确定性的测试边界。

LLM 爬虫能像 Stagehand 那样缓存并复用选择器吗?

当页面约定和定位器依然有效时,复用选择器可以减少重复的模型工作,但缓存必须做版本管理,并在标记、路由、语言区域或账号状态变化时失效。保存选择器时,要一并记录它的来源 URL、匹配到的 role 或 label,以及最近一次验证;在信任它之前,重新运行原来的断言。绝不要让过期的缓存悄悄指向另一个控件。

怎样让 Stagehand Python SDK 在本地配合 Patchright 使用?

把 Patchright 当作一项浏览器运行时集成来对待,它必须与该 SDK 支持的 Playwright 和 Chromium 版本相匹配;先在一个用完即弃的本地配置文件里验证文档中的启动或 CDP 连接路径。不要用 stealth 补丁去绕过网站的管控。如果集成很脆弱,已提交的测试就继续用官方支持的 Stagehand 运行时,再用 ego(lite) 做可观察、有人监督的本地检查。

Stagehand vs Playwright:做自然语言健全性检查哪个更好?

Stagehand 增加了由模型驱动的 act、observe 和 extract 调用,适合用自然语言快速检查;Playwright 提供确定性的代码、fixture、trace 和跨浏览器 CI。探索性的健全性检查可以用 Stagehand 或 ego(lite),等预期行为明确后,再把高价值的工作流用 Playwright 固化下来。这样的分工能防止自然语言的灵活性变成不稳定的发布关卡。

为你的 Agent 配备真实浏览器

免费使用,运行在你的电脑上,一键导入 Chrome 浏览器配置文件。支持 Claude Code、Codex、Cursor,以及任何能写代码的 CLI Agent。