详情介绍
Stagehand是一个重塑浏览器自动化体验的开源工具。它由Browserbase公司开发和维护,核心思想是解决传统自动化脚本脆弱、难以维护的痛点。传统工具如Playwright或Puppeteer需要开发者精确定位每一个页面元素,一旦网页结构稍有变动,脚本就失效。Stagehand引入AI层,让开发者可以用日常语言描述目标,比如“点击登录按钮”或“提取所有产品名称和价格”,由AI来负责理解和执行具体的页面交互。这种方式极大地提高了自动化脚本的鲁棒性和开发效率,特别适合处理结构动态变化或复杂的现代Web应用。
官网入口地址
根据您提供的信息,官网和开源项目地址如下,但请注意官网地址已变更。
下载地址
Stagehand是一个Node.js库,您可以通过npm或yarn等包管理器将安装到您的项目中。具体的安装命令和使用方法,需要在GitHub仓库的README文件中查看。
-
npm安装命令示例(具体命令请以官方文档为准):
npm install @browserbase/stagehand
功能介绍
根据您的描述,Stagehand的功能亮点主要集中在AI与代码的融合上:
-
代码与自然语言混合编排:这是Stagehand最核心的特性。它不强制用户二选一,而是允许在同一个脚本中无缝切换。对于稳定可靠的部分(如已知ID的元素),可以继续使用Playwright的精确代码;对于易变或难以定位的部分,则可以用自然语言指令交给AI处理。,先用代码登录,然后用AI指令“跳转到个人设置页面”。
-
AI驱动的页面导航与操作:通过
page.act()这样的API,您可以传入“把鼠标悬停在第一个商品上”这样的自然语言指令。Stagehand的AI模型会理解意图,分析当前DOM结构,并执行相应的操作,如移动鼠标、触发悬停事件。 -
AI驱动的数据提取:通过
page.extract()等API,您可以描述想提取的数据,“提取这篇新闻文章的作者和发布日期”。AI会智能地定位页面上的相关信息并以结构化的JSON格式返回,无需编写复杂的选择器逻辑。 -
动作预览与缓存:为了提高可靠性和效率,Stagehand提供了在执行AI指令前进行预览的机制,让开发者确认AI理解是否正确。同时,它能够缓存常见操作的模式,避免重复调用AI,从而加快执行速度并降低成本。
-
多模型支持:框架设计为与多种AI模型兼容,允许用户根据成本、速度或效果选择底层驱动,OpenAI的GPT系列或Anthropic的Claude系列。
应用场景
Stagehand的应用场景覆盖了传统网页自动化的各个方面,并凭借AI特性拓展了更多性:
-
健壮的网页测试:编写更不容易因UI微调而失败的端到端测试。,测试一个购物流程,可以用AI指令“将商品加入购物车并进入结算页面”,替代一系列脆弱的点击和等待指令。
-
智能数据抓取:从结构不规则或经常变化的网站上抓取数据。可以轻松处理各种反爬措施和动态加载的内容,专注于需要什么数据,而不是怎么找数据。
-
工作流自动化:自动化重复的网页操作,如在多个后台系统间同步数据、自动填写复杂的多步表单、定时从SaaS平台下载报表等。
-
AI Agent的“手”和“眼”:为更高级的AI Agent提供与真实世界网页交互的能力,让Agent能通过Stagehand自主完成任务,比如根据用户指令在网站上预订酒店。
补充必要信息
-
开发公司:Stagehand由Browserbase公司开发,该公司专注于提供基于云的浏览器基础设施和自动化解决方案。
-
定价:Stagehand本身是开源且免费的框架(基于MIT许可证)。但请注意,使用AI功能需要您自己提供第三方AI服务(如OpenAI)的API密钥,这部分调用会产生相应费用。
-
开源生态:作为开源项目,它鼓励社区贡献。与Playwright的深度集成意味着使用者可以充分利用Playwright庞大的生态系统和调试工具。
Stagehand常见问题
Stagehand是由Browserbase这家公司开发的,他们主要做浏览器基础设施,这个框架是他们开源的一个自动化工具。
它的官网是stagehand.dev,但目前好像打不开。它的代码和文档都托管在GitHub上,地址是 github.com/browserbase/stagehand 你可以去那里查看的情况。
Stagehand可以理解为是Playwright的“AI增强版”。它把AI能力加进去,让你可以用大白话指挥浏览器做事,比如“找到便宜的那个选项并选中”。而Playwright本身需要你用代码精确地告诉它点哪里。Stagehand在底层还是用的Playwright,但上层多了AI理解层,让脚本更智能、更不容易被网页改版搞坏。
用法和你写Playwright测试很像,但操作指令更灵活。比如你想测试搜索功能,以前你要写 page.fill('#search-input', 'keyword') 然后 page.click('#search-button')。用Stagehand,你或许可以写成 await page.act({ action: '在搜索框输入"keyword"并点击搜索' })。这样即使前端开发改了搜索框的ID,只要页面逻辑不变,你的测试还能通过。
Stagehand框架本身是开源的,免费。但它内部调用AI来理解你的指令时,需要连接一个大模型,比如OpenAI的GPT。这个大模型的API调用是收费的,你需要自己申请API密钥并付费给对应的AI公司。如果你只是用它执行纯代码部分,就不涉及这个费用。
Stagehand是在你自己的机器或服务器上运行的本地库。它控制浏览器时,所有操作都在本地执行。它会把你的自然语言指令和当前网页信息发给你在配置中指定的AI模型(比如OpenAI)去理解,所以这部分数据会经过第三方AI服务。你的API密钥和发送给AI的数据安全,取决于你选择的那家AI服务商的安全政策。建议不要在处理高度敏感信息的页面使用AI功能。
一个很实用的技巧是组合使用精确代码和AI指令。对于翻页这种规律性强的操作,用代码写循环更可靠。对于提取每页上内容不固定的信息,比如“提取每篇新闻的标题和评论数”,用 page.extract() 配合AI描述就非常高效。善用它的动作缓存功能,对反复执行的相同AI指令进行缓存,可以大大加快速度。
Stagehand本身是一个自动化框架,不是一个聊天机器人。每次你通过 act 或 extract 发出的指令,是独立的操作。不过,开发者可以在编写脚本时,通过变量来保存之前操作的结果,并把上下文信息融入到后续的指令中,来实现有状态的流程。比如,先提取一个商品的名称,然后用包含这个名称的指令去另一个页面搜索。
Stagehand不能直接生成PPT或视频文件。它的专长是操作浏览器。所以,它可以用来自动登录Canva或Google Slides这样的在线设计工具,然后在里面帮你点击模板、替换文字、导出文件,从而实现“通过浏览器间接生成PPT”的自动化流程。对于视频也是类似的思路,它可以操控在线视频编辑工具。
这里的限制主要来自两个方面。一是你每次发给AI模型的指令长度,受限于那个模型本身的上下文窗口大小。二是你的自动化脚本本身没有长度限制,但如果你把整个任务的超长历史记录都作为新指令的一部分发给AI,就超出模型限制。好的实践是只发送当前步骤必要的上下文信息。
这个功能主要是为了提高可靠性。当你编写了一个AI指令,比如“点击页面底部的‘提交订单’按钮”,Stagehand允许你在实际执行前,先“预览”一下AI打算如何执行这个指令,比如它会高亮显示它认为的那个按钮。这样你可以提前确认AI没找错地方,避免在无人值守的自动化流程中出错。
文档里提到它支持OpenAI和Anthropic的模型。至于是否支持连接本地运行的模型,比如通过Ollama跑的开源模型,这需要查看GitHub上的文档。理论上,只要模型的接口兼容,是有支持的,但这取决于框架的具体实现。
| 分享笔记 (共有 篇笔记) |