浏览器 Agent 的失忆问题:Autobrowse 如何让每次探索变成永久技能¶
Ch04.119 浏览器 Agent 的失忆问题:Autobrowse 如何让每次探索变成永久技能¶
📊 Level ⭐⭐ | 14.6KB |
entities/autobrowse-browserbase-persistent-skill-files.md
背景:探索税(Discovery Tax)¶
浏览器 Agent 的核心缺陷:没有记忆——每次会话结束,它学到的一切都跟着蒸发。
"它是个有推理能力的健忘症患者:每次解决问题的方式都很优雅,但会话一关闭,醒来之后什么都记不住,一切归零。" 凯恩斯"没有海马体的天才"思想实验:每次从零推导出同样精妙的结论,却无法在昨天的洞察上继续前进。现在的浏览器 Agent,就是这个思想实验的工程化现实。 根本瓶颈不是推理,而是记忆——一种人类和 Agent 都能读懂、都能信任的记忆形式。
Autobrowse 是什么¶
Autobrowse 是 Browserbase 内部工程师 Shubhankar 开发、后来开源的工作流——受 Andrej Karpathy 的 autoresearch harness 启发。 核心思路: 1. 给 Agent 一个真实任务,让它在真实网站上反复尝试 2. 每次从自己的失败里学习,直到方法收敛 3. 把"最短可靠路径"写成可复用的 SKILL.md 文件,提交到公共技能库 关键设计选择:记忆存成 markdown(而非向量或截图)——人能读、Agent 能执行、团队能版本控制。
五步学习循环¶
目标(Objective) → 运行(Run) → 研究(Study) → 迭代(Iterate) → 收敛? → 毕业(SKILL.md)
↑ ↓
←←←←←←←←←← strategy.md(学习笔记,跨迭代叠加)←←←←←←←←←←←←←←←←←
第一步:目标(Objective)¶
给 Agent 一个真实任务,在真实网站上运行。任务必须真实、具体,因为真实任务才会暴露真实的摩擦点。
第二步:运行(Run)¶
Agent 端到端执行,产生完整操作 trace——每个工具调用、页面交互、token 消耗,全部记录。这次运行的价值不只是完成任务,更是产生可以被学习的行为数据。
第三步:研究(Study)¶
Agent 读自己的 trace,对自身行为做元认知反思:
- 在哪里卡住了?
- 在哪里靠猜测蒙混过关?
- 哪些步骤消耗了不必要的 token?
- 有没有可以用更轻量的确定性工具替代的步骤? See also Agent Memory Architecture
第四步:迭代(Iterate)¶
外层循环维护一个 strategy.md 文件——相当于 Agent 的学习笔记。每次迭代结束把观察写进去,下次迭代开始时 Agent 先读这份笔记,从上次的改进成果出发。知识在迭代间叠加,而不是每次从零归零。
第五步:收敛与毕业(Converge → Graduate)¶
连续几次迭代的成本和轮次数不再下降时循环结束。系统把最终最优策略写成 SKILL.md,连同所有辅助脚本(CLI 调用、fetch 工具、Python helper、CSS 选择器),一起提交到公共技能库。 收敛目标:不是找到理论上的全局最优路径,而是找到"足够好、足够可靠、足够便宜"的路径。
Craigslist 基准:$0.22 → $0.12¶
任务:旧金山 Craigslist 搜索 North Beach/Russian Hill 两居室公寓,租金 $5000–$7000,带室内洗衣机。 | 指标 | 原始 Agent 循环 | Autobrowse 毕业技能 | 改善 | |------|----------------|---------------------|------| | 耗时 | 71 秒 | 27 秒 | 2.6x 更快 | | 成本 | $0.22 | $0.12 | 45% ↓ | | 命中 | 0 个(全市60个结果,无精准) | 2 个精确匹配 | 正确性↑ | 原始 Agent:WebFetch 抓取渲染 HTML → 请求辅助模型提取表格 → 返回 60 个全市范围结果,North Beach/Russian Hill 精准命中 0 个。 Autobrowse 毕业技能:直接调用 Craigslist 未文档化 JSON API(https://sapi.craigslist.org/web/v8/postings/search/full),用经纬度边界框过滤目标社区,返回 2 个精准匹配(标题、价格、地址、链接)。 Kyle Jeong 原文:"关键不是速度,也不是成本,而是正确性。原始循环的确看起来更便宜更快,但它对用户的实际问题返回了零个结果。" Craigslist 技能文件核心发现:
- 搜索页面是完全 JavaScript 渲染的,
browse snapshot返回 0 个可访问性引用 - 真正数据藏在公开 JSON API,无需鉴权,无需 cookie
- 唯一坑:请求中必须加入
postal=参数才能正确锁定地理位置,否则按请求方 IP 返回错误城市数据 - 人工逆向工程可能需要几小时,Autobrowse 在几次迭代内自动发现
哪些情况不该用(自批评)¶
Browserbase 团队曾把 Autobrowse 用在一个 167 行静态 HTML 州立法规目录上——数据就直白地躺在 HTML 里,没有 JavaScript,没有登录鉴权,没有反爬机制。 结果:四次迭代,约 $24,循环依然无法在单次输出中返回完整的 167 行数据(模型单次输出上限截断推理)。 最终解法:约 200 行确定性 Python + browse fetch + BeautifulSoup —— 亚秒级运行,零推理成本,完整输出 167 行。 教训:遇到任何网站先用 browse fetch 探一下,如果数据直接在响应里,就写解析器;如果响应是空的或动态渲染的,再升级到 Autobrowse。
Agency 分层框架:从完全确定性脚本 → 路由式工具调用 → 完全自主多 Agent 循环。选择正确的层级本身就是工程决策。Autobrowse 在高 Agency 端,只有在低 Agency 工具都无法解决问题时才值得调用。
技能文件才是真正的交付物¶
企业痛点:今天当 Agent 成功完成任务,客户收到的是什么?一段执行日志、一个会话回放录像、一段自然语言推理过程描述。没有一样东西对真正拥有这个工作流程的人来说是可读的。 技能文件(SKILL.md)是有结构的 markdown:
- 名称、描述
- 推荐方法 + 替代路径
- 具体接口调用步骤
- 已知坑点和规避方式 工程师可以读它、编辑它、提交到代码库、做版本控制。非技术人员(产品经理、运营、合规专员)也能大致读懂 Agent 在做什么,甚至能发现流程描述中的错误并提出修改意见。 本质跃迁:从"信任 Agent 的输出" → "读懂 Agent 的操作手册"
"企业不只需要 Agent 能完成任务,还需要有人能为这个任务的完成方式负责。"
技能库的复利效应¶
每遇到一个新网站,就产生一个新的持久技能。随着技能库增长,Agent 在长尾重复性工作上越来越便宜、越来越快——不再需要为已经学过的东西重新缴纳"探索税"。
递归改进自身¶
今天,迭代循环本身、收敛判断启发式规则、技能模板格式,大部分还是由人工设计的。这是一个技术债,同时也是一个机会——同样的方式可以被 Autobrowse 用来改进自己的运作方式:
- 学习更好的迭代提示词
- 更聪明的网页探索先验("先 fetch 一下,能拿到数据就不必开浏览器")
- 更完善的技能模板结构 这是"自我改进 Agent 系统"的一个非常具体的实现路径,不依赖于任何神秘的新模型能力——只需要把已有的方法递归应用到自身。
核心结论¶
就算模型推理能力再强,在每个新网站上仍然要从零开始"发现"它本来可以从历史运行中已知的东西。模型越来越聪明,但这无法代替记忆。 让 Agent 系统真正变得可靠和经济可行的,不只是更聪明的推理,而是更好的记忆机制——具体来说,是一种人类能读懂、能编辑、能版本控制,机器也能直接加载执行的记忆形式。 Autobrowse 是对这个问题的一个具体答案,而不只是一个框架层面的议论。
深度分析¶
记忆问题的本质:跨会话知识传递的失效¶
浏览器 Agent 的"失忆"不是技术故障,而是架构性缺陷。当前 Agent 的推理能力建立在单会话上下文中——它能进行复杂的逻辑推导,却没有机制将在当前会话中发现的网站结构、API 端点、坑点等信息编码为可复用的知识单元。Autobrowse 的核心贡献在于引入了一个持久化层:将每次探索的成果从"会话级上下文"升格为"跨会话资产"。
为什么是 Markdown 而不是向量数据库¶
选择 Markdown 作为记忆载体并非偶然。向量数据库适合模糊匹配和语义检索,但不适合以下场景:精确的 API 端点和参数格式、CSS 选择器路径、已知的坑点描述。Markdown 的结构化字段(如 API 调用步骤、坑点列表)可以被 Agent 直接解析为工具调用参数,而无需再做一次"读取理解"。 此外,Markdown 支持版本控制、分支对比、人工 review——这些是企业级知识管理的基本要求,向量数据库无法提供。
五步循环中"研究"步骤的元认知价值¶
"研究"(Study)步骤要求 Agent 对自己的行为 trace 做自我反思,这是整个循环中最容易被低估的环节。传统 Agent 开发强调"执行",而忽视了"复盘"的重要性。正是这个步骤将单纯的"尝试-错误-再尝试"升级为"有目的的学习":Agent 被迫识别自己在哪些地方依赖了猜测而非确定知识,从而为后续迭代提供精确的改进方向。
收敛判断的工程现实¶
"连续几次迭代的成本和轮次数不再下降时循环结束"是一个启发式规则而非严格算法。这反映了 Autobrowse 的工程取向:追求"足够好、足够可靠、足够便宜"而非理论最优。在实际工程中,判断收敛需要考虑边际收益递减、迭代成本、以及任务本身的确定性程度。
技能复利的网络效应¶
随着技能库扩大,Agent 处理新网站时的平均探索成本趋向递减——每个新技能不仅解决了当前任务,还为未来类似的网站结构提供了可组合的构建块。例如,Craigslist 技能中发现的城市参数(postal=)可能对其他地理位置敏感型网站也有参考价值。这种知识复利是 Autobrowse 相对单次运行方案的核心优势。
实践启示¶
1. 在任何 Autobrowse 运行前先用 browse fetch 探底¶
Browserbase 团队在 167 行静态 HTML 上的失败迭代是一个关键教训:对于静态内容网站,Autobrowse 的迭代成本远高于确定性解析器。正确的工程路径是:先用 browse fetch 检查数据是否在初始响应中,如果是,写一个轻量解析器(BeautifulSoup、正则、JSON 路径),只对动态渲染或反爬保护的网站才启动 Autobrowse 循环。
2. 优先积累"坑点"知识而非"路径"知识¶
技能文件的价值不只是记录成功路径,更关键的是记录已知失败和坑点。在 Craigslist 案例中,postal= 参数是一个典型的"坑点"——不加入这个参数,整个查询就会返回错误城市的数据,但这个参数在任何公开文档中都不存在。这类知识比成功路径更难获取,却更有持久价值。
3. strategy.md 是跨越迭代的连续性载体¶
每次迭代结束时,应该将本次的关键发现(什么有效、什么无效、token 消耗在哪里)追加到 strategy.md,而不是只在最终技能文件中记录。这样做的好处是:如果后续迭代因新发现而需要回退,Agent 可以清晰地看到之前的决策轨迹,理解为什么放弃了某条路径。
4. 技能文件的受众不只是 Agent,还包括人¶
在设计技能文件的格式时,始终考虑"非技术人员能否大致读懂"这个问题。一个技能文件如果只有 Agent 能理解,那它的价值就仅限于当前任务;只有当人类也能读懂、审查、修改时,技能文件才真正成为组织的知识资产而非单次消耗品。
5. 警惕"探索税"的隐性成本¶
Autobrowse 将探索成本显性化——每次迭代都有明确的 token 消耗和运行时间记录。但在实际项目决策中,团队往往低估了"每次新网站都要从零开始探索"的隐性成本:这个成本不会被单独记账,而是隐藏在每次新任务的长运行时间和不稳定成功率中。当某个领域的技能积累到一定规模后,显性的 Autobrowse 运行成本往往低于持续支付隐性探索税。