🐾 claw-stack
· Orange & Qiushi Wu architecture openClaw AI agents

OpenClaw vs LangChain:为什么我们不用框架

OpenClaw是一个轻量执行引擎。LangChain是一个厚重框架。这种区别为什么重要,以及为什么我们选择了前者。

看到Claw-Stack的人第一个问题往往是:为什么不直接用LangChain?它是Python AI智能体领域的主流框架,有庞大的生态系统,能帮你处理很多你本来要自己搭的管道。答案涉及到”框架”这个词的含义,以及我们实际需要什么。

OpenClaw是什么(以及它不是什么)

OpenClaw是一个npm包。你安装它,配置它,它作为本地进程运行,给Claude提供工具访问权限——文件系统、shell、MCP服务器、内存。它是一个运行时,不是框架。它不告诉你如何组织智能体逻辑。它只是执行工具调用并管理session。

这是一个有意义的区别。OpenClaw对工具如何被调用有意见,但对你的智能体做什么没有意见。没有基类需要继承,没有chain需要组合,没有graph需要定义。你写一个描述智能体行为的CLAUDE.md文件,OpenClaw带着这个上下文和你注册的工具运行一个Claude session。

LangChain正好相反。它对你应该如何构建智能体逻辑有强烈的意见:chains、runnables、agents、tools、memory、retrievers。它是传统意义上的框架——它提供骨架,你填充细节。当骨架与你的用例匹配时,这很有用。当不匹配时,就成了问题。

抽象问题

LangChain的抽象是围绕这样一个想法设计的:你会把LLM调用组合成一个流水线:输入→检索→LLM→输出→下一个LLM调用。这对RAG系统和简单问答智能体很有效。当你需要不符合流水线模式的东西时,它开始与你对抗。

我们的多智能体会议协议,比如,是让多个Claude实例作为结构化讨论的”参与者”运行。每个参与者读取对话历史,产生回应,并可选地发出共识信号或请求新一轮。协调者然后决定是否继续。这完全不符合LangChain的agent/tool模型。你要么把协议硬塞进一个带自定义工具的agent里,要么完全绕开LangChain的大部分抽象。

使用OpenClaw,我们直接自己写协调逻辑。协调者智能体是一个OpenClaw session,从共享文件读取当前状态,将参与者智能体作为子进程调用,收集响应,然后决定下一步。它用JavaScript(Node.js ES模块)编写,分布在六个源文件中——协调者、session管理器、摘要器、共识检测器、超时处理器和纪要写手——每一行都在做我们理解的事情。

调试体验

当LangChain智能体出错时,错误往往深埋在抽象栈的多层之中。你在调试一个runnable,它调用一个chain,chain调用一个LLM,LLM返回输出,输出被一个输出解析器解析……某处出了问题。要获得有用的堆栈追踪,需要理解哪一层抽象负责哪种行为。

使用OpenClaw,基本上只有两个地方要查:你的工具实现和Claude session日志。如果智能体调用了错误的工具,你检查session历史。如果工具产生了错误的输出,你检查工具。没有中间层试图帮你。

这比听起来更重要。我们运行过持续数小时、涉及数十次工具调用、积累了几百KB上下文的session。当第二个小时出了问题时,你想能读session日志并准确理解发生了什么。使用薄运行时,session日志就是发生了什么的完整记录。使用厚框架,框架的内部状态是另一个你也要检查的平行事实来源。

锁定和生态依赖

LangChain有超过500个集成包。很多由社区维护,在库更新时会出错。如果你围绕LangChain的抽象构建智能体逻辑,你就隐式接受了对它们全部被维护且兼容的依赖。

OpenClaw的集成模型不同:集成通过MCP(模型上下文协议)进行。MCP服务器就是一个暴露工具的进程。为新数据源编写一个MCP服务器大约需要50行代码。接口是标准的,协议很简单,当第三方集成出问题时,修复范围只限于那个服务器——不会通过智能体逻辑级联。

这就是为什么我们能在没有任何框架代码的情况下构建网页自动化层(26个Chrome DevTools Protocol工具)、AI和科技内容聚合器,以及备份集成。每个都是独立的MCP服务器,在启动时向OpenClaw注册其工具。

LangChain适用的场景

这不是对LangChain的全面反对。如果你在构建一个RAG系统,主要控制流是:检索相关文档,传给LLM,返回答案——LangChain的抽象很好地映射了这个模式。LCEL(LangChain表达式语言)在组合检索流水线方面确实很简洁。

它与向量数据库、文档加载器和嵌入模型也有强大的集成,从头构建这些需要时间。对于快速原型开发或将传统AI功能集成到现有Python应用中的团队,框架开销换取集成捷径是值得的。

我们的用例不同。我们在构建一个自主运行、在数天数周内积累状态、协调多个智能体完成复杂任务、出问题时需要能调试的AI智能体系统。为此,我们想要能找到的最透明、最精简的运行时。

原则:精简运行时,丰富技能

我们的架构遵循一个我们开始称之为”精简运行时,丰富技能”的原则。OpenClaw是运行时:处理工具分发、session管理以及与Claude的接口。其他一切——内存、安全、多智能体协调、浏览器自动化——都在独立的、可单独部署的模块中。

这意味着每个技能可以独立测试,无需触动其他部分就能替换,无需理解整个系统就能推理。代价是要写更多的连接代码。好处是出问题时,几乎总是在连接代码里——那是你写的、你理解的部分。

我们不把这个方案作为普遍正确的东西来鼓吹。对于一个需要在各个层面调试、扩展和理解的研究项目来说,这是正确的权衡。如果你在截止日期前交付产品功能,LangChain的框架开销可能是值得的。对我们来说,不值。

← 返回博客 Orange & Qiushi Wu