最近一直在折腾 OpenClaw 的时候,实操完之后就在想这到底是怎么实现的?
未必我们用coze、Dify低代码平台或LangGraph等开发框架开发的智能体就可以淘汰了?
我第一反应其实挺质疑的:
这东西连个可视化编排界面都没有,拿什么做流程?
研究了一段时间才发现——问题根本问错了方向。
OpenClaw 从一开始就不是靠“画流程”来实现自动化的,它走的是另一套思路:你只说目标,系统自己想办法把路走出来。
这篇文章就把它的底层逻辑拆一拆:为什么它跟扣子、LangGraph 看起来都在做“自动化”,但其实不是一条路。

一、先说扣子和 LangGraph:它们为什么离不开“流程”
1)扣子(Coze)这类工具:画布连线式
扣子本质是让你在画布上连节点、拉线:
HTTP 请求节点 → 代码节点 → LLM 节点 → 输出节点
每一步做什么、输入输出怎么传、失败怎么兜底……都需要你提前定义好。
它的优点也很明确:确定性强、可审计。你画出来的东西基本就是最终执行路径。
但前提是:你得先在脑子里把流程想清楚,然后把它“翻译”成节点图。
很多时候,真正费劲的不是工具,而是这个“翻译”。
2)LangGraph:把流程图写进代码里
LangGraph 更进一步,它让你用 Python 声明节点和边,本质还是一个有向图(DAG 或带环图),适合需要精确控制状态迁移的场景。
团队里只要有人能写代码,这套非常顺——因为它把“流程”变成了可版本管理、可测试的东西。
二、核心差别:三者的默认假设根本不一样
扣子 / LangGraph 有个共同前提:
你知道该怎么做,只是需要工具帮你落地执行。
OpenClaw 的前提是另一句:
你只知道想要什么结果,让 Agent 自己想怎么做。
这就是为什么你会觉得它“怎么没有流程图”:
因为在 OpenClaw 里,“流程”不是你画出来的,而是 运行时被 Agent 动态规划出来的。
三、OpenClaw 的实际架构:五层把“对话”变成“自动化”
OpenClaw 的运行时大致可以拆成五层(理解这个结构,就理解它为什么不需要画图):
控制接口(消息入口)
WhatsApp、Telegram、Slack、API、Webhook……你从哪发消息都行。
Gateway 控制平面
负责路由、鉴权、调度,把入站请求派发给对应的 Agent 实例。
Agent Runtime(推理核心)
LLM 在这里接收任务、拆解步骤、决定调用哪些 Skills。
Skills / Tools 执行层
每个 Skill 是一个能力单元:可以从 ClawHub 安装,也可以自己用 TypeScript 写。
外部系统集成
GitHub、Notion、Gmail、Slack、Linear……通过 Skills 去调用。
注意这条链路里,压根没有“你画的流程图”这个概念。
你给它一句自然语言,Agent Runtime 自己决定:要分几步、用哪些技能、怎么串起来。
四、一条消息是怎么变成一套自动化流程的?
举个很具体的例子。你在 Slack 里发一句话:
每周一早上,扫描 GitHub 里标了 urgent 的 Issue,
在 Notion 里建一个摘要页,
然后把链接发到 #dev-team 频道
OpenClaw 内部大概会经历这么几步:
第一步:任务理解
Agent 会把这句话拆成几个子目标:
定时触发:每周一早上
数据采集:GitHub Issues 过滤
urgent多系统写入:Notion 创建页面 + Slack 发消息
第二步:Skills 匹配
Agent 会去检索本地和 ClawHub 的 Skills 注册表:
有没有 GitHub Skill?
有没有 Notion Skill?
有没有 Slack Skill?
缺的话,会提示你安装/授权。
第三步:Pipeline 组装
OpenClaw 会用一个内部叫 “Lobster” 的 Workflow Shell,把多个 Skill 串成执行链,并把“每周一早上”绑定成 Cron 触发器。
第四步:持久化运行
配置保存下来,之后每周一按时跑,跨会话保持状态。
这里最关键的一点是:
你只做了“说出目标”这一步。剩下的触发器、集成选择、步骤编排,都是 Agent 自动补齐的。
五、Skills 机制:OpenClaw 真正的“可扩展性”来源
如果说扣子靠节点市场,LangGraph 靠代码能力,那 OpenClaw 的扩展核心是 Skills。
你可以把 Skill 理解为“带元信息的函数”:
有名字、描述
有参数 schema
Agent 可以通过语义匹配决定要不要调用它
比如你可以用 TypeScript 写一个读取 GitHub Issues 的 Skill:
// 一个读取 GitHub Issues 的 Skillexport const getUrgentIssues = defineSkill({name: 'get_urgent_issues',description: 'Fetch GitHub issues labeled urgent',params: { repo: z.string() },run: async ({ repo }) => {// 调 GitHub API,过滤 labelreturn octokit.issues.list({ repo, labels: 'urgent' })}})
写完发布到 ClawHub,别人(或者 Agent 本身)就能按需调用。
这点跟 LangChain 的 Tool 很像,但 OpenClaw 这套更强调 “社区注册表 + 自动发现”:Agent 不只是“能用工具”,而是“会找工具”。
六、跟扣子、LangGraph 的差异到底在哪里?
一句话可能说不透,简单拉个对比维度:
维度 | 扣子 / LangGraph | OpenClaw |
|---|---|---|
编排方式 | 可视化节点 / 代码 DAG | 自然语言 + Agent 动态规划 |
流程控制 | 确定性,你写死的 | LLM 运行时决策 |
扩展方式 | 插件市场 / 代码节点 | Skills + TypeScript + ClawHub |
触发器 | 需手动配置 | Agent 根据描述自动绑定 |
记忆/状态 | 需手动配置存储节点 | 内置跨会话持久记忆 |
运行环境 | 云端托管为主 | 本地优先,支持自托管 |
可审计性 | 强,流程可视化 | 弱,需查 Agent 执行日志 |
编排方式
扣子 / LangGraph:可视化节点 / 代码 DAG
OpenClaw:自然语言 + Agent 动态规划
流程控制
扣子 / LangGraph:确定性强,你写死的路径
OpenClaw:LLM 运行时决策,路径可能变化
扩展方式
扣子 / LangGraph:插件市场 / 代码节点
OpenClaw:Skills + TypeScript + ClawHub
触发器
扣子 / LangGraph:你手动配
OpenClaw:Agent 根据描述自动绑定
记忆/状态
扣子 / LangGraph:常常要你自己加存储节点、状态管理
OpenClaw:内置跨会话持久记忆(体验上更像“助理”)
运行环境
扣子:云端托管为主
OpenClaw:本地优先,支持自托管
可审计性
扣子 / LangGraph:强,流程可视化/可追溯
OpenClaw:相对弱,更多依赖 Agent 执行日志
泼盆冷水:它的软肋在哪?
OpenClaw 并非万能。因为流程是 Agent 动态规划的,这意味着“不确定性”,而且非常消耗token。
如果你的场景是金融对账、法务合规,每一步都不能差分毫,那请死心塌地用 LangGraph。但如果你的需求还在早期、经常变动,或者你只是想搞个个人助理来处理零散的同步任务,OpenClaw 的开发效率简直是降维打击。
七、什么场景下 OpenClaw 会更顺手?
根据实际使用,有几个场景 OpenClaw 明显更顺手:
需求还在变的早期阶段。 你还不确定整个自动化流程长什么样,但想先跑起来验证。用自然语言迭代比改节点图快得多。
多系统联动,集成点多但逻辑不复杂。 比如"把 Notion 数据库里打了 done 标签的条目同步到 Linear,然后关掉对应的 GitHub Issue",这种事 Skills 拼一下就行,不值得建一套编排流程。
个人效率工具,对可靠性要求不是极致的。 用来替代手动操作,偶尔出个意外重跑一次,可以接受。
八、总结
扣子是"你画流程,AI 执行";
LangGraph 是"你写图,AI 沿着走";
OpenClaw 是"你说目标,AI 自己想路"。
没有高下之分,看你的场景更需要哪种控制粒度。
如果你的团队已经在用扣子或 LangGraph 跑稳了生产流程,OpenClaw 很可能不是替代品,而是可以并存的补充——专门处理那些不值得认真"建流程"、但又确实需要自动化的零散任务。
夜雨聆风