LangChain 为 Managed Deep Agents 新增浏览器能力
LangChain 宣布 Managed Deep Agents 支持浏览器操作,开发者在项目根目录用 define_browser 几行代码即可让 LangSmith 托管的 Agent 读写真实网页,无需自建基础设施。
LangChain:Blog·2026-10-29 23:00· 2 小时前AI 评分62
Managed Deep Agents 中的浏览器使用
AI 导读
LangChain 宣布 Managed Deep Agents 支持浏览器操作,开发者通过 define_browser 几行代码即可让 LangSmith 托管 Agent 读写真实网页,无需自建基础设施。
正文 · 原文
Agent 已经足够强大,可以在我们工作的环境中工作,而其中大量工作发生在浏览器里。预订旅行、取消订阅或提交理赔,都发生在为人类点击页面而构建的网站上,包括 Agent 原本没计划访问的网站。通常没有可供 Agent 调用的 API。用 curl 抓取页面也走不远,因为它返回的是任何 JavaScript 渲染页面之前的 HTML,而且无法点击任何东西。
像 Instinct 和 Meta 的 Muse 这样的个人 Agent 已经以这种方式工作。浏览器 Agent 流量也在快速增长,DataDome 仅在 9 月就发现 Agent 浏览器请求量增长了 4.7 倍。
Managed Deep Agents 让你无需运行任何基础设施即可在 LangSmith 中构建和部署 Agent。你编写 Agent 的指令和工具,LangSmith 运行 harness 和运行时。今天,我们为这些 Agent 配备浏览器,让你可以构建自己的、能在 Web 上工作的 Agent。Managed Deep Agents 也运行浏览器,并为你的 Agent 提供针对浏览器调优的工具。
在本文中,我们介绍浏览器在哪些场景有帮助以及如何启用它,包括在 Agent 需要时把浏览器交给真人。然后我们深入介绍其工作原理。使用开源 Deep Agents 构建的 Agent 也可以使用浏览器。我们将在下周的深度文章中介绍我们如何测试和调优浏览器工具。
浏览器在哪些场景有帮助
有了浏览器和驱动它的工具,Agent 可以读取页面上渲染的内容并点击浏览,就像你(人类)会做的那样。
到目前为止,已经出现了两个常见用例:
- API 无法覆盖的操作,例如预订航班或餐厅。当网站确实有针对该任务的 API 时,Agent 应使用 API。
- 端到端测试,例如在合并前检查前端更改。当拉取请求更改了注册表单时,编码 Agent 可以在其沙箱中启动应用,在浏览器中打开表单,并点击浏览以检查更改是否有效。我们在编码 Agent Open SWE 中使用了这一功能。
添加浏览器使用能力
要添加浏览器,请在项目根目录从 browser.py 导出 browser:
# browser.py
from managed_deepagents import define_browser
browser = define_browser(
scope="thread",
idle_ttl_seconds=600,
)scope 控制浏览器会话的共享方式。
scope="thread"(默认值)为每个线程提供自己的浏览器。每次对话都从全新的浏览器窗口开始,不会留下其他线程的 cookie 或登录状态。scope="user"在已登录用户的多个线程之间共享一个浏览器(参见 Identity)。每个线程都有自己的窗口,因此同时运行的两个对话不会互相点击干扰,但它们共享 cookie 和其他浏览器状态。如果你在一个线程中登录了某个网站,之后的线程可以接续该会话,而不必重新开始。
浏览器在 idle_ttl_seconds 无活动后停止(默认 10 分钟),因此你不会为无人使用的浏览器付费。
将浏览器交给用户
有些步骤仍然需要真人,登录是最常见的一个。你不想把密码交给 Agent,否则密码会出现在模型的消息中、追踪记录中,以及模型提供商那里。
因此,当智能体遇到登录页面时,它会调用 browser_handoff 并附上原因,例如“请登录 Acme Travel,以便我继续操作。”在 LangSmith Studio 这个用于与智能体对话和调试的界面中,你会看到一张带有同一浏览器的交互式卡片。你自己登录,点击 Hand back,智能体便从上次中断的地方继续,且已处于登录状态。Handoff 随每个托管浏览器提供,并在 Managed Deep Agents channels(如 Slack)中自动生效,因此无需额外设置。

这一点在 scope="user" 中最为重要。在用户作用域下,登录状态会延续到你之后的会话中,因此智能体只需让你登录一次,就像你自己的浏览器记住你一样。

底层工作原理
智能体要使用网络需要两样东西:一个浏览器,以及一套驱动它的工具集。Managed Deep Agents 对两者都进行管理。
浏览器。 Managed Deep Agents 在其自己的 LangSmith sandbox 中运行浏览器,与智能体分离。这是一个远程浏览器,因此你的机器上不会运行任何东西。与大多数远程浏览器不同,它还与智能体的沙箱有私有链接,这正是端到端测试得以实现的原因(详见下文)。
工具。 Managed Deep Agents 为智能体添加了 browser tools:
browser_snapshot读取页面的 accessibility tree,并用 ID 标记交互元素。browser_run在页面上执行操作,可以是一批操作,如click和fill,也可以使用 JavaScript,通过 Playwright 风格的page对象,由 Stagehand 将其转换为自己的命令。browser_screenshot捕获渲染后的页面。browser_handoff将浏览器交给人工,完成后由人工交回(见上文)。
browser_run 承担大部分工作。它接受代码,因此智能体可以将一整串步骤(打开页面、填写字段、点击、检查结果)作为一次调用编写,并只返回所需内容。这使长时间浏览器任务保持快速,并使页面的大部分内容不进入智能体的上下文。
这些工具构建在 Stagehand 之上,这是 Browserbase 用于构建浏览器智能体的开源 SDK。我们通过agent development lifecycle 对它们进行了测试和调优:运行浏览器基准测试、阅读 LangSmith 中的追踪记录,并用评估验证每项更改。在来自 WebVoyager(一个针对真实网站上日常任务的基准测试)的 100 项任务中,它们以总计 1.98 美元的成本通过了 90% 的任务。这是我们测试的七套工具集中最高的通过率。最接近的是 Browserbase 的 MCP server,以 9 倍成本通过了 89%。

此设置以略有不同的方式支持两种用例。
API 无法覆盖的操作
对于预订等任务,智能体只需要浏览器。其浏览器工具向浏览器沙箱发送命令,由沙箱驱动页面。

端到端测试
端到端测试还需要一个组件。被测应用运行在智能体自己的沙箱中,因此浏览器必须能够访问它。两个连接使这成为可能:
- 智能体通过其浏览器工具控制浏览器,如上所述。
- 浏览器通过
localhost桥接访问应用。当浏览器打开localhost:5173时,请求通过私有链接传输到智能体沙箱中的 5173 端口。应用不需要公共 URL。此处,localhost表示智能体的沙箱。
智能体用 execute 启动应用,在浏览器中打开它,点击真实流程(如注册表单),并检查渲染结果。
一旦测试通过,你可以让智能体将其步骤保存为测试文件,因为每次 browser_run 调用都是普通 Playwright 脚本的一部分。之后的运行会重放该文件,不再调用模型,直到页面发生变化。

结论
浏览器为智能体打开了网络世界的广阔天地,从预订航班到测试编码智能体刚刚构建的应用。借助 Managed Deep Agents,为你的智能体配备浏览器只需几行代码,其背后的工具经过调优,速度快且上下文高效。
使用 define_browser 为托管智能体添加浏览器。若要为开源深度智能体添加浏览器,且由你自带(例如来自 Browserbase 的托管浏览器),请参阅浏览器使用指南。
致谢
感谢来自 Browserbase 的 Sean McGuire、Miguel Gonzalez 和 Kyle Jeong 在 Stagehand 及本文撰写过程中提供的帮助。
来源:LangChain:Blog · langchain.com
来源:RadarAI · aihot.news