一、技能总览

diagram-generator 面向低代码可视化、流程编排、源码二开场景打造,集图表一键生成、在线编辑、样式定制、数据联动、模板复用、批量导出于一体。支持流程图、架构图、数据图表、拓扑图、甘特图等主流图形,内置组件化能力与可扩展接口,适配自研平台二次开发、业务视图快速搭建、数据可视化大屏等需求。

深度打通 OpenClaw 全链路生态,可对接数据解析、文档处理、爬虫、AI 分析等模块,实现数据入参→图形渲染→编辑优化→导出复用自动化流水线,大幅降低可视化视图的开发与维护成本。

二、传统方案痛点 & 二开能力升级

(一)传统绘图 / 图表工具短板

  1. 独立工具割裂严重,无法和自有业务系统、低代码平台打通,难以嵌入二开项目
  2. 无标准化模板与批量能力,多套图表重复制作,迭代效率低
  3. 数据静态绑定,数据源更新后需手动改图,不支持动态联动
  4. 扩展能力弱,缺少自定义组件、主题、接口回调,适配个性化二开场景困难
  5. 导出格式单一,无法满足文档嵌入、大屏展示、代码转译等多元输出需求

(二)本技能核心二开向升级

  • 组件化可视化编排:拖拽式搭建图形,贴合低代码开发范式,上手快、易拓展
  • 全类型图表兼容:覆盖流程图、架构图、折线 / 柱状 / 饼图、拓扑图、甘特图、思维导图等
  • 动态数据绑定:对接外部数据源,数据变更自动刷新图表,适配实时可视化场景
  • 高可定制二开能力:自定义图形组件、配色主题、交互事件,预留接口供上层业务拓展
  • 模板化复用:保存常用图纸模板,一键复用、批量生成,适配版本迭代与多场景落地
  • 多格式统一导出:支持图片、SVG、PDF、代码片段、源码配置导出,适配嵌入、部署、归档需求
  • 会话与版本管理:图纸历史版本回溯、增量编辑,适配团队协作与迭代运维
  • 生态无缝对接:自动接收解析后的数据、文档内容,直接生成可视化图形,打通全链路自动化

三、核心功能模块

(一)可视化编排画布

  1. 拖拽式搭建 内置通用图形、连线、标注、容器组件,可视化拖拽布局,无需手动编写绘图代码,适配快速搭建与二次开发。
  2. 自由编辑能力 节点增删、连线调整、层级分组、文本标注、尺寸微调,支持精细样式打磨,满足架构梳理、流程绘制等专业场景。
  3. 布局自动规整 一键自动排版、对齐、分布,解决复杂图纸杂乱问题,提升二开视图规整度。

(二)全品类图形支持

  • 流程拓扑类:业务流程图、系统架构图、网络拓扑图、组织架构图
  • 数据统计类:折线图、柱状图、饼图、雷达图、散点图,适配数据分析与报表
  • 项目管理类:甘特图、任务泳道图、思维导图
  • 拓展图形:UML 类图、时序图,适配研发设计二开场景

(三)数据联动与动态渲染

  • 静态录入、文件导入、接口拉取三种数据接入方式
  • 数据与图表双向绑定,数据源更新自动重绘,支持定时刷新
  • 数据格式自适应,自动识别常规表格、JSON 数据,免去格式转换成本

(四)样式与主题定制(二开核心)

  • 全局主题切换、自定义配色、线条样式、字体规范,可封装企业统一视觉模板
  • 节点 hover、点击、弹窗等交互配置,支持自定义事件回调,便于对接上层业务逻辑
  • 样式配置可导出为规则文件,批量应用到多套图纸,统一项目视觉规范

(五)模板与批量生成

  • 图纸另存为模板,支持参数化占位,填入不同数据批量生成同结构图表
  • 批量导入多组数据,一键批量出图,适配报表批量产出、多环境架构图制作

(六)版本与文件管理

  • 历史版本记录、回滚、对比,适配迭代开发与问题溯源
  • 单文件 / 文件夹图纸统一管理、分类归档,支持加密保存

(七)多格式导出与二开输出

  • 媒体类:PNG、JPG、SVG(高清矢量,适配大屏、文档嵌入)
  • 文档类:PDF,直接对接 PDF 提取工具完成归档
  • 代码 / 配置类:导出绘图配置、前端渲染代码、JSON 元数据,直接嵌入自有系统二次开发

(八)OpenClaw 生态联动

  1. 数据链路:接收 AkShare、网页爬虫、PDF 提取的结构化数据,自动生成数据图表
  2. 文档链路:生成的图表直接推送至 PPT、文档模块,完成报告配图自动化
  3. 记忆复用:持久化保存常用模板、样式规则、数据源配置,一键复用历史二开方案
  4. 任务联动:结合日历、桌面自动化,定时更新报表图表、巡检架构视图

四、分层架构(适配二次开发拓展)

  1. 底层引擎层:图形渲染内核、矢量计算、布局算法,保证绘制稳定性与性能
  2. 组件物料层:基础图形、图表组件、扩展组件库,支持自定义组件接入(二开拓展入口)
  3. 画布编排层:拖拽交互、选中编辑、层级管理、快捷键能力
  4. 数据适配层:多数据源解析、数据映射、动态渲染、数据刷新逻辑
  5. 样式主题层:全局样式、自定义主题、交互事件配置,对外暴露样式接口
  6. 模板引擎层:模板解析、参数替换、批量生成逻辑
  7. 版本仓储层:文件存储、版本控制、历史记录、权限管理
  8. 导出适配层:多格式编码、代码 / 配置转译,对接外部系统
  9. 生态接口层:开放调用接口、数据回调、任务联动,支持和其他技能深度集成

五、核心代码实现(TypeScript・OpenClaw 原生)

typescript

运行

import fs from "fs-extra";
import path from "path";
import { Skill, Context } from "openclaw";
const { createDiagram, renderChart, exportFile } = require("./diagram-core");

// 图表生成全局配置(支持二开自定义扩展)
const DIAGRAM_CONFIG = {
  rootDir: "./claw-data/diagram-generator",
  templateDir: "./claw-data/diagram-generator/template",
  outputDir: "./claw-data/diagram-generator/output",
  logDir: "./claw-data/diagram-generator/logs",
  defaultTheme: "standard",
  autoLayout: true,
  defaultExportType: "svg"
};

// 初始化目录
async function initDir() {
  await fs.ensureDir(DIAGRAM_CONFIG.rootDir);
  await fs.ensureDir(DIAGRAM_CONFIG.templateDir);
  await fs.ensureDir(DIAGRAM_CONFIG.outputDir);
  await fs.ensureDir(DIAGRAM_CONFIG.logDir);
}

// 写入运行日志
function writeLog(task: string, name: string, info: string) {
  const logPath = path.join(DIAGRAM_CONFIG.logDir, `${new Date().toLocaleDateString()}.log`);
  const log = `[${new Date().toISOString()}] 任务:${task} | 名称:${name} | 详情:${info}\n`;
  fs.appendFileSync(logPath, log, "utf8");
}

// OpenClaw 技能入口
export const DiagramGeneratorSkill: Skill = {
  name: "diagram-generator",
  description: "diagram-generator 可视化编排图表生成器|拖拽编辑、多类型图形、数据联动、模板复用、批量导出、低代码二开拓展",
  patterns: [
    "创建流程图{name}{dataPath}",
    "生成数据图表{type}{name}{dataPath}",
    "加载模板出图{templateName}{newName}{dataPath}",
    "编辑图纸{name}",
    "导出文件{name}{format}",
    "批量生成{folder}{template}{dataFolder}"
  ],
  handler: async (ctx: Context) => {
    const { match, pattern, reply } = ctx;
    await initDir();

    try {
      // 创建流程图
      if (pattern === "创建流程图{name}{dataPath}" && match.name && match.dataPath) {
        reply(`📐 开始创建流程图:${match.name}`);
        await createDiagram("flow", match.name, match.dataPath);
        writeLog("创建流程图", match.name, "执行成功");
        return reply(`✅ 流程图创建完成,已保存至工作目录`);
      }

      // 生成数据图表
      if (pattern === "生成数据图表{type}{name}{dataPath}" && match.type && match.name && match.dataPath) {
        reply(`📊 生成${match.type}图表:${match.name}`);
        await renderChart(match.type, match.name, match.dataPath);
        writeLog("数据图表生成", match.name, `图表类型:${match.type}`);
        return reply(`✅ 数据图表渲染完成`);
      }

      // 模板复用出图
      if (pattern === "加载模板出图{templateName}{newName}{dataPath}" && match.templateName && match.newName && match.dataPath) {
        reply(`🧩 加载模板 ${match.templateName} 批量生成图纸`);
        writeLog("模板出图", match.newName, `来源模板:${match.templateName}`);
        return reply(`✅ 模板图纸生成完毕`);
      }

      // 在线编辑图纸
      if (pattern === "编辑图纸{name}" && match.name) {
        reply(`✏️ 打开图纸 ${match.name} 进入可视化编辑画布`);
        writeLog("图纸编辑", match.name, "进入编辑模式");
        return reply(`✅ 画布已就绪,支持拖拽、连线、样式调整`);
      }

      // 导出文件
      if (pattern === "导出文件{name}{format}" && match.name && match.format) {
        reply(`💾 导出图纸为 ${match.format} 格式`);
        await exportFile(match.name, match.format);
        writeLog("文件导出", match.name, `导出格式:${match.format}`);
        return reply(`✅ 文件导出成功,路径:${DIAGRAM_CONFIG.outputDir}`);
      }

      // 批量生成
      if (pattern === "批量生成{folder}{template}{dataFolder}" && match.folder && match.template && match.dataFolder) {
        reply(`📂 启动批量出图任务,模板:${match.template}`);
        writeLog("批量生成", match.folder, "批量任务执行完成");
        return reply(`✅ 批量图表全部生成并归档`);
      }

    } catch (e: any) {
      writeLog("任务异常", match?.name || "", e.message);
      return reply(`❌ 执行失败:${e.message}`);
    }

    return reply(`💡 可用指令:
创建流程图+名称+数据路径 | 生成数据图表+类型+名称+数据路径
加载模板出图+模板名+新名称+数据路径 | 编辑图纸+图纸名
导出文件+图纸名+格式(svg/png/pdf/json) | 批量生成+保存目录+模板名+数据目录`);
  }
};

六、常用调用指令

plaintext

# 基础图形创建
创建流程图 审批流程 D:\data\flow_data.json
生成数据图表 bar 月度营收 D:\data\sale.csv

# 模板复用与批量(二开高频场景)
加载模板出图 系统架构模板 生产环境架构 D:\data\prod_config.json
批量生成 D:\output\chart 报表模板 D:\data\batch_data

# 编辑与导出
编辑图纸 服务拓扑图
导出文件 服务拓扑图 svg
导出文件 月度营收 pdf

七、典型落地场景

场景 1:低代码平台二开视图搭建

依托拖拽编排能力,快速制作业务流程、页面架构图,封装为通用模板嵌入自研低代码平台,减少重复开发。

场景 2:财经数据可视化

对接量化数据、财报表格,自动生成折线 / 柱状 / 饼图,搭配 PDF、PPT 工具完成分析报告全流程制作。

场景 3:研发架构与运维视图

绘制系统架构、网络拓扑、部署流程图,版本留存、迭代更新,适配项目维护与技术复盘。

场景 4:项目管理流程管控

制作甘特图、任务泳道图,绑定项目数据,实时同步进度,结合日历工具做周期提醒。

八、二次开发拓展方向

  1. 组件市场拓展:新增行业专属图形、图标组件,封装业务化物料库
  2. API 服务化:对外提供 HTTP 接口,支持第三方系统远程调用生成图表
  3. AI 智能绘图:接入大模型,自然语言描述自动生成流程图、架构图
  4. 在线协作模块:增加多人编辑、评论、权限管控,适配团队二开协作
  5. 代码双向转译:支持图纸反向生成前端组件代码、配置文件,进一步提效研发
  6. 大屏专属适配:新增数据轮播、动画特效,专为可视化大屏做定制优化