如何为ego-lite编写自己的Learnings:以google和x-com为例的完整指南
【免费下载链接】ego-liteThe fastest browser for AI agents to run browser automation, built for sharing your logged-in browser state with your AI agents, like Codex or Claude Code, without disturbing you. Zero cost, zero config.项目地址: https://gitcode.com/GitHub_Trending/eg/ego-lite
ego-lite 是一款专为 AI Agent 设计的浏览器自动化工具,能让 Codex、Claude Code 等 AI 助手在你登录的浏览器环境中并行运行任务,零成本、零配置。本文将以仓库内置的 google 和 x-com 两个 Learnings 为例,手把手教你如何为自己的常用网站编写 Learnings(站点技能),让 AI Agent 越用越快、省 token。
什么是 Learnings?为什么值得写一个
AI Agent 执行浏览器任务时,大部分时间都花在"试错"上:猜选择器、找按钮、反复观察页面。ego-lite 的官方思路是把每一次成功的操作沉淀为可复用的Learnings(站点技能)——包含页面结构笔记和可调用工具,之后同类任务最多可提速 5 倍。
你可以把 Learning 理解成一份"网站说明书 + 工具包",Agent 打开对应域名时会自动加载它。
ego-lite 在四项复杂浏览器自动化任务上比同类工具快最多 2.5 倍,而 Learnings 机制会在这个基础上再叠加一份"经验红利":
Learnings 的目录结构:一个 Learning 长什么样
所有 Learnings 都放在统一目录下,每个网站一个子目录:
- 根目录:skills/ego-browser/learnings/
- 加载与匹配逻辑:package/ego-browser/src/learning/
每个站点目录固定包含 4 部分:
| 文件/目录 | 作用 |
|---|---|
manifest.json | 声明清单:站点 id、名称、匹配域名、工具注册表 |
notes/ | 页面结构笔记(Markdown),告诉 Agent "页面长什么样" |
tools/ | Node 端工具:可操作浏览器的异步函数 |
browser-tools/ | 浏览器端工具:在页面上下文里直接执行的函数 |
加载时,ego-lite 会根据当前 URL 的域名匹配manifest.json中的domains列表,把 notes 内容和工具签名注入 Agent 上下文(实现见 index.ts 中的loadLearnedContext)。
示例一:google 的 Learning——"搜索并提取结果"
1️⃣ 声明清单 manifest.json
google 站点的清单只注册了 2 个工具,但字段信息完整:
- 站点定义:manifest.json
domains覆盖google.com、*.google.com等,保证任何子域名的搜索页都能命中nodeTools.search_and_extract指向tools/search-extract.js,暴露参数query(必填)和maxResults(选填),返回值是{title, url, snippet}数组
关键点:每个工具都要写清 description、参数类型和返回值,Agent 是靠这些签名来"看懂"工具用法的,写得越具体,调用成功率越高。
2️⃣ 写页面笔记 notes/overview.md
google 的 overview.md 是极简的"选择器速查表",只记三件事:
- 页面结构:搜索框是
textarea[name="q"],结果容器是div#search,每条结果在div.g里 - 导航方式:直接用
https://www.google.com/search?q=...打开,首屏即加载完成,无需滚动 - 常见选择器:自动补全下拉是
div[role="listbox"]
3️⃣ 实现工具:一次完成多步操作
两个工具文件展示了两种典型的工具形态:
- Node 端工具search-extract.js:先打开搜索 URL,再一次性批量提取前 N 条结果的标题、链接和摘要——把"打开页面 + 逐个读结果"压缩成一次调用
- 浏览器端工具autocomplete.js:直接运行在搜索框所在页面的上下文里,读取当前输入联想出的候选词
两者对比能帮你判断该写哪种:需要切换页面、控制浏览器流程的写 Node 端;只读当前 DOM、操作已聚焦元素的写浏览器端。
示例二:x-com 的 Learning——应对"反点击包裹"和虚拟列表
x.com 的 Learning 比 google 复杂一些,它演示了如何把"踩过的坑"写进笔记。
1️⃣ 清单里多了一个 notes 文件
x-com 的 manifest.json 注册了 2 份笔记和 3 个工具:
get_timeline_posts(timeline.js):批量提取当前时间线帖子search_users(search-users.js):按关键词搜索用户post_from_active_element(extract-post.js):从当前聚焦元素提取单条推文
domains同时覆盖x.com和twitter.com两个域名,新旧域名都命中。
2️⃣ 笔记的价值:把坑写下来
notes/overview.md 专门标注了一个叫Anti-click-wrap的现象:推文文本在[data-testid="tweetText"]里,但可点击区域是外层的[data-testid="tweet"]——如果只告诉 Agent "点文本",它就会被外层包裹结构误导。
notes/timeline.md 则补充了时间线的两条实操知识:
- 帖子随滚动懒加载,且虚拟列表只渲染可见区域 + 缓冲区
- 置顶帖永远是时间线第一个
[data-testid="tweet"],过滤时要小心跳过
这类"只有一步之差"的细节,正是 Learnings 相对通用浏览器的核心优势:经验可以被积累和传承。
动手写你的第一个 Learning:三步流程
以你常用的任意网站为例,照下面三步做即可:
第 1 步:建目录——在 skills/ego-browser/learnings/ 下新建your-site/,创建notes/、tools/、browser-tools/三个子目录。
第 2 步:写笔记——打开目标网站,用浏览器开发者工具找出核心元素的选择器,仿照 google 的 overview.md 记录:入口选择器、内容容器、常见交互区域。格式没有硬性限制,写清楚即可。
第 3 步:注册工具——创建manifest.json,仿照 x-com 的清单 填写id、name、domains、notes,然后为每个工具文件写好description、args(含type/required/description)和returns。
编写工具的两条黄金法则
- 一次通过(one pass):把多步操作合并进单个工具,让 Agent 写一段代码就完成整个子任务,而不是"调一次命令→看结果→再调一次"
- 参数要有兜底:参考 search-extract.js 里的
boundedInteger写法,对数值参数做范围约束(如 1~100),防止 Agent 传入离谱值导致任务失败
校验你的 Learning 是否合法
写完后不要直接让 Agent 跑,先做格式校验:
- 校验规则实现:validate-learning-format.ts,提供
validateLearning(校验单个站点)和validateLearnings(遍历校验整个 learnings 目录) - 域名学习检测:check-domain-learning.ts
校验通过后,下次 Agent 访问匹配域名的页面时,你的笔记和工具签名就会自动注入它的上下文中——Agent 无需再摸索,直接调用你沉淀好的经验。
总结
| 步骤 | 要点 |
|---|---|
| 建目录 | 放在 skills/ego-browser/learnings/ 下,一网站一目录 |
| 写笔记 | 仿照 google/notes/overview.md,记录选择器与导航方式 |
| 写工具 | Node 端管流程,浏览器端读 DOM;参数做好兜底 |
| 注册清单 | 仿照 x-com/manifest.json,字段写全 |
| 跑校验 | 用 validate-learning-format.ts 检查格式 |
Learnings 的规范细节还可以参考 spec/agent-skills-spec.md。从你最常用、结构最稳定的网站开始,哪怕只写一份 google 那样简单的搜索提取,Agent 的效率和 token 消耗都会有立竿见影的改善 🚀
【免费下载链接】ego-liteThe fastest browser for AI agents to run browser automation, built for sharing your logged-in browser state with your AI agents, like Codex or Claude Code, without disturbing you. Zero cost, zero config.项目地址: https://gitcode.com/GitHub_Trending/eg/ego-lite
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考