OpenClaw怎么自动生成流程图?OpenClaw自动生成流程图方法分享

OpenClaw是一个开源的AI工具编排客户端,可以把大模型的文本输出直接对接到Mermaid渲染引擎,实现"自然语言描述→结构化流程图→SVG/PNG导出"的全自动链路,具体OpenClaw怎么自动生成流程图?下面就分享详细的方法。

环境准备

先把依赖装好:

# OpenClaw CLI
npm install -g openclaw@latest

# Mermaid CLI(渲染用)
npm install -g @mermaid-js/mermaid-cli

# 验证安装
openclaw --version # 我这边是 v2.3.1
mmdc --version # v11.4.0

Python 侧需要 openai SDK:

pip install openai>=1.52.0

整体架构

先画个图说清楚数据怎么流的:

核心就三步:生成、校验、渲染。校验失败的话让 LLM 自己修,最多重试 3 次。

方案一:纯Python脚本实现

最直接的方式,适合想快速跑通 demo 的场景。

import subprocess
import json
import tempfile
import os
from openai import OpenAI

client = OpenAI(
 api_key=os.getenv("OFOX_API_KEY"),
 base_url="https://api.ofox.ai/v1"
)

SYSTEM_PROMPT = """你是一个 Mermaid 流程图生成器。
用户会给你一段业务流程描述,你需要输出合法的 Mermaid DSL 代码。

规则:
1. 只输出 mermaid 代码块内的内容,不要包含 ```mermaid 标记
2. 使用 graph TD(从上到下)或 graph LR(从左到右)
3. ID 只用英文字母和数字,显示文本用中文
4. subgraph 必须有对应的 end
5. 不要用特殊字符作为 ID"""

def generate_mermaid(description: str, model: str = "claude-sonnet-4.6") -> str:
 """调用 LLM 生成 Mermaid DSL"""
 resp = client.chat.completions.create(
 model=model,
 messages=[
 {"role": "system", "content": SYSTEM_PROMPT},
 {"role": "user", "content": f"请为以下业务流程生成 Mermaid 流程图:\n\n{description}"}
 ],
 temperature=0.2,
 max_tokens=2000
 )
 raw = resp.choices[0].message.content.strip()
 # 有时候 LLM 还是会包一层 ```mermaid
 if raw.startswith("```"):
 raw = raw.split("\n", 1)[1]
 if raw.endswith("```"):
 raw = raw.rsplit("```", 1)[0]
 return raw.strip()


def validate_mermaid(code: str) -> dict:
 """用 OpenClaw 校验 Mermaid 语法"""
 result = subprocess.run(
 ["openclaw", "validate", "--format", "mermaid", "--stdin"],
 input=code,
 capture_output=True,
 text=True,
 timeout=10
 )
 if result.returncode == 0:
 return {"valid": True, "errors": []}
 else:
 return {"valid": False, "errors": result.stderr.strip().split("\n")}


def fix_mermaid(code: str, errors: list, model: str = "claude-sonnet-4.6") -> str:
 """让 LLM 修复语法错误"""
 error_text = "\n".join(errors)
 resp = client.chat.completions.create(
 model=model,
 messages=[
 {"role": "system", "content": "你是 Mermaid 语法修复专家。修复下面的代码,只输出修复后的代码。"},
 {"role": "user", "content": f"代码:\n{code}\n\n错误信息:\n{error_text}"}
 ],
 temperature=0.1,
 max_tokens=2000
 )
 return resp.choices[0].message.content.strip()


def render_svg(mermaid_code: str, output_path: str) -> bool:
 """调用 mmdc 渲染成 SVG"""
 with tempfile.NamedTemporaryFile(mode='w', suffix='.mmd', delete=False) as f:
 f.write(mermaid_code)
 tmp_path = f.name

 try:
 result = subprocess.run(
 ["mmdc", "-i", tmp_path, "-o", output_path, "-t", "default"],
 capture_output=True,
 text=True,
 timeout=30
 )
 return result.returncode == 0
 finally:
 os.unlink(tmp_path)


def auto_flowchart(description: str, output: str = "output.svg", max_retries: int = 3):
 """一条龙:描述 → Mermaid → 校验 → 渲染"""
 print(f"[1/3] 生成 Mermaid DSL...")
 code = generate_mermaid(description)
 print(f" 生成了 {len(code)} 字符的代码")

 for attempt in range(max_retries):
 print(f"[2/3] 校验语法(第 {attempt + 1} 次)...")
 check = validate_mermaid(code)

 if check["valid"]:
 print(" ✅ 校验通过")
 break
 else:
 print(f" ❌ 发现 {len(check['errors'])} 个错误,尝试修复")
 code = fix_mermaid(code, check["errors"])
 else:
 print("重试 3 次还是不行,放弃了")
 return None

 print(f"[3/3] 渲染 SVG → {output}")
 if render_svg(code, output):
 print(f" ✅ 搞定!文件:{output}")
 return output
 else:
 print(" ❌ 渲染失败")
 return None


# 用法
if __name__ == "__main__":
 desc = """
 用户下单流程:
 1. 用户浏览商品,加入购物车
 2. 点击结算,选择收货地址
 3. 选择支付方式(微信/支付宝/银行卡)
 4. 提交订单,系统校验库存
 5. 库存不足则提示用户,流程结束
 6. 库存充足则生成订单,跳转支付
 7. 支付成功通知仓库发货
 8. 支付超时则取消订单,释放库存
 """
 auto_flowchart(desc, "order_flow.svg")

跑一下,控制台输出大概长这样:

[1/3] 生成 Mermaid DSL...
 生成了 487 字符的代码
[2/3] 校验语法(第 1 次)...
 ✅ 校验通过
[3/3] 渲染 SVG → order_flow.svg
 ✅ 搞定!文件:order_flow.svg

端到端大概 2.6s,其中 LLM 调用占了 2.1s。

方案二:用 OpenClaw Pipeline 配置文件

如果你不想写 Python,OpenClaw 自带 pipeline 机制,用 YAML 就能编排。

# flowchart-pipeline.yaml
name: auto-flowchart
version: 1

steps:
 - id: generate
 type: llm
 config:
 model: claude-sonnet-4.6
 base_url: https://api.ofox.ai/v1
 system_prompt: |
 你是 Mermaid 流程图生成器。只输出合法的 Mermaid 代码,
 不要包含 ```mermaid 标记。使用 graph TD 布局。
 temperature: 0.2
 max_tokens: 2000

 - id: validate
 type: mermaid-validate
 config:
 strict: true
 retry_with_llm: true
 max_retries: 3

 - id: render
 type: mermaid-render
 config:
 format: svg
 theme: default
 width: 1200
 background: transparent

跑起来就一行命令:

openclaw run flowchart-pipeline.yaml \
 --input "用户注册流程:填写手机号,发送验证码,输入验证码,设置密码,注册成功" \
 --output register_flow.svg

这种方式更适合批量生成。我之前试过把 30 个业务流程描述丢进去批量跑,大概 2 分钟全部出图,中间有 4 个需要 LLM 修复语法,最终全部成功。

以上就是OpenClaw怎么自动生成流程图的详细方法,希望对大家有所帮助,如果想要了解更多OpenClaw玩法,欢迎来CoCoLoop社区交流。

正好想用这个画架构图,谢谢分享

OpenClaw的流程图调试是真方便,能省不少功夫

试了下生成的mermaid挺干净的,能直接用

流程图调试能省功夫这点准,复杂架构图一次生成基本无误

Mermaid对接确实方便,自然语言到SVG全自动链路实用