
Harrison Chase、Caspar Broekhuizen 2026年10月24日 6分钟返回博客创建智能体创建智能体分享如何构建一个公司级执行框架?
我们在 LangChain 的营销、销售和工程团队都构建了内部智能体,它们彻底改变了这些团队的工作方式。要把它们做对并不容易。我们花了大量时间解决多用户执行框架带来的问题,最终每个团队都归结到相同的核心原语:
- 它存在于人们已经工作的地方(对我们来说是 Slack)
- 它知道是谁在提问,并对某些服务以该人的身份代为行事(OBO),对其他服务则使用自己的身份
- 它有记忆,作用域可以是全局和/或用户级别
- 代码在沙箱中运行,并且可以向需要认证的服务发起请求
- 其运行中有很大比例是定时触发的,而不是由某人显式调用(环境智能体!!)
感谢 @caspar_br 对本文的帮助
LangChain 内部智能体
为便于讨论,先简要概述我们在 LangChain 的三个主要智能体:
GTM Agent: 一个主动、始终在线的智能体,协助 GTM 活动。监控并回复邮件、处理新的合格线索、发送每日简报、回答关于客户账户的问题、执行外呼动作
OpenSWE: 我们的工程智能体,可以处理并起草 PR,还会对所有 PR 运行代码审查
Content Studio: 我们的营销智能体,可以按照我们的风格并基于对我们定位的了解来起草素材(博客、图片、PowerPoint、视频)
所有这些智能体都以相同方式构建。我们认为这是构建公司级执行框架的通用配方。

问题:用户体验
我们所有的智能体都存在于人们已经工作的地方,对我们来说就是 Slack。它们各自有独立的 Slack 应用, 可以被私信或在频道中被 @。在频道中使用这些智能体的一个好处是,其他人可以看到人们如何使用它。
我们添加的一个不错的功能是“拆分”Slack 中对话的概念。通常,一场精彩的对话正在进行,你想把你的智能体加进来征求它的意见或让它做点什么。但如果它在该线程中运行,就会污染人类对话并造成干扰。因此我们添加了一种简单方式,让智能体“拆分”到频道中自己的线程。

有些用户体验最好不要在 Slack 中完成。例如,在审阅 GTM Agent 希望我发送的邮件时,在 Slack 中一次性处理没问题,但如果有大量积压,从 Slack 消息中跟踪这些就完全不是愉快的体验。对于这类体验,我们最终确实构建了自定义 UI。

问题:身份
我们解决的最棘手、最微妙的问题是身份,具体来说:当这些智能体采取行动时,它们代表谁采取行动?
业界主要有两种处理方式:
- 代为行事: 智能体代表调用它的用户行事
- 固定凭证:无论调用者是谁,智能体都使用一组固定凭证(例如服务账号)
我们为每个智能体都是这样处理的(文档: 为 Managed Deep Agents 添加身份, 管理连接):
OpenSWE:
- 当你给它发消息时,它代表你行事(例如会用你的 GitHub 账号创建 PR)
- 当它在后台运行时(例如作为代码审查智能体),它以自身身份(GitHub 应用)行事
GTM Agent:
- 它有一些工具(例如 Salesforce 访问权限)使用固定身份,这样就不需要每个人都登录
- 它有一些工具(例如电子邮件)代表调用该智能体的用户行事。这些工具仅在私信中可用。在共享频道中不可用
Content Studio:
- 它有一些工具(例如 Notion)代表调用该智能体的用户行事
- 它有一些工具(例如 Twitter)使用一组固定凭证,在本例中是我们公司的 Twitter 账号。不过只有白名单中的用户才能在此调用某些操作。例如,不是每个人都能发推文(他们可能只能读取/起草)

问题:记忆
所有智能体都有 两层记忆:
- 全局记忆:适用于所有用户的记忆
- 用户记忆:仅适用于特定用户的记忆
智能体决定它们想将哪些事实记住到哪一层记忆。
这可能是目前探索最少的领域——我们在这里有很多工作想做!
问题:代码执行
我们的三个智能体都能编写和执行代码,而且为了完成任务往往需要这样做。它们都遵循在沙箱外运行、但连接到沙箱并在其中执行代码的模式。它们各自的基础镜像略有不同,依赖项也不同。OpenSWE(与编码最相关的智能体)能智能地决定启动哪个基础镜像(根据频道/用户而不同)。它们都利用了 LangSmith Sandboxes 上的 secret proxy , LangSmith 沙箱 (另见 为 Managed Deep Agents 添加沙箱),让智能体能够从沙箱内部以安全可靠的方式连接到各项服务。

问题:定时运行
很大一部分运行是由事件在后台调度或触发的,而不是由用户直接启动的。
其中一些是由智能体的开发者设置的。例如:OpenSWE 会监听 PR,当有新的 PR 创建时,它就会对其进行审查。
另一些则是由用户要求智能体自行设置的。例如:我让 GTM agent 每天给我发送一份简报,它就自己创建了一个 cron 来执行。 来执行。

所有这些智能体都构建在 Managed Deep Agents 之上
所有这些智能体都构建在 Managed Deep Agents 之上之上,而它又构建于开源 Deep Agents 框架之上。它提供基础设施来解决所有这些问题(频道、定时任务、沙箱、记忆、身份),同时提供足够的灵活性,以便按需定制智能体的行为。今天就通过这个 快速开始!