LangChain: 您可以为Managed Deep Agents添加计划。在schedules/中添加一个包含cron表达式和提示的部署文件…
摘要
LangChain为Managed Deep Agents引入了计划功能,允许使用cron表达式和提示自动化执行AI代理。
查看缓存全文
缓存时间: 2026/09/23 22:14
你可以为托管深度代理添加调度。将调度文件放入 schedules/ 目录,其中包含 cron 表达式和提示信息。部署后,代理将自动运行。
文档:https://docs.langchain.com/langsmith/python/managed-deep-agents-schedules
来自 @ndrezn 的演示
为托管深度代理添加调度 - LangChain 文档
来源:https://docs.langchain.com/langsmith/python/managed-deep-agents-schedules
托管深度代理可以按 cron 计划运行代理。部署项目时,mda deploy 会在部署完成后将每个调度配置为 LangSmith cron 任务。
项目结构
调度声明文件位于项目级 schedules/ 目录中,每个文件对应一个调度:
添加调度
文件名即为托管调度的名称。调度模块必须定义一个名为 schedule 的声明。
schedules/daily_digest.py
配置调度输入
每个调度必须明确定义以下两者之一:
prompt:自然语言提示。当 cron 触发时,托管深度代理会将其转换为用户消息。input:结构化 LangGraph 输入对象。当需要传递自定义图输入(而非单一提示)时使用此方式。
schedules/nightly_sweep.py
cron 必须是标准五字段 cron 表达式:分钟、小时、每月第几天、月份和星期几。如果省略 timezone,LangSmith cron 将使用 UTC 时区。
选择线程行为
调度默认使用临时线程。托管深度代理会为每次运行创建新线程,并在运行完成后要求 LangSmith 删除该临时线程。仅当计划运行需要跨调用积累持久线程状态时,才应使用持久线程。持久线程 ID 必须是部署中已存在的线程 UUID。托管深度代理会直接将该值传递给代理服务器,任何非 UUID 格式的 ID 都会被拒绝。
创建持久线程
在部署调度前创建线程。在 LangSmith Studio(https://docs.langchain.com/langsmith/studio)中打开部署,创建新线程并复制其线程 ID。mda deploy 会打印部署 URL,LangSmith 也会在部署页面显示该信息。托管深度代理和 mda 命令行工具都不会创建线程,因此每个持久调度都需要执行一次手动创建。
声明持久调度
在调度声明中使用该线程 ID。
schedules/nightly_memory.py
向 Slack 发送结果
将 deliver_to 设置为通过已配置的 Slack 频道(https://docs.langchain.com/langsmith/python/managed-deep-agents-channels-slack)发送最终响应。由于计划运行没有原始线程,请使用 Slack 频道 ID。
schedules/monday_greeting.py
Slack 机器人必须有权访问目标频道。
使用静态声明
调度声明在编译时提取。请保持调度配置可静态序列化:
- 使用字面量、列表、字典以及对顶层字面常量的引用。
- 不要读取环境变量、调用函数、使用
**kwargs或动态计算调度值。 - 将动态行为放在代理、工具、中间件或运行时上下文中。
本地测试调度
mda dev 会编译 schedules/ 目录并在启动横幅中列出每个调度,但不会实际配置它们。调度仅在部署环境中运行。
要测试调度触发的代理行为,可在本地 Studio 中直接向代理发送调度的 prompt 或 input。要测试调度本身,需将项目部署到开发环境。
部署调度
使用 mda dev(https://docs.langchain.com/langsmith/python/managed-deep-agents-cli#develop-locally)在本地测试项目,然后使用 mda deploy(https://docs.langchain.com/langsmith/python/managed-deep-agents-deploy)进行部署。在 LangSmith 中打开部署跟踪,可检查模型调用、工具调用、错误和延迟。当部署状态变为 DEPLOYED 时,mda deploy 会在已部署的代理服务器上搜索现有的托管深度代理 cron 任务,删除它们,并为当前 schedules/ 声明创建新的 cron 任务。删除本地调度文件并重新部署,将移除对应的托管 cron 任务。
故障排除
- “must export a named schedule declaration”:在
schedules/目录的每个文件中定义顶层schedule。 - “must define exactly one of prompt or input”:添加
prompt或input之一,但不能同时添加两者。 - “cron must be a standard 5-field expression”:使用五个 cron 字段,而非基于秒的 cron 语法。
- “schedule is not static”:用字面量或顶层字面常量替换计算值。
- “failed to create cron for schedule”:在 LangSmith 中打开部署 URL,确认已部署的代理服务器状态正常。
- “Invalid thread ID: must be a UUID (HTTP 422)”:持久调度声明的线程 ID 不是 UUID。请替换为现有线程的 UUID。参见选择线程行为(https://docs.langchain.com/langsmith/python/managed-deep-agents-schedules#choose-thread-behavior)。
- 调度在本地开发期间不运行:
mda dev不会配置调度。参见本地测试调度(https://docs.langchain.com/langsmith/python/managed-deep-agents-schedules#test-schedules-locally)。
后续步骤
相似文章
@LangChain: 关于Managed Deep Agents您需要了解的一切:
LangChain 宣布 Managed Deep Agents 进入私有测试版,这是一个托管的 API 优先运行时,用于构建、运行和生产中操作深度代理,利用开源 Deep Agents 工具集,并与 LangSmith 集成,实现持久执行、流式处理和人机协作工作流。
@LangChain: 提示:您可以将 Managed Deep Agent 连接到 Slack。提及、私信和线程回复都会启动一次运行。您的代理发布…
LangChain 宣布用户可以将 Managed Deep Agent 连接到 Slack,允许提及、私信和线程回复触发代理运行,并在同一对话中发布响应。
@LangChain: Deep Agents 现在支持动态子代理。主代理不再通过工具调用来调用子代理,而是编写协调…
LangChain 的 Deep Agents 现在支持动态子代理,主代理通过编写协调代码来大规模协调工作,实现处理数百份文档等具有确定性覆盖的工作流程。
@LangChain:每台 Managed Deep Agent 都是一个 MCP 服务器。让编程助手和其他代理委托研究、分析等更多功能…
LangChain 的 Managed Deep Agents 现在可作为 MCP 服务器使用,允许编程助手和其他代理通过标准协议端点委派任务,如研究和分析。
@LangChain: 托管深度代理保持您已经熟悉的项目结构:↳ AGENTS.md、skills/、subagents/ 和 tools.json Context Hub…
LangChain 推出了托管深度代理(Managed Deep Agents),保持了熟悉的项目布局:AGENTS.md、skills/、subagents/ 和 tools.json,并提供了 Context Hub 用于跨会话的持久上下文管理。