Today for AI

LangChain Blog · 2026/10/8 02:09:51

LangChain 发布 Managed Deep Agents v0.9:支持自主调度、单次运行配置及 Slack 交互

原标题:What's New in Managed Deep Agents: schedules, per-run configuration, and Slack reactions
42AI 研判分
核心综述

LangChain 推出 Managed Deep Agents v0.9,新增三大核心功能:允许智能体在对话中自主创建提醒与周期性任务、支持每次运行时动态切换模型与工具配置、以及集成 Slack 消息反应机制。这些更新旨在提升内部智能体在协作场景中的灵活性与拟人化交互体验。

报道全文原始报道全文

本文目录6 个章节

Nathan Drezner 2026年10月7日 4分钟 返回博客 创建智能体 创建智能体

核心要点

  • 智能体自主创建调度: 智能体可以在对话中设置提醒和周期性任务。
  • 每次运行独立配置: 单次部署可在每次运行时动态选择模型、技能和工具。
  • Slack 表情回应: 智能体在回复消息前,会先对消息进行表情回应以示确认。

今天,我们发布了 Managed Deep Agents v0.9,带来了新功能,使智能体能够自主安排后续工作、在每次运行时重新配置自身,并对 Slack 消息做出反应。

这些更新让构建驻留在 Slack 或您自有渠道中的内部智能体变得更加容易,使其工作方式更像团队伙伴。

让智能体自主安排工作

新的 Schedules SDK 允许智能体在对话过程中创建提醒、跟进任务和周期性任务,从而处理诸如“明天提醒我这件事”之类的请求。

智能体在对话期间自行创建调度计划,该计划将以发起请求的用户身份运行,使用其权限集和连接,并将结果返回到同一频道。

在运行内部创建调度计划:

PYTHON
await schedules.create(owner={"type": "user"}, cron="0 9 * * 1-5", timezone="America/Los_Angeles", prompt="Write the daily digest.")

将其封装在工具后面最为实用,这样您的智能体用户只需通过聊天即可创建、列出、更新和删除调度计划。以下是一个提醒工具示例:

PYTHON
from langchain.tools import tool
from managed_deepagents import schedules

@tool
async def remind_me(prompt: str, cron: str, timezone: str = "UTC") -> str:
    """Run a prompt for the current user on a cron schedule."""
    item = await schedules.create(
        owner={"type": "user"},
        cron=cron,
        timezone=timezone,
        prompt=prompt,
    )
    return f"Created schedule {item['id']}."

Agent 会传递一个提示词(prompt)和一个 cron 表达式,每次 cron 触发时,LangSmith 都会使用该提示词启动一个新的运行(run)。调度任务会继承其创建时所在的频道,因此结果会发布回请求来源处:例如,在 Slack 中设置的工作日提醒,会在每次运行时向该对话发送一条新消息。一次性调度任务(使用 at 而非 cron)会在原始线程中回复,这非常适合诸如“一小时后检查此部署状态”的后续跟进场景。

按运行配置 Agent

现在可以动态地按运行配置 Agent。将 Agent 设置为可调用函数:它在每次运行开始时接收 runtime,并返回一个 define_deep_agent 定义,从而为该次运行选择模型、指令、技能(skills)、MCP 服务器和沙箱(sandbox)。

你无需为每个团队或代码仓库维护几乎相同的 Agent 副本,只需运行一个部署即可。这使得你的部署能够更灵活地运作,单个 Agent 部署可以根据上下文(如发起请求的频道或用户)针对不同团队或用例进行定制。

假设有一个内部 Slack Agent 服务于多个团队。你的 Agent 函数可以检查某次运行来自哪个频道,并为财务团队加载计费相关技能,或为平台团队加载事件响应 MCP 服务器。这与通过指令告诉模型何时使用某个技能不同:配置是在模型运行之前设定的,因此 Agent 永远不会看到其配置范围之外的技能或 MCP 工具。这有助于保持较小的上下文窗口,同时兼具访问控制功能,并且允许你自行选择模型——这是模型自身无法做到的。

总体而言,这种方法避免了非确定性输出,即在某些我们确切知道应向 Agent 提供哪些工具集的情况下,不再让模型去选择工具箱。

同样的思路也适用于编码 Agent,它可以为每个代码仓库加载不同的技能,并根据需求选用更便宜或更强大的模型:

PYTHON
# agent.py: one coding agent, configured per repo at the start of each run
from dataclasses import dataclass

from managed_deepagents import ManagedServerRuntime, define_deep_agent

```python
REPOS = {
    "payments-service": {
        "model": "openai:gpt-5",
        "instructions": "Python 服务。在创建 PR 之前运行 pytest。",
        "skills": ["./skills/python-service"],
    },
    "storefront": {
        "model": "openai:gpt-5-mini",
        "instructions": "Next.js 应用。在创建 PR 之前运行 Web 测试和无障碍(a11y)检查。",
        "skills": ["./skills/typescript-web"],
    },
}

@dataclass
class AppContext:
    repository: str = ""

def agent(runtime: ManagedServerRuntime[AppContext]):
    execution = runtime.execution_runtime
    context = execution.context if execution is not None else None
    repo = context.repository if context is not None else None
    config = REPOS.get(repo, REPOS["storefront"])
    return define_deep_agent(name="open-swe", context_schema=AppContext, **config)

‍‍

该函数读取 runtime.execution_runtime.context,并在不存在上下文时回退到默认配置,例如在频道运行期间或当 Agent Server 加载智能体以读取其 schema 时。调用者通过运行的 context 来选择配置:

PYTHON
# 同一部署,不同仓库:只需更改运行上下文
await client.runs.create(
    thread_id,
    "open-swe",
    input={"messages": [{"role": "user", "content": "Fix the flaky refund test."}]},
    context={"repository": "payments-service"},
)

响应 Slack 消息

Slack 表情反应 能立即向发送者表明智能体已接收其消息,即使智能体需要花费一段时间进行推理和调用工具后才回复。表情反应默认开启(👀),而你在 Slack 频道上新增的 reactions 选项允许你关闭它、选择其他 emoji,或为每条消息动态选择 emoji。以下示例在消息提及故障时使用 🐛,否则使用 👀:

PYTHON
from managed_deepagents import channels

async def choose_emoji(context: dict) -> str:
    return "bug" if "broken" in context["text"].lower() else "eyes"

channel = channels.slack(name="Support Bot", reactions=choose_emoji)

Reactions 可以很简单。不过,你也可以通过配置一个调用模型的函数来定制 reaction 响应,从而选择更精准的 emoji。像 Jev 这样的决策模型能让这一过程既快速又低成本;Slack channel docs 中提供了完整的示例。

开始使用

Managed Deep Agents v0.9 今日已开启公开测试(Public Beta)。你可以通过 Managed Deep Agents docs 了解更多详情,或按以下步骤快速上手:

JAVASCRIPT
uvx --from managed-deepagents mda init my-agent
cd my-agent
uv run mda deploy

‍ICYMI: v0.8 版本新增了 per-user memory、用于从任意服务触发运行的 custom HTTP channels、由 Parallel 驱动的内置 web search 等功能。阅读 v0.8 更新文章。

‍

查看你的 agent 实际在做什么

LangSmith 是我们的 agent engineering platform,帮助开发者调试每一个 agent 决策、评估变更,并实现一键部署。

Try LangSmithGet a demo