ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

@N引用自动重新快照原理:ego-lite如何让AI Agent的元素引用跨轮次可用

@N引用自动重新快照原理:ego-lite如何让AI Agent的元素引用跨轮次可用 N引用自动重新快照原理ego-lite如何让AI Agent的元素引用跨轮次可用【免费下载链接】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-liteego-lite 是专为 AI Agent 打造的浏览器自动化工具它独创的N元素引用机制自带自动重新快照能力同一个引用编号在 Agent 的多轮对话中持续有效无需每轮都重新扫描页面定位按钮。这篇文章用大白话拆解这套机制的三层原理帮新手彻底搞懂 AI Agent 如何记住页面上的每个元素。 痛点AI Agent 操作浏览器为什么总失忆想象 Agent 帮你订机票第 1 轮它扫描页面发现搜索按钮的编号是42第 2 轮你说把日期改成下周它执行click(42)。如果页面此刻发生了刷新、滚动或重新渲染42指向的旧节点可能已经不存在了——传统方案此时只能报错让 Agent 再拍一次快照、重新数一遍编号多花一轮时间和 Token。ego-lite 的做法是引用失效前自动补一次快照节点失效后自动换一种方式重新找到它。这就是自动重新快照的全部含义。 原理第一步N 编号 元素在浏览器内部的身份证每次 Agent 调用snapshotText()ego-lite 会对页面做一次语义快照返回两部分可读文本带[refN, loc...]标注的页面结构树引用表 refs每个可交互元素的backendNodeId、角色role、名称name关键设计在于编号 N 直接取自 CDP 的backendNodeId——这是浏览器给每个 DOM 节点分配的内部 ID。只要节点没被销毁同一个元素的编号在不同快照之间永远不变。引用表写入的逻辑在 browser-runtime.ts每收到一次新的快照结果先把旧表清空再把新表整体写入。这意味着N只承诺最近一次快照里出现过的编号有效。 原理第二步执行 N 时发现引用表是空的就自动重拍快照跨轮次可用的核心开关在 ref-state.ts 的ensureRefMapForRef函数里它做了 5 个判断全部满足才触发自动快照输入确实是N或refN格式解析规则见 ref-map.ts当前引用表为空说明本轮还没拍过快照已注册了快照函数而快照函数的注册发生在 observe.ts——拍快照和写引用表是同一个动作的两面。于是 Agent 调用click(42)时入口 element-ops.ts 的resolveHandle会先过一遍ensureRefMapForRef引用表空了那就顺手重拍一次快照把最新编号填回去继续执行。一句话总结执行动作前的引用表体检就是自动重新快照。Agent 完全无感它只管用编号ego-lite 负责保证编号有东西可指。️ 原理第三步节点真的失效了还有 role/name 双重兜底自动重拍快照只解决了引用表为空的情况。如果编号存在、但 DOM 更新导致旧节点失效呢element-resolver.ts 实现了两层兜底层级策略说明第一层用backendNodeId直接定位最快路径节点健在时一步到位第二层按role name重查无障碍树节点失效时用元素的角色名称在最新页面上重新找到同类节点例如42记录的是名为搜索的 button。页面重渲染后旧节点 ID 作废ego-lite 就去最新的无障碍树里找叫搜索的 button——通常就是你想要的那个按钮点击照常成功。只有两层都找不到才会抛出Unknown ref错误。 跨轮次引用的性能收益更快更省钱这套机制不是炫技它直接体现在基准测试里同一模型执行 4 个真实任务抓取 OpenAI 热帖、LinkedIn 求职、房贷估算、Expedia 订机票ego-lite 全部快于 agent-browser1.4x~2.6x成本便宜 1.4x~2.0x。少一次无效快照、少一轮重试Token 和时间就省下来了。✅ 实践建议N 的边界与替代方案自动重新快照很强但也有明确边界官方说明见 SKILL.mdN只保证最近一次快照里出现过的编号有效。元素被滚动出可视区、DOM 重渲染、或你用了scope: only_within_viewport但目标不在视口内都会导致Unknown ref需要长期引用的元素优先用快照输出里的loc...稳定定位符如locrole:...、loccss:...或直接写 CSS 选择器——它们不依赖快照天然跨轮次好习惯每次有意义的点击或导航后再拍一次snapshotText()确认状态再引用新编号 延伸阅读相关源码导航想深入原理按这条链路读代码效率最高ref-map.ts —— 引用表的存取与N解析ref-state.ts —— 自动重新快照的触发条件browser-runtime.ts —— 快照结果如何写入引用表element-resolver.ts —— 两层兜底的元素解析driver/observe.ts —— 快照、截图与引用的统一入口总结ego-lite 的N引用之所以能跨轮次可用靠的是编号即浏览器内部 ID 执行前自动重拍快照 失效后 role/name 兜底三层机制的组合。对新手来说记住一条就够短引用用N长引用用loc。【免费下载链接】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),仅供参考
返回列表