找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3074

积分

0

好友

421

主题
发表于 昨天 06:41 | 查看: 1| 回复: 0

在传统爬虫或自动化测试的开发中,我们最头疼的莫过于网页频繁改版。某个元素的 class 变了,或者按钮位置调整了,之前精心编写的脚本可能瞬间崩溃。

如果转向完全依赖 AI Agent 呢?它有时又会在页面上“乱点一气”,其固有的“幻觉”问题甚至可能引发生产事故。

我们真正需要的,是一种兼具两者优势的中间方案:既有代码的精确执行力,又有 AI 的模糊理解力

最近在 GitHub 上发现了一个名为 Stagehand 的开源工具,它恰恰遵循了这种 “人机协同” 的思路,为浏览器自动化开辟了一条新路径。它并没有试图用 AI 完全取代代码,而是将 AI 作为“智能的显式函数”来调用。这种范式,在当前乃至未来很长一段时间内,都显得尤为务实。

Stagehand 项目主页截图,展示AI浏览器自动化框架介绍

该项目在 GitHub 上已获得超过 20.8K 星标,受到了广大开发者的关注。

Stagehand GitHub 仓库主页,显示20.8k星标

项目介绍

Stagehand 是一个采用“AI + 代码混合控制”理念的浏览器自动化框架。它的核心思想非常清晰:不是“要么全用 AI,要么全写代码”,而是 哪里确定就用代码,哪里不确定就交给 AI

在这种设计下,你可以:

  • 代码 精准控制你已完全理解的页面逻辑;
  • 自然语言 指令,让 AI 去处理那些结构复杂、经常变动的页面部分;
  • 上述两种方式可以 无缝混合使用

在实际业务场景中,自动化脚本失败往往并非因为开发者的编码能力,而是源于页面的不确定性,例如:

  • 页面结构过于复杂
  • HTML 元素命名混乱
  • DOM 结构频繁变动
  • 不同用户权限下看到的页面内容不同

Stagehand 正是为了解决这些“不确定性问题”而生。

核心能力

Stagehand 将复杂的浏览器操作抽象为三个直观的 API 方法,覆盖了绝大部分自动化需求,其设计非常符合人类直觉。

1、page.act() - 智能动作执行

你不再需要与脆弱的选择器(如 CSS Selector、XPath)作斗争。

传统方式下,一旦元素的 ID 或类名改变,脚本就会失效:

// 传统方式:一旦 ID 变了就挂
await page.click('#login-btn-v2');

使用 Stagehand,你只需用自然语言描述你的意图:

// Stagehand:只要按钮还是“登录”功能,ID 怎么变都不怕
await page.act('Click the login button');

在底层,Stagehand 会捕获当前页面的 DOM 甚至视觉信息,通过大语言模型(LLM)分析出哪个元素最符合“登录按钮”的描述,然后调用底层 API(如 Playwright)执行点击。更重要的是,不同于纯 AI Agent,你可以预先审阅 AI 计划执行的操作,确认无误后再实际执行,这极大地减少了“AI 乱点”的风险。

2、page.extract() - 智能数据提取

这可能是对爬虫开发者而言最具吸引力的功能。它省去了编写复杂正则表达式和解析混乱 HTML 结构的繁琐工作。你只需定义一个期望的数据结构(Schema),AI 会自动从页面中提取并清洗数据。

// 定义你想要的数据结构
const schema = z.object({
  productName: z.string(),
  price: z.number(),
  rating: z.number(),
});

// AI 自动从页面中提取并清洗数据
const data = await page.extract({
  instruction: "Extract the main product details",
  schema: schema,
});

无论页面使用 <table> 还是 <div> 布局,无论价格是用红色还是绿色显示,AI 都能理解语义并输出干净、结构化的 JSON 数据。

3、page.observe() - 观察与推理

这个方法允许你的脚本像人一样“观察”当前页面,并根据观察结果做出决策。你可以向 AI 提问,让它帮你分析和定位页面元素。

const elements = await page.observe("Find all links related to 'Help Center'");

Stagehand 代码示例:自动执行购物流程

为什么它比纯 AI Agent 更“可靠”?

Stagehand 在工程化方面的设计,使其比纯 AI 方案更为可靠,尤其体现在解决传统自动化的两大痛点:

  • Self-Healing(自愈)机制:传统自动化最大的问题是“网页一改,脚本全挂”。Stagehand 内置了自愈能力。当因网站改版导致操作失败时,它能自动检测失败原因,重新调用 AI 寻找新的可行路径,修复后继续执行,从而解决“页面一改全崩”的老大难问题。
  • 操作缓存(Action Caching):对于重复性操作,Stagehand 会自动缓存已验证成功的执行路径。第二次执行相同任务时直接复用缓存,不仅速度更快,稳定性也更高。

快速上手

开始使用 Stagehand 非常简单,只需一行命令:

npx create-browser-app

下面是一个快速的使用示例,展示了其核心 API 的调用方式:

// Stagehand's CDP engine provides an optimized, low level interface to the browser built for automation
const page = stagehand.context.pages()[0];
await page.goto("https://github.com/browserbase");

// Use act() to execute individual actions
await stagehand.act("click on the stagehand repo");

// Use agent() for multi-step tasks
const agent = stagehand.agent();
await agent.execute("Get to the latest PR");

// Use extract() to get structured data from the page
const { author, title } = await stagehand.extract(
  "extract the author and title of the PR",
  z.object({
    author: z.string().describe("The username of the PR author"),
    title: z.string().describe("The title of the PR"),
  }),
);

更完整和详细的使用方法,可以参考其官方 技术文档(docs.stagehand.dev)。

适用人群

  • 曾使用过 Playwright 或 Selenium,但苦于脚本高昂维护成本的开发者。
  • 希望引入 AI 辅助,但又对纯 AI Agent 的稳定性心存顾虑的团队。
  • 从事网络爬虫、RPA 或内部工具自动化的工程团队。
  • 需要寻找一套能够“部署上线、长期稳定运行”的自动化解决方案的技术决策者。

总结

Stagehand 代表了当前浏览器自动化领域一个非常优雅的解决方案方向。它在开发效率(无需编写脆弱的选择器)和运行稳定性(具备缓存与自愈机制)之间找到了一个精妙的平衡点。

如果你的目标是让 “AI 为我兜底,而不是让它接管方向盘”,那么 Stagehand 绝对值得你深入了解。

项目 GitHub 地址:

https://github.com/browserbase/stagehand

一个像素风格的游戏机GIF,屏幕上的方块不断变化




上一篇:AI模拟网站Molthub上线:模仿P站设计的AI技术梗视频平台与拟人化思考
下一篇:Windows下编译ZLMediaKit:使用vcpkg解决WebRTC的OpenSSL与libSRTP依赖
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-9 00:53 , Processed in 0.416300 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表