在AI开发领域,我们经常听到各种技术术语,但很少有人能清晰地解释它们之间的区别。
今天,我们来深入探讨三个核心概念:Agent框架(Framework)、Agent运行时(Runtime)和Agent工具集(Harness)。
LangChain团队维护着几个不同的开源项目:LangChain和LangGraph是其中最重要的两个,而DeepAgents正在成为越来越受欢迎的新星。
我们尝试用不同的术语来描述它们:LangChain是Agent框架,LangGraph是Agent运行时,DeepAgents是Agent工具集。

Agent框架:构建AI应用的基础抽象
大多数帮助构建LLM应用的开源包都可以归类为Agent框架。它们提供的主要价值是抽象层。
这些抽象代表了对世界的心理模型,理想情况下应该让开发者更容易上手。它们还提供了构建应用的标准方式,使开发者能够轻松地在不同项目之间切换和协作。
然而,抽象也有其缺点。如果设计不当,它们可能会掩盖内部工作原理,无法为高级用例提供所需的灵活性。这是所有框架都面临的经典挑战。
我们将LangChain定位为Agent框架。在1.0版本中,我们花费了大量时间思考抽象设计——包括结构化内容块的抽象、Agent循环的抽象,以及我们认为能为标准Agent循环增加灵活性的中间件抽象。
其他我认为属于Agent框架的产品包括:Vercel AI SDK、CrewAI、OpenAI Agents SDK、Google ADK、LlamaIndex等等。这些工具都专注于提供开发抽象和标准化的构建方式。
Agent运行时:生产环境的基础设施
当你需要在生产环境中运行Agent时,你需要某种形式的Agent运行时。这个运行时应该提供更多基础设施层面的考虑。最重要的是持久执行(Durable Execution),但我也会将流式传输支持、人机交互支持、线程级持久化和跨线程持久化等功能归入此类。
构建LangGraph时,我们希望从零开始构建一个生产就绪的Agent运行时。我们认为最接近这个概念的其他项目是Temporal、Inngest和其他持久执行引擎。
Agent运行时通常比Agent框架更底层,可以为Agent框架提供支持。例如,LangChain 1.0就是构建在LangGraph之上,以利用其提供的Agent运行时能力。
Agent工具集:开箱即用的完整解决方案
DeepAgents是我们正在开发的最新项目。它比Agent框架更高层——构建在LangChain之上。
它添加了默认提示词、工具调用的固化处理、规划工具、文件系统访问等功能。它不仅仅是一个框架——它是一个内置的完整解决方案。
我们用来描述DeepAgents的另一种方式是"通用版本的Claude Code"。公平地说,Claude Code也在尝试成为Agent工具集——他们发布的Claude Agent SDK就是朝这个方向迈出的一步。
可以说所有的编程CLI工具在某种程度上都是Agent工具集,而且可能是通用的。
何时使用哪种工具?
让我们总结一下这些差异,并讨论何时使用每种工具:
• Agent框架 - 当你需要构建定制化的AI应用,需要灵活的抽象和标准化的开发方式时使用
• Agent运行时 - 当你需要在生产环境中部署Agent,需要持久执行、流式传输和人机交互等基础设施功能时使用
• Agent工具集 - 当你需要快速启动一个功能完整的Agent应用,不想从零开始构建时使用
边界的模糊性与未来发展
我必须承认,这些界限是模糊的。例如,LangGraph可能最好被描述为既是运行时又是框架。
"Agent工具集"这个术语我也是刚开始看到更多人使用(我并没有创造这个词)。我认为目前还没有对这些概念的超级清晰的定义。
不过,我始终认为在早期技术领域开发的乐趣之一,就是为如何讨论事物建立心理模型。
我们知道LangChain与LangGraph不同,DeepAgents与它们两者都不同。我们认为将它们分别描述为框架、运行时和工具集是一个有用的区分——但一如既往,我们保持学习的心态来进一步深入理解它们!
这种分类方式帮助开发者更好地理解AI开发生态系统,选择适合自己项目需求的工具。随着技术的不断发展,这些定义可能会继续演进,但核心概念——抽象、基础设施和完整解决方案——将继续指导我们的技术选择。