{"id":45893057,"url":"https://github.com/itwanger/PaiAgent","last_synced_at":"2026-03-13T06:00:53.456Z","repository":{"id":337342538,"uuid":"1103758703","full_name":"itwanger/PaiAgent","owner":"itwanger","description":"🔥轻量级的AI工作流编排系统，类似dify、n8n，全程使用Vibe Coding，AI工具为Qoder+CLI。涉及到的技术栈包括SpringAI、LangGraph4J、SSE、MinIO、DAG自定引擎等。","archived":false,"fork":false,"pushed_at":"2026-02-09T03:23:25.000Z","size":4329,"stargazers_count":82,"open_issues_count":2,"forks_count":15,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-09T08:13:46.571Z","etag":null,"topics":["dag","dfs","fastjson2","kahn","minio","spring-boot","springai","springai-alibaba","sse"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itwanger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-25T09:49:50.000Z","updated_at":"2026-02-09T07:44:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/itwanger/PaiAgent","commit_stats":null,"previous_names":["itwanger/paiagent"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/itwanger/PaiAgent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itwanger%2FPaiAgent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itwanger%2FPaiAgent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itwanger%2FPaiAgent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itwanger%2FPaiAgent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itwanger","download_url":"https://codeload.github.com/itwanger/PaiAgent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itwanger%2FPaiAgent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30459760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T03:55:51.346Z","status":"ssl_error","status_checked_at":"2026-03-13T03:55:33.055Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dag","dfs","fastjson2","kahn","minio","spring-boot","springai","springai-alibaba","sse"],"created_at":"2026-02-27T19:00:39.318Z","updated_at":"2026-03-13T06:00:53.449Z","avatar_url":"https://github.com/itwanger.png","language":"Java","funding_links":[],"categories":["人工智能"],"sub_categories":["Spring Cloud框架"],"readme":"\u003cdiv align=\"center\"\u003e\n\n# PaiAgent\n\n**企业级 AI 工作流可视化编排平台**\n\n通过拖拽式界面快速构建、编排和执行 AI 工作流，让 AI 能力组合更简单\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Java](https://img.shields.io/badge/Java-21+-orange.svg)](https://www.oracle.com/java/)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4.1-brightgreen.svg)](https://spring.io/projects/spring-boot)\n[![Spring AI](https://img.shields.io/badge/Spring%20AI-1.0.0--M5-green.svg)](https://spring.io/projects/spring-ai)\n[![Spring AI Alibaba](https://img.shields.io/badge/Spring%20AI%20Alibaba-1.0.0--M6.1-orange.svg)](https://java2ai.com)\n[![React](https://img.shields.io/badge/React-18.x-61dafb.svg)](https://reactjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org/)\n\n[快速开始](#-快速开始) • [功能特性](#-核心特性) • [技术架构](#-技术架构) • [使用文档](./USER_GUIDE.md) • [开发进度](./PROGRESS.md)\n\n\u003c/div\u003e\n\n---\n\n## 📖 项目简介\n\nPaiAgent 是一个**企业级的 AI 工作流可视化编排平台**，让 AI 能力的组合和调度变得简单高效。通过直观的拖拽式界面，开发者和业务人员都能快速构建复杂的 AI 处理流程，无需编写代码即可实现多种大模型的协同工作。\n\n![工作流编排](image/README-29e9a00fc44f42298da9bd230bb8fe96.png)\n\n![SSE实时反馈](image/README-6e538662bb834dbcad888ef065d28bea.png)\n\n![架构图](image/jiagoutu2.jpg)\n\n### 💡 为什么选择 PaiAgent？\n\n- **🎯 零代码编排**：可视化拖拽界面，无需编程即可构建复杂 AI 工作流\n- **🚀 高性能引擎**：自研轻量级 DAG 引擎，支持拓扑排序和智能循环检测\n- **🔌 多模型统一**：基于 Spring AI 框架，统一接入 OpenAI、DeepSeek、通义千问等主流大模型\n- **🛠️ 灵活扩展**：基于插件化设计，轻松开发自定义节点满足个性化需求\n- **🐛 实时调试**：内置调试面板，支持 SSE 流式输出，可视化执行过程\n- **📦 开箱即用**：完整的前后端解决方案，快速部署到生产环境\n\n### 项目教程\n\n![](https://cdn.tobebetterjavaer.com/paicoding/README-e53485e802924c61b63483b19360299b.png)\n\n我已经放到技术派上了，[点击这里](https://paicoding.com/column/14/1)查看详细教程（限时免费）。\n\n![](https://cdn.tobebetterjavaer.com/paicoding/README-e09eccf1dfde4316b17fecc069abd082.png)\n\n第一期我更新了五篇教程，春节期间打算再更新五篇，假期有想学习的同学可以跟着这个项目冲。\n\n- [搭建PaiAgent脚手架](https://paicoding.com/column/14/1)\n- [节点配置](https://paicoding.com/column/14/2)\n- [LLM节点开发](https://paicoding.com/column/14/3)\n- [超拟人音频节点](https://paicoding.com/column/14/4)\n- [工作流实时推送](https://paicoding.com/column/14/5)\n\n## ✨ 核心特性\n\n### 可视化流程编辑器\n\n基于 ReactFlow 构建的专业流程图编辑器，支持节点拖拽、连线配置、参数编辑等完整功能。\n\n### 多大模型节点支持\n\n基于 **Spring AI + Spring AI Alibaba** 框架统一接入：\n\n- **OpenAI 节点**：GPT-5 等模型（Spring AI OpenAI 接口）\n- **DeepSeek 节点**：国产大模型（OpenAI 兼容接口）\n- **通义千问节点**：阿里云千问系列（Spring AI Alibaba DashScope 原生支持）\n- **智谱 AI 节点**：GLM 系列模型（OpenAI 兼容接口）\n- **AIPing 节点**：第三方模型代理（OpenAI 兼容接口）\n\n### 工具节点生态\n- **TTS 音频合成**：超拟人语音生成\n- **输入/输出节点**：灵活的数据输入输出\n- **自定义扩展**：基于统一接口开发专属节点\n\n### DAG 工作流引擎\n- **拓扑排序**：基于 Kahn 算法的节点调度\n- **循环检测**：DFS 深度优先搜索防止死循环\n- **数据流转**：节点间智能数据传递机制\n- **执行监控**：完整的执行日志和结果记录\n\n## 🎯 应用场景\n\n| 场景类别 | 具体应用 | 适用对象 |\n|---------|---------|----------|\n| 📝 内容生成 | 批量文章生成、多语言翻译、内容改写润色 | 内容创作者、营销团队 |\n| 💬 智能客服 | 多轮对话流程、意图识别与智能响应 | 客服团队、产品经理 |\n| 📊 数据处理 | 文本分析、信息抽取、数据清洗转换 | 数据分析师、研发团队 |\n| 🎵 音视频处理 | 语音合成、字幕生成、音频转写 | 内容团队、教育行业 |\n| ⚙️ 流程自动化 | 报告生成、邮件自动回复、定时任务 | 运营团队、企业用户 |\n\n## 🏗️ 技术架构\n\n### 系统架构\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                      前端层 (Frontend)                    │\n│  React 18 + TypeScript + ReactFlow + Ant Design         │\n│  • 可视化编辑器  • 节点面板  • 调试工具                    │\n└────────────────────┬────────────────────────────────────┘\n                     │ REST API / SSE\n┌────────────────────┴────────────────────────────────────┐\n│                    应用层 (Backend)                       │\n│              Spring Boot 3.4.1 + Java 21                │\n│  • Controller  • Service  • Interceptor                 │\n└────────────────────┬────────────────────────────────────┘\n                     │\n┌────────────────────┴────────────────────────────────────┐\n│                  核心引擎层 (Engine)                      │\n│  • WorkflowEngine: 工作流调度引擎                         │\n│  • DAGParser: 拓扑排序 + 循环检测                         │\n│  • NodeExecutor: 节点执行器工厂                           │\n└────────────────────┬────────────────────────────────────┘\n                     │\n┌────────────────────┴────────────────────────────────────┐\n│                  AI 模型层 (Spring AI)                    │\n│  • Spring AI: OpenAI/DeepSeek/智谱 等兼容接口             │\n│  • Spring AI Alibaba: 通义千问 DashScope 原生支持         │\n│  • ChatClientFactory: 统一的 ChatClient 动态工厂          │\n└────────────────────┬────────────────────────────────────┘\n                     │\n┌────────────────────┴────────────────────────────────────┐\n│              数据层 (Data \u0026 Storage)                     │\n│  • MySQL: 工作流配置、执行记录                             │\n│  • MinIO: 文件存储 (可选)                                 │\n└─────────────────────────────────────────────────────────┘\n```\n\n### 技术栈详情\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003e层级\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cb\u003e技术选型\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cb\u003e版本要求\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cb\u003e说明\u003c/b\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd rowspan=\"6\"\u003e\u003cb\u003e前端\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eReact\u003c/td\u003e\n\u003ctd\u003e18.x\u003c/td\u003e\n\u003ctd\u003e现代化 UI 框架\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eTypeScript\u003c/td\u003e\n\u003ctd\u003e5.x\u003c/td\u003e\n\u003ctd\u003e类型安全保障\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eVite\u003c/td\u003e\n\u003ctd\u003e5.x\u003c/td\u003e\n\u003ctd\u003e高性能构建工具\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eReactFlow\u003c/td\u003e\n\u003ctd\u003e最新版\u003c/td\u003e\n\u003ctd\u003e专业流程图库\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAnt Design + Tailwind CSS\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e企业级 UI 组件\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eZustand\u003c/td\u003e\n\u003ctd\u003e最新版\u003c/td\u003e\n\u003ctd\u003e轻量级状态管理\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd rowspan=\"6\"\u003e\u003cb\u003e后端\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eSpring Boot\u003c/td\u003e\n\u003ctd\u003e3.4.1\u003c/td\u003e\n\u003ctd\u003e企业级 Java 框架\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eJava\u003c/td\u003e\n\u003ctd\u003e21+\u003c/td\u003e\n\u003ctd\u003eLTS 长期支持版本\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMyBatis-Plus\u003c/td\u003e\n\u003ctd\u003e3.5.5\u003c/td\u003e\n\u003ctd\u003e增强版 ORM 框架\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpring AI\u003c/td\u003e\n\u003ctd\u003e1.0.0-M5\u003c/td\u003e\n\u003ctd\u003eAI 模型统一调用框架\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpring AI Alibaba\u003c/td\u003e\n\u003ctd\u003e1.0.0-M6.1\u003c/td\u003e\n\u003ctd\u003e通义千问 DashScope 原生支持\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMySQL\u003c/td\u003e\n\u003ctd\u003e8.0+\u003c/td\u003e\n\u003ctd\u003e关系型数据库\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFastJSON2\u003c/td\u003e\n\u003ctd\u003e最新版\u003c/td\u003e\n\u003ctd\u003e高性能 JSON 库\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMinIO\u003c/td\u003e\n\u003ctd\u003e可选\u003c/td\u003e\n\u003ctd\u003e对象存储服务\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd rowspan=\"5\"\u003e\u003cb\u003e核心引擎\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003e自研 DAG 引擎\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e工作流编排核心\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eKahn 拓扑排序\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e节点依赖分析\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDFS 循环检测\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e防止工作流死锁\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpring AI ChatClient\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e统一 AI 模型调用接口\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eChatClientFactory\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e动态创建不同模型客户端\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 📁 项目结构\n\n```\nPaiAgent-one/\n├── backend/                      # Spring Boot 后端服务\n│   ├── src/main/\n│   │   ├── java/com/paiagent/\n│   │   │   ├── engine/          # 🎯 DAG 工作流引擎（核心）\n│   │   │   │   ├── WorkflowEngine.java       # 工作流编排引擎\n│   │   │   │   ├── dag/DAGParser.java        # 拓扑排序+循环检测\n│   │   │   │   ├── llm/                     # LLM 调用层（Spring AI）\n│   │   │   │   │   ├── ChatClientFactory.java     # ChatClient 动态工厂\n│   │   │   │   │   ├── PromptTemplateService.java # 提示词模板处理\n│   │   │   │   │   └── LLMNodeConfig.java         # LLM 节点配置\n│   │   │   │   ├── executor/                # 节点执行器\n│   │   │   │   │   ├── NodeExecutor.java    # 执行器接口\n│   │   │   │   │   ├── NodeExecutorFactory.java  # 工厂模式\n│   │   │   │   │   └── impl/               # 具体实现\n│   │   │   │   │       ├── AbstractLLMNodeExecutor.java  # LLM 抽象基类\n│   │   │   │   │       ├── InputNodeExecutor.java\n│   │   │   │   │       ├── OutputNodeExecutor.java\n│   │   │   │   │       ├── OpenAINodeExecutor.java\n│   │   │   │   │       ├── DeepSeekNodeExecutor.java\n│   │   │   │   │       ├── QwenNodeExecutor.java\n│   │   │   │   │       ├── ZhiPuNodeExecutor.java\n│   │   │   │   │       ├── AIPingNodeExecutor.java\n│   │   │   │   │       └── TTSNodeExecutor.java\n│   │   │   │   └── model/                   # 数据模型\n│   │   │   ├── controller/      # REST API 接口层\n│   │   │   ├── service/         # 业务逻辑层\n│   │   │   ├── mapper/          # MyBatis-Plus 数据访问层\n│   │   │   ├── entity/          # 数据库实体\n│   │   │   ├── dto/             # 数据传输对象\n│   │   │   ├── config/          # 配置类\n│   │   │   ├── interceptor/     # 拦截器（认证）\n│   │   │   └── common/          # 通用工具\n│   │   └── resources/\n│   │       ├── application.yml  # 应用配置\n│   │       └── schema.sql       # 数据库初始化脚本\n│   └── pom.xml                  # Maven 依赖配置\n│\n├── frontend/                     # React 前端应用\n│   ├── src/\n│   │   ├── components/          # 🎨 核心组件\n│   │   │   ├── FlowCanvas.tsx   # ReactFlow 流程编辑器\n│   │   │   ├── NodePanel.tsx    # 可拖拽节点面板\n│   │   │   ├── DebugDrawer.tsx  # 调试抽屉面板\n│   │   │   └── AudioPlayer.tsx  # 音频播放器\n│   │   ├── pages/               # 页面组件\n│   │   │   ├── LoginPage.tsx    # 登录页\n│   │   │   ├── MainPage.tsx     # 工作流列表页\n│   │   │   └── EditorPage.tsx   # 工作流编辑器页\n│   │   ├── store/               # Zustand 状态管理\n│   │   │   ├── authStore.ts     # 用户认证状态\n│   │   │   └── workflowStore.ts # 工作流编辑状态\n│   │   ├── api/                 # API 调用层\n│   │   ├── utils/               # 工具函数\n│   │   └── App.tsx              # 应用入口\n│   ├── package.json             # NPM 依赖配置\n│   └── vite.config.ts           # Vite 构建配置\n│\n├── docs/                         # 📚 项目文档\n│   ├── README.md                # 项目概览（当前文件）\n│   ├── USER_GUIDE.md            # 用户使用指南\n│   ├── PROGRESS.md              # 开发进度追踪\n│   ├── SUMMARY.md               # 项目技术总结\n│   ├── AGENTS.md                # AI Agent 开发指引\n│   └── mermaid.md               # 架构可视化图表\n│\n└── .gitignore                   # Git 忽略配置\n```\n\n## 🚀 快速开始\n\n### 环境要求\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n| 工具 | 版本要求 | 说明 |\n|------|---------|------|\n| Java | 21+ | 推荐使用 OpenJDK 或 Oracle JDK |\n| Node.js | 18+ | 包含 npm 包管理器 |\n| MySQL | 8.0+ | 数据库服务 |\n| Maven | 3.8+ | Java 项目构建工具 |\n\n### 一键启动指南\n\n#### 步骤 1：克隆项目\n\n```bash\ngit clone https://github.com/yourusername/PaiAgent-one.git\ncd PaiAgent-one\n```\n\n#### 步骤 2：配置数据库\n\n**2.1 创建数据库**\n\n```bash\nmysql -u root -p\n```\n\n```sql\nCREATE DATABASE paiagent DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n```\n\n**2.2 导入初始化脚本**\n\n```bash\nmysql -u root -p paiagent \u003c backend/src/main/resources/schema.sql\n```\n\n**2.3 配置数据库连接**\n\n编辑 `backend/src/main/resources/application.yml`：\n\n```yaml\nspring:\n  datasource:\n    url: jdbc:mysql://localhost:3306/paiagent?useUnicode=true\u0026characterEncoding=utf-8\u0026useSSL=false\u0026serverTimezone=Asia/Shanghai\n    username: root\n    password: your_password  # 修改为您的数据库密码\n```\n\n#### 步骤 3：启动后端服务\n\n```bash\ncd backend\n./mvnw spring-boot:run\n```\n\n✅ 后端服务启动成功后，您将看到：\n```\nStarted PaiAgentApplication in X.XXX seconds\n```\n\n后端服务地址：`http://localhost:8080`\n\n#### 步骤 4：启动前端服务\n\n打开新的终端窗口：\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n✅ 前端服务启动成功后，您将看到：\n```\n  ➜  Local:   http://localhost:5173/\n```\n\n#### 步骤 5：访问应用\n\n| 服务 | 地址 | 说明 |\n|------|------|------|\n| 🌐 前端应用 | http://localhost:5173 | 主要操作界面 |\n| 🔧 后端 API | http://localhost:8080 | REST API 服务 |\n| 📚 API 文档 | http://localhost:8080/swagger-ui.html | Swagger 接口文档 |\n\n**默认登录凭证**：\n- 用户名：`admin`\n- 密码：`123`\n\n### 🎬 快速演示\n\n创建您的第一个工作流：\n\n1. **登录系统**：使用默认凭证登录\n2. **创建工作流**：点击「新建工作流」按钮\n3. **拖拽节点**：从左侧节点面板拖拽「输入节点」→「OpenAI节点」→「输出节点」到画布\n4. **连接节点**：按顺序连接各个节点\n5. **配置参数**：点击 OpenAI 节点，配置 API Key 和提示词\n6. **执行调试**：点击「调试」按钮，查看执行结果\n\n示例：文本转语音工作流\n```\n[输入节点] → [OpenAI节点] → [TTS节点] → [输出节点]\n   输入文本     生成脚本      语音合成     播放音频\n```\n\n## 🗺️ 开发路线图\n\n### ✅ 已完成功能 (v1.0)\n\n- ✅ 基础架构搭建（Spring Boot + React + TypeScript）\n- ✅ 用户认证系统（Token 认证 + 拦截器）\n- ✅ 可视化流程编辑器（ReactFlow 集成）\n- ✅ DAG 工作流引擎（拓扑排序 + 循环检测）\n- ✅ **Spring AI 框架集成**（v1.0.0-M5）\n  - 统一的 ChatClient 调用接口\n  - 支持 OpenAI 兼容协议（OpenAI/DeepSeek/智谱/AIPing）\n- ✅ **Spring AI Alibaba 集成**（v1.0.0-M6.1）\n  - 通义千问 DashScope 原生支持\n  - 阿里云 Qwen 系列模型接入\n- ✅ 多大模型节点支持\n  - OpenAI 节点（GPT 系列）\n  - DeepSeek 节点\n  - 通义千问节点\n  - 智谱 AI 节点\n  - AIPing 节点\n- ✅ 工具节点实现\n  - 输入/输出节点\n  - TTS 音频合成节点\n  - 音频播放器组件\n- ✅ SSE 实时流式输出（调试抽屉 + 日志输出 + 结果展示）\n- ✅ 工作流 CRUD 管理\n- ✅ 执行记录查询\n\n**当前完成度：95%** 🎉\n\n### 🚧 规划中功能 (v1.1 - v2.0)\n\n**v1.1 版本（近期）**\n- 🔄 条件分支节点（IF/ELSE 逻辑）\n- 🔁 循环执行节点（FOR/WHILE 循环）\n- 📝 更多 LLM 节点接入（Claude、Gemini、本地模型）\n- 🧪 集成测试完善\n- 📊 执行性能监控\n\n**v1.5 版本（中期）**\n- 🔗 子工作流调用（工作流复用）\n- ⏰ 定时任务调度（Cron 表达式）\n- 📦 工作流版本管理（Git 风格）\n- 🎨 工作流模板市场\n- 🖼️ 更多工具节点（图像处理、文档解析、Web爬虫）\n\n**v2.0 版本（远期）**\n- 👥 多租户与权限管理\n- 🤝 协作与分享功能\n- 📈 性能监控与告警\n- 🌍 国际化支持（多语言）\n- 🔌 插件市场（第三方节点）\n\n## 📚 项目文档\n\n| 文档类型 | 文档链接 | 说明 |\n|---------|---------|------|\n| 📖 使用指南 | [USER_GUIDE.md](./USER_GUIDE.md) | 详细使用说明和最佳实践 |\n| 📊 开发进度 | [PROGRESS.md](./PROGRESS.md) | 项目开发阶段和完成情况 |\n| 📝 项目总结 | [SUMMARY.md](./SUMMARY.md) | 技术选型和实现总结 |\n| 📋 完成报告 | [PROJECT_COMPLETION_REPORT.md](./PROJECT_COMPLETION_REPORT.md) | 项目交付报告 |\n| 🏗️ 架构设计 | [mermaid.md](./mermaid.md) | 系统架构可视化图表 |\n| 🤖 开发指南 | [AGENTS.md](./AGENTS.md) | AI Agent 开发指引 |\n\n## 🔧 核心功能详解\n\n### 工作流编排\n\n**节点类型**\n- **输入节点**：接收外部输入数据，作为工作流的起点\n- **输出节点**：输出工作流执行结果，作为工作流的终点\n- **LLM 节点**：调用大语言模型进行文本生成、理解等任务\n- **工具节点**：执行特定功能，如 TTS 语音合成、图像处理等\n\n**连线规则**\n- 节点之间通过有向边连接，表示数据流向\n- 支持一对多、多对一的连接方式\n- 自动检测循环依赖，防止死锁\n\n### DAG 引擎机制\n\n**工作流解析流程**\n1. **JSON 解析**：将前端配置解析为 WorkflowConfig 对象\n2. **拓扑排序**：使用 Kahn 算法确定节点执行顺序\n3. **循环检测**：DFS 深度优先搜索检测循环依赖\n4. **节点调度**：按拓扑顺序依次执行节点\n5. **数据传递**：上游节点输出作为下游节点输入\n6. **结果记录**：保存每个节点的执行结果和日志\n\n**数据传递机制**\n```java\n// 节点执行器接口\npublic interface NodeExecutor {\n    Map\u003cString, Object\u003e execute(WorkflowNode node, Map\u003cString, Object\u003e input);\n}\n\n// LLM 节点通过 Spring AI ChatClient 统一调用\nChatClient chatClient = chatClientFactory.createClient(nodeType, apiUrl, apiKey, model, temperature);\nString response = chatClient.prompt().user(prompt).call().content();\n```\n\n### 节点扩展开发\n\n**方式一：开发普通工具节点**\n1. **实现 NodeExecutor 接口**\n```java\npublic class CustomNodeExecutor implements NodeExecutor {\n    @Override\n    public Map\u003cString, Object\u003e execute(WorkflowNode node, Map\u003cString, Object\u003e input) {\n        // 自定义逻辑\n        return output;\n    }\n}\n```\n\n2. **注册到工厂**\n```java\nNodeExecutorFactory.register(\"custom\", new CustomNodeExecutor());\n```\n\n**方式二：开发 LLM 节点（推荐）**\n```java\n// 继承 AbstractLLMNodeExecutor，自动获得 Spring AI 能力\n@Component\npublic class CustomLLMNodeExecutor extends AbstractLLMNodeExecutor {\n    @Override\n    protected String getNodeType() {\n        return \"custom_llm\";\n    }\n}\n```\n\n3. **前端添加节点定义**\n```typescript\nconst customNode = {\n  type: 'custom',\n  label: '自定义节点',\n  category: 'tool'\n};\n```\n\n## 💼 项目亮点（简历版）\n\n**项目名称**：PaiAgent - 企业级 AI 工作流编排平台\n\n**项目描述**：基于可视化流程编辑器的 AI Agent 工作流平台，支持用户通过拖拽方式编排多种大模型（DeepSeek、通义千问等）和工具节点，使用自研 DAG 引擎按拓扑顺序执行工作流，实现复杂 AI 任务的自动化编排与执行。\n\n**技术栈**：Java 21、Spring Boot 3.4.1、Spring AI 1.0.0\n\n**核心职责**：\n\n- 基于 Spring AI 框架重构 LLM 通信层，采用工厂模式+模板方法模式设计 ChatClientFactory 动态工厂和 AbstractLLMNodeExecutor 抽象基类，将 5 个 LLM 节点执行器的重复代码从 800+行精简至 75 行\n- 设计动态 ChatClient 创建机制，支持运行时根据工作流节点配置（apiKey/apiUrl/model）动态实例化不同厂商的 ChatClient，实现多租户场景下每个节点独立配置的能力\n- 抽取 PromptTemplateService 公共服务，统一处理 `{{variable}}` 模板变量替换和上下游节点参数引用映射，支持 input 静态值和 reference 动态引用两种参数类型\n- 基于 Spring AI 的 Flux 响应式流实现 LLM 流式输出，通过 SSE 实时推送生成进度到前端，配合现有 ExecutionEvent 事件机制，用户可实时查看 AI 生成过程\n\n## 🤝 贡献指南\n\n我们欢迎所有形式的贡献，包括但不限于：\n\n- 🐛 提交 Bug 报告\n- 💡 提出新功能建议\n- 📝 改进文档\n- 🔧 提交代码修复\n- ⭐ Star 项目支持我们\n\n### 参与方式\n\n1. **Fork 本仓库**\n2. **创建特性分支** (`git checkout -b feature/AmazingFeature`)\n3. **提交更改** (`git commit -m 'Add some AmazingFeature'`)\n4. **推送到分支** (`git push origin feature/AmazingFeature`)\n5. **开启 Pull Request**\n\n### 代码规范\n\n- **后端**：遵循阿里巴巴 Java 开发手册\n- **前端**：遵循 Airbnb React/JSX 风格指南\n- **提交信息**：使用约定式提交（Conventional Commits）\n\n## 💬 社区与支持\n\n### 获取帮助\n\n- 📬 **GitHub Issues**：[问题反馈和功能建议](https://github.com/yourusername/PaiAgent-one/issues)\n- 💭 **GitHub Discussions**：[技术讨论和经验分享](https://github.com/yourusername/PaiAgent-one/discussions)\n- 📖 **官方文档**：查看 [USER_GUIDE.md](./USER_GUIDE.md) 获取完整使用指南\n\n### 联系方式\n\n- **项目维护者**：[@itwanger](https://github.com/itwanger)\n- **邮箱**：项目相关问题请通过 GitHub Issues 提交\n\n## 📄 许可证\n\n本项目采用 [MIT License](LICENSE) 开源协议。\n\n## 🌟 致谢\n\n感谢所有为本项目做出贡献的开发者！\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**如果这个项目对您有帮助，请点击 ⭐ Star 支持我们！**\n\n[⬆ 回到顶部](#paiagent-one)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitwanger%2FPaiAgent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitwanger%2FPaiAgent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitwanger%2FPaiAgent/lists"}