ego lite 新手教程

ego lite 新手教程

你和 AI Agent 在同一个浏览器里并行干活:Agent 在自己的隔离 Space 里跑浏览器任务,你的标签页始终是你的,还白捡它登录态——零配置、零成本。

macOS 专属 仓库 MIT 浏览器免费 代码式操作 去安装 GitHub 仓库
同一浏览器
人和 Agent 共用
隔离 Space
每个 Agent 一个
2.5×
复杂任务比 agent-browser 快(官方基准)
0 配置
继承 Chrome 登录态
macOS
目前仅支持(其他平台路线图)

1 这是什么

ego lite(ego lite) 是 citrolabs/ego-lite 开源项目背后的一套「人和 AI Agent 共用的浏览器」方案。官方一句话定义:"The fastest browser for AI agents to run browser automation"——但不是又一个自动化框架,而是一个从设计之初就让你和 Agent 一起用的真实浏览器。

一句话分清三个容易混淆的名字,这决定你理解整个项目:

名字是什么开源吗
ego lite(浏览器 App)真正跑起来的 Chromium 浏览器,你日常也用,Agent 在里面开独立 Space❌ 闭源,但免费下载(macOS .dmg)
ego-browser(技能 + 运行时)Agent 和 ego lite 之间的连接层:把浏览器暴露成一组 JS 工具(snapshot / fill / click / wait / navigate / capture)✅ 开源,本仓库主体
ego(运行时绑定)ego lite App 里内置的 globalThis.ego,ego-browser 通过它驱动浏览器— 内嵌在 App 里
先别搞混

这个 GitHub 仓库只含开源的外围——ego-browser 技能、Node 运行时、文档与基准,不含浏览器本体。浏览器本体是闭源 App。所以你想「从仓库跑起来看到浏览器」是理解错了:仓库是让 ego-browser 命令在你机器上能驱动 ego lite App 的那一层。

它不做什么
  • 不是自动化框架库——browser-use、Vercel agent-browser 是「库」,需要另配一个浏览器去驱动,登录态还常带不过去;ego lite 自己就是浏览器。
  • 不自带内置 Agent——ChatGPT Atlas、Perplexity Comet 那种「AI 浏览器」内置了专属 Agent、只许它开浏览器;ego lite 相反,任何外置 Agent CLI(Codex、Claude Code、Cursor…)都能通过 ego-browser 来接。
  • 不会抢你的标签页——Agent 只在它自己的 Space 里干活,你的前台标签页、鼠标位置都不被动。

2 为什么需要它

在它之前,"让 Agent 帮我开网页操作"基本靠三类凑合办法,每类都卡在一个痛点:

老办法能走到哪一步卡在哪
自动化框架(browser-use / agent-browser)在无头/独立浏览器里跑脚本它没有自己的浏览器,要另开一个驱动;你已登录的站点它登录态带不过去,常要重登/验证码
AI 浏览器(Atlas / Comet)云端或独立 App 里用内置 Agent 上网只认它内置的那个 Agent;你的真实登录态、扩展、书签进不去,人也没法在同一处接着操作
让 Agent 直接用你的日常浏览器能碰到已登录页面人和 Agent 抢同一批标签页:它一开新页、一动鼠标,你这边就乱套,你还不敢让它乱点
ego lite 的核心洞察是:问题不是"谁来驱动浏览器",而是"人和 Agent 怎么安全地共享同一个浏览器"。解法是把浏览器当成一个容器——你在前台用你的标签页,Agent 开它自己的隔离 Space(隔离浏览上下文),而 Space 默认继承你当前的真实登录态。所以它既解决了登录态带不过去(框架痛点),又解决了抢标签页(人机共用痛点),还把"任何 Agent 都能接"留给了 ego-browser 这一开源层。

第二个关键设计是代码式(code-base)而非 CLI 式(command-base):ego-browser 暴露给 Agent 的是可直接调用的 JS 函数。Agent 把多步任务写成一段脚本一次执行,而不是陷入「调两条命令 → 看结果 → 再调两条命令」的往返循环——这正是它声称比传统 CLI 自动化更快、token 更省的根因(见第 11 节基准)。

3 核心流程

一次典型的 ego lite 浏览器任务是这样的——你完全不碰浏览器,Agent 在自己的 Space 里走完:

1 Agent 建 Space→ 2 开页 + 读 Snapshot→ 3 写 JS 脚本操作→ 4 cliLog 回报结果
建 Space 隔离上下文 开页 + Snapshot 继承真实登录态 JS 脚本操作 点击/填表/抓取 回报 cliLog 收尾 整个流程在你的浏览器前台之外完成,标签页、鼠标都不受影响 建 Space 隔离上下文 开页 + Snapshot 继承登录态 JS 脚本操作 点击/填表/抓取 回报 cliLog 收尾 你的标签页和 鼠标都不受影响

4 安装

ego lite 目前只在 macOS 上运行(Windows / Linux 在路线图)。挑你顺手的路径装,每一条都会把 ego-browser 技能装进你机器上各个 Agent 的技能目录。

方式怎么做适合
下载 macOS App下载 .dmg(Apple Silicon / Intel 各一版)打开安装想直接开始;装完就带 skill
npx 装 skillnpx skills add citrolabs/ego-lite只想要 ego-browser 技能;首次跑浏览器任务时它会引导你装 App
让 Agent 帮你装把第 6 节那段话粘给 Agent最省心:Agent 读 install.md 自装
最容易踩的两个坑:
  • ego lite App 和 ego-browser 技能是两码事,都要装。技能只是连接层,真正跑浏览器的命令 ego-browser 由 App 提供——没装 App,技能是空壳。
  • 首次启动会问你「要不要迁移 Chrome 数据」。选「是」,你的登录态、Cookie、扩展、书签就进了 ego lite,Agent 才能在没有登录摩擦的情况下操作你已登录的站点。首次引导会顺便把 ego-browser 注册进 PATH(通常在 ~/.local/bin)。

三种路径对应的做法,细节如下。App 直装:

# Apple Silicon / Intel 任选其一,点击下载后打开即装
open https://cdn.ego.app/setup/macos/arm64/egolite-Y7MbxKIuhzFB.dmg   # 或 x64 版

只装 skill(App 首跑任务时会提示你装):

npx skills add citrolabs/ego-lite

第一次跑浏览器任务前,确认 ego-browser 命令存在(找不到多半是 ~/.local/bin 不在 PATH):

command -v ego-browser
# 若找不到,临时补进 PATH 再试
export PATH="$HOME/.local/bin:$PATH"
command -v ego-browser

5 环境自检

装完 ego lite 且完成一次首次引导后,跑一个最小的 heredoc 验证运行时就绪:

ego-browser nodejs <<'EOF'
console.log('ego-browser ready')
EOF
# 打印出 ego-browser ready 即说明环境 OK
依赖要求说明
操作系统macOS(arm64 / x64)ego lite 仅支持 macOS;其他平台走 lite.ego.app 手动装
ego lite App已安装并完成首次引导ego-browser 命令由它提供;引导会把命令注册进 PATH
ego-browser 命令command -v ego-browser 能命中找不到先补 ~/.local/bin 到 PATH
Chrome 数据迁移首次引导时选是/否选「是」则 Agent 继承你真实登录态;ego lite 只记录这个选项,不采集数据
关键二选一

要不要迁移 Chrome 数据?这是首次引导唯一的问题。要 Agent 操作你已登录的站点(刷后台、查账号、在你登录的页面里干活)→ 选「是」;只要它抓公开页面、你也不想把登录态共享给它 → 选「否」。之后随时可以在 ego lite 里改。

6 第一次实战

最简单的方式:把下面这句话粘给任何 Agent CLI(Codex / Claude Code / Cursor…),让它自己装并跑通:

Set up ego lite for me: https://github.com/citrolabs/ego-lite

Read `skills/ego-browser/references/install.md` and follow the steps to install ego lite.

或者你已经装好,自己在终端里用 ego-browser nodejs 的 heredoc 手动跑第一个任务。注意不要把脚本先写进 .js 文件再执行,直接喂给 heredoc:

ego-browser nodejs <<'EOF'
// 给整段任务命名一个 Space,后续轮次复用它
const task = await useOrCreateTaskSpace('inspect example page')
cliLog('task space id: ' + task.id)

await openOrReuseTab('https://example.com', { wait: true, timeout: 20 })
cliLog(await snapshotText())
EOF

第 6 节演示会告诉你发生了什么:

1 useOrCreateTaskSpace 建 Space→ 2 openOrReuseTab 开页→ 3 snapshotText 读语义树→ 4 cliLog 输出
如果第一次跑报 command not found,先读 skills/ego-browser/references/install.md 按流程装,不要反复重试同一个 heredoc。一旦确认用户装好(Agent 场景要让用户口头确认完成了首次引导),再回到原任务。

一段真实点儿的操作,用 @N ref 点击 + 填表 + 截图验证:

ego-browser nodejs <<'EOF'
const task = await useOrCreateTaskSpace('login check')
await openOrReuseTab('https://github.com', { wait: true })

// snapshotText 会给每个元素标 [ref=N, loc=...],@N 只在最近一次快照内有效
const snap = await snapshotText()
cliLog(snap)

// 用快照里的 ref 点击、填表
await click('@21', { label: 'check login status' })
await fillInput('input[name="q"]', 'ego lite')
await pressKey('Enter')

// 语义工作流怀疑不准时,用截图核对
await captureScreenshot('/tmp/search-result.png')
cliLog('done')
EOF

7 产物结构

仓库里值得认识的目录与文件(理解了它,才知道「开源的到底哪几层」):

路径用途
skills/ego-browser/SKILL.mdAgent 面向契约:ego-browser 技能的使用指南,含全部 helper、三种工作流、控制权交接规则
skills/ego-browser/references/install.md安装参考(装不上 / 用户要求装时才读)
skills/ego-browser/references/video.md视频录制相关参考
skills/ego-browser/learnings/<site>/站点经验包(manifest + notes + tools):把对某网站的成功操作沉淀成可复用技能,越用越快
package/ego-browser/Node helper 运行时源码:浏览器把 heredoc 派发给它执行;Playwright 风格 facade 在此定义
AGENTS.md仓库开发者的约定(不是本教程读者要读的)
install.md根目录入口,指向 skill 的 install 参考
数据流一句话:stdin 的 JS → ego-browser nodejs(运行时注入 helpers)→ 浏览器 runtime / CDP → snapshot 或 DOM/AX 解析 → console.log 返回。Agent 脚本是「写在 heredoc 里的代码」,运行在 Node;真正碰 document / window 的代码要包进 js(...) 里,运行在浏览器页面。

8 日常怎么用

ego-browser 通过 ego-browser nodejs <<'EOF' 喂 Node 脚本,helper 全部预加载进脚本作用域。常用 helper 按用途分组:

分组helper(节选)
SpacelistTaskSpaces · useOrCreateTaskSpace · claimTaskSpace · handOffTaskSpace · takeOverTaskSpace · waitForAgentControl · completeTaskSpace
导航openOrReuseTab · gotoAndWait · listTabs · switchTab · closeTab · pageInfo · ensureRealTab
观测snapshotText · captureScreenshot · drainEvents
鼠标 / 滚动scrollBy · scrollToBottomUntil · scroll · click · doubleClick · hover · dragMouse
键盘 / 输入typeText · fillInput · pressKey · dispatchKey · uploadFile
等待wait · waitForLoad · waitForElement · waitForNetworkIdle
抓取 / 求值serverFetch · browserFetch · js · cdp
输出cliLog(唯一终端输出口,结果必须经它)· help

三种工作流,先选再动手

工作流怎么用适用
语义:snapshotText() + refs / locators读整页语义树(带 [ref=N, loc=...]),用 click('@N') / fillInput('@N', ...) 操作普通网页(有 DOM 控件、语义结构完整的站点)——默认首选
视觉:captureScreenshot() + 坐标 / 键盘看截图,用 click([x,y])、pressKey、typeText 按视觉操作画布类、重度虚拟化的 App:Google Docs / Sheets、飞书、Notion、Figma、白板、地图
直连 DOM / CDP:js(...) / cdp(...)浏览器侧逻辑放一个 IIFE 里跑一次,或调 CDP 做 helper 没覆盖的原生操作要浏览器状态、紧凑抽数、自定义遍历、原始 CDP 能力
会发生 vs 不会发生
  • ✅ click / fillInput / hover 等元素级 helper 接受统一选择面:原始 CSS、xpath=...、快照里的 @N / ref=N、稳定 loc=...,以及 [x,y] 视口坐标。
  • ✅ js() 返回求值结果本身,不是 JSON 字符串——别再用 JSON.parse 包它。
  • ✅ 富编辑器(Docs/Sheets/Figma…)先做小写入探针再截图核对,别盲信 DOM 填表——很多虚拟化 App 的工具栏/隐藏 textarea 并不代表真正的文档内容。
  • ❌ 任务结束必须 completeTaskSpace(name, { keep }),别把 Space 挂着。默认 { keep: false };只有用户明确要保留页面、需要人工在页面上操作、或结果没法用 URL/文件交付时才 { keep: true }。
  • ❌ @N ref 只在最近一次 snapshotText() 内有效——每次快照都会重建 refMap。要长期引用用 loc=... 或直接写 CSS。

9 进阶玩法

9.1 Space 是多任务并行的工作区

每个 Space 是一个隔离浏览上下文,默认继承你的登录态。你可以同时开多个:Claude Code 在 10 个 Space 里并行补 10 条线索、Codex 在另外 5 个 Space 里并行抓 5 个竞品站——它们互不干扰、也偷不走你的前台标签页,鼠标停在原地。

Node 运行时每次 heredoc 结束就退出、不留状态,所以多轮任务每轮开头都用 useOrCreateTaskSpace(nameOrId) 复用同一个 Space;优先用返回的 task.id(数字)跨轮次续接,避免名字撞车。

9.2 控制权交接:人和 Agent 随时切换

Space 有归属模型(agent / agentDelegatedToUser / user),任意时刻只有一方握着控制权。任务需要你介入(登录、验证码、手动确认)时,Agent 调 handOffTaskSpace() 把控制权交给你并告诉你该做什么;你确认「继续」后它才用 takeOverTaskSpace() 拿回。你在浏览器 GUI 里也能随时接管——等于手动触发一次 handoff。

一条硬规矩:收到 "user is controlling" 错误是整个任务的硬停,不是绕过去的小障碍——说明用户故意把浏览器拿回去了,多半是当前思路跑偏。正确做法是停下问用户并等待,绝不自动抢回控制权、不重试失败操作。

9.3 站点经验包(Learnings)让 Agent 越用越快

skills/ego-browser/learnings/<site>/ 把对某网站的成功操作沉淀成「站点技能」——它负责记住"这个站怎么登录、哪个选择器稳定、抓这个数据该走哪条路",避免每轮都从头试错。官方路线图把它扩展成通用的「经验积累」:把每次成功动作提炼成可复用工具/工作流,同类任务声称最高快 5×。

9.4 本地模式无 GUI 也能验证 helper

# 直接在本机跑 helper bundle(不需要真实浏览器,调试 helper 本身用)
node dist/out/index.js <<'JS'
console.log(await page.info())
JS

# 覆盖加载的 skill 工作区(站点学习默认来自相邻的 skills/ego-browser)
EGO_BROWSER_AGENT_WORKSPACE=/path/to/skill ego-browser nodejs <<'EOF'
console.log(await site.skills())
EOF

10 不止于此

名字叫"ego lite 浏览器",但它能待的场景不止"自己开个页面让 Agent 点一点":

并行养号 / 竞品监控

多个 Agent 各占一个 Space,同时在不同站/不同账号下干活,互不串号、不抢标签页。

登录态白捡的日常操作

让 Agent 在你已登录的页面里查数据、填表、下单前核对——没有验证码重登摩擦。

抓取藏在 iframe 里的内容

官方称其 Snapshot 靠内核级定制,能稳处理嵌套 iframe——别的方案常在这类页面上崩。

让任何 Agent 都能上网

ego-browser 是连接层:Codex、Claude Code、Cursor 乃至自研 Agent,都能用同一套 JS 工具驱动它。

重活交给背景,人继续前台

你一边写代码,Agent 一边在背景 Space 里帮你跑完一个跨 10 页的调研流程,完成后把结论 cliLog 回来。

沉淀成你自己的站点技能

把对某个站的固定操作流程固化到 learnings,下次同类任务开场即用、不用重新试。

11 性能与成本

官方基准拿 ego lite 对 Vercel 的 agent-browser,在四个复杂浏览器自动化任务上对比。核心结论(数据出自项目 README,条件:四个复杂任务、同为 agent 驱动的浏览器自动化):

指标ego lite说明
完成速度每个任务比 agent-browser 最高快 2.5×任务越难,差距越大
Token 消耗大幅更少压缩语义输入 + 一次成段脚本,减少"命令往返"的上下文开销
调用次数 / 任务少得多代码式把多步合成一次输出,而非"调命令看结果再调命令"
一句话结论:ego lite 卖的不是"能自动化浏览器"(大家都会),而是"以更少 token 更快跑完复杂任务 + 人和 Agent 能同处一个真实浏览器不打架"。它的 2.5× 提速主要来自代码式而非 CLI 式的架构,不是更快的浏览器内核。
这是官方自报的基准,针对的是它和 agent-browser 的对比场景。要不要信、是否适合你的负载,最好在你自己真实的任务上量一遍——尤其是那些"语义 vs 视觉工作流"边界模糊的富应用页面。

12 FAQ / 踩坑

跑 heredoc 报 command not found: ego-browser
ego lite App 没装好,或装好但 ego-browser 没进 PATH。先 command -v ego-browser;找不到多半是 ~/.local/bin 不在 PATH,临时 export PATH="$HOME/.local/bin:$PATH" 再试。仍不行就重开 ego lite、走完首次引导,它会注册命令。
Agent 说页面登录态没带过去,要重登
首次引导时没选「迁移 Chrome 数据」,或选的是否。Space 默认继承 ego lite 自己的登录态;没迁移 Chrome,ego lite 里自然没有你的登录。在 ego lite 里手动登录一次目标站(或用引导迁移 Chrome),之后 Space 就会继承。
报了 "user is controlling",任务推不动
这是硬停,不是能绕的障碍:用户把浏览器拿回去了。停下问用户并等待;用户确认「继续」后,下一轮 heredoc 用 takeOverTaskSpace() 拿回。不要自动抢、不要重试失败操作、不要 takeOverTaskSpace 自己偷抓——它没有归属检查,会硬生生从用户手里把浏览器夺走。
在 Google Docs / Figma 这类里填字进错地方
富编辑器常把工具栏、标题输入框、隐藏 textarea、离屏 iframe 暴露在 DOM 里,不代表真正的文档。别盲目用 fillInput 或 DOM 选择器去填主编辑区。正确姿势:先做一次小写入探针,再用 captureScreenshot() 或导出/读回路径核对;字进错位置就切到「视觉工作流」——截图引导鼠标 + 真实键盘操作。
@21 之类的 ref 报 Unknown ref
@N 只在最近一次 snapshotText() 内有效,每次快照都重建 refMap。元素滚出视口、DOM 重渲染、或上次用了 scope:'only_within_viewport' 没盖到它,都会导致 Unknown ref。需要长期引用的元素用快照里的 loc=... 稳定值,或直接写 CSS 选择器。
页面像是没加载完 / 坐标操作错位
先看 pageInfo()——如果 w: 0 或 h: 0,别继续坐标操作和截图,先切到真实标签页、刷新或用 CDP viewport 修正,再用 pageInfo() + captureScreenshot() 验证。等待类的 wait(...) / timeout 单位是秒,只有参数名以 Ms 结尾的才是毫秒,别填反。
在 js(...) 里写正则 / 用了顶层 return
正则里的反斜杠在模板字符串里要翻倍(\\d)或用 String.raw;js() 不接收函数参数、没有参数通道(别像 Puppeteer 的 page.evaluate(fn, ...args) 那样用)。浏览器侧要跑多步逻辑就包进一个自执行 IIFE 跑一次再返回,别拆成多次 js()。顶层 return 会被自动包 IIFE,嵌套回调里的 return 也可能误触发——复杂表达式干脆显式写 (() => { ... })()。
我想知道 Agent 到底执行了什么、在哪查日志
heredoc 里所有结果经 cliLog() 打到你终端。想在浏览器里跑代码留痕,用 js()/cdp()。本地调试 helper bundle 本身:node dist/out/index.js <<'JS' 直接读 stdin。带 --doctor 可诊断运行时。
我的平台不是 macOS,能用吗
目前不行——ego lite 只在 macOS 跑,Windows / Linux 在官方路线图。非 macOS 想体验浏览器自动化,可以看本仓库那套「代码式 + Snapshot」思路被谁借鉴,或等跨平台版。

13 合规与版权

开源边界先说清:仓库内容按 MIT 许可发布(含 ego-browser 技能、Node helper 运行时、文档与基准);ego lite 浏览器本体是闭源、但免费下载的独立产物。

隐私一句话:你的浏览数据留在本机。ego lite 只记录你是否选择了 Chrome 迁移这一项;不含采集上报。要它操作已登录站点前,想清楚你把"哪些登录态"共享给了 Agent——Space 默认继承你的真实登录,等于把对应账号的操作权交给了那个 Agent。

仓库开发层面的规矩(对贡献者):main 分支只接受走 review 的 PR(连机器人定时推送都被规则集拒了,star 图因此挪到了独立分支)。想改代码自己用,从 package/ego-browser 走常规 Node 开发流(npm ci → npm run build → npm test)。

14 参考链接

资源地址
GitHub 仓库github.com/citrolabs/ego-lite
官方文档 / 教程 / 工具参考lite.ego.app/document/
路线图(Windows / Linux)lite.ego.app/roadmap
下载(Apple Silicon / Intel)README 顶部的 cdn.ego.app/setup/macos/... .dmg 链接
社区Discord · GitHub Discussions · X / Twitter
ego-browser 安装参考skills/ego-browser/references/install.md(仓库内)
本教程基于仓库 README、skills/ego-browser/SKILL.md、skills/ego-browser/references/install.md、AGENTS.md、package/ego-browser/README.md 与官方文档整理(2026-09-04)。ego lite 迭代很快,helper 清单、命令、基准请以 ego-browser 内 help() 和官方文档为准。
ego lite 新手教程 · 人和 AI Agent 共享的浏览器,从安装到并行 Space
GitHub 仓库 · 官方文档 · 仓库 MIT,浏览器本体免费