Skip to main content
deepagents deploy 获取你的智能体配置和文件,并将它们作为 LangSmith 部署一起部署。 LangSmith 部署是具有 30 多个端点的水平可扩展服务器,包括 MCP、A2A、Agent Protocol、人机协作和记忆 API。基于开放标准构建:
  • 开源引擎:MIT 许可证,适用于 PythonTypeScript
  • AGENTS.md:智能体指令的开放标准
  • Agent Skills:智能体知识和操作的开放标准
  • 任何模型,任何沙箱:无供应商锁定
  • 开放协议MCPA2AAgent Protocol
  • 可自托管:LangSmith 部署可以自托管,因此记忆保留在你的基础设施中
深度智能体部署目前处于测试阶段,需要 deepagents-cli>=0.0.36。API、配置格式和行为可能在不同版本之间发生变化。请参阅发布页面了解详细更新日志。

与 Claude Managed Agents 对比

安装

安装 CLI 或直接使用 uvx 运行:

用法

默认情况下,deepagents deploy 在当前目录查找 deepagents.toml。传递 --config 使用不同路径:
deepagents deploy 每次调用都会完全重建并创建新的修订版本。使用 deepagents dev 进行本地迭代。

deepagents init

创建新智能体项目脚手架:
这会创建以下文件: 初始化后,编辑你的项目文件并运行 deepagents deploy

设置

部署命令使用以下项目布局。将以下文件放在 deepagents.toml 旁边,它们会被自动发现并部署:

配置文件

deepagents.toml 配置智能体的身份和沙箱环境。只有 [agent] 部分是必需的。[sandbox] 部分是可选的,默认无沙箱。

[agent]

配置核心智能体身份:
deepagents.toml

[sandbox]

配置智能体运行代码的隔离执行环境。沙箱提供带有文件系统和 shell 访问的容器,因此不受信任的代码不会影响主机。有关支持的提供商和高级沙箱配置,请参阅沙箱
deepagents.toml
范围行为:
  • "thread"(默认):每个对话获得自己的沙箱。不同线程获得不同的沙箱,但同一线程在不同轮次间复用其沙箱。当每个对话应以全新环境开始时使用此选项。
  • "assistant":所有对话共享一个沙箱。文件、已安装的包和其他状态在对话之间持久化。当智能体维护长期工作空间(如克隆的仓库)时使用此选项。

[auth]

添加 [auth] 部分以配置已部署智能体的身份验证。当 [frontend].enabled = true[auth]必需的;否则是可选的(没有它,LangSmith 部署默认的 x-api-key 要求适用)。
deepagents.toml
选择三个提供商之一:
  • Clerk[auth] provider = "clerk")——每用户真实身份验证。每个用户登录;线程和记忆按用户隔离。
  • Supabase[auth] provider = "supabase")——每用户真实身份验证。与 Clerk 相同的每用户隔离。
  • Anonymous[auth] provider = "anonymous")——打包器附带一个宽松的身份验证处理程序,覆盖 LangSmith 部署默认的 x-api-key 要求,以便前端可以访问 /threads,这意味着任何拥有部署 URL 的人都可以调用 API。前端为每个浏览器分配 UUID cookie 并按此过滤线程选择器(仅 UX 隔离,非安全性)。CLI 在推送前需要交互式 y/N 确认。
根据你的提供商,将以下凭据添加到 .env 中,与其他凭据一起: 运行时行为:
  • 未认证的请求返回 401
  • 成功后,已认证用户的身份被注入到 config.configurable.langgraph_auth_user_id 中。
  • 所有资源(线程、运行、存储)通过 metadata.owner 自动按用户隔离。
  • LangSmith Studio 在本地开发时跳过身份验证。
有关如何进行身份验证的信息,请参阅身份验证

[frontend]

前端部署需要 deepagents-cli>=0.0.43
可选启用 [frontend] 以在同一部署中随智能体一起发布预构建的 React 聊天 UI。前端挂载在部署 URL 的 /app 上;你的 LangGraph API 保持在根路径(/threads/runs/assistants)。前端提供:
  • 与智能体的流式输出聊天
  • 带有从第一条用户消息自动生成标题的线程选择器
  • 反映深度智能体实时图状态的实时待办事项、文件和子智能体活动面板
  • 首次加载时跟随操作系统偏好的亮/暗主题切换,之后持久化
  • (仅 Clerk / Supabase)登录/注册/退出流程——Clerk 附带完整组件(社交登录、密码重置);Supabase 附带电子邮件/密码和内置密码重置流程
每个前端使用三种身份验证提供商之一——Clerk、Supabase 或匿名(参见 [auth])。
deepagents.toml
环境变量: 前端复用 [auth] 已经需要的大部分内容。只有 Clerk 需要一个额外的面向浏览器的密钥。 部署后设置: 部署后,将你的部署 URL 添加到身份验证提供商的仪表板中,以便身份验证重定向回到应用。这是每个部署 URL 的一次性步骤。
  • Clerk: 仪表板 → 你的应用 → Domains → 添加你的部署主机(例如 clerk-abc.us.langgraph.app)。Clerk 开发实例自动白名单 localhost;生产部署 URL 需要显式白名单。
  • Supabase: 仪表板 → AuthenticationURL Configuration → 将 https://<your-deployment>/app/** 添加到 Redirect URLs。没有这个,密码重置和电子邮件确认链接不会路由回你的应用。

环境变量

.env 文件放在 deepagents.toml 旁边,包含你的 API 密钥:

身份验证

运行时的身份验证姿态取决于 [auth]
  • [auth] provider = "supabase""clerk" —— 每用户真实身份验证。在 Authorization 请求头中传递用户的身份验证提供商 Token。
  • [auth] provider = "anonymous" —— 打包器附带宽松的身份验证处理程序。API 对任何拥有部署 URL 的人开放。无需请求头。(在没有真实每用户身份验证的情况下发布 [frontend] 时必需。)
  • 没有 [auth] 部分 —— 部署回退到 LangSmith 部署默认的 x-api-key 要求。在 x-api-key 请求头中传递你的 LangSmith API 密钥。仅在 [frontend].enabledfalse 或未设置时有效。
[auth] 配置为 supabaseclerk 时,在 Authorization 请求头中传递来自你的身份验证提供商的 Token:
每个用户的线程和记忆自动隔离——用户 B 无法看到用户 A 的线程。

部署端点

已部署的服务器暴露:
  • MCP:将你的智能体作为工具从其他智能体调用
  • A2A:通过 A2A 协议进行多智能体编排
  • Agent Protocol:用于构建 UI 的标准 API
  • 人机协作:敏感操作的审批门控
  • 记忆:短期和长期记忆访问

用户记忆

用户记忆为每个用户提供自己的可写 AGENTS.md,在对话之间持久化。要启用它,在项目根目录创建 user/ 目录:
如果 user/ 目录存在(即使为空),每个用户都会在 /memories/user/AGENTS.md 获得自己的 AGENTS.md。如果你提供了 user/AGENTS.md,其内容将用作初始模板;否则播种一个空文件。 在运行时,用户记忆通过自定义身份验证(runtime.server_info.user.identity)按用户隔离。用户第一次与智能体交互时,其命名空间用模板播种。后续交互复用现有文件——智能体的编辑会持久化,重新部署不会覆盖用户数据。

工作原理

  1. 打包时 —— 打包器读取 user/AGENTS.md(或使用空字符串)并将其包含在播种负载中。
  2. 运行时(首次访问) —— 当智能体首次看到一个 user_id 时,它将 AGENTS.md 模板写入该用户命名空间下的存储。现有条目永远不会被覆盖。
  3. 预加载 —— 用户 AGENTS.md 传递给记忆中间件,因此智能体在每次对话开始时都能在上下文中看到其内容。
  4. 可写 —— 智能体可以使用 edit_file 工具更新它。共享的 AGENTS.md 文件和技能文件夹是只读的。

权限

用户身份

user_id 通过自定义身份验证从 runtime.user.identity 解析。平台自动注入已认证用户的身份——无需通过 configurable 传递。如果没有已认证用户,该次调用的用户记忆功能会被优雅地跳过。

子智能体

子智能体让主智能体将专门任务委派给隔离的子智能体。每个子智能体有自己的系统提示词、可选技能和可选 MCP 工具。主智能体收到一个 task 工具,按名称将工作分派给子智能体。 有关子智能体为何有用以及它们在 SDK 级别如何工作的背景,请参阅子智能体

目录结构

在项目根目录创建 subagents/ 目录。每个子目录是一个子智能体:
每个子智能体子目录必须包含: 每个子智能体子目录可以包含:

子智能体配置

subagents/researcher/deepagents.toml

继承

子智能体默认从主智能体继承某些属性:

记忆隔离

每个子智能体在 /memories/subagents/<name>/ 获得专用的隔离记忆命名空间。子智能体的 AGENTS.md 和技能在部署时播种到此命名空间中。

示例

一个将研究委派给专门子智能体的 GTM 策略智能体:
deepagents.toml
subagents/researcher/deepagents.toml
subagents/researcher/AGENTS.md

限制

  • MCP:仅 HTTP/SSE。 stdio 传输在打包时被拒绝。
  • 无自定义 Python 工具。 使用 MCP 服务器暴露自定义工具逻辑。

示例

带有每用户偏好的内容写作智能体,智能体可以更新这些偏好:
deepagents.toml
带有 LangSmith 沙箱用于运行代码的编码智能体:
deepagents.toml
将研究委派给子智能体的 GTM 策略智能体:
匿名模式下带有内置 UI 的轻量级内部演示智能体(无需注册,无需基础设施):
deepagents.toml