OpenClaw & LangGraph 全栈学习方案
OpenClaw 是"能干活的 Agent",LangGraph 是"编排 Agent 的框架"。两者不是替代关系,而是互补——OpenClaw 可通过 MCP Server 触发 LangGraph 工作流,作为面向用户的层,专业框架处理底层编排。
·
从零到精通,两条路线并行,最终融合。每天 2 小时,8 周通关。
文章目录
🗺️ 先搞清定位:两者是什么关系?
| 维度 | OpenClaw | LangGraph |
|---|---|---|
| 本质 | 开箱即用的 AI Agent 运行时 | 底层图编排框架 |
| 设计逻辑 | 配置驱动、模板优先、执行就绪 | 代码驱动、逻辑定义优先 |
| 状态管理 | Workspace / Config 驱动 | 精细的 Checkpoint 与线程控制 |
| 上手路径 | 装好就能跑,IM 里直接用 | 从图原语开始搭建 |
| 目标用户 | 业务落地实施者 | 深度定制的系统架构师 |
| 核心优势 | 7×24 在线、心跳机制、Skill 生态、IM 集成 | 状态可视化、可中断/恢复、Human-in-the-Loop、LangChain 生态 |
一句话:OpenClaw 是"能干活的 Agent",LangGraph 是"编排 Agent 的框架"。两者不是替代关系,而是互补——OpenClaw 可通过 MCP Server 触发 LangGraph 工作流,作为面向用户的层,专业框架处理底层编排。
📅 8 周学习路线总览
第1-2周 ██░░░░░░ OpenClaw 入门 + LangGraph 入门(并行)
第3-4周 ████░░░░ OpenClaw 进阶 + LangGraph 进阶
第5-6周 ██████░░ 各自实战项目
第7-8周 ████████ 融合架构 + 企业级部署
第 1-2 周:双线入门
🦞 OpenClaw 入门(第 1-2 周)
Day 1-2:安装与首次运行
# 一键安装
curl -fsSL https://openclaw.ai/install.sh | bash
# 或 npm 方式
npm install -g openclaw@latest
# 运行引导向导
openclaw onboard
# 验证
openclaw status
必须搞懂的四大构建块:
| 模块 | 类比 | 作用 |
|---|---|---|
| Gateway | 前门 | 连接 Telegram/Discord/Slack 等消息渠道 |
| Skills | 工具箱 | Agent 能做什么,类似手机 App |
| Memory | 大脑 | 跨对话记忆,存储在 ~/.openclaw/memory/ |
| Sandbox | 安全网 | 控制 Agent 的权限边界 |
Day 3-4:连接第一个消息渠道
推荐从 Telegram 开始(5 分钟搞定):
- 找 @BotFather 创建 Bot,获取 Token
openclaw config set channels.telegram.token <YOUR_TOKEN>- 发消息测试
练习任务:
- 让 Agent 回复"你能做什么?"
- 让 Agent 总结最新科技新闻
- 让 Agent 记住你的名字和偏好
Day 5-7:安装和使用社区 Skills
# 浏览可用技能
openclaw skills search
# 安装常用技能
openclaw skills install @openclaw/web-search
openclaw skills install @openclaw/file-manager
openclaw skills install @openclaw/calendar
# 查看已安装
openclaw skills list
练习任务:
- 用 Web Search Skill 搜索并总结一篇论文
- 用 Calendar Skill 管理日程
- 安装 3 个以上社区 Skill 并测试
🔗 LangGraph 入门(第 1-2 周)
Day 1-2:环境搭建 + 快速体验
pip install -U langgraph langchain-openai
第一个 Agent(5 行代码跑起来):
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
agent = create_react_agent(llm, tools=[])
result = agent.invoke({"messages": [("user", "你好!")]})
print(result["messages"][-1].content)
Day 3-5:理解四大核心组件
┌─────────────────────────────────────┐
│ StateGraph │
│ ┌───────┐ ┌───────┐ ┌─────┐ │
│ │ Node1 │───▶│ Node2 │───▶│ END │ │
│ └───────┘ └───┬───┘ └─────┘ │
│ │ │
│ ┌────▼────┐ │
│ │ Node3 │ │
│ └─────────┘ │
│ State: {messages, step, ...} │
└─────────────────────────────────────┘
| 组件 | 作用 | 关键点 |
|---|---|---|
| State | 存储工作流数据 | TypedDict / Pydantic 定义 |
| Node | 执行具体逻辑 | LLM / Tool / Human / Router |
| Edge | 定义流程走向 | 普通边 / 条件边 |
| StateGraph | 编排所有组件 | .compile() 生成可执行对象 |
Day 6-7:手写第一个多步工作流
from typing import TypedDict, Annotated, List
from langchain_core.messages import BaseMessage
from langgraph.graph import StateGraph, END
class MyState(TypedDict):
messages: Annotated[List[BaseMessage], "对话历史"]
current_step: str
def chatbot_node(state: MyState):
response = llm.invoke(state["messages"])
return {"messages": [response]}
workflow = StateGraph(MyState)
workflow.add_node("chatbot", chatbot_node)
workflow.set_entry_point("chatbot")
workflow.add_edge("chatbot", END)
app = workflow.compile()
# 执行
result = app.invoke({"messages": [("user", "你好")], "current_step": "start"})
练习任务:
- 修改 State,加入
user_id和session_id - 添加第二个节点做后处理
- 用条件边实现分支逻辑
第 3-4 周:双线进阶
🦞 OpenClaw 进阶
Week 3:自定义 Skill 开发
Skill 文件格式:
---
name: git-summary
version: 1.0.0
description: 总结 Git 仓库近期活动
trigger: "git summary|repo summary|what happened in git"
tools: [shell]
---
# Git Summary
## When to Use
当用户询问仓库提交历史时触发。
## Steps
1. 运行 \`git log --oneline -20\` 获取最近 20 条提交
2. 分析提交模式和频率
3. 生成可读的总结报告
## Examples
- "git summary" → 总结最近的提交活动
- "repo summary this week" → 本周提交概览
关键知识点:
| 触发类型 | 语法 | 示例 |
|---|---|---|
| 关键词 | `"word1 | word2"` |
| 正则 | "/pattern/" |
`"/deploy .+ to (staging |
| 始终 | "*" |
每条消息都触发(慎用) |
Skill 工具声明:
tools:
- shell # 终端命令
- filesystem # 文件读写
- browser # 浏览器自动化
- http # API 请求
- memory # 记忆读写
- chat # 发消息到渠道
高级模式:
# 带配置的 Skill
---
name: daily-digest
config:
email: ""
time: "09:00"
timezone: "UTC"
---
# 依赖其他 Skill 的 Skill
---
name: morning-routine
depends: [weather-briefing, calendar-summary, news-digest]
---
练习任务:
- 写一个自动日报生成 Skill
- 写一个带配置的定时摘要 Skill
- 写一个链式 Skill(依赖其他 Skill)
- 发布到 ClawHub:
openclaw clawhub publish ./my-skill.md
Week 4:多 Agent + 浏览器自动化 + 安全
多 Agent 管理:
# 创建独立 Agent
openclaw create-agent work --model claude-sonnet
openclaw create-agent personal --model claude-haiku
openclaw create-agent lab --model ollama:llama3
# 切换 Agent
openclaw switch-agent work
| Agent | 模型 | 连接 | 用途 |
|---|---|---|---|
| Work | Claude Sonnet | Slack, Gmail, Linear | 专业工作 |
| Personal | Claude Haiku | Telegram, Calendar | 个人事务 |
| Lab | Ollama 本地 | 仅命令行 | 实验测试 |
浏览器自动化:
openclaw plugins install @openclaw/browser-control
openclaw config set browser.enabled true
openclaw config set browser.headless false # 调试用
安全与费用控制:
# Docker 沙箱
openclaw config set sandbox.mode "docker"
# 预算管控
openclaw config set ai.dailyLimit 1000
openclaw config set ai.monthlyBudget 50
# 监控
openclaw stats usage
openclaw stats cost
费用参考:
| 使用级别 | 预估月费 |
|---|---|
| 轻度(10-20 次/天) | $5–10 |
| 中度(50-100 次 + 定时任务) | $20–30 |
| 重度(自动化 + 浏览器) | $50–100 |
🔗 LangGraph 进阶
Week 3:状态管理 + 高级控制流
状态持久化三阶梯:
MemorySaver(内存,测试用)
↓
SqliteSaver(本地数据库)
↓
PostgresSaver(生产环境)
条件边实现分支:
def router_node(state):
last_msg = state["messages"][-1].content.lower()
if "搜索" in last_msg:
return "searcher"
elif "写" in last_msg:
return "writer"
return "responder"
workflow.add_conditional_edges(
"router",
router_node,
{"searcher": "searcher", "writer": "writer", "responder": "responder"}
)
Send 动态扇出(并行执行):
from langgraph.types import Send
def fan_out_node(state):
topics = state["topics"] # ["AI", "区块链", "量子计算"]
return [Send("researcher", {"topic": t}) for t in topics]
子图嵌套:
# 把复杂工作流拆成子图
research_subgraph = StateGraph(ResearchState)
# ... 构建子图
main_workflow.add_node("research", research_subgraph.compile())
Week 4:Human-in-the-Loop + 记忆系统
人工审批节点:
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = workflow.compile(
checkpointer=checkpointer,
interrupt_before=["review"] # 在 review 节点前暂停
)
# 第一阶段:执行到 review 前停止
for event in app.stream(initial_state, config={"configurable": {"thread_id": "1"}}):
print(event)
# 人工审批后恢复
state = app.get_state(config={"configurable": {"thread_id": "1"}})
app.update_state(
config={"configurable": {"thread_id": "1"}},
values={"approved": True}
)
# 继续执行
for event in app.stream(None, config={"configurable": {"thread_id": "1"}}):
print(event)
记忆分类:
| 类型 | 用途 | 生命周期 |
|---|---|---|
| 短期记忆 | 当前对话上下文 | 会话结束即清除 |
| 长期记忆(Store) | 跨会话持久化 | 永久保存 |
| Time Travel | 回溯工作流历史状态 | 审计/调试 |
| State Forking | 基于某状态衍生并行分支 | A/B 测试 |
第 5-6 周:实战项目
🦞 OpenClaw 实战项目
项目 1:个人效率助手(Week 5)
功能清单:
├── 每日晨报 Skill(天气 + 日历 + 新闻 + 待办)
├── 邮件摘要 Skill(Gmail 集成)
├── 会议纪要 Skill(自动记录 + 归档到 Obsidian)
├── 代码审查 Skill(Git diff 总结)
└── 费用监控(openclaw stats cost 定时推送)
项目 2:团队自动化 Agent(Week 6)
架构:
┌─────────────┐
│ Slack 渠道 │ ← 团队成员交互
└──────┬──────┘
▼
┌─────────────┐
│ Work Agent │ ← Claude Sonnet
├─────────────┤
│ Skills: │
│ · Jira 同步 │
│ · PR 审查 │
│ · 部署通知 │
│ · 值班排期 │
└─────────────┘
🔗 LangGraph 实战项目
项目 1:多 Agent 研究助手(Week 5)
# 架构设计
research_workflow = StateGraph(ResearchState)
# 节点
research_workflow.add_node("router", main_router)
research_workflow.add_node("researcher", researcher_node) # 搜索+分析
research_workflow.add_node("writer", writer_node) # 写报告
research_workflow.add_node("reviewer", reviewer_node) # 审核质量
research_workflow.add_node("responder", respond_node) # 直接回答
# 流程
research_workflow.set_entry_point("router")
research_workflow.add_conditional_edges("router", main_router, {
"researcher": "researcher",
"writer": "writer",
"respond": "responder"
})
research_workflow.add_edge("researcher", "reviewer")
research_workflow.add_edge("reviewer", "writer") # 审核通过→写报告
research_workflow.add_edge("writer", "router") # 写完→路由下一轮
research_workflow.add_edge("responder", END)
项目 2:企业审批流 Agent(Week 6)
# Human-in-the-Loop + 状态持久化
approval_workflow = StateGraph(ApprovalState)
approval_workflow.add_node("submit", submit_request)
approval_workflow.add_node("auto_check", auto_review) # 自动初审
approval_workflow.add_node("human_review", human_decision) # 人工审批
approval_workflow.add_node("execute", execute_action) # 执行操作
approval_workflow.add_node("reject", reject_request) # 驳回
approval_workflow.add_conditional_edges("auto_check", lambda s:
"human_review" if s["needs_human"] else "execute"
)
# 在人工审批前中断
app = approval_workflow.compile(
checkpointer=PostgresSaver(conn_string),
interrupt_before=["human_review"]
)
第 7-8 周:融合架构 + 企业级部署
🔗 融合架构:OpenClaw + LangGraph
这是最有价值的部分——两者不是二选一,而是分层协作:
┌──────────────────────────────────────────┐
│ 用户交互层 │
│ Telegram / Slack / Discord / Web │
├──────────────────────────────────────────┤
│ OpenClaw Agent 层 │
│ · 消息路由 · Skill 匹配 · 记忆管理 │
│ · 心跳监控 · 渠道适配 │
├──────────┬───────────────────────────────┤
│ │ MCP Server 桥接 │
├──────────▼───────────────────────────────┤
│ LangGraph 编排层 │
│ · 复杂工作流 · 状态机 │
│ · Human-in-the-Loop · 子图嵌套 │
├──────────────────────────────────────────┤
│ 工具 / 数据层 │
│ · 搜索 · 数据库 · API · 浏览器 │
└──────────────────────────────────────────┘
简单任务 → OpenClaw 直接处理
复杂多步任务 → OpenClaw 通过 MCP 触发 LangGraph 工作流
🏢 企业级部署
LangGraph 部署
# 编写配置文件 langgraph.json
# Docker 部署
langgraph build
langgraph up
# 或部署到 LangSmith Deployment
OpenClaw 部署
# Docker 生产部署
docker run -d --name openclaw \
-v ~/.openclaw:/root/.openclaw \
-e OPENCLAW_SANDBOX=docker \
openclaw/openclaw:latest
# 健康检查
openclaw doctor
openclaw logs
企业级可靠性清单
| 环节 | OpenClaw 方案 | LangGraph 方案 |
|---|---|---|
| 状态持久化 | 本地文件系统 | PostgresSaver |
| 错误处理 | Heartbeat 自愈 | 节点级 retry + tenacity |
| 监控 | openclaw stats |
LangSmith 集成 |
| 安全 | Docker 沙箱 + 路径 deny | 输入过滤 + 工具权限控制 |
| 费用 | dailyLimit + monthlyBudget | State 中跟踪 Token 消耗 |
| 审计 | Memory provenance | Time Travel + Checkpoint |
📚 学习资源速查
OpenClaw
| 资源 | 链接 |
|---|---|
| 官方文档 | https://clawdocs.org |
| 中文技术文档 | https://gitee.com/zmhbb/openclaw-doc |
| Skill 开发指南 | https://clawdocs.org/guides/skill-development/ |
| 社区 Skills | https://clawhub.ai |
| 中文教程(GitHub) | https://github.com/ben4claw/openclaw-tutorial |
| 阿里云部署指南 | https://developer.aliyun.com/article/1720468 |
LangGraph
| 资源 | 链接 |
|---|---|
| 官方文档 | https://langchain-ai.github.io/langgraph/ |
| 六步入门指南 | 腾讯云开发者社区搜"LangGraph 从零到一" |
| 企业级实践 | 腾讯云开发者社区搜"LangGraph 构建企业级" |
| Udemy 课程 | “LangGraph Mastery: Build Stateful & Agentic AI Workflows” |
| DeepSeek+LangGraph 实战 | withubtraining.com |
⚠️ 避坑指南
| 坑 | 症状 | 解法 |
|---|---|---|
| OpenClaw 端口冲突 | EADDRINUSE | openclaw gateway start --port 18790 |
| Skill 未加载 | 安装后不生效 | openclaw skills reload |
| LangGraph 状态混乱 | 依赖全局变量 | 始终用显式 State 定义 |
| 工具调用无重试 | 网络波动导致崩溃 | 用 tenacity 加 @retry 装饰器 |
| Token 消耗失控 | 长对话成本飙升 | State 中跟踪 + 自动摘要压缩 |
| Prompt 注入 | Agent 执行危险操作 | 输入过滤 + 工具权限控制 + 沙箱 |
🎯 学习节奏建议
| 节奏 | 适合人群 | 预计耗时 |
|---|---|---|
| 高强度 | 全职学习 / 转型 AI 工程 | 4 周(每天 4h+) |
| 标准节奏 | 在职学习 | 8 周(每天 2h) |
| 慢节奏 | 兴趣驱动 / 兼顾主业 | 12 周(每天 1h) |
核心原则:每一周都要有可运行的产出。别只看文档,手不能停。
更多推荐



所有评论(0)