LangChain 发布 Managed Deep Agents v0.10 公测版,新增浏览器使用与异步子智能体
LangChain Managed Deep Agents v0.10 发布:支持浏览器使用与异步子智能体
LangChain 发布 Managed Deep Agents v0.10 公测版,新增浏览器使用和异步子智能体两项能力。
LangChain:Blog·2026-10-30 00:54· 1 小时前AI 评分66
Managed Deep Agents v0.10:浏览器使用与异步子智能体
AI 导读
LangChain 发布 Managed Deep Agents v0.10 公测版,新增浏览器使用和异步子智能体两项核心能力。
正文 · 原文
Managed Deep Agents v0.10 今日发布。它新增了 浏览器使用,让你的智能体可以在没有 API 的网站上工作;还新增了 异步子智能体,可在后台运行长任务,同时智能体继续与你对话。
在本文中,我们介绍智能体为何需要这两项能力、如何开启它们,然后介绍本次发布的其余内容。
为你的智能体配备浏览器
预订旅行、取消订阅或提交理赔,这些操作都发生在为人类点击页面而构建的网站上,而且通常没有智能体可以调用的 API。虽然智能体可以推理出如何完成任务,但在没有 API 的网站上无法采取行动。用 curl 抓取页面也走不远,它得到的是 JavaScript 渲染页面之前的 HTML,智能体无法点击任何东西。
像 Instinct 和 Meta 的 Muse 这样的个人智能体可以浏览网站,从而解锁更广泛的使用场景,DataDome 发现仅 9 月份智能体浏览器请求就激增了 4.7 倍。编码智能体也需要浏览器,以检查对应用的更改是否真的能渲染并正常工作。
我们在“Managed Deep Agents 中的浏览器使用”一文中介绍了浏览器在哪些方面有帮助以及它在底层如何工作。要开启它,请在项目根目录声明一个浏览器:
# browser.py
from managed_deepagents import define_browser
browser = define_browser(scope="thread", idle_ttl_seconds=600)Managed Deep Agents 在其自己的 LangSmith 沙箱中运行浏览器,并自动向你的智能体添加以下浏览器工具:
工具功能browser_snapshot读取页面的无障碍树并分配元素 IDbrowser_run通过 JavaScript 或针对快照 ID 的批量操作进行导航和交互browser_screenshot捕获页面,可选择将图像保存到沙箱browser_handoff让人接管窗口
默认情况下,每个对话都有自己的浏览器,该浏览器在各轮对话之间复用,且不带有其他线程的 cookie 或登录状态。使用 scope="user" 时,每个已登录用户拥有一个浏览器,其登录状态会贯穿该用户的所有对话,因此智能体只需让用户登录一次网站。
将浏览器交给真人
大多数浏览器智能体在登录墙或双因素提示处就停住了。使用 browser_handoff 时,智能体改为将窗口交给你,因此你的密码永远不会出现在模型的消息或追踪记录中。
智能体调用 browser_handoff(reason) 并解释为什么需要你。你的智能体渠道——如 Slack 和 Studio——将显示一个链接,允许你的智能体用户以原生方式移交浏览器控制权,该链接会打开一个与远程浏览器交互的页面以及一个交还按钮。自定义客户端可以自行渲染移交产物。一旦你登录并交还控制权,智能体会检查页面以确认登录是否成功,然后继续。移交会立即返回,因此智能体可以在等待期间做其他工作。移交链接在 15 分钟后过期。

移交让你的智能体替你使用网页,而无需看到你的凭据。
浏览器使用文档涵盖了作用域、每次运行的配置以及完整的移交流程。
在后台运行子智能体
子代理让一个代理把聚焦的任务交给拥有自己上下文窗口的助手。此前在 Managed Deep Agents 中,子代理以内联方式运行,因此代理调用一个子代理后要等待其回答。这对快速查询有效,且仍是受支持的用法。但对于由同步代理支撑的长任务,或需要扇出多个代理的场景,与代理对话的人也要等待,并且与编排代理的进一步交互会被阻塞。
在 Managed Deep Agents v0.10 中,通过在子代理定义中添加 async,你可以异步运行子代理,而不阻塞编排代理:
from managed_deepagents import define_deep_agent
agent = define_deep_agent(
name="research-assistant",
model="openai:gpt-5.5",
subagents=[
{
"name": "researcher",
"description": "Researches a topic in the background.",
"system_prompt": "Research the topic and report your findings.",
"async": True,
},
],
)代理在自己的线程上启动异步子代理,并可在子代理运行期间继续与用户对话。编排代理通过一组异步任务工具启动、检查、更新和取消这些任务。每个提供服务的代理还会获得一份通用子代理的后台副本,因此它可以在运行时选择在前台还是后台运行委派的工作。
异步子代理会自行通知代理,因此代理永远不会陷入轮询循环。接下来会发生什么取决于子代理完成时代理正在做什么:
子代理完成时,代理会做什么:忙碌时,它在每次模型调用前检查未完成的任务,因此结果会在运行中途到达;空闲时,子代理会以新的运行唤醒它;因审批而暂停时,审批保持不动,用户答复后结果才会到达
异步子代理共享代理的沙箱,因此它能获取代理已写入的文件。它的运行会显示在LangSmith中代理运行的下方。在 Slack 中,它的审批会回帖到原始线程,在那里答复即可恢复该子代理。
v0.10 中的其他更新
runtime.thread:现在每个线程都会携带其起始位置(例如某个 Slack 线程)以及参与人员的记录。工具可以在任何运行中读取runtime.thread,Studio 恢复、计划运行和异步子代理的唤醒运行都借此在原始 Slack 线程中回复。运行时文档介绍了工具可读取的托管字段。- 停止运行:Slack 线程获得原生 Stop 按钮,可取消该线程的运行,Studio 也可以取消 Slack 线程上的运行。
- Slack 频道处理器(实验性):
onEvent决定每个 Slack 事件启动什么,包括提及、私信、其他消息和按钮点击。status设置运行期间 Slack 显示的内容,reply: "none"则把回复交给代理。参见Slack 频道文档。 - 自带 Slack 应用:
mda deploy会询问新的 Slack 频道应使用哪个应用。你可以选择由 LangSmith 创建和管理的应用、从清单创建新应用,或使用你已有的应用。 resolveUser:当有人在 Slack 等频道中给你的代理发消息时,Managed Deep Agents 会验证发送者身份。resolveUser将该发送者映射到你自有系统中的对应用户,以便你的工具查询该用户的账户和权限。将其写为函数或指向我们调用的端点,并在身份声明上设置以覆盖所有频道,或在单个频道上设置。- 破坏性变更:
connectors.mcp()和connectors/布局已被移除。MCP 服务器必须在tools/mcp.ts或tools/mcp.py中声明。沙箱scope选项也已被移除。对于LANGSMITH_*变量,shell 环境变量现在优先于项目.env。
开始使用
Managed Deep Agents v0.10 今日已开放公开测试版。请从文档开始,或创建一个新项目:
uvx --from managed-deepagents mda init my-agent
cd my-agent
uv run mda deploy一如既往,我们迫不及待想听你告诉我们你构建了什么。
ICYMI:v0.9 新增了由 agent 创建的调度、按运行配置以及 Slack 表情回应。阅读 v0.9 文章。
来源:LangChain:Blog · langchain.com
来源:RadarAI · aihot.news