PaiAgent
ð¥èœ»é级çAIå·¥äœæµçŒæç³»ç»ïŒç±»äŒŒdifyãn8nïŒå šçšäœ¿çšVibe CodingïŒAIå·¥å ·äžºQoder+CLIãæ¶åå°çææ¯æ å æ¬SpringAIãLangGraph4JãSSEãMinIOãDAGèªå®åŒæçã
Install / Use
/learn @itwanger/PaiAgentREADME
PaiAgent
äŒäžçº§ AI å·¥äœæµå¯è§åçŒæå¹³å°
éè¿ææœåŒçé¢å¿«éæå»ºãçŒæåæ§è¡ AI å·¥äœæµïŒè®© AI èœåç»åæŽç®å
å¿«éåŒå§ ⢠åèœç¹æ§ â¢ ææ¯æ¶æ â¢ äœ¿çšææ¡£ ⢠åŒåè¿åºŠ
</div>ð 项ç®ç®ä»
PaiAgent æ¯äžäžªäŒäžçº§ç AI å·¥äœæµå¯è§åçŒæå¹³å°ïŒè®© AI èœåçç»ååè°åºŠååŸç®å髿ãéè¿çŽè§çææœåŒçé¢ïŒåŒåè åäžå¡äººåéœèœå¿«éæå»ºå€æç AI å€çæµçšïŒæ éçŒå代ç å³å¯å®ç°å€ç§å€§æš¡åçååå·¥äœã



ð¡ 䞺ä»ä¹éæ© 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: æä»¶ååš (å¯é) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ææ¯æ 诊æ
<table> <tr> <td><b>å±çº§</b></td> <td><b>ææ¯éå</b></td> <td><b>çæ¬èŠæ±</b></td> <td><b>诎æ</b></td> </tr> <tr> <td rowspan="6"><b>å端</b></td> <td>React</td> <td>18.x</td> <td>ç°ä»£å UI æ¡æ¶</td> </tr> <tr> <td>TypeScript</td> <td>5.x</td> <td>ç±»åå®å šä¿é</td> </tr> <tr> <td>Vite</td> <td>5.x</td> <td>髿§èœæå»ºå·¥å ·</td> </tr> <tr> <td>ReactFlow</td> <td>ææ°ç</td> <td>äžäžæµçšåŸåº</td> </tr> <tr> <td>Ant Design + Tailwind CSS</td> <td>-</td> <td>äŒäžçº§ UI ç»ä»¶</td> </tr> <tr> <td>Zustand</td> <td>ææ°ç</td> <td>蜻éçº§ç¶æç®¡ç</td> </tr> <tr> <td rowspan="6"><b>å端</b></td> <td>Spring Boot</td> <td>3.4.1</td> <td>äŒäžçº§ Java æ¡æ¶</td> </tr> <tr> <td>Java</td> <td>21+</td> <td>LTS é¿ææ¯æçæ¬</td> </tr> <tr> <td>MyBatis-Plus</td> <td>3.5.5</td> <td>å¢åŒºç ORM æ¡æ¶</td> </tr> <tr> <td>Spring AI</td> <td>1.0.0-M5</td> <td>AI æš¡åç»äžè°ç𿡿¶</td> </tr> <tr> <td>Spring AI Alibaba</td> <td>1.0.0-M6.1</td> <td>éä¹åé® DashScope åçæ¯æ</td> </tr> <tr> <td>MySQL</td> <td>8.0+</td> <td>å ³ç³»åæ°æ®åº</td> </tr> <tr> <td>FastJSON2</td> <td>ææ°ç</td> <td>髿§èœ JSON åº</td> </tr> <tr> <td>MinIO</td> <td>å¯é</td> <td>对象ååšæå¡</td> </tr> <tr> <td rowspan="7"><b>æ žå¿åŒæ</b></td> <td>èªç DAG åŒæ</td> <td>-</td> <td>å·¥äœæµçŒææ žå¿ïŒæææåº + åŸªç¯æ£æµïŒ</td> </tr> <tr> <td>LangGraph4j Core</td> <td>1.1.5</td> <td>ç¶æåŸå·¥äœæµåŒæ</td> </tr> <tr> <td>LangGraph4j Spring AI</td> <td>1.8.0-beta3</td> <td>LangGraph4j äž Spring AI éææ¡¥æ¥</td> </tr> <tr> <td>Skills æèœç³»ç»</td> <td>-</td> <td>声æåŒæç€ºè¯å·¥ç𿡿¶</td> </tr> <tr> <td>EngineSelector</td> <td>-</td> <td>ååŒæåšæè·¯ç±éæ©</td> </tr> <tr> <td>Spring AI ChatClient</td> <td>-</td> <td>ç»äž AI æš¡åè°çšæ¥å£</td> </tr> <tr> <td>ChatClientFactory</td> <td>-</td> <td>åšæå建äžåæš¡å客æ·ç«¯</td> </tr> </table>ð 项ç®ç»æ
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 # æ°æ®åºåå§åè
