Deep Agents Deploy 会提取您的智能体配置并将其部署为 LangSmith 部署 (LangSmith Deployment):一个可水平扩展的服务器,包含 30 多个端点,包括 MCP、A2A、智能体协议 (Agent Protocol)、人机回环 (human-in-the-loop) 和记忆 API。基于开放标准构建文档索引
在以下地址获取完整的文档索引:https://docs.langchain.org.cn/llms.txt
在进一步探索之前,请使用此文件发现所有可用页面。
- 开源载体:MIT 许可,支持 Python 和 TypeScript
- AGENTS.md:智能体指令的开放标准
- 智能体技能 (Agent Skills):智能体知识和行动的开放标准
- 任何模型,任何沙箱:无供应商锁定
- 开放协议:MCP、A2A、Agent Protocol
- 可自托管:LangSmith 部署可以自托管,以便记忆保留在您的基础架构中
与 Claude 托管智能体对比
你正在部署的内容
deepagents deploy 将您的智能体配置打包并部署为 LangSmith 部署。您可以通过几个参数配置您的智能体
| 参数 | 描述 |
|---|---|
model | 要使用的 LLM。任何提供商都可以——请参阅 支持的模型。 |
AGENTS.md | 系统提示词,在每个会话开始时加载。 |
skills | 智能体技能 (Agent Skills) 用于专门的知识和行动。技能会同步到沙箱中,以便智能体在运行时执行。请参阅 技能文档。 |
user/ | 每个用户可写的记忆。如果在 user 文件夹中存在 AGENTS.md 模板,智能体会为每个用户生成该模板(如果文件夹为空,智能体会创建一个空的 AGENTS.md)。运行时可写。通过记忆中间件预加载到智能体的上下文中。 |
mcp.json | MCP 工具 (HTTP/SSE)。请参阅 MCP 文档。 |
subagents/ | 主智能体可以委派任务的专门 子智能体。每个子目录包含其自己的 deepagents.toml、AGENTS.md,以及可选的 skills 文件夹。请参阅 子智能体。 |
沙箱 (sandbox) | 可选的执行环境。线程范围的沙箱按线程配置,如果服务器重启,沙箱将被重新创建。如果您需要跨线程持久化的沙箱状态,请使用 scope = "assistant"。请参阅 沙箱提供商。 |
前端 (frontend) | 可选的预置 React 聊天 UI,随智能体一起部署在同一环境中。可配置为按用户认证或匿名模式,带有实时的待办事项、文件和子智能体活动面板。请参阅 [frontend]。 |
安装
安装 CLI 或直接使用uvx 运行
用法
deepagents deploy 会在当前目录中查找 deepagents.toml。传递 --config 以使用不同的路径
deepagents deploy 会在每次调用时完全重新构建并创建一个新修订版本。本地迭代请使用 deepagents dev。
deepagents init
脚手架构建一个新的智能体项目
| 文件 | 目的 |
|---|---|
deepagents.toml | 智能体配置——名称、模型、可选沙箱 |
AGENTS.md | 在会话开始时加载的系统提示词 |
.env | API 密钥模板 (GOOGLE_API_KEY, LANGSMITH_API_KEY 等) |
mcp.json | MCP 服务器配置 (默认为空) |
skills/ | 智能体技能目录,带有一个示例 review 技能 |
AGENTS.md,然后运行 deepagents deploy。可选添加一个带有每用户记忆模板的 user/ 目录——请参阅 用户记忆。
项目布局
deploy 命令使用基于约定的项目布局。将以下文件放在deepagents.toml 旁边,它们将被自动发现
| 文件/目录 | 目的 | 必填 |
|---|---|---|
AGENTS.md | 智能体的记忆。提供始终在启动时加载的持久上下文(项目约定、指令、偏好)。运行时只读。 | 是 |
skills/ | 技能定义的目录。每个子目录应包含一个 SKILL.md 文件。运行时只读。 | 否 |
user/ | 每个用户可写的记忆。如果在 user 文件夹中存在 AGENTS.md 模板,智能体会为每个用户生成该模板(如果文件夹为空,智能体会创建一个空的 AGENTS.md)。运行时可写。通过记忆中间件预加载到智能体的上下文中。 | 否 |
subagents/ | 主智能体可以委派任务的子智能体。每个子目录必须包含 deepagents.toml、AGENTS.md 以及可选的 skills 文件夹。打包时自动发现。 | 否 |
mcp.json | MCP 服务器配置。在部署上下文中仅支持 http 和 sse 传输方式。 | 否 |
.env | 环境变量(API 密钥、机密)。放置在项目根目录的 deepagents.toml 旁边。 | 否 |
配置文件
deepagents.toml 配置智能体的身份和沙箱环境。只有 [agent] 部分是必需的。[sandbox] 部分是可选的,默认为无沙箱。
[agent]
(必填) 核心智能体身份。有关模型选择和提供商配置的更多信息,请参阅 支持的模型。部署的智能体的名称。在 LangSmith 中用作助手标识符。
deepagents.toml
name 字段是整个配置文件中唯一必填的值。其他所有项都有默认值。- 技能:打包工具递归扫描
skills/,跳过隐藏的点文件,并打包其余部分。 - 用户记忆:如果
user/存在,单个AGENTS.md将作为每用户记忆打包(如果存在user/AGENTS.md则使用它,否则为空)。在运行时,每个用户都有自己的副本(首次访问时生成,永不覆盖)。智能体可以读取和写入此文件。 - 子智能体:如果
subagents/存在,打包工具将扫描有效的子目录(每个子目录必须包含deepagents.toml和AGENTS.md)。主智能体接收一个task工具,用于按名称向每个子智能体委派工作。请参阅 子智能体。 - MCP 服务器:如果
mcp.json存在,它将包含在部署中,并且langchain-mcp-adapters将作为依赖项添加。仅支持 HTTP/SSE 传输方式(stdio 在打包时会被拒绝)。 - 模型依赖项:
model字段中的provider:前缀决定了所需的langchain-*包(例如,google_genai->langchain-google-genai)。这包括在子智能体配置中指定的模型。 - 沙箱依赖项:
[sandbox].provider值映射到其合作伙伴包(例如,daytona->langchain-daytona)。
[sandbox]
配置智能体运行代码的隔离执行环境。沙箱提供一个带有文件系统和 shell 访问权限的容器,因此不受信任的代码不会影响宿主机。有关受支持的提供商和高级沙箱配置,请参阅 沙箱。 当省略或设置为 provider = "none" 时,沙箱将被禁用。沙箱用于您需要执行代码或技能脚本的场景。沙箱提供商。决定容器运行的位置。支持的值:
"none"、"daytona"、"modal"、"runloop"、"langsmith" (私有 Beta)。请参阅 沙箱集成 了解提供商详情。沙箱环境的提供商特定模板名称。
沙箱容器的基础 Docker 镜像。
沙箱生命周期范围。
"thread" 为每个对话创建一个沙箱。"assistant" 在同一助手的各对话之间共享单个沙箱。"thread"(默认):每个对话都有自己的沙箱。不同的线程获得不同的沙箱,但同一线程在多轮对话中重复使用其沙箱。当每个对话都应从干净的环境开始时使用此项。"assistant":所有对话共享一个沙箱。文件、安装的包和其他状态在对话之间持久存在。当智能体维护一个长期存在的工作区(如克隆的仓库)时使用此项。
[auth]
添加 [auth] 部分以控制部署智能体的身份验证。如果存在,打包工具会自动生成一个接入部署的 auth.py 文件。当 [frontend].enabled = true 时,[auth] 是 必需的;否则它是可选的(没有它,LangSmith 部署默认要求 x-api-key)。
身份验证提供商。支持的值:
"supabase"、"clerk"、"anonymous"。deepagents.toml
| 提供商 | 必填环境变量 |
|---|---|
supabase | SUPABASE_URL、SUPABASE_PUBLISHABLE_DEFAULT_KEY |
clerk | CLERK_SECRET_KEY |
anonymous (匿名) | 无 |
.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 或 anonymous(见下文 [auth])。
如果为
true,则将默认聊天 UI 打包到部署中。在 UI 标头和浏览器标签页中显示的名称。
显示在标头应用名称下方以及空状态主页上的副标题。用于描述智能体的功能。
没有消息时显示在空状态下的建议卡片。默认为通用的研究主题集;可覆盖以根据您的智能体进行定制。
deepagents.toml
[frontend].enabled = true 时,[auth] 是必需的。从三个提供商中选择一个:- 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确认。
- 与智能体进行流式聊天
- 带有从第一条用户消息自动生成标题的线程选择器
- 反映您的 Deep Agent 实时图状态的实时待办事项、文件和子智能体活动面板
- 亮/暗主题切换,首次加载遵循操作系统偏好并在此后持久保存
- (仅限 Clerk / Supabase)登录 / 注册 / 注销流程 —— Clerk 提供其完整的小部件(社交登录、重置密码);Supabase 提供内置重置密码流程的电子邮件/密码登录
[auth] 已经要求的大部分变量。只有 Clerk 需要一个额外的面向浏览器的密钥。| 提供商 | 附加变量 |
|---|---|
supabase | 无 —— 重用来自 [auth] 的 SUPABASE_URL 和 SUPABASE_PUBLISHABLE_DEFAULT_KEY |
clerk | CLERK_PUBLISHABLE_KEY (面向浏览器的可发布密钥;与 CLERK_SECRET_KEY 不同) |
- Clerk: 控制面板 → 您的应用 → Domains → 添加您的部署主机(例如
clerk-abc.us.langgraph.app)。Clerk 开发实例会自动将 localhost 列入白名单;生产部署 URL 需要显式列入白名单。 - Supabase: 控制面板 → Authentication → URL Configuration → 在 Redirect URLs 中添加
https://<your-deployment>/app/**。如果没有此设置,密码重定向和电子邮件确认链接将无法路由回您的应用。
.env
在 deepagents.toml 旁边放置一个包含 API 密钥的 .env 文件
身份验证
运行时身份验证态势取决于[auth]
[auth] provider = "supabase"或"clerk"— 每用户真实身份验证。在Authorization标头中传递来自身份验证提供商的用户令牌。[auth] provider = "anonymous"— 打包工具提供宽容的身份验证处理器。API 对任何拥有部署 URL 的人开放。不需要标头。(在发布不带真实每用户认证的[frontend]时需要。)- 无
[auth]部分 — 部署将回退到 LangSmith 部署默认的x-api-key要求。在x-api-key标头中传递您的 LangSmith API 密钥。仅当[frontend].enabled为false或未设置时有效。
[auth] 为 supabase 或 clerk 时,在 Authorization 标头中传递来自身份验证提供商的令牌
- curl
- Python (langgraph-sdk)
| 提供商 | 从何处获取令牌 |
|---|---|
| Supabase | 来自 supabase.auth.getSession() 的 Supabase 会话 access_token |
| Clerk | 来自 getToken() 的 Clerk 会话令牌 |
沙箱提供商
在deepagents.toml 中设置 [sandbox].provider 并将所需的坏境变量添加到 .env。有关可用的提供商,请参阅 沙箱集成。有关生命周期模式和 SDK 用法,请参阅 沙箱。
部署端点
部署的服务器公开了- MCP:将您的智能体作为工具从其他智能体调用
- A2A:通过 A2A 协议进行多智能体编排
- Agent Protocol:构建 UI 的标准 API
- 人机回环 (Human-in-the-loop):敏感操作的审批门控
- 记忆:短期和长期记忆访问
示例
一个具有智能体可以更新的每用户偏好的内容撰写智能体deepagents.toml
deepagents.toml
deepagents.toml
用户记忆
用户记忆为每个用户提供其自己可写的AGENTS.md,并可在对话之间持久存在。要启用它,请在项目根目录创建一个 user/ 目录
user/ 目录存在(即使为空),每个用户都会在 /memories/user/AGENTS.md 处获得自己的 AGENTS.md。如果您提供了 user/AGENTS.md,其内容将用作初始模板;否则会播种一个空文件。 在运行时,用户记忆通过自定义身份验证(runtime.server_info.user.identity)按用户划分作用域。用户第一次与智能体互动时,其命名空间将使用该模板进行初始化。随后的互动将重用现有文件——智能体的编辑将持久存在,且重新部署绝不会覆盖用户数据。工作原理
- 打包时 — 打包工具读取
user/AGENTS.md(或使用空字符串)并将其包含在种子有效负载中。 - 运行时(首次访问) — 当智能体第一次看到某个
user_id时,它会将AGENTS.md模板写入该用户命名空间下的存储。现有条目绝不会被覆盖。 - 预加载 — 用户
AGENTS.md被传递给记忆中间件,因此智能体在每次对话开始时都能在上下文中看到其内容。 - 可写 — 智能体可以使用
edit_file工具对其进行更新。共享的AGENTS.md文件和技能文件夹是只读的。
权限
| 路径 | 是否可写 | 范围 |
|---|---|---|
/memories/AGENTS.md | 否 | 共享(助手范围) |
/memories/skills/** | 否 | 共享(助手范围) |
/memories/user/** | 是 | 每用户(user_id 范围) |
/memories/subagents/<name>/** | 仅限子智能体 | 每子智能体(隔离) |
用户身份
user_id 是通过 runtime.user.identity 从自定义身份验证中解析出来的。平台会自动注入经过身份验证的用户身份——无需通过 configurable 传递。如果没有经过身份验证的用户,该次调用的用户记忆功能将被优雅地跳过。
子代理
子智能体允许主智能体将专门任务委派给隔离的子智能体。每个子智能体都有自己的系统提示、可选技能和可选 MCP 工具。主智能体接收一个task 工具,按名称将工作分派给子智能体。 有关子智能体为何有用以及它们如何在 SDK 级别工作的背景,请参阅 子智能体。目录结构
在项目根目录创建一个subagents/ 目录。每个子目录都是一个子智能体
| 文件 | 目的 |
|---|---|
deepagents.toml | 带有 [agent].name 和 [agent].description 的子智能体配置 |
AGENTS.md | 子智能体的系统提示词 |
| 文件 | 目的 |
|---|---|
skills/ | 子智能体特定技能(带有 SKILL.md 文件) |
mcp.json | MCP 服务器配置(仅限 HTTP/SSE;stdio 会被拒绝) |
子智能体配置
子智能体的唯一标识符。在所有子智能体中必须是唯一的。
该子智能体执行的任务。主智能体根据此描述决定何时委派。不能为空。
以
provider:model 格式覆盖模型。省略则继承主智能体的模型。subagents/researcher/deepagents.toml
继承
子智能体默认会从主智能体继承某些属性| 属性 | 是否被继承 | 备注 |
|---|---|---|
| 模型 | 是 | 在子智能体的 deepagents.toml 中使用 model 进行覆盖 |
| 工具 | 是 | 通过在子智能体目录中添加 mcp.json 进行覆盖 |
| 技能 | 否 | 在子智能体自己的 skills/ 目录中显式声明 |
记忆隔离
每个子智能体在/memories/subagents/<name>/ 处获得专用的、隔离的记忆命名空间。子智能体的 AGENTS.md 和技能在部署时会植入到此命名空间中。
| 路径 | 主智能体 | 子智能体 |
|---|---|---|
/memories/AGENTS.md | 读取 | 无访问权限 |
/memories/skills/** | 读取 | 无访问权限 |
/memories/user/** | 读取 + 写入 | 无访问权限 |
/memories/subagents/<name>/** | 读取 | 读取 + 写入 |
示例
一个将研究任务委派给专门子智能体的转市场 (GTM) 智能体deepagents.toml
subagents/researcher/deepagents.toml
subagents/researcher/AGENTS.md
限制
- MCP: 仅限 HTTP/SSE。 Stdio 传输方式在打包时会被拒绝。
- 不支持自定义 Python 工具。 使用 MCP 服务器来公开自定义工具逻辑。
将这些文档连接到 Claude、VSCode 等,以获得实时答案。

