爬坡式优化 Skill:无需更换模型,持续改进智能体|Browserbase 的 Shubhankar Srivastava
原题Hill-Climbing Skills: Improve Agents Without Changing the Model — Shubhankar Srivastava, Browserbase
看前速览
Browserbase 的 Shubhankar Srivastava 展示如何让执行者与教师组成循环,把浏览器任务中可验证的失败和站点技巧沉淀为可复用 skill。
浏览器智能体容易重复踩坑,因为站点经验没有被保存。
日期控件、页面阻碍和 URL 捷径可能在一次运行中发现,下一次却又要重新学习。
执行者与教师循环把失败转化为持久策略和 skill。
执行者完成浏览器任务;教师检查轨迹和结果,更新策略文件,再将验证有效的做法升级为 skill。
优化循环需要可靠评估与持续维护。
可重放环境和可验证结果支撑学习;漂移监测与提示注入防护则避免策略变质或过时。
完整摘要
Shubhankar Srivastava 指出浏览器智能体的一个反复出现的问题:日期选择器、站点导航和反爬阻碍等操作经验,在下一次运行时往往又要重新摸索。他借鉴 AutoResearch,提出将浏览器任务拆成执行者和教师:前者尝试完成任务,后者检查日志、截图与结果,把经验写入策略文件;经过多轮验证后,再把稳定策略升级为可复用的 skill。Google Flights 示例中,首次失败让系统发现通过 URL 参数绕过复杂日期控件的路径,后续查询因此更稳定。演讲还涉及会议日程、餐厅检索和浏览器 skill 目录。问答部分强调可重放环境、可验证结果、成本目标、skill 维护与提示注入防护。演示相当具体,但节省成本和可靠性收益主要来自选定案例,尚不能视作广泛的独立评测。
章节
文字稿
简要说明Brief Description
爬山式技能:不改变模型即可提升智能体——Shubhankar Srivastava,BrowserbaseHill-Climbing Skills: Improve Agents Without Changing the Model — Shubhankar Srivastava, Browserbase
目录Table of Contents
- 改进技能,而不是模型权重Improve the skill instead of model weights
- 浏览器工具与可靠性Browser tools and reliability
- 时间筛选器、区块与重复失败Time filters, blocks, and repeated failures
- 为什么每次运行都从零开始Why each run starts from zero
- 借鉴自动研究循环Borrow the autoresearch loop
- Live Google Flights task
- 执行者与教师架构Doer and teacher architecture
- 将经验教训保存到策略文件中Persist lessons in a strategy file
- 一次失败的运行发现了一个 URL 快捷方式A failed run discovers a URL shortcut
- 将策略提炼为可复用的技能Graduate the strategy into a reusable skill
- 成功之后又一次失败Success followed by another failure
- 会议日程和餐厅示例Conference schedule and restaurant examples
- 检查已完成的航班搜索技能Inspect the completed flight search skill
- 浏览技能目录A catalog of browsing skills
- 将这种方法应用于其他领域Apply the approach to other domains
- 可重放的环境与可验证的结果Replayable environments and verifiable outcomes
- 谁来核验循环的判断?Who verifies the loop's judgments?
- 投资回放环境Invest in the replay environment
- 收敛性、迭代成本与基础设施Convergence, iteration costs, and infrastructure
- 阅读实现和跟踪记录Read the implementation and traces
- 每项任务一个技能,还是一个通用技能?One skill per task or a general skill?
- 验证器、存储与技能维护Verifiers, storage, and skill maintenance
- 选择一个优化目标Choose an optimization objective
- WebMCP 与结果相关的问题WebMCP and outcome questions
- 评估、毕业与可移植性Evaluation, graduation, and portability
- 提示注入与分层控制Prompt injection and layered controls
- 监测漂移并触发修复Monitor drift and trigger repairs
改进技能,而非模型权重Improve the skill instead of model weights
好。大家好。感谢各位来到这里。我知道这是今天最后一场工作坊,非常感谢大家来参加。我来这里是想聊聊爬山技巧,具体来说,就是如何在不深入研究模型、不碰权重的情况下改进智能体。我这里也打开了 Slido,待会儿我会展示一下二维码,如果大家有问题,可以提交上来,我们最后一起解答。简单介绍一下我自己。我是 Sh,在 Browserbase 的销售工程团队工作。我的工作主要是帮助客户将浏览器智能体部署到生产环境中。我不确定……或许我们举手看看吧。有多少人知道什么是浏览器智能体?有人知道吗?好,有几位。太棒了。有人以前构建过浏览器智能体吗?All right. Hello. Thank you everybody for being here. Uh I know it's the last workshop of the day. I appreciate all of you turning up here. U I am show uh I'm here to talk about hill climbing skills. uh specifically how can you improve your agents without really going into the models without really going in the weights. Uh I have a slido uh up here as well. I'll just uh flash the QR code in case any of you want to uh put in any questions and we can address them towards the end as well. U a little bit about me. I'm Sh. I'm uh on the sales engineering team at browserbase. Uh I essentially work with our customers deploying browser agents in production. Uh I'm not sure maybe we'll do a show of hands. Uh how many of you know what browser agents are? Anybody? All right, a few. Amazing. Uh have any of you built browser agents before?
你们有人用过这些工具吗?举个手。好,有几位。太棒了。很好。呃,也许在深入探讨技能爬山这一整体概念之前,我先简单介绍一下什么是浏览器代理,这样到演讲接近尾声时,大家就能清楚我们在做什么。我们还会看看,你们如何在自己的领域中也运用这种方法。Have any of you used these tools? Show hands. Okay, a few of them. Amazing. Nice. uh maybe I'll I'll talk a bit about what browser agents are before diving into the whole concept of hill climbing for skills uh so that it becomes clear what we're doing towards the end of the talk we'll also look into how you can do this in your domain in your uh field as well.
浏览器工具与可靠性Browser tools and reliability
好的。先简单介绍一下什么是浏览器代理。如果你的代理需要操作浏览器,那它基本上就可以称为浏览器代理,对吧?浏览器就成了代理的工具。那要怎么控制它呢?你可以通过某种 CLI、MCP,或者其他方式来控制浏览器,比如说:“嘿,去点击这个红色按钮。去点击刷新按钮。或者截个图,或者获取这个网站的无障碍树快照。”对吧?这些就是代理可以调用、用来控制浏览器的底层工具。而 Browserbase 本质上是一个供你构建和运行浏览器代理的平台。我们提供构建这类代理所需的基础设施、SDK、技能和 CLI。All right. Uh so quick primer on what browser agents are. If you have an agent that needs to drive a browser, you basically call that a browser agent, right? Browser becomes the tool to your agent. And how do you control it? You control it with some sort of CLI, some sort of MCP, some sort of method where you can control the browser and say, "Hey, go and click on this red button. Go and click on the refresh button. Go and uh take a screenshot or take a snapshot of the accessibility tree of this website." Right? So these are this low-level tools that your agent can have access to to control the browser. Uh and browserbase is essentially a platform for you to build and run these browser agents. We provide the infrastructure and the SDKs, the skills, the CLI that go with building these browser agents.
呃,我们将使用所有这些工具,看看爬山法是什么样的。好吧。我想谈谈如今智能体面临的最大问题,基本上就是可靠性。对吧?人们对浏览器智能体感到沮丧,因为它们会卡住、遇到反机器人验证码问题,或者干脆忘了任务、偷懒,没把任务完成。我们看到,可靠性本质上是一个工程问题。我认为最近的模型,比如 Opus 和 Fable——它刚推出的那三天里——真的非常聪明,对吧?但我们发现,为了提高可靠性,还有很多工作要做。难点在于你提供给它的工具、提供给它的技能。呃,我们接下来要看的就是,如何改进……Uh and and we're going to be using all of these tools to see what hill climbing does look like. All right. Uh I want to talk a bit about the biggest problem with agents today essentially reliability right uh people are frustrated with browser agents getting stuck or getting into an anti-border capture issue uh or maybe just forgetting or being lazy and not completing the task. Uh and we see reliability essentially is an engineering problem. I think the recent models the Opus and the Fable when we when it came out for those three days it was really really smart right uh but we see that a lot of the work that has to be done for reliability is the hardness around it is the tools that you give it it is the skills that you give here u and and that's what we're going to be sort of looking at how do we improve the
时间筛选器、区块和重复失败Time filters, blocks, and repeated failures
这些浏览器智能体的可靠性。今天我想给大家举几个例子,看看这些智能体在哪些方面表现很差,对吧?稍微放大一点看,你会发现这个浏览器智能体正试着打开 Google Flights,然后点击……它想拖动时间筛选器,却不知道该怎么拖。拖动对这些智能体来说是个棘手操作,它们会被搞得一头雾水。它不知道对应的 HTML 元素是什么,也不知道相关的 JavaScript 是什么。它没法顺利完成操作,结果就卡住了,也订不了我的机票。呃,我还想举另一个例子:一个在 OpenTable 上运行的浏览器智能体。假设我有自己的 OpenClaw 或 Hermes 智能体,需要预订一个约会之夜,于是我说:“嘿,去 OpenTable 帮我找几家……”然后你看看它遇到的反机器人机制,对吧?reliability of these browser agents I wanted to give you all a few examples of like where these agents suck today, right? If I zoom in a bit, you'll see this browser agent is trying to like go on Google flights and click on the uh it's trying to drag the time filter and it's unable to figure out how do I drag that. Dragging is a tricky operation for these agents to do and it's getting super confused. It doesn't know what the HTML element for that is, what the JavaScript for that is. It's not really able to do this and it gets stuck and it's not able to book my flight tickets. Uh, another example I wanted to show uh is a browser agent on open table. Let's say I have my open claw or my Hermes agent and I need to book a date night and I tell hey go to open table and and find me some and and look at the anti-bot that it runs into, right?
呃,它就只是显示“拒绝访问”。我不知道这里发生了什么。呃,不过我的浏览器代理能绕过这些问题吗?它们能不能更可靠?它们能不能帮我预订约会之夜的餐厅?这是我最想问的问题。呃,这里我们会看看一些提高这些代理可靠性的不同想法,其中一个……哦,实际上,让我们深入探究一下根本原因,对吧?为什么会发生这种情况?我们有这些 Opus 模型,这些 5.5 模型,特别出色的通用模型。你可能用过 Codex 的 computer use,非常不错。但如果你想处理一些运行时间很长、很棘手的网站,比如 OpenTable,或者……Uh, and it's just like access denied. I don't know what happens here. Uh, but like can my browser agent get around these issues? Can they be more reliable? And can they book my date night restaurants is the biggest question I wanted to ask here. uh and this is where we sort of look at different ideas to improve the reliability of these agents and one of them uh oh actually let's let's dig into the root cause here right like why this is happening u we have like these opus models these five five the super nice general purpose you might have used codeex computer use very nice but when you want to sort of do uh longunning tricky websites like the open tables or
为什么每次运行都从零开始Why each run starts from zero
在 Google Flights 上,这类操作在生产环境中就会变得非常难以执行;而且这些特定于网站的小技巧,或者你需要在浏览器中运行的 JavaScript,智能体都不知道,对吧?最重要的是,每次运行都是从零开始的,你的运行过程中实际上没有融入任何学习。我想 Darkh 几天前谈到过这个问题:为什么如今计算机使用方面的进展还是这么慢?呃,尽管计算机使用看起来是个可验证的问题,为什么它至今仍未解决?本质上,没有发生任何学习。每次智能体运行都是从头开始,也不会从生产环境中的执行轨迹中学习。嗯,我把这些浏览器智能体称为永远学不会的天才。嗯,有些人可能会说,哦,为什么不针对某些东西进行微调,比如 OpenTable 或餐厅网站呢?the Google flights it sort of becomes very difficult to run these in production and these sightspecific tricks or these javascript that you need to run on your browser the agent doesn't know about them right and the most important thing is it's every run starts from zero you're not really having any sort of learning baked into your runs I think Darkh talked about this a couple days ago it's like why is progress on computer use still so slow today. Uh although computer use seems like a verifiable problem, why is it still not solved? Essentially, there's no learning happening. Every agent run is a start from scratch run and it's not learning from its production traces. U and these browser agents, I call them geniuses that never learn. Um and some people might say, oh, why don't you fine-tune on something some like open table or restaurant websites.
呃,但这其实不太具备可扩展性,对吧?呃,如果你在考虑构建智能体,就不可能每出现一个新任务都进行微调。你需要的是一种机制,让它能够从生产环境的执行轨迹中学习,并随着时间推移不断改进。Uh but it it's not really scalable, right? uh if you're thinking of building agents, you can't really be fine-tuning for every new task that comes up. You want some you want a a modality where it can learn from its production traces uh and get better over time.
借鉴自动化研究循环Borrow the autoresearch loop
这就是我们开始思考这个问题的地方,大概是在四到六个月前,Karpadi 提出了自动研究这个想法。它本质上是一个循环,对吧?呃,这个循环会接收一个可验证的问题陈述,然后着手解决它,一遍又一遍地尝试,查看自己的执行轨迹,并努力不断改进。我们想知道,如何将它应用到浏览器智能体上?如何将它应用到这些复杂的工作流和复杂的网站上?这些网站并非确定性的,每天都会变化,每次抓取到的内容也都不一样。呃,我们要如何从中学习呢?对吧?呃,接下来我想切换到演示,现场展示一下。呃,我先从这里输入一个提示词。比如,我想做这样的事:呃,打开 Google】【。This is where we sort of started thinking about and this was like six four to six months ago where Karpadi came up with this idea of auto research. This is essentially a loop, right? Uh and this loop sort of takes a verifiable problem statement and goes at it, tries it again and again, looks at its own traces and tries to improve itself. And we wondered how can we apply this to browser agents? How can we apply this uh to these complicated workflows, these complicated websites which are not deterministic, they change every day, they have different captures every time. Uh how can we learn from these? Right? Uh this is where I want to sort of switch into a demo and sort of show this live. Uh and I'm going to start with uh a prompt over here. So I want to maybe do something like uh go to Google
Live Google Flights task
航班,呃,帮我找一班本周六从旧金山飞往纽约的商务舱航班。我想带一个随身行李。呃,这班航班应该在上午。我希望我的……好,这样没错。就把这个粘贴进去然后运行。对。现在开始一个基于浏览器的会话。呃,你在中间看到的是一个刚刚启动并导航到 Google Flights 的远程浏览器。如果我展开这里的代理,呃,它正在执行所有这些操作。这些就是你可以实时看到的推理轨迹,它正在尝试应用商务舱筛选条件。所以它会完成任务,我们稍后再回来看看这个。呃,不过我想谈谈这里实际发生的事情。呃,呃,还有……flights and uh find me a business class flight from SF to New York for this Saturday. I want to have one carry-on bag. Uh and this flight should be in the morning. I hope my Okay, this is correct. Just paste this and run this. Right. So starting a browser based session here. Uh so what you see in the center is a remote browser has just spun up and has navigated to Google flights. If I expand my agent here, uh it's doing all of these things. This is the reasoning traces that you can see live and it's trying to sort of apply the business class filter. So it it'll do its job and and and we'll come back to this. Uh but I wanted to talk about what's really happening here. Uh u and the
执行者与教师架构Doer and teacher architecture
这个自动研究循环背后的架构。我们启动了 Google Flights 任务。这里的架构是一个我们称为“自动浏览”的自动浏览循环。我们把自动研究和浏览结合起来,称之为自动浏览。这个循环本质上由两个 Claude Agent SDK 循环代理组成。你可以把一个称为执行代理,另一个称为指导代理。执行代理的工作是实际进行浏览。它可以使用我们之前提到的浏览 CLI,也可以访问浏览器,然后点击按钮、查看截图,尝试获取信息。而指导代理的工作是查看执行代理的操作轨迹,了解哪些地方做对了、哪些地方出了错。它们会一直协作,直到找到一个非常好的、能够收敛的解决方案。architecture behind this auto research loop. So we we fired the Google flights task. Uh and and and the architecture here is this auto browse loop that we call this. We took auto research and we took browsing. We call it auto browse. And this loop essentially is two clawed agent SDK loop uh agents. Uh you can call one as the doer agent and one as the teacher agent. This doer agent its job is to actually go and do the browsing. It has access to the browse CLI that we talked about. It has access to the browser uh and it goes and sort of clicks on buttons, looks at the screenshot, tries to get me information and the teacher teacher's job is to look at the traces of the doer and learn what went wrong and what went right and they keep working together until they find a very good solution that converges.
对吧?呃,我们不会告诉它需要循环多少次。我们不会告诉它我们想要的成功因素、成功率是多少。我们不会告诉它,嘿,我们需要在 x 个 token 或 x 秒内完成这件事。我们只是给它一个宽泛的提示,然后让苦涩的教训发挥作用——我们拥抱苦涩的教训,然后就说,好吧,让执行者和教师放手去做。呃,关键发生的事情是,有一个……Right? Uh we don't tell it how many loops you need to go for. We don't tell it what's the success factor success uh rate that we want. We don't tell it hey we need to do this within x number of tokens or x number of seconds. We just give it a broad prompt and we let the bitter lesson we embrace the bitter lesson and we're like okay let the doer and teacher go at it. Uh and the key thing that happens is there is a
将经验教训持久化到策略文件中Persist lessons in a strategy file
strategy.md 文件。呃,它本质上就是多次运行过程中积累下来的产物。每次迭代之后,教师都会反思发生了什么,查看截图、查看日志,然后想:“哦,你没点这个按钮。你其实应该点这个按钮才对。”接着它会把这条经验写进 strategy.mmd 文件。这个产物会延续到下一次迭代,并在此基础上不断改进。strategy.md file. uh that is essentially the artifact across multiple runs. After every iteration, the teacher thinks about what happened, looks at the screenshot, looks at the logs, and then thinks, "Oh, you did not click on this button. U you should actually click on this button instead, and it puts that in the strategy.mmd file." And that artifact carries over to the next iteration, and it improves from there.
一次失败的运行发现了一个 URL 快捷方式A failed run discovers a URL shortcut
也许我们回到演示,看看发生了什么。好。第一次迭代时,这里失败了。这次迭代中学到的是:跳过整个表单日历控件,因为你只要用一个查询参数就行了,根本不需要到处点击,对吧?在这个例子中,智能体足够聪明,意识到:“哦,我在到处点击,浪费了这么多 token 和时间,其实直接用 Google Flights 的查询参数就行了。”现在事后看来这显而易见,但作为人类,我可能不会想到这一点,也不会自己写出这么复杂的查询参数,对吧?所以这就是第一次迭代的收获。现在它正在进行第二次迭代,继续尝试,直到它觉得已经把所有招数都用尽,把能用的 JavaScript 技巧都试过了,然后再想:“好吧,这是我可以从这里开始使用的技能。”Maybe we'll go back to our demo and see what happened. All right. So, iteration number one, uh, there was a failure here. Uh, and the learning from this iteration was skip the entire form calendar widget because you can just do a query parameter and you don't really need to click around, right? The agent was smart enough in this instance to think, oh, I'm wasting so many tokens and I'm wasting so much time clicking around where I could just use Google Flight's query parameter. Now this is obvious in hindsight but maybe as a human I wouldn't have thought of this and I wouldn't have written this complicated query parameter myself right uh so this is the learning from the first iteration now it's going and doing things in iteration number two it'll keep going on till it feels like it has maxed out all the tricks it has maxed out all JavaScript hacks that it could do uh and and and then uh think about okay this is the skill that I can use from here.
我想,关键的关键一点,呃,我还想谈的是,在这个收敛循环结束时,我的输出……I think the key the key thing uh that I wanted to also talk about is at the end of this converged loop the output that I
将这套策略提炼成可复用的技能Graduate the strategy into a reusable skill
我想要的是一个 skill.mmd 文件。这个 skill.md 文件将是我提供给未来智能体的内容。呃,里面会汇集以前运行过程中积累的所有窍门、技巧或经验教训。我们之后会看看它的规模可能会是什么样。呃,内容可能包括:比如,预先填好的 URL 是必不可少的。别到处乱点这些按钮,白白浪费点击次数和令牌。日历里有个重新打开的 bug。别这么做。呃,如果你想移动那个时间戳控件,呃,就用 JavaScript 注入。别试图用鼠标拖动。对吧?这类技巧现在都会留存下来,供今后的每次运行使用,从性能、可靠性和成本的角度来看,能为我省下很多。want is a skill.mmd file. This skill.md file would be what I give to my future agents. Uh and it would have a collection of all the hacks or all the tricks or all the learnings from previous runs. We'll we'll look at what that scale might look like. Uh it could look like, hey, a pre-filled URL is mandatory. Don't go around and waste your clicks and tokens clicking on these buttons. There is a reopen bug in the calendar. Don't do this. Uh if you want to move the drag uh if you want to drag your time stamp thing, uh use JavaScript injection. Don't try to do it with the mouse. Right? These are the kind of tricks that are now persisted for every future run and gives me so many more savings uh from a performance, reliability and cost perspective.
成功之后又遭遇一次失败Success followed by another failure
现在,呃,我们回到这次运行,看看它有没有通过。好,第二次迭代已经通过了,你可以看到,呃,成本节省大约有 4 倍。呃,这张图表是实时生成的。呃,第一次是 12 美元,第二次是 3 美元。还有一点要记住,我这里的执行者和教师代理用的都是 Opus 48。现在第三次迭代刚刚完成。呃,轮数减少了,延迟也更低了。呃,不过第三次迭代失败了:它在某个方面有点矫枉过正。第四次迭代应该会从中吸取教训,我们看看它能不能做到。呃,趁它在自己运行,我想展示一下之前为了准备这次演示而做的一些运行。比如说,我去了……Now uh we'll go back to our uh run and see if it has passed. Okay, so iteration number two has passed and if you can see uh the savings in in cost are like 4x. Uh this chart is being created on the fly. Uh so it started from $12 and the second one was $3. And keep in mind my agents here are Opus 48 both for the doer and uh for the uh teacher. Now iteration three just came in. Uh the number of turns decreased. The latency is also better. Uh but there was a failure in iteration number three. there's something that it sort of overcorrected on and iteration number four should probably be learning from that and we'll see if it does that. Uh while it's doing its own thing, I wanted to show some previous runs that I did uh just in preparation for this uh demo. U so for example, I went to uh
会议日程和餐厅示例Conference schedule and restaurant examples
自动浏览,我当时就说:“嘿,去 AI Engineers 网站看看哪些演讲和工作坊在讲爬山算法,好吗?”它经过多轮迭代完成了这个任务,你可以查看每一轮的回放。这些回放来自 Browserbase,从可观测性的角度来看非常有帮助。正如你所看到的,它在成本方面也有所改善,提升了 7.4 倍、4 倍。尽管它在所有迭代中都成功通过了,我还是看到了成本方面的改进。现在我想看看这个技能有哪些经验教训,对吧?该如何保存这些经验教训呢?它说:“直接前往 shed schedule 页面。如果有未解决的错误,不要盲目重试。运行这个。把关键词输入 session 搜索框。”auto browse and I was like hey go to the AI engineers website and tell me which talks and workshops are talking about hill climbing, right? uh and it did that across multiple iterations and you can see the replay of each of these. These are replays that are coming from browserbase super helpful important for uh observability perspective and as you can see uh it sort of uh got better in ter in terms of cost 7.4x 4x uh even though it was able to pass in all the iterations, I still got improvements in cost. Now I wanted to actually see what are the learnings from this skill, right? Uh how do you sort of uh persist all of these learnings? It says go straight to the shed schedule page. If there are open errors, don't try retry blindly. Run this. Uh type the keyword into the session search input.
稍等一下。所以,比如说要有这些等待,因为有时候网站加载需要很长时间。你可以用这类技巧,然后读取结果。你知道,在这些技能中发生了很多学习。也许我想展示一些有意思的例子。我想展示这个 OpenTable 的例子,因为我们开始这个演示时,遇到了“拒绝访问”这个障碍。然后我们看一下截图,这是我们在第一次迭代中遇到的“拒绝访问”提示。看看它从中学到了什么。它意识到这个拦截是由环境造成的,因为网站不希望这个代理执行某些操作。到了第二次迭代,它发现,如果我添加一个查询参数,并填入纬度、经度和 Metro ID,就能直接获得可用的 UI。Wait briefly. So like have these weights because sometimes websites take a lot of time to load. So you you can have these kind of tricks uh and then read the results. Uh you know like there there's a lot of learning that is happening in these skills. Maybe I wanted to show some interesting ones. I wanted to show this open table one because I started with this blocker of like access denied when we started this demo. Uh and if we go to the uh screenshot, this was the access denied thing that we got right in in iteration number one. Let's see how it learned from there. Uh it realized that the uh block is environmental because the website doesn't want this agent to do something. uh in iteration number two, it figured that if I do a query parameter and if I put a latitude longitude metro ID, I automatically get that uh UI that works.
不要打开 /r,那会被拦截,也不要重新加载 / s。这些地方会触发拦截。如果你不这么做,而是改用这个方法,你的智能体就能正常工作,对吧?呃,正如你所见,成本大致从 6.22 22 美元降到了 0.51 美元。耗时从 189 秒降到了 27 秒。呃,它得出的规模就在这里。呃,像这样构建搜索 URL,进行日期计算。呃,这是旧金山已知的地铁站点。呃,按照这些步骤来,对吧?永远不要调用 / r,因为那会返回访问被拒绝。人类永远不可能得出这类经验,但你只要接受这个苦涩的教训,让智能体去做这项工作,呃,它们就会替你找到这些窍门。我还想展示几个例子,看看我们看到的这类改进。Do not open /r that's blocked and do not reload / s. These are the places where the blocks kick in. If you don't do that and you follow this technique instead, your agent will work, right? Uh and as you can see, uh it sort of went from $6.22 22 to 0.51. The time taken went from $189 seconds to 27 seconds. Uh and the scale it came up with was here. Uh build the search URL, do the date math like this. Uh this is the known metro pins for San Francisco. Uh and and follow these steps, right? Never call / r because that will return access denied. Now these are the kind of learnings where a human could never have done but you just sort of embrace the bitter lesson and a let agents do the job uh and they will find these uh tricks for you. I want to uh also show uh a few examples of like the kind of improvements we see.
呃,这个问题之所以让我特别上心,是因为从销售的角度来说,我正在把这些浏览器代理部署到生产环境中。只有浏览器代理成功运行,销售才算完成。所以,对我来说,可靠性是最重要的事情。这也是我带给客户的关键工具:我会告诉他们,尽管让代理放手去做自动化研究,这样它们就能在生产环境中成功运行。呃,这些就是人们关注的成功指标:在不同任务上,成本最多可降低到原来的 1/16、1/12 或 1/3。当然,每项任务都不一样,每项任务的瓶颈也各不相同,所以你可能会看到一些差异。但关键在于,你可以通过这些技术逐步优化,持续提升表现。Uh the reason why this problem is so close to my heart is because I from a sales perspective am deploying these browser agents into production. uh the sale is only done when the browser agent is successful. So reliability is like the most important thing for me and this is what I this is the key tool that I take to my customers and I'm like just fire your agents let them do this auto research thing and your agents will be successful in production. Uh and these are the kind of u success metrics that people are looking for up to 16x cheaper 12x cheaper 3x cheaper uh on different tasks. Of course, every task is different. The bottlenecks on each task are different. So, uh you might see variance there. But the idea is you can hill climb on these uh techniques.
检查已完成的航班搜索技能Inspect the completed flight search skill
我想回到我们的实时演示,看看有没有什么改进。好。那么,我们有一个逐步成熟的技能,而且这个技能端到端地得到了应用。不需要进一步学习。结果显示正确:旧金山飞往纽约的单程商务舱,7 月 4 日,包含一件随身行李。呃,出发时间是早上 8 点,票价 649 美元。对吧?它成功获取了所有这些信息,我也可以从头到尾看一遍完整回放,确认是否准确。呃,它似乎成功弄清楚了整个技能,而最快的路径就是把整个查询编码进 URL。我再次强烈倾向于……我知道我在展示这些东西,但我刚开始看这里的结果时,那一刻简直就是浏览器智能体的 Mythos 时刻,你知道吧——就是把这些东西彻底逆向工程出来。呃,我把这个展示给一些客户看,他们都惊呆了。以前,他们得为自己运营的每个网站编写脚本,还会说:“嘿,我得花这么多工程时间,就为了逆向分析这些网站。”I wanted to go back to our live demo and see if there's any uh improvement. All right. So, we have a graduated skill u and the skill applied end to end. No further learning. The results are showing correctly. one-way business class, San Francisco to New York, July the 4th, one carry-on bag included. Uh, and there is 8 a.m. $649. Right? So, it was able to get all of this and I can sort of watch the entire replay to see if that is accurate. Uh, it was able to sort of figure out this entire skill and the fast path is encode the whole query in the URL. strongly preferred the again like I know I'm I'm showing these things but when I first started looking at the the results here this was like my moment of like this is the mythos moment for browser agents you know like just reverse engineering the hell out of things uh I I look at this with some of my customers the customers are mind-blown uh earlier they would be writing scripts for each of their websites they would be like hey I need to spend so many engineering hours on like just reversing these websites.
我该如何将它扩展到 100 个、1000 个网站?现在,我们的客户实际上已经构建了整套流水线,可以按需生成这些技能,并自动创建拉取请求。如果生产环境出现故障,代理也会启动并开始修复相应的技能。因此,我们可以围绕这一点进行大量工程工作,以发挥杠杆效应。How can I scale this to 100 a thousand websites and now our customers have actually built these entire pipelines of uh these skills that get generated on the fly pull requests that get created automatically. If there is a failure in production, an agent kicks in and starts healing the skill as well. So there's a lot of uh engineering that we can do around this to make leverage to leverage
浏览技能目录A catalog of browsing skills
这个技术。呃,我还想给大家看看我们用它做了什么,对吧?我们确实继续开发了一个叫 browse.sh 的产品。呃,我们当时想,如果能为一个网站做到这一点,那为什么不为五个网站做呢?干脆为 500 个网站都做,然后免费提供给任何人使用。呃,大家如果还记得,在 19 几几年,或者说在互联网出现之前的 90 年代,你会看到黄页,里面有联系个人、企业等的信息。这就是浏览器代理的黄页,对吧?它详细介绍了如何在网上的任何网站上执行任何任务。呃,我想实际给大家展示一下。你们可以安装 browse CLI,完全免费地使用所有这些技能。Token 成本都由我们自己承担了,我们把这些免费提供给大家。呃,比如我去搜索一下亚马逊上的商品,整个规模都在这里。this technique. Uh I wanted to also show what we've done with this right we actually went ahead and created this product called browse.sh uh we were like if we can do this for one website we can do this for five why not do this for like 500 websites and give it for free for anybody to do this. Uh and like if you remember in the 19 or wherever like in the '9s before internet you had the yellow pages uh you had details about accessing people, businesses etc. This is yellow pages for browser agents right it has details about how to do any task on any website on the web. U I wanted to actually show this to you all. uh you can actually install browse CLI and use all of these skills completely for free. We've eaten up the token costs ourselves and we're making this available for you all. Uh so if I go to let's say search products on Amazon uh I can see the entire scale is over here.
你应该什么时候使用这个规模?比如,应该怎么看定价、库存情况之类的,对吧?呃,这就是使用它的方式。这里有很多关于亚马逊的细节和截图。我只要把这个浏览技能 CLI 交给我的 OpenClaw,它就知道什么时候调用 alltrails.com 技能,什么时候调用 weather.gov 技能,这让我的生活轻松多了。呃,本质上,我们在后台运行着同样的自动研究流程,并把它提供给大家。事实上,如果你愿意,可以到这里来,跟它说:“嘿,帮我创建一个技能,查询本周旧金山的活动。”你只要生成一个技能,它就会帮你完成。它会给你发一封电子邮件,然后你就可以在任何想用的智能体中使用这个技能,对吧?When should you use the scale? How should you look at like pricing and availability and whatever right? uh this is how you use this lot of details about Amazon the screenshots u and I just give this browse skills CLI to my openclaw and it just knows when to pull the alltrails.com skill when to pull the weather.gov skill and and this makes my life so much easier. uh we essentially are running the same auto research loop behind the scenes uh and making this uh available for you all. In in fact if you would want to you can go here and you can be like hey go and make a skill for me to uh look up this uh events in San Francisco for this week. Uh you do this generate a skill and this will sort of do this for you. This will send you an email and you can then use your skill uh in whatever agent you want to, right?
呃,所以我们已经为浏览器代理做过这个了。Uh so we've done this for browser agents.
将这种方法应用于其他领域Apply the approach to other domains
呃,我想聊聊,怎么把这个方法应用到其他领域,对吧?呃,我觉得编程智能体就是一个例子。我见过一种令人沮丧的情况:智能体每次都要重新学习代码库的约定,没能正确应用 lint 规则,而我每次都得提醒它。也许你可以用 Cloud MD 和 Agents MD 来改进这一点,但基本前提是,智能体不应该每次都从零开始重新学习你的任务,对吧?呃,我在研究智能体上也见过这种情况。我们会为内部工作流程运行一大批深度研究智能体,呃,但它们每次都会遇到困难,试图重新学习:“哦,我从 Wikipedia IA 获取了这条信息,却没有从另一个网站获取。”呃,我就会想,为什么呢?呃,我们一直都会使用另一个网站,你应该从之前的执行记录中学习。Uh and I wanted to talk about like how can you potentially do this for any other domain, right? Uh I think coding agents is like one place where I have seen this frustration where the agent is relearning the repo conventions every time. it's not applying the linting rules correctly and I have to tell it every time and maybe you can have your cloud MD and agents MD and improve that but the the fundamental premise is like the agent should not be relearning your tasks from zero right uh I've seen this in research agents we run a bunch of like deep research agents for our internal workflows uh and every time it struggles and it tries to relearn oh I pulled this information from Wikipedia IA uh but I did not pull it from this other website. Uh I was like why not? Uh like we always do this other website you should learn from your previous traces.
嗯,你应该获取信息。嗯,在内部运营方面,你们有这些仪表板、数据库和内部工具,但你的智能体不知道哪些能用、哪些是首选。理想情况下,你应该……Uh and you should pull information. Uh internal ops you have all these dashboards all these databases all these internal tools but your agents don't know which ones work and which ones are preferred. Ideally you should be
可重放环境与可验证结果Replayable environments and verifiable outcomes
应用这项研究技术需要满足两个条件:第一,你应该有某种可重放的环境,这样才能运行这些循环;第二,你应该有某种可验证的结果,也就是某种可量化的指标,供你运行这些循环。是的,我看到那里有个问题。我意识到……applying this all research technique. Uh a and the two conditions that are required is that a you should have a replayable environment of some sorts so that you can run these loops and b you should have some sort of verifiable outcome some sort of quant quantifiable metric for you to run these loops. Yes, I see a question there. I realized that
谁来验证循环的判断?Who verifies the loop's judgments?
是的。Yeah.
主持人:是的。Host: Yeah.
嘉宾:是的,没错。我觉得问题在于,怎么才能知道自动研究循环是否准确、是否正在收敛,以及它说自己正在收敛时是不是真的在收敛。它说结果很好时是不是真的很好,说结果很差时又是不是真的很差。换句话说,我该如何相信智能体所说的话,以及循环实际做的事情?我想这就是我希望探讨的可验证结果。对 Karpathy 来说,这很容易,因为他训练神经网络时关注的是实验的对数损失,对吧?所以,很容易看出对数损失有没有下降。但在许多真实场景中,浏览器智能体面对的情况并非如此。正如我解释的,订没订到机票可能很容易判断,但有没有为我找到最合适的航班选项,就比较模糊了,也未必能确定。嗯,如果我理解得没错,你的意思是,循环中的一个错误就可能让整个自动研究过程偏离方向。Guest: Yeah. Exactly. Uh so I think the question is like how do you know that the auto research loop is accurate whether it is converging and when it says it's converging it's actually converging. When it says it's good it's actually good. When it says it's bad it's actually bad. like how do I have confidence uh on what the agent is saying and what the loop is doing. I think that's where I want to sort of talk about the verifiable outcome here. Uh for Karpathi, it was quite easy because he was looking at the log log loss of the experiment when he was training neural networks. Right? So it's very easy to see whether your log loss has gone down or not. Uh but in many real world scenarios that is not the case for browser agents. As I explained, uh, whether you book a flight ticket or not, that might be straightforward, but did you find the best flight options for me might be slightly fuzzy uh and might not be the best uh Yeah, if if I understand this correctly, you're saying like one mistake in the loop can sort of throw off the entire auto research run.
呃,那你们怎么防止这种情况呢?我、我、我确实见过一些迭代失败的情况。呃,比如说,我们看上一张幻灯片,成功之后还是会出现失败,对吧?所以,并不是说一旦成功,之后的所有迭代就都会一直成功。但我认为,你可以通过循环的设计,让它能够抵御失败,不会过度看重这些失败,而且仍能以某种方式正确地保护自己,避免受到之前运行中发生的错误的影响。呃,我想我们是想防止那种……他们管这叫什么来着,损失爆炸之类的情况。呃,我觉得你可以做到这一点。事实上,Karpathy 谈过这个:这就是进行自动研究的一种方式。你甚至可以针对自动研究本身的不同做法进行自动研究。Uh and how do you prevent against that? I I I have actually seen where some uh iterations actually fail. uh for example if we uh look at the previous slide uh there's like failures happening after there have been successes right uh so it's not always that once you succeed all the future iterations will always be successful but I think it's the design of your loop where you can make it resilient to u failures uh where it doesn't overindex on those uh and still sort of correct protects itself uh from any mistake that happened in previous runs. Uh I think we're trying to sort of prevent like uh what do they call like exploding sort of loss sort of scenarios. Uh I think you could do that. Uh in fact Karpathi talks about this like this is one way of doing auto research. You can actually auto research on different ways of doing auto research itself.
呃,教师-执行者循环是不是最好的?要实现这一点,是否应该采用多智能体架构?还是说,对于神经网络研究任务来说,有没有比浏览器智能体更有效的其他方法?对吧?你可以设计不同的循环,来避免这类情况。呃,我想回到我刚才的观点:只要有可验证的结果,或者某种可量化的指标,我认为你就应该……Uh it's like is the teacher doer loop the best? Should there be a multi-agent architecture to do this or is there any other approach that might actually work better for research tasks in neural networks versus browser agents? Right? You could have different designs of your loops to prevent situations like those. Uh and I think going back to my point, as long as you have a verifiable outcome or some quantifiable metric, I think you should
投资回放环境Invest in the replay environment
能够在这里设计一个不错的循环。可重放的环境,我觉得有时候讨论得不够,但它极其重要。我记得他谈到 Darkh 时说,可验证的结果很重要,但你也应该有极其适合反复试错的环境,或者极其适合反复试错的用例,对吧?如果你的智能体无法在失败中不断尝试,它就很难进行多轮迭代并自我修正。编程智能体就是个很好的例子,因为你可以从一个 Docker 镜像开始,也可以从某个特定的 EC2 实例开始,还可以从技术栈的不同环节重放。不过,知识工作可能就没那么容易重放了。也许其中有很多不同的人在回路中的操作,导致很难从某个特定时间点开始重放。be able to design uh a good uh loop here. uh replayable environment I think sometimes is under discussed uh but extremely important. I think he was talking about Darkh he said having a verifiable outcome is important but also you should have uh extremely grindable environments or extremely grindable uh use cases as well. Right? If your agent cannot uh grind through failures, it will be difficult for it to uh go for multiple iterations and fix itself. Uh so do you have like coding agents is a good example because you can start from a docker image or you can start from uh a particular EC2 and and you can replay from different parts of the uh stack. Uh but maybe uh knowledge work is probably not that easy to replay. uh maybe there's like a lot of different human in the loop actions that make it very hard to replay from a particular point in time.
所以在这些情况下,投入到你的环境中也会非常……有回报。太棒了。我想分享一下今天演示的 auto browse loop 的网址。扫描二维码就能找到它的 GitHub 页面。旁边第二个二维码则是这个 skill 本身。你只要在 Claude Code 或 codeex 里输入 /auto browse,然后说:“嘿,/auto browse,请在 teacher 和 doer 这两边都使用 opus48,帮我创建一个能完成这件事的 skill。”我正在看其中一个问题。如果你们有任何想让智能体尝试解决的问题,欢迎输入 Slido,我们可以现场试试看。好,我们来看看这个。So investing in your environment also can be super uh rewarding in these cases. Amazing. Uh I just wanted to share the uh URLs of uh the auto browse loop that I uh demoed today. So if you scan the QR you'll be able to pull the uh GitHub for that. Uh and also the second QR here uh is the skill itself. You can just do /auto browse on your claude code or codeex and be like hey /auto browse use opus48 on both of these uh teacher and doer and go create a skill for me to do this. Uh I'm looking at one of these questions. Uh and also if any of you have ideas of something we want to sort of put the agent against feel free to type it in the slido and we can actually try it live. Uh but let's look at this
收敛性、迭代成本与基础设施Convergence, iteration costs, and infrastructure
问题:有没有办法针对收敛进行优化?呃,我觉得这和我们刚才讨论的是同一个问题。呃,高成本这点挺有意思,因为你可能会觉得,进行更长时间的迭代会让成本随着时间推移变得更高。呃,我在这方面做过不少评估:可以用 Sonnet 来处理这个问题,但让它进行更多轮迭代;也可以用 Opus,但迭代次数少一些。我觉得用 Sonnet 进行更多轮迭代也能完成同样的工作,而且总体成本还是更低。呃,而且这些成本是摊销的,对吧?我们可能会运行的一个自动浏览循环,大概花 30 到 40 美元;如果特别复杂,最多也就 100 美元。呃,所以只要这些成本对你来说合理,足以支持你在生产环境中部署,那就放手去做吧。呃,不过,评估你生成的这类循环,还有很多有意思的事情可以做。question. Is there a way to optimize for convergence? Uh I think this is the same question that we were just talking about. Uh high cost is interesting because you might think that u doing longer iterations might become costlier over time. Uh I have run a bunch of evals on this where I can throw a sonnet at this problem but run it for longer iterations versus throwing opus for lesser iterations. I think you can get the same job done by throwing sonnet larger number of iterations but still cheaper overall. Uh also this cost is amotized right like one auto browse loop that we probably run is like maybe $30 $40 if it's super complicated $100 at most. Uh so this is amotized as long as those costs make sense for you uh to deploy this in production uh just go for it. Uh but there's a lot of interesting things uh that you could do uh with evaling the kind of loops that you're generating.
呃,是的,我也会分享幻灯片。呃,我可以直接在 GitHub 上分享。呃,你能说说你是怎么考虑从自动研究转向自动浏览的吗?呃,我的意思是,这个过程相当直接。呃,我拿了 Karpathi 发布的 GitHub 仓库,然后还有很多关于我客户的背景信息。比如,我会想:“嘿,这些客户遇到了这类可靠性问题。”我为他们解决问题的方式,就是去他们的办公室,和他们坐在一起,以非常贴近一线的方式开展工作,然后试着用蛮力解决问题,并通过逆向工程弄清楚情况。这就是我做的事。所以我是教师代理。呃,你能把我从这个过程中自动化掉,借鉴 Karpathi 的做法搭建一个循环,然后做出同样的东西吗?当然,在此基础上还进行了很多轮迭代。呃,为了简化这一切,也做了很多工程工作。Uh yes I will share the slides as well. Uh I can do this on the GitHub itself. Uh can you share how you thought about uh auto research into auto browse? Uh I mean the process was fairly straightforward. Uh took the GitHub repo that Karpathi put out uh and then there's all this context about my customers uh that I have uh where I was like hey these customers face these kinds of reliability problems uh the way I solve it for them is I go into their office I sit with them very forward deployed uh and I try to sort of just brute force and reverse engineer this. This is what I do. So I am the teacher agent. Uh can you automate me out of the process and create a loop borrowing from uh Karpathi and and and and build the same thing? And of course there's a lot of iterations on top of that. Uh there's a lot of engineering as well uh to simplify this.
嗯,是的,这就是转换它的过程。可以在代理中使用它吗?可以登录网站吗?可以。嗯,这又回到了你设计的环境。嗯,基于浏览器的基础设施支撑着这一切,它能让你登录网站、保存 Cookie,并在后续运行中重复使用这些 Cookie,这样你就不必每次都登录。嗯,这让你可以非常轻松地复现真实世界中的工作流。嗯,是的,你也可以使用代理。如果你有特定的 IP 地址,比如住宅 IP 地址,也可以接入。嗯,能否取得成功,在很大程度上取决于你的基础设施和环境有多完善,尤其是在验证码和反机器人机制这类对抗性场景中。嗯,因此,尽可能完善基础设施确实很有价值。Uh but yes, that was the process of converting this. Can you use this in a proxy? Can you be logged into a site? Yes. Uh again this goes back to the environment that you design. Uh browserbased the infrastructure that all of this is running on uh gives you the ability to log into websites uh save the cookies uh reuse those cookies in future runs so you don't have to log in every time. Uh makes it super easy for you to uh replicate real world workflows. Uh and yes you can use proxies as well. If you have uh particular IP addresses, residential IP addresses, you can bring those in as well. Uh a lot of success is definitely how good your infrastructure and environment is, especially in these adversarial scenarios, uh like captures and antibots. Uh so making the infrastructure as good as possible is definitely of value.
太棒了。有没有、有没有什么请求是我们可能想要实时运行的?有。问题。Amazing. any any asks for something that we might want to run live? Yes. Question.
阅读实现代码和跟踪记录Read the implementation and traces
主持人:很棒,这是个很好的问题。其实我也想顺便展示一下代码。呃,如果你看一下 GitHub,就能找到这个 evaluate.mjs 文件。呃,它基本上列出了整个循环。呃,这里发生了什么?呃,回答你的问题:在每一轮中,教师和执行者会依次工作。教师会在每次迭代中找出经验教训。呃,也许我可以在这里展示一下演示,呃,我们来看刚才做的那个。第一轮总结出了这些经验教训,第二轮则总结出了另一些经验教训。对吧?你应该用这个特定格式写出明确的 ISO 日期。第三轮还会总结出其他经验教训。日期解析仍然会打开空白页面并点击,浪费三个回合,呃,去读取今天的日期,呃,或者让执行者计算出今天的日期。Host: Great, great question. Actually, I wanted to sort of show the code as well. Uh so if you uh look at the GitHub, you'll be able to find this evaluate.mjs file. Uh essentially, it lists out the entire loop. Uh what's happening here? Uh but to answer your question, the teacher and the doer are u working one after the other for every loop. So the teacher is finding learnings in every iteration. Uh maybe if I show the demo uh over here uh let's go to the one we just did. Iteration one had these learnings and then iteration two had some other learnings. Right? you should include the explicit ISO date in this particular format. Iteration three would have some other learnings. The date resolution still opens the bare page and clicks wasting three turns uh reading today's date uh or having the executor compute today.
所以,它是在弄清楚一些与日期时间有关的事情。每次迭代中,教师都会学到新东西,并把它写回 strategy.mmd。也许我可以看看其中一次运行的轨迹,让这个过程变得更具体。嗯,这些就是我的所有运行记录。比如,这是一个开放式餐桌预订的示例,而这就是教师每次都会追加内容的 strategy.mmd。比如说,步骤零,你应该这样做,诸如此类。这是任务,也是我给它的提示:帮我查找 Big B Bigs 餐厅的预订信息。这些就是它从中学习的轨迹。它会截图,并在每一步记录这类轨迹:执行浏览器打开操作,这是输出结果。然后是第二轮,浏览器快照。So it's figuring out something about the date time. So in every iteration the teacher is learning something new and putting this back into the strategy.mmd. Maybe I'll make this real by looking at the traces for one of these runs. Uh so over here these are all my runs. Uh so for example this was the open table reservation example u and uh this was the strategy.mmd that the teacher sort of appended to every time. So uh step zero you should do this so on and so forth. Uh this was the task this was the uh prompt that I gave it. Find me reservations for the big B bigs restaurant. uh and these were the kind of traces that uh it was sort of learning from. It would take screenshots would take these sort of traces at every step is doing browse open this is what the output is. Then turn number two browse snapshot.
Snapshot 本质上会获取无障碍树,这就是快照。它会读取整个内容,并在每一步都判断哪些地方做对了、哪些地方出了问题。嗯,我是说,这就像机器码一样。呃,我就不展示全部内容了。不过,它在每次迭代时也会写下这样的摘要。嗯,所以你还可以做很多工程上的调整,让它适应你的领域。呃,阅读这个最简单的方式,就是我们也把它发布在 skills.sh 上了,在 Auto Browse 里,你可以大致这样操作。Snapshot essentially takes the accessibility tree and this is the snapshot. So it's reading this entire thing and at every step thinking of like what went right and what went wrong. U yeah I mean this is like machine code. uh I won't show this entire thing. Uh but yeah, this is the summary that it also writes uh at every iteration. Uh so yeah, this there's a lot lot of like engineering tweaks that you can do to suit this to your domain as well. U and uh like the easiest way to uh read this is we put it out here on skills.sh as well uh in auto browse u and you can sort of do something like this.
每项任务一个技能,还是一个通用技能?One skill per task or a general skill?
好问题。问得真好。我觉得这又回到了这样一个问题:你要如何提高智能体的可靠性。可靠性是一个工程问题。你可以设计你的运行框架,让它针对每项任务采用一种技能;也可以说:“嘿,无论你遇到什么任务,都用同一种技能。”我觉得这完全取决于你如何进行运行框架工程,也完全取决于你的使用场景。你可以用所有这些不同的策略进行评测,看看哪种最适合你。对我们来说,这是……嗯,是的。Great question. Such a good question. I think that goes back to like how do you increase the reliability of your uh agents. Uh reliability is an engineering problem. Uh you can design your harness to sort of go for one skill for each task or you can be like hey one skill for every task that you will ever see. Uh I think it entirely depends how you do the harness engineering entirely depends on the use case that you have u and you run evals with all these different strategies uh and see which one works for you. for us. This was Yeah. Yes.
嘉宾:是的,是的。这又是 harness 发挥作用的地方。如果 harness 足够智能,能够调用 OpenTable、Resy 和 Google Reservations 的技能,也许就能把这些都整合起来,找出为我预订约会之夜的最佳方式。这就是你的解决方案,对吧?也就是说,harness 应该能判断该用哪些工具来完成任务。我会这么做:找出客户最常见的使用场景。针对这些场景,最合适的技能文件、提示词和工具是什么?也许你会为特定场景设计专用工具,对吧?也许你会为所有场景设计通用工具。这里的争论也是一样:是每种场景各做一个技能,还是所有场景共用一个技能?然后对所有这些策略进行评估,让 harness 自己作出判断。Guest: Yeah. Yeah. And this is where again the harness comes into the picture. If the harness has the intelligence to bring in skills from Open Table and from Resi and Google res Google reservations, maybe it can bring all of those in to figure out what is the best way to book me a date night. That's your solution, right? Like the harness should be able to uh figure out which tools to use to get the job done. That's like how I would go about it. uh figure out what are the most common use cases that your customers have for those use cases. What's the best scale files, prompts, tools, maybe you want to do like specific tools for specific use cases, right? Maybe you want to do generic tools for all use cases. Like that's the same argument here is like do you do one skill for each or one skill for all uh and eval across all of these strategies and and let the hardness figure it out.
是的。Yes.
主持人:是的。对。我的意思是,这和这个概念非常相似,对吧?呃,就是 DSPY。Host: Yes. Yeah. I mean it's a very similar concept as this, right? Uh so DSPY.
嘉宾:是的。我觉得那些人确实发现了很酷的东西,比如他们大概三四年前就开始构建 DSP 和 Japa 之类的东西。我觉得,呃,我们也一直在沿着这些方向做很多研究。Browserbase 与微软合作。我们实际上发表过一篇论文,讲的是如何构建合适类型的……Guest: Yeah. I I think those guys were on to something really cool like they were around like 3 four years ago where they started building DSP and Japa all of that. I think uh we have been doing a lot of research uh along these lines as well. Browserbase works with uh Microsoft. We actually released a paper uh about how to build the right sort of
验证器、存储与技能维护Verifiers, storage, and skill maintenance
为你的智能体构建验证器。嗯,我觉得运行评测很简单,直到你开始追问:好吧,我该如何评测我的评测?也就是说,我需要安排这么多人工审核所有这些运行结果吗?还是说我可以在这里构建一个不错的验证器?这一切也会用到这些论文中的经验。我也可以把这些内容都分享到 GitHub 上。我再看看这里有没有新的问题。 这些技能是在哪里存储的?又是如何大规模检索的?嗯,目前这个仓库里的所有内容都存储在我的云端。所以这些都是一个个规模文件。这是我的食谱搜索器。昨天我想做顿晚饭,于是就说:“嘿,给我推荐一些食谱。”嗯,目前这些都在我本地的 skills 文件夹里。不过,如果你想把它部署到生产环境,当然可以把它集成到智能体的执行循环中。verifiers uh for your agents. Uh I think running evals is straightforward until you start questioning okay how should I eval my eval right like do I need to put all these humans to verify all these runs or is there a good verifier that I can build here and all of that u uses the uh learnings from uh these papers as well. I can share all of that in the GitHub as well. I'll also see if there's any new questions here. Where and how were these skills stored retrieved at scale. Uh right now for this repo uh all of these get stored in my cloud over here. So each of these is a scale file. This was my recipe searcher. Uh I wanted to build some I wanted to cook some dinner yesterday. So I was like, "Hey, make me some recipes." Uh, so all of these are currently in my local uh skills folder. Uh, but if you want to ship this uh in production, of course, you can uh bake this into your agent loop.
呃,或者如果你愿意,我觉得对于 browse.sh 上公开提供的那些技能,我们是用 Vercel Blob 存储来保存所有这些技能,并按需提供。希望这能有所帮助。呃,网站经常变化。你们监控网站并保持网站技能更新的 STR 策略是什么?是啊,这是个特别好的问题。呃,这正是我之前提到的:你要如何让这些技能保持最新,因为网站会发生变化。我们目前的工作假设是,你不想每天都运行自动研究,白白浪费 token。你可能希望在生产环境的某个环节发生故障时触发它,对吧?所以我们会构建这样的循环或系统:一旦遇到任何生产故障,就运行一个自动研究循环,找出问题所在并修复它,然后创建一个拉取请求,直接交给人工工程师,由他们自动修复。Uh, or if you want to I think for browse.sh the public uh publicly available uh skills that we have, I think we use versel blob storage to store all these skills uh and make them on demand. Hope that helps. Uh, websites change frequently. What's your STR strategy for monitoring that and keeping the website skill updated? Yeah, this is such a great question. Uh, and this is what I was alluding to earlier is like how do you keep these skills up to date because the website's going to change. The the current working theory that we have right now is you don't want to waste tokens running auto research every day. you want to probably trigger or if it's failing at any particular point in production, right? So, we build these loops or like systems where as soon as we run into any production failure, we run an auto research loop to see what went wrong to heal it, create a pull request, that goes directly to a human engineer and they fix it automatically.
技能会得到更新。呃,是的,所以确实存在这种情况:可能会出现生产环境故障。不过这是一种权衡。你可以运行自动研究,也可以每隔两三个小时运行一次样本,看看技能是否运行正常。所以有不同的方法可以通过 cron 作业来检查这些技能的准确性。这其实是我目前正在和客户积极合作、准备实施的一件事。而且还有各种各样的问题,对吧?人们并不要求 100% 的准确率;他们可能更希望成本便宜 10 倍。所以,呃,这就是会出现的问题:你们的评估标准是什么?The skill gets updated. Uh so yes there is that notion of like production failure when this might happen. Uh but it's a trade-off. You can run an auto research or you can run a sample run every 2 hours every 3 hours to see if the skill is working uh perfectly. So there's different ways of having the uh cron jobs uh check for the accuracy of these skills. This is actually one thing that I'm actively working on with the customer right now to implement. And there's all these questions, right? People don't want 100% accuracy. People might want like 10x cheaper cost. So like uh that's the uh question that comes up. What's your teachers criteria
选择一个优化目标Choose an optimization objective
这里的例子中呢?除了达成目标之外,似乎还会针对轮次做一些优化。你们还会使用哪些其他标准?呃,再说一次,这就是自动研究循环的设计。有一种方式是告诉你的自动研究流程:“嘿,我只想关注成功。只要你让我成功就行,直接把结果给我。”这通常不是每个人都想要的。人们还想尽量降低延迟,因为这可能是一次实时运行,你关注的是能多快完成任务。呃,如果优化指标是这个,而且你专注于尽可能快地完成任务,我有时会发现,这些自动研究循环非常聪明,能意识到根本不需要浏览器,于是它们会逆向分析 API 并直接调用 API——这是你能达到的最快速度。here in the example? Separate from reaching the goal seems to do some optimizations for turns. What other criteria do you use? Uh so again this is the design of the auto research loop. Uh there's one way of telling your order research that hey I want to focus on just success. As soon as you get me success I'm fine just give that to me. Uh that's typically not what everybody wants to do. Uh people want to minimize on uh latency. Uh because maybe this is a real time run where you're focused on how quickly can you get the job done. U so if that is the optimizing metric and you focus on getting it as fast as possible. What I've seen sometimes these auto research loops are so smart they realize that browsers are not needed at all and they just reverse engineer the API and they fire the API and that's the fastest that you'll ever get to.
对吧?呃,有时候我见过一些情况,它能在 500 毫秒内找到可行的解决方案。有时候关键在于轮数,对吧?你想尽量减少上下文循环,也想尽量减少完成任务所需的轮数。呃,就我而言,我想我做的事情是:你可以自行决定何时暂停它,让它交接或收敛。我其实不太在意成本。呃,我最看重可靠性。所以,只要你觉得有意义,就继续做下去;至于什么时候收工,就交给教师代理来决定。不过,是的,你可以尝试各种不同的……Right? Uh so sometimes uh I've seen situations where uh it finds a solution that works in 500 milliseconds. U sometimes it is the number of turns, right? you want to minimize your context loop uh and you want to minimize the number of uh turns it takes to complete the task. Uh in my instance, I think what I have done is it's your decision to pass or converge whenever you want to pause it. I'm not really concerned about the costs. Uh I care most about reliability. So keep doing it as long as you feel it's relevant and then it's the teacher agent's job to uh call it day when it wants to. But yeah, you can uh try all different
WebMCP 与结果相关的问题WebMCP and outcome questions
策略。呃,如果一个网站支持 WebMP,会用到它吗?WebMCP 太酷了。呃,它本质上就是这个概念。我不知道大家是不是都知道,它的概念就是让你的网站变得可编程。它最近随着新版 Google Chrome 的发布而推出,你可以告诉你的网站:如果有人想预订,可以在网站上执行某些操作。它有点像 API,但运行在浏览器里。呃,我觉得目前我们的研究流程还不支持这个。不过我觉得要实现它也不会太难。呃,事实上,我们最近在推出的 SDK 中加入了对 WebMCP 的支持。我们还为网站所有者开发了一些工具,让他们能够大规模部署 WebMCP。不过,这确实挺有意思的。到目前为止,我们还没看到 WebMCP 被广泛采用。strategies. Uh if a website supports WebMP, will this use it? WebMCP is so cool. U it's essentially this concept. I don't know if everybody knows this, but it's this concept of like making your website programmable. It's it's come out in this new Google Chrome release recently where you tell your u website that if anybody wants to book a reservation they can do xyz on the website. It's kind of like an API but it's on the browser. Uh right now I don't think our oral research loop supports this. Uh but I don't think it would be uh too hard to do that. Uh in fact we recently shipped support for WebMCP with our SDKs that we launched. Uh we also made some tools for website owners to ship web MCPS at scale. Uh but yeah this is an interesting one. We've not really seen a lot of adoption with Web MCP as yet.
嗯,通关的真实标准。这挺有意思的。嗯,我觉得只要任务完成了就行。比如说,在 Google Flights 上找到了最便宜的航班,或者在 OpenTable 上找到了预订,那它就会自行评估。通常是二元的。嗯,是的,我再说一次,我完全接受“苦涩的教训”。我尽量不在这些评估中设置太多护栏。 嗯,你们有没有考虑过为浏览任务提供验证器即服务,其中包括一种可以模拟某些副作用的功能,比如购买? 嗯,我可能得追问一下。你说的“验证器即服务”是什么意思?Ravish,如果你在的话。 是的。嗯,你的意思是,嗯,如果我理解得没错,你们有不同的环境可以用于强化学习训练,你们想模拟一下会发生什么。比如说,如果我在复制亚马逊,点击购买之后会发生什么—— 不,因为嗯,我们更倾向于依赖真实世界的网站。Uh ground truth for pass. That's interesting. Uh I think as long as the job was done as long as for example in Google flights uh if it found the cheapest flights in open table if it found a reservation uh so it it evaluates itself. It's typically a binary uh and yeah again I I I fully embrace the bitter lesson. I try not to put many guardrails in uh these evaluations. Uh, have you considered a verifier as a service for browsing tasks, including something that allows us to mock certain side effects like purchases? Uh, I might have to ask uh a followup on that. What do you mean by verifier as a service? Ravish, if you're here. Yes. Uh so uh do you mean that yeah if I understand this correctly like you have like different environments that you can use for RL training and you want to like mock what happens if I am replicating Amazon if I click on purchase what happens after Uh no because uh we try to rely more on real world websites.
呃,Browserbase 的优势在于,我们能够访问大多数网站,还能处理各种不同网站的访问权限,以及验证码求解器等。呃,所以我们尽可能地模拟真实世界。不过,我们看到很多这类强化学习环境,人们会模拟网站来训练和构建浏览器智能体,让它们非常擅长浏览 Salesforce、SAP 等网站。呃,我们尽可能在真实世界的门户网站上实现这一点。[哼了一声] 边缘验证码对技能来说容易绕过吗?还是说这是出于代币激励?呃,网站所有者为什么要用边缘验证码?如果我理解没错,边缘验证码是一种特定类型的验证码,有点像 Google reCAPTCHA 之类的。呃,这个我可能会另开话题来谈。呃,我觉得我们不能讨论具体能解哪些验证码、不能解哪些验证码。Uh browser base we have the privilege of being able to access most of the web with our uh access to different websites uh and capture solvers etc. Uh so we try to mimic the real world as much as possible but we've been seeing a lot of these RL environments where people are mimicking websites to train uh and build browser agents that are uh really good at like browsing Salesforce, really good at like browsing SAP. Uh we try to do that on real world portals as much as possible. [snorts] Are edge captures easy for the skill to move past or is it token incentive? uh what is the point of edge captures for website owners? Edge capture if I'm understanding this is like a particular kind of capture. It's kind of like Google recapture etc. uh yeah I would probably talk about this separately. Uh I don't think we can talk about like what it what captures we can solve or not.
呃,但严格来说,这并不是一项 token 密集型工作,因为它是由基础设施层来完成的,对吧?呃Uh but it's not a token inensive job per se because it's an inf like it's thing that's done at the infrastructure layer, right? uh
评估、毕业与可移植性Evaluation, graduation, and portability
我们其实不需要用 AI 来解决 CAPTCHA。呃,这个问题是在 Chrome 二进制层面解决的。呃,我们开箱即用就能做到。教师如何评估执行者?技能标记何时算是成熟?是的。呃,它基本上是通过读取这些执行轨迹来评估执行者的。呃,每次迭代都会创建一个文件夹。呃,里面有这些 JSON 文件。呃,它会读取这些文件,它有一个 Claude Agent SDK 循环,呃,基本上会弄清楚这个循环有哪些收获。呃,实际上我想我最后有一张幻灯片讲到这个。对。呃,这有点像这个任务的提示词,里面说你是一个浏览器自动化代理。你可以使用这些工具,呃,而且每次迭代都会注入 strategy.md,这就是教师评估执行者工作的方式。we don't really need to use an AI to solve a capture. Uh it's solved at the Chrome binary layer. Uh and we do that out of the box. How does the teacher evaluate the doer and when is the skill markers graduated? Yes. So uh it evaluates the doer by essentially reading these traces. Uh for every iteration there is this folder that gets created. uh there are these uh JSON files. Uh it reads these uh it has a clawed agent SDK loop uh and it essentially figures out what the learnings from that loop are. Uh actually I think I have a slide that talks about this at the end. Yeah. Uh this is kind of like the prompt for this uh where it says that you're a browser automation agent. You can use these tools uh and the strategy.md gets injected at every iteration and this is how the uh uh doer the teacher evaluates the doer's job.
呃,所以,是的,它会读取追踪记录,获取系统提示和之前的策略,然后想出一个更好的策略。[嗤笑] 真棒。呃,希望我们已经回答了所有问题。呃,现场还有其他想讨论的问题吗?有。Uh so yeah it reads the traces it has the system prompt it has the previous strategy and it comes up with a better strategy. [snorts] Amazing. Uh I hope we've covered all the questions. Uh any other questions live that we might want to talk about? Yes.
主持人:是的,它可以与 Stagehand SDK 配合使用,也可以在你的 Claude Code 中运行。呃,它本质上就是一个 Markdown,对吧?呃,我拿了一个 skill,然后问我的 Claude Code:“你能帮我查一下旧金山这个星期五(7 月 3 日)有哪些活动吗?”然后它就接着完成了。所以它不一定要基于浏览器,也不一定要用 Stagehand。它本质上是一项 skill,是一种可移植的产物,可以在任何 agent 或任何 SDK 中使用。Host: Yeah, it can work with the stage hand SDK. It can work in your cloud code. Uh it's essentially a markdown, right? Uh I took uh a skill and I told my clot code, can you find events in SF for this Friday, July the 3rd? and went on and did this. So it it need not use browser base. It need not use stage hand. It is essentially a skill. It is a portable artifact you can use in any agent or any SDK.
提示注入与分层控制Prompt injection and layered controls
是的,是的。好问题。我想,如果我理解得没错,你是想问如何防止提示注入?呃,因为网站可能会诱骗我的自动研究循环学到不好的东西,导致它在生产环境中执行某些恶意行为。呃,我们有几种应对方法。一种是在基础设施层面。呃,我们对浏览器本身设置了不少防护措施。呃,我们有一种基于浏览器的安全模式,可以控制它能访问哪些 URL,也可以控制它能在不同网站上执行哪些类型的操作。所以在基础设施层面,也就是网络防火墙上,我们会加以控制。你可能会说,Amazon.com 有朝一日也可能遭到黑客攻击。那我们如何防止这些门户网站上发生恶意操作呢?呃,我想我们还会尝试在实际发布到 browser.sh 之前,让生成的技能通过某种安全审查代理的检查。Yeah. Yeah. Great question. I think if I understand this correctly, how do you prevent against prompt injection? Uh because websites could trick my auto research loop in learning something bad that can do some malicious behavior in in a production setting. Uh there's a few ways we do that. One is at the infrastructure layer itself. Uh we have a bunch of uh protections around our browsers itself. Uh we have this browserbased safe mode where you can sort of control which URLs it can go to. You can control what kind of actions it can take on different websites. So at the infrastructure layer, at the network firewall, we control things. Now you might say that it is possible that Amazon.com gets hacked someday. How do you prevent against like malicious actions on those portals as well? Uh I think we also try to uh run our skills that are generated against some security uh reviewer agent of sorts uh before we actually publish this on browser.sh.
呃,这算是一种做法。呃,我们鼓励客户建立完善的提示注入防护措施,覆盖足够广的范围。呃,尤其是当他们把这项功能提供给消费者时。呃,举个例子,我们有些客户可能想在 Amazon 上自动执行某些操作。要是有人在 Amazon 上发布了一个包含隐藏指令的商品信息,该如何防范这类情况呢?呃,这就是我们与客户合作,在指令到达硬件之前建立适当防护措施的地方。嗯,所以我认为这里可以分成三层。第一层是在查询进入我们的作用范围时就进行控制;我们会在技能层面确保技能不会被诱骗;在基础设施层面,我们会设置网络限制和操作限制。Uh so that's like one way of doing it. uh we encourage our customers to have uh a good level of uh prompt injection guardrail uh surface area uh if they're sort of giving this out to c consumers uh for example some customers of ours uh might want to automate something on Amazon and what if somebody puts uh a listing on Amazon which has some hidden instructions and how do you prevent against those kind of things uh and that's where uh we work with our customers to build the right kind of uh guardrails before the uh instruction even reaches the hardness. Um so yeah I think I would put like three layers here. One is as the as the query is even entering our surface area we control that at the skill layer we make sure that our skill is not uh tricked and at the infrastructure layer we have network restrictions and action restrictions.
你甚至可以像 Codex 或 Plot Code 那样做,比如选择始终允许、仅允许一次,或允许任何操作。呃,这就是基于浏览器的安全模式开箱即用所提供的功能。我知道,仔细想想,浏览器是个很可怕的威胁载体,因为它可以访问开放网络上的任何内容。呃,从提示注入的角度来看,一定要对此高度重视。太棒了。如果还有其他问题,我再等 10 秒。这次交流很有趣,我真的很享受。我也很喜欢大家提的这些问题。呃,好,我会把二维码重新放到屏幕上,以防你们有人想扫码获取。好的。You can even do something like what codeex or plot code does u like always allow or allow once or allow any action. Uh you can this is what like browserbased safe mode offers out of the box. I know browser is a crazy threat vector when you think about it like it has access to anything on the wild web. Uh and take that super seriously from a prompt injection POV. Amazing. I'll wait for 10 more seconds if there's any other questions. This was fun. I really enjoyed this. I love the kind of questions as well. Uh and yeah, I will put the QR code back on screen in case any of you want to grab this. Yes.
监控漂移并触发修复Monitor drift and trigger repairs
是的。Yeah.
嘉宾:是的,是的,没错。是的,我想我们之前聊过这件事。你可以这样做:我之前经常使用 Anthropic 托管代理。我会在托管代理上运行一个 cron 作业,告诉它每天上午 9 点使用这个技能来完成这项任务;如果成功了就没问题,如果失败了,就在这里给我发一条通知,这会触发一个自愈循环。这样我就能在网站变更、反机器人机制变更等情况周围加入一些检查和平衡机制。我会留在这里。另外,整个会议期间,我每天都会在基于浏览器的展位那边。如果你感兴趣,想多聊聊,我很乐意。谢谢。Guest: Yeah. Yeah. Exactly. Yeah. I think we talked about it a while back. What you could do is like I used uh entropic managed agents quite a bit. Uh so I would run a chron job on managed agents where I would say use this skill every day at 9:00 am to do this job and if this is a success all good if this is a failure send me a notification here that will trigger a healing loop uh so that's how I sort of can bake in uh checks and balances around websites changing antibbots changing etc. I'm going to hang around here. Uh also uh I'll be at the browserbased booths all days of the conference as well. So uh in case you're curious and want to chat more uh love to do that. Thank you.