Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

PaiAgent

企业级 AI 工作流可视化编排平台

通过拖拽式界面快速构建、编排和执行 AI 工作流,让 AI 能力组合更简单

License Java Spring Boot Spring AI Spring AI Alibaba LangGraph4j React TypeScript

快速开始功能特性技术架构使用文档开发进度


📖 项目简介

PaiAgent 是一个企业级的 AI 工作流可视化编排平台,让 AI 能力的组合和调度变得简单高效。通过直观的拖拽式界面,开发者和业务人员都能快速构建复杂的 AI 处理流程,无需编写代码即可实现多种大模型的协同工作。

工作流编排

SSE实时反馈

架构图

Harness体现

💡 为什么选择 PaiAgent?

  • 🎯 零代码编排:可视化拖拽界面,无需编程即可构建复杂 AI 工作流
  • 🚀 双引擎驱动:自研 DAG 引擎 + LangGraph4j 状态图引擎,按需切换,兼顾简洁与复杂场景
  • 🔌 多模型统一:基于 Spring AI 框架,统一接入 OpenAI、DeepSeek、通义千问等主流大模型
  • 🧠 Skills 技能系统:内置提示词工程技能框架,支持 YAML 前缀声明式技能定义,三级渐进式加载
  • 🛠️ 灵活扩展:基于插件化设计,轻松开发自定义节点满足个性化需求
  • 🐛 实时调试:内置调试面板,支持 SSE 流式输出,可视化执行过程
  • 📦 开箱即用:完整的前后端解决方案,快速部署到生产环境

项目教程

我已经放到技术派上了,点击这里查看详细教程(限时免费)。

第一期我更新了五篇教程,春节期间打算再更新五篇,假期有想学习的同学可以跟着这个项目冲。

✨ 核心特性

可视化流程编辑器

基于 ReactFlow 构建的专业流程图编辑器,支持节点拖拽、连线配置、参数编辑等完整功能。

多大模型节点支持

基于 Spring AI + Spring AI Alibaba 框架统一接入:

  • OpenAI 节点:GPT-5 等模型(Spring AI OpenAI 接口)
  • DeepSeek 节点:国产大模型(OpenAI 兼容接口)
  • 通义千问节点:阿里云千问系列(Spring AI Alibaba DashScope 原生支持)
  • 智谱 AI 节点:GLM 系列模型(OpenAI 兼容接口)
  • AIPing 节点:第三方模型代理(OpenAI 兼容接口)

工具节点生态

  • TTS 音频合成:超拟人语音生成
  • 输入/输出节点:灵活的数据输入输出
  • 自定义扩展:基于统一接口开发专属节点

DAG 工作流引擎

  • 拓扑排序:基于 Kahn 算法的节点调度
  • 循环检测:DFS 深度优先搜索防止死循环
  • 数据流转:节点间智能数据传递机制
  • 执行监控:完整的执行日志和结果记录

LangGraph4j 状态图引擎(新增)

  • 状态图编排:基于 LangGraph4j 的 StateGraph 构建复杂工作流,支持条件分支与动态路由
  • 双引擎切换:通过 EngineSelector 按 engineType 字段自动路由到 DAG 或 LangGraph 引擎,向后兼容
  • 异步节点执行:NodeAdapter 将现有 NodeExecutor 适配为 AsyncNodeAction,无需重写业务逻辑
  • 状态管理:StateManager 统一管理工作流上下文,支持 inputData、nodeOutputs、globalContext
  • 事件回调:执行过程中触发 ExecutionEvent,实时反馈每个节点的启动、成功和异常

Skills 技能系统(新增)

  • 声明式技能定义:通过 SKILL.md + YAML Frontmatter 定义技能名称、描述和执行规则
  • 三级渐进式加载:摘要(名称+描述)→ 详情(完整 SKILL.md)→ 引用文档(reference 子目录),按需加载节省 Token
  • 技能注册中心:SkillRegistry 应用启动时自动扫描 classpath 和文件系统,缓存到 ConcurrentHashMap
  • LLM Function 集成:通过 LoadSkillDetailFunction / LoadSkillReferenceFunction 暴露为 Spring AI FunctionCallback,让大模型自主调用技能
  • REST API 支持:提供技能列表查询、详情获取、引用文档加载等接口
  • 前端技能选择器:SkillSelector 组件支持在工作流中选择和应用技能

🎯 应用场景

场景类别具体应用适用对象
📝 内容生成批量文章生成、多语言翻译、内容改写润色内容创作者、营销团队
💬 智能客服多轮对话流程、意图识别与智能响应客服团队、产品经理
📊 数据处理文本分析、信息抽取、数据清洗转换数据分析师、研发团队
🎵 音视频处理语音合成、字幕生成、音频转写内容团队、教育行业
⚙️ 流程自动化报告生成、邮件自动回复、定时任务运营团队、企业用户

🏗️ 技术架构

系统架构

┌─────────────────────────────────────────────────────────┐
│                      前端层 (Frontend)                    │
│  React 18 + TypeScript + ReactFlow + Ant Design         │
│  • 可视化编辑器  • 节点面板  • 调试工具                    │
└────────────────────┬────────────────────────────────────┘
                     │ REST API / SSE
┌────────────────────┴────────────────────────────────────┐
│                    应用层 (Backend)                       │
│              Spring Boot 3.4.1 + Java 21                │
│  • Controller  • Service  • Interceptor                 │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────┐
│                  核心引擎层 (Engine)                      │
│  • EngineSelector: 引擎路由(DAG / LangGraph)            │
│  • DAGParser: 拓扑排序 + 循环检测                         │
│  • LangGraph4j: 状态图编排 + 条件路由                     │
│  • SkillRegistry: 技能注册中心 + 渐进式加载               │
│  • NodeExecutor: 节点执行器工厂                           │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────┐
│                  AI 模型层 (Spring AI)                    │
│  • Spring AI: OpenAI/DeepSeek/智谱 等兼容接口             │
│  • Spring AI Alibaba: 通义千问 DashScope 原生支持         │
│  • ChatClientFactory: 统一的 ChatClient 动态工厂          │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────┐
│              数据层 (Data & Storage)                     │
│  • MySQL: 工作流配置、执行记录                             │
│  • MinIO: 文件存储 (可选)                                 │
└─────────────────────────────────────────────────────────┘

技术栈详情

层级技术选型版本要求说明
前端React18.x现代化 UI 框架
TypeScript5.x类型安全保障
Vite5.x高性能构建工具
ReactFlow最新版专业流程图库
Ant Design + Tailwind CSS-企业级 UI 组件
Zustand最新版轻量级状态管理
后端Spring Boot3.4.1企业级 Java 框架
Java21+LTS 长期支持版本
MyBatis-Plus3.5.5增强版 ORM 框架
Spring AI1.0.0-M5AI 模型统一调用框架
Spring AI Alibaba1.0.0-M6.1通义千问 DashScope 原生支持
MySQL8.0+关系型数据库
FastJSON2最新版高性能 JSON 库
MinIO可选对象存储服务
核心引擎自研 DAG 引擎-工作流编排核心(拓扑排序 + 循环检测)
LangGraph4j Core1.1.5状态图工作流引擎
LangGraph4j Spring AI1.8.0-beta3LangGraph4j 与 Spring AI 集成桥接
Skills 技能系统-声明式提示词工程框架
EngineSelector-双引擎动态路由选择
Spring AI ChatClient-统一 AI 模型调用接口
ChatClientFactory-动态创建不同模型客户端

📁 项目结构

PaiAgent-one/
├── backend/                      # Spring Boot 后端服务
│   ├── src/main/
│   │   ├── java/com/paiagent/
│   │   │   ├── engine/          # 🎯 工作流引擎(核心)
│   │   │   │   ├── WorkflowEngine.java       # 工作流编排引擎
│   │   │   │   ├── EngineSelector.java       # 双引擎路由选择器
│   │   │   │   ├── dag/DAGParser.java        # 拓扑排序+循环检测
│   │   │   │   ├── langgraph/               # 🆕 LangGraph4j 引擎
│   │   │   │   │   ├── LangGraphWorkflowEngine.java  # LangGraph 执行引擎
│   │   │   │   │   ├── WorkflowState.java             # 状态模型
│   │   │   │   │   ├── builder/GraphBuilder.java      # StateGraph 构建器
│   │   │   │   │   ├── adapter/NodeAdapter.java       # AsyncNodeAction 适配器
│   │   │   │   │   └── state/StateManager.java        # 状态管理器
│   │   │   │   ├── skill/                   # 🆕 Skills 技能系统
│   │   │   │   │   ├── Skill.java                     # 技能数据模型
│   │   │   │   │   ├── SkillRegistry.java             # 技能注册中心
│   │   │   │   │   ├── SkillLoader.java               # SKILL.md 解析器
│   │   │   │   │   ├── LoadSkillDetailFunction.java   # FunctionCallback: 加载详情
│   │   │   │   │   └── LoadSkillReferenceFunction.java # FunctionCallback: 加载引用
│   │   │   │   ├── llm/                     # LLM 调用层(Spring AI)
│   │   │   │   │   ├── ChatClientFactory.java     # ChatClient 动态工厂
│   │   │   │   │   ├── PromptTemplateService.java # 提示词模板处理
│   │   │   │   │   └── LLMNodeConfig.java         # LLM 节点配置
│   │   │   │   ├── executor/                # 节点执行器
│   │   │   │   │   ├── NodeExecutor.java    # 执行器接口
│   │   │   │   │   ├── NodeExecutorFactory.java  # 工厂模式
│   │   │   │   │   └── impl/               # 具体实现
│   │   │   │   │       ├── AbstractLLMNodeExecutor.java  # LLM 抽象基类
│   │   │   │   │       ├── InputNodeExecutor.java
│   │   │   │   │       ├── OutputNodeExecutor.java
│   │   │   │   │       ├── OpenAINodeExecutor.java
│   │   │   │   │       ├── DeepSeekNodeExecutor.java
│   │   │   │   │       ├── QwenNodeExecutor.java
│   │   │   │   │       ├── ZhiPuNodeExecutor.java
│   │   │   │   │       ├── AIPingNodeExecutor.java
│   │   │   │   │       └── TTSNodeExecutor.java
│   │   │   │   └── model/                   # 数据模型
│   │   │   ├── controller/      # REST API 接口层
│   │   │   ├── service/         # 业务逻辑层
│   │   │   ├── mapper/          # MyBatis-Plus 数据访问层
│   │   │   ├── entity/          # 数据库实体
│   │   │   ├── dto/             # 数据传输对象
│   │   │   ├── config/          # 配置类
│   │   │   ├── interceptor/     # 拦截器(认证)
│   │   │   └── common/          # 通用工具
│   │   └── resources/
│   │       ├── application.yml  # 应用配置
│   │       ├── schema.sql       # 数据库初始化脚本
│   │       └── skills/          # 🆕 技能资源目录
│   │           └── ai-podcast/  # 示例技能:AI 播客脚本生成
│   │               ├── SKILL.md           # 技能定义(YAML + Markdown)
│   │               └── reference/         # 引用文档
│   │                   ├── script-template.md
│   │                   └── voice-guide.md
│   └── pom.xml                  # Maven 依赖配置
│
├── frontend/                     # React 前端应用
│   ├── src/
│   │   ├── components/          # 🎨 核心组件
│   │   │   ├── FlowCanvas.tsx   # ReactFlow 流程编辑器
│   │   │   ├── NodePanel.tsx    # 可拖拽节点面板
│   │   │   ├── DebugDrawer.tsx  # 调试抽屉面板
│   │   │   ├── AudioPlayer.tsx  # 音频播放器
│   │   │   └── SkillSelector.tsx # 🆕 技能选择器
│   │   ├── pages/               # 页面组件
│   │   │   ├── LoginPage.tsx    # 登录页
│   │   │   ├── MainPage.tsx     # 工作流列表页
│   │   │   └── EditorPage.tsx   # 工作流编辑器页
│   │   ├── store/               # Zustand 状态管理
│   │   │   ├── authStore.ts     # 用户认证状态
│   │   │   └── workflowStore.ts # 工作流编辑状态
│   │   ├── api/                 # API 调用层
│   │   ├── utils/               # 工具函数
│   │   └── App.tsx              # 应用入口
│   ├── package.json             # NPM 依赖配置
│   └── vite.config.ts           # Vite 构建配置
│
├── docs/                         # 📚 项目文档
│   ├── README.md                # 项目概览(当前文件)
│   ├── USER_GUIDE.md            # 用户使用指南
│   ├── PROGRESS.md              # 开发进度追踪
│   ├── SUMMARY.md               # 项目技术总结
│   ├── AGENTS.md                # AI Agent 开发指引
│   └── mermaid.md               # 架构可视化图表
│
└── .gitignore                   # Git 忽略配置

🚀 快速开始

环境要求

在开始之前,请确保您的开发环境满足以下要求:

工具版本要求说明
Java21+推荐使用 OpenJDK 或 Oracle JDK
Node.js18+包含 npm 包管理器
MySQL8.0+数据库服务
Maven3.8+Java 项目构建工具

一键启动指南

步骤 1:克隆项目

git clone https://github.com/yourusername/PaiAgent-one.git cd PaiAgent-one

步骤 2:配置数据库

2.1 创建数据库

mysql -u root -p
CREATE DATABASE paiagent DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.2 导入初始化脚本

mysql -u root -p paiagent < backend/src/main/resources/schema.sql

2.3 配置数据库连接(环境变量方式)

本项目使用环境变量管理敏感配置,请勿将真实凭证提交到 Git

复制后端环境变量模板并编辑:

cd backend cp .env.example .env

编辑 backend/.env 文件,设置你的数据库密码和其他配置:

# 必填:数据库密码(生产环境必须使用强密码) MYSQL_PASSWORD=your_strong_password_here # 其他配置按需修改 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=root MYSQL_DATABASE=paiagent # JWT 密钥(生产环境必须修改!) JWT_SECRET=your_jwt_secret_key_minimum_32_characters # MinIO 凭证(如使用对象存储) MINIO_ACCESS_KEY=your_access_key MINIO_SECRET_KEY=your_secret_key

安全提示

  • .env 文件已加入 .gitignore,不会提交到版本库
  • .env.example 是配置模板,不包含真实敏感信息
  • 生产环境建议通过系统环境变量或配置中心注入

步骤 3:启动后端服务

cd backend ./mvnw spring-boot:run

✅ 后端服务启动成功后,您将看到:

Started PaiAgentApplication in X.XXX seconds

后端服务地址:http://localhost:8084(可在 .env 中通过 SERVER_PORT 修改)

步骤 4:启动前端服务

打开新的终端窗口:

cd frontend cp .env.example .env.local

如需修改前端连接的后端地址,编辑 frontend/.env.local

VITE_API_BASE_URL=http://localhost:8084

然后启动前端:

npm install npm run dev

✅ 前端服务启动成功后,您将看到:

  ➜  Local:   http://localhost:5173/

步骤 5:首次登录

开发环境默认账户(可在 backend/.env 中修改):

配置项默认值说明
用户名admin通过 APP_AUTH_DEFAULT_USERNAME 配置
密码admin123通过 APP_AUTH_DEFAULT_PASSWORD 配置

⚠️ 安全提示

  • 默认账户仅用于开发测试,生产环境必须修改或禁用
  • 首次登录后请立即修改密码(功能待实现)
  • 可通过环境变量 APP_AUTH_DEFAULT_USERNAMEAPP_AUTH_DEFAULT_PASSWORD 自定义
  • 将两个变量都设为空值可禁用默认账户(需配合用户注册功能使用)

步骤 6:访问应用

  • 后端端口在 application.yml 中配置,当前默认值是 8084
  • 前端通过 Vite 环境变量 VITE_API_BASE_URL 连接后端,默认示例见 frontend/.env.example
  • 前端不能直接读取 Spring Boot 的 application.yml,所以如果后端端口变化,需要同步调整 frontend/.env.local

🎬 快速演示

创建您的第一个工作流:

  1. 登录系统:使用默认凭证登录
  2. 创建工作流:点击「新建工作流」按钮
  3. 拖拽节点:从左侧节点面板拖拽「输入节点」→「OpenAI节点」→「输出节点」到画布
  4. 连接节点:按顺序连接各个节点
  5. 配置参数:点击 OpenAI 节点,配置 API Key 和提示词
  6. 执行调试:点击「调试」按钮,查看执行结果

示例:文本转语音工作流

[输入节点] → [OpenAI节点] → [TTS节点] → [输出节点]
   输入文本     生成脚本      语音合成     播放音频

🗺️ 开发路线图

✅ 已完成功能 (v1.0)

  • ✅ 基础架构搭建(Spring Boot + React + TypeScript)
  • ✅ 用户认证系统(Token 认证 + 拦截器)
  • ✅ 可视化流程编辑器(ReactFlow 集成)
  • ✅ DAG 工作流引擎(拓扑排序 + 循环检测)
  • Spring AI 框架集成(v1.0.0-M5)
    • 统一的 ChatClient 调用接口
    • 支持 OpenAI 兼容协议(OpenAI/DeepSeek/智谱/AIPing)
  • Spring AI Alibaba 集成(v1.0.0-M6.1)
    • 通义千问 DashScope 原生支持
    • 阿里云 Qwen 系列模型接入
  • ✅ 多大模型节点支持
    • OpenAI 节点(GPT 系列)
    • DeepSeek 节点
    • 通义千问节点
    • 智谱 AI 节点
    • AIPing 节点
  • ✅ 工具节点实现
    • 输入/输出节点
    • TTS 音频合成节点
    • 音频播放器组件
  • ✅ SSE 实时流式输出(调试抽屉 + 日志输出 + 结果展示)
  • ✅ 工作流 CRUD 管理
  • ✅ 执行记录查询
  • LangGraph4j 状态图引擎集成
    • 基于 LangGraph4j StateGraph 的第二执行引擎
    • EngineSelector 双引擎路由,支持按工作流切换
    • NodeAdapter 适配器,零改动复用已有节点执行器
    • StateManager 统一状态管理
  • Skills 技能系统
    • YAML Frontmatter + Markdown 声明式技能定义
    • SkillRegistry 自动扫描加载 + ConcurrentHashMap 缓存
    • 三级渐进式加载(摘要→详情→引用文档)
    • Spring AI FunctionCallback 集成,LLM 可自主调用技能
    • 前端 SkillSelector 技能选择器组件
    • REST API 支持技能列表、详情、引用文档查询

当前完成度:98% 🎉

🚧 规划中功能 (v1.1 - v2.0)

v1.1 版本(近期)

  • 🔄 条件分支节点(IF/ELSE 逻辑)
  • 🔁 循环执行节点(FOR/WHILE 循环)
  • 📝 更多 LLM 节点接入(Claude、Gemini、本地模型)
  • 🧠 更多内置技能(文档摘要、代码审查、数据分析等)
  • 🧪 集成测试完善
  • 📊 执行性能监控

v1.5 版本(中期)

  • 🔗 子工作流调用(工作流复用)
  • ⏰ 定时任务调度(Cron 表达式)
  • 📦 工作流版本管理(Git 风格)
  • 🎨 工作流模板市场
  • 🖼️ 更多工具节点(图像处理、文档解析、Web爬虫)

v2.0 版本(远期)

  • 👥 多租户与权限管理
  • 🤝 协作与分享功能
  • 📈 性能监控与告警
  • 🌍 国际化支持(多语言)
  • 🔌 插件市场(第三方节点)

📚 项目文档

文档类型文档链接说明
📖 使用指南USER_GUIDE.md详细使用说明和最佳实践
📊 开发进度PROGRESS.md项目开发阶段和完成情况
📝 项目总结SUMMARY.md技术选型和实现总结
📋 完成报告PROJECT_COMPLETION_REPORT.md项目交付报告
🏗️ 架构设计mermaid.md系统架构可视化图表
🤖 开发指南AGENTS.mdAI Agent 开发指引

🔧 核心功能详解

工作流编排

节点类型

  • 输入节点:接收外部输入数据,作为工作流的起点
  • 输出节点:输出工作流执行结果,作为工作流的终点
  • LLM 节点:调用大语言模型进行文本生成、理解等任务
  • 工具节点:执行特定功能,如 TTS 语音合成、图像处理等

连线规则

  • 节点之间通过有向边连接,表示数据流向
  • 支持一对多、多对一的连接方式
  • 自动检测循环依赖,防止死锁

DAG 引擎机制

工作流解析流程

  1. JSON 解析:将前端配置解析为 WorkflowConfig 对象
  2. 拓扑排序:使用 Kahn 算法确定节点执行顺序
  3. 循环检测:DFS 深度优先搜索检测循环依赖
  4. 节点调度:按拓扑顺序依次执行节点
  5. 数据传递:上游节点输出作为下游节点输入
  6. 结果记录:保存每个节点的执行结果和日志

数据传递机制

// 节点执行器接口 public interface NodeExecutor { Map<String, Object> execute(WorkflowNode node, Map<String, Object> input); } // LLM 节点通过 Spring AI ChatClient 统一调用 ChatClient chatClient = chatClientFactory.createClient(nodeType, apiUrl, apiKey, model, temperature); String response = chatClient.prompt().user(prompt).call().content();

LangGraph4j 引擎机制

引擎选择与路由

EngineSelector 根据工作流的 engineType 字段自动选择执行引擎,默认使用 DAG 引擎以确保向后兼容:

// 引擎路由:根据 engineType 自动选择 EngineSelector.execute(workflowConfig); // engineType = "dag" → DAGWorkflowEngine // engineType = "langgraph" → LangGraphWorkflowEngine // engineType = null → DAGWorkflowEngine(默认)

LangGraph4j 执行流程

  1. 配置解析:将 WorkflowConfig 传入 GraphBuilder
  2. 状态图构建:GraphBuilder 将节点/边转换为 LangGraph4j StateGraph,支持条件分支
  3. 状态初始化:StateManager 初始化 inputData、nodeOutputs、globalContext
  4. 异步执行:NodeAdapter 将现有 NodeExecutor 适配为 AsyncNodeAction,复用已有业务逻辑
  5. 事件驱动:执行过程触发 ExecutionEvent 回调(start / success / error)
  6. 结果收集:汇总所有节点输出,返回 ExecutionResponse

Skills 技能系统详解

技能文件结构

每个技能是一个独立目录,包含 SKILL.md 主文件和可选的 reference 子目录:

skills/
└── ai-podcast/
    ├── SKILL.md                 # 技能主文件(YAML Frontmatter + Markdown)
    └── reference/               # 引用文档目录
        ├── script-template.md   # 脚本模板
        └── voice-guide.md       # 语音风格指南

SKILL.md 格式示例

--- name: ai-podcast description: 生成专业播客脚本,双人对话形式 --- # AI 播客脚本生成 ## 执行规则 1. 生成自然流畅的双人对话 2. 包含开场白、主体内容、Q&A、结束语 ...

三级渐进式加载

  • 第一级 - 摘要:仅加载技能名称和描述,用于列表展示
  • 第二级 - 详情:加载完整 SKILL.md 内容,用于技能执行
  • 第三级 - 引用:按需加载 reference 目录下的文档,节省 Token 开销

Skills REST API

方法路径说明
GET/api/skills获取所有技能摘要列表
GET/api/skills/{name}获取指定技能详细内容
GET/api/skills/{name}/references/{ref}获取技能引用文档

节点扩展开发

方式一:开发普通工具节点

  1. 实现 NodeExecutor 接口
public class CustomNodeExecutor implements NodeExecutor { @Override public Map<String, Object> execute(WorkflowNode node, Map<String, Object> input) { // 自定义逻辑 return output; } }
  1. 注册到工厂
NodeExecutorFactory.register("custom", new CustomNodeExecutor());

方式二:开发 LLM 节点(推荐)

// 继承 AbstractLLMNodeExecutor,自动获得 Spring AI 能力 @Component public class CustomLLMNodeExecutor extends AbstractLLMNodeExecutor { @Override protected String getNodeType() { return "custom_llm"; } }
  1. 前端添加节点定义
const customNode = { type: 'custom', label: '自定义节点', category: 'tool' };

💼 项目亮点(简历版)

项目名称:PaiAgent - 企业级 AI 工作流编排平台

项目描述:基于可视化流程编辑器的 AI Agent 工作流平台,支持用户通过拖拽方式编排多种大模型(DeepSeek、通义千问等)和工具节点,使用自研 DAG 引擎按拓扑顺序执行工作流,实现复杂 AI 任务的自动化编排与执行。

技术栈:Java 21、Spring Boot 3.4.1、Spring AI 1.0.0、LangGraph4j 1.8.0

核心职责

  • 基于 Spring AI 框架重构 LLM 通信层,采用工厂模式+模板方法模式设计 ChatClientFactory 动态工厂和 AbstractLLMNodeExecutor 抽象基类,将 5 个 LLM 节点执行器的重复代码从 800+行精简至 75 行
  • 设计动态 ChatClient 创建机制,支持运行时根据工作流节点配置(apiKey/apiUrl/model)动态实例化不同厂商的 ChatClient,实现多租户场景下每个节点独立配置的能力
  • 抽取 PromptTemplateService 公共服务,统一处理 {{variable}} 模板变量替换和上下游节点参数引用映射,支持 input 静态值和 reference 动态引用两种参数类型
  • 基于 Spring AI 的 Flux 响应式流实现 LLM 流式输出,通过 SSE 实时推送生成进度到前端,配合现有 ExecutionEvent 事件机制,用户可实时查看 AI 生成过程
  • 集成 LangGraph4j 状态图引擎作为第二执行引擎,设计 EngineSelector 路由机制实现双引擎按需切换;通过 NodeAdapter 适配器模式将现有节点执行器桥接为 AsyncNodeAction,零改动复用全部业务逻辑
  • 设计并实现 Skills 技能系统,采用 YAML Frontmatter + Markdown 声明式定义技能,三级渐进式加载(摘要→详情→引用文档)优化 Token 消耗;通过 Spring AI FunctionCallback 机制让大模型自主发现和调用技能

🤝 贡献指南

我们欢迎所有形式的贡献,包括但不限于:

  • 🐛 提交 Bug 报告
  • 💡 提出新功能建议
  • 📝 改进文档
  • 🔧 提交代码修复
  • ⭐ Star 项目支持我们

参与方式

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • 后端:遵循阿里巴巴 Java 开发手册
  • 前端:遵循 Airbnb React/JSX 风格指南
  • 提交信息:使用约定式提交(Conventional Commits)

💬 社区与支持

获取帮助

联系方式

  • 项目维护者@itwanger
  • 邮箱:项目相关问题请通过 GitHub Issues 提交

📄 许可证

本项目采用 MIT License 开源协议。

🌟 致谢

感谢所有为本项目做出贡献的开发者!


如果这个项目对您有帮助,请点击 ⭐ Star 支持我们!

⬆ 回到顶部

关于 About

🔥轻量级的AI工作流编排系统,类似dify、n8n,全程使用Vibe Coding,AI工具为Qoder+CLI。涉及到的技术栈包括SpringAI、LangGraph4J、SSE、MinIO、DAG自定引擎等。
dagdfsfastjson2kahnlanggraph4jminioskiskillsspring-bootspringaispringai-alibabasse

语言 Languages

Java61.9%
TypeScript36.8%
Python0.9%
JavaScript0.3%
HTML0.1%
CSS0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
31
Total Commits
峰值: 7次/周
Less
More

核心贡献者 Contributors