Stagehand进阶实战:从跑通到稳定省钱的完整指南 Stagehand进阶实战从跑通到稳定省钱的完整指南【免费下载链接】stagehandThe SDK For Browser Agents项目地址: https://gitcode.com/GitHub_Trending/stag/stagehand同一个登录流程每次跑都要让模型重新推理一遍时间和 Token 都在白白消耗。示例跑通只是起点真正要解决的是让流程跑得稳、跑得快、花得少这套方法按顺序跟着做就行。把重复操作变快observe 一次规划act 回放五个输入框的注册页逐步 act 就是五次 LLM 调用串行等待把 3 秒的活拖成了分钟级。思路是先把整段流程规划出来再逐条回放observe() 一次性返回带选择器的一组 Action把它们回传给 act() 时Stagehand 直接执行记录的参数不再发起推理。先 observe 预览再逐条回放const browser await browserbase.launch({ apiKey: process.env.BROWSERBASE_API_KEY }); const stagehand await Stagehand.create({ browser }); const page await browser.context.activePage(); await page.goto(https://example.com/signup); // 一次推理规划全部表单项之后只是回放 const { data: fields } await stagehand.observe(找出这个注册页上的所有输入项); for (const field of fields) { await stagehand.act(field); }效果很直接原本 40 秒的注册流程一次 observe 加几次回放8 秒左右跑完。observe 的完整参数见 observe 文档速度优化指南 里对这个模式有展开。结构稳定、步骤固定的流程适合这么干页面内容每次都不一样验证码、随机布局的 feed就别指望回放老老实实每步 act。单条流程跑顺之后新问题冒出来了这套流程一天要跑几十遍Token 账单跟着跑的次数一起涨。让流程跑稳开启服务端缓存 ⚡点登录按钮这种做过一百遍的操作每次还在重新付费这才是浪费的大头。打开缓存并验证命中create 时传 cacheBrowserbase 会在服务端缓存结果相同输入直接回放、不花 Token每个返回值还带 metadata.cache.status一眼确认这次有没有命中const stagehand await Stagehand.create({ browser, cache: { threshold: 1 }, // 相同的跑一遍之后即可回放 }); const page await browser.context.activePage(); await page.goto(https://example.com/login); const result await stagehand.act(click the Sign in button); console.log(result.metadata.cache.status); // HIT 表示这次跳过了推理缓存键怎么构造、动态值怎么处理缓存文档 讲得很细。想保守一点就把 threshold 调到 2同一结果出现两次才开始供命中用一点首跑成本换稳定性。重复执行的固定流程才吃得到这个红利带 locator 的调用不走服务端缓存本地浏览器也没有缓存可命中这两类场景别把省钱算在它们头上。流程稳定之后账单上下一笔是 API 开销——同样的任务模型选贵了就是白花钱。压低 API 开销小模型打底按需升级 大部分 act 都是点击和输入真正难的是合同摘要这类抽取没必要让整条流水线都挂着贵模型。按调用切换模型默认挂便宜模型关键调用用 options 里的 model 单独升级const stagehand await Stagehand.create({ browser, model: { modelName: google/gemini-2.5-flash }, }); const terms z.object({ summary: z.string() }); // 只有这一步难抽取切大模型其余留在小模型上 const { data } await stagehand.extract(总结合同条款要点, terms, { model: { modelName: anthropic/claude-sonnet-4-6, apiKey: process.env.ANTHROPIC_API_KEY }, }); console.log(data.summary);不想自己维护模型的话把 model 整个省略Model Gateway 会按调用选模型一张账单收口。选择依据看 模型配置成本优化文档 有完整对比。小模型应付简单任务绰绰有余但关键抽取也别硬塞给它们——掉准确率比省下的钱快。单页成本谈完再看吞吐要抓的页面从一页变成几十页时串行排队成了新的瓶颈。任务变多时多标签页并行提取数据二十个页面一个个抓墙钟时间就是二十倍而浏览器不必一次只看一个标签页。开新标签页并行 extractnewPage 开出新标签extract 通过 page 参数绑定到具体页签Promise.all 让两路同时跑await browser.context.newPage(); const [tabA, tabB] await browser.context.pages(); await tabA.goto(https://example.com/pricing); await tabB.goto(https://example.com/changelog); // 两路抽取并行执行各自绑定页签 const count z.object({ n: z.number() }); const [price, log] await Promise.all([ stagehand.extract(数一数页面有几档定价, count, { page: tabA }), stagehand.extract(取 changelog 第一条的日期, z.object({ date: z.string() }), { page: tabB }), ]);点击后自动新开标签页的跟焦行为多标签页指南 里讲清楚了。页面相互独立才适合并行B 依赖 A 的登录状态就老老实实串行后续调用想默认落在某个标签页setActivePage 一下即可。从一次 observe 规划到缓存回放再到并行抓取这套 Stagehand 进阶实战把跑通变成了能在生产里跑。遇到怪问题直接翻 packages/sdk-ts/src/ 里的源码答案基本都在。文档与最佳实践packages/docs/v4/best-practices/可运行示例packages/sdk-ts/examples/API 参考packages/docs/v4/reference/三个基础概念packages/docs/v4/basics/【免费下载链接】stagehandThe SDK For Browser Agents项目地址: https://gitcode.com/GitHub_Trending/stag/stagehand创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考