็ผ–่พ‘
2026-06-06
้กน็›ฎ
00

็›ฎๅฝ•

๐ŸŽจ AI Agent Draw.io๏ผš็”จ่‡ช็„ถ่ฏญ่จ€ใ€Œ่ฏดใ€ๅ‡บไธ€ๅผ ๆžถๆž„ๅ›พ
๐Ÿ“– ไธ€ๅฅ่ฏ่ฏดๆธ…ๆฅš
๐Ÿ—๏ธ ๆ•ดไฝ“ๆžถๆž„
๐Ÿ”ฅ ๆ ธๅฟƒไบฎ็‚น
1. ่‡ช็„ถ่ฏญ่จ€ โ†’ ๅ›พ่กจ๏ผŒ็ซฏๅˆฐ็ซฏ้—ญ็Žฏ
2. ็”ปๅธƒไธŠไธ‹ๆ–‡ใ€Œๆบๅธฆใ€่ƒฝๅŠ›
3. Google ADK ๅคšๆ™บ่ƒฝไฝ“็ผ–ๆŽ’
4. MCP ๅ่ฎฎๆทฑๅบฆ้›†ๆˆ
5. DDD ๅ…ญๅฑ‚ๆžถๆž„๏ผŒๅทฅ็จ‹ๅŒ–ๆ‹‰ๆปก
๐ŸŽฏ ๆŠ€ๆœฏ้€‰ๅž‹
๐Ÿš€ ไธ€ๅˆ†้’Ÿๆœฌๅœฐ่ท‘่ตทๆฅ
ๅ‰็ฝฎๆกไปถ
ไธ‰ๆญฅๅฏๅŠจ
Docker ๅ…จๅฎถๆกถ๏ผˆ็”Ÿไบง็Žฏๅขƒ๏ผ‰
๐Ÿ“ก API ไธ€่งˆ
ๅฏน่ฏๆŽฅๅฃ็คบไพ‹
๐Ÿงญ Agent ๅ†…้ƒจๅทฅไฝœๆต
๐Ÿ”ง Agent ่‡ชๅฎšไน‰้…็ฝฎ
๐ŸŽฌ ไฝฟ็”จๅœบๆ™ฏ
๐Ÿ›ฃ๏ธ ๅŽ็ปญ่ง„ๅˆ’
๐Ÿ“„ License

๐ŸŽจ AI Agent Draw.io๏ผš็”จ่‡ช็„ถ่ฏญ่จ€ใ€Œ่ฏดใ€ๅ‡บไธ€ๅผ ๆžถๆž„ๅ›พ

ไฝ ๆœ‰ๆฒกๆœ‰็ปๅކ่ฟ‡่ฟ™ๆ ท็š„ๅœบๆ™ฏโ€”โ€”่„‘ๅญ้‡Œๆœ‰ไธ€ๅผ ๆธ…ๆ™ฐ็š„ๆžถๆž„ๅ›พ๏ผŒๆ‰“ๅผ€ draw.io ๅดๅฏน็€็ฉบ็™ฝ็”ปๅธƒๅ‘ๅ‘†ๅๅˆ†้’Ÿ๏ผŸ่ฟ™ไธช้กน็›ฎๅฐฑๆ˜ฏๆฅ่งฃๅ†ณ่ฟ™ไธช้—ฎ้ข˜็š„ใ€‚

Java 17 Spring Boot Next.js React Google ADK Tailwind Docker License

๐Ÿ”— GitHub ไป“ๅบ“๏ผšgithub.com/lechan775/ai-agent-drawio


๐Ÿ“– ไธ€ๅฅ่ฏ่ฏดๆธ…ๆฅš

AI Agent Draw.io ๆ˜ฏไธ€ไธช AI ้ฉฑๅŠจ็š„ๆ™บ่ƒฝๆžถๆž„ๅ›พ็”Ÿๆˆๅนณๅฐใ€‚ไฝ ๅช้œ€่ฆ็”จไธญๆ–‡ๆˆ–่‹ฑๆ–‡ๆ่ฟฐๆƒณ่ฆ็”ปไป€ไนˆโ€”โ€”"็”ปไธ€ไธชๅพฎๆœๅŠกๆžถๆž„๏ผŒๅŒ…ๅซ API Gatewayใ€ไธ‰ไธชๅพฎๆœๅŠกใ€MySQL ๅ’Œ Redis"โ€”โ€”AI Agent ๅฐฑ่ƒฝ่‡ชๅŠจๅœจๅตŒๅ…ฅๅผ draw.io ็”ปๅธƒไธŠๆธฒๆŸ“ๅ‡บไธ“ไธš็บงๅ›พ่กจใ€‚

ๆ›ดๅ…ณ้”ฎ็š„ๆ˜ฏ๏ผŒๅฎƒไธๆ˜ฏไธ€ไธช็ฎ€ๅ•็š„ ChatGPT ๅฅ—ๅฃณ๏ผšๅŽ็ซฏๅŸบไบŽ Google ADK ๅฎž็Žฐไบ†ๅฎŒๆ•ด็š„ Multi-Agent ็ผ–ๆŽ’ใ€MCP ๅ่ฎฎๅทฅๅ…ท้“พ้›†ๆˆ๏ผŒไปฅๅŠ Sequential / Parallel / Loop ไธ‰็ง Agent ๅทฅไฝœๆตๆจกๅผใ€‚


๐Ÿ—๏ธ ๆ•ดไฝ“ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐ŸŒ ็”จๆˆทๆต่งˆๅ™จ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ๐Ÿ’ฌ ๅฏน่ฏ้ขๆฟ โ”‚ โ”‚ ๐Ÿ“ Draw.io ๅตŒๅ…ฅๅผ็”ปๅธƒ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Agent ้€‰ๆ‹ฉไธ‹ๆ‹‰ โ”‚ โ†โ†’ โ”‚ โ€ข AI ็”Ÿๆˆ็š„ XML ๅฎžๆ—ถๆธฒๆŸ“ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ๅคš่ฝฎๅฏน่ฏๅކๅฒ โ”‚ โ”‚ โ€ข ้ผ ๆ ‡ๆ‹–ๆ‹ฝๅพฎ่ฐƒ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ๆตๅผๆ‰“ๅญ—ๆ•ˆๆžœ โ”‚ โ”‚ โ€ข SVG/PNG ไธ€้”ฎๅฏผๅ‡บ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ็”ปๅธƒไธŠไธ‹ๆ–‡ๆบๅธฆ โ”‚ โ”‚ โ€ข ๅคšไผš่ฏ็”ปๅธƒ็‹ฌ็ซ‹็ฎก็† โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ HTTP REST + SSE ๆตๅผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ˜• Spring Boot ๅŽ็ซฏ (Java 17) โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Trigger โ”‚ โ”‚ App โ”‚ โ”‚ Domain โ”‚ โ”‚Infrastructureโ”‚ โ”‚ โ”‚ โ”‚ (HTTP) โ”‚โ”€โ”€โ–ถโ”‚ (Config) โ”‚โ”€โ”€โ–ถโ”‚ (Agent) โ”‚โ”€โ”€โ–ถโ”‚ (DB/Redis) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ–ผ โ–ผ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Google ADK โ”‚ โ”‚ Spring AI โ”‚ โ”‚ LangChain4j โ”‚ โ”‚ โ”‚ โ”‚ Agent ็ผ–ๆŽ’ โ”‚ โ”‚ Tool/LLM/MCP ้›†ๆˆ โ”‚ โ”‚ MCP/LLM ้›†ๆˆโ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ๐Ÿ”Œ MCP Protocol (Model Context Protocol) โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ โ”‚SSE Clientโ”‚ โ”‚ STDIO โ”‚ โ”‚ Local โ”‚ โ† ๅทฅๅ…ทๆŽฅๅ…ฅ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚่ฟœ็จ‹ๆœๅŠก โ”‚ โ”‚ๅญ่ฟ›็จ‹ โ”‚ โ”‚ๆœฌๅœฐๅ‡ฝๆ•ฐ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ MCP Server (ๅฏนๅค–ๆšด้œฒ) โ”‚ โ†’ ไพ›ๅ…ถไป–Agent โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”ฅ ๆ ธๅฟƒไบฎ็‚น

1. ่‡ช็„ถ่ฏญ่จ€ โ†’ ๅ›พ่กจ๏ผŒ็ซฏๅˆฐ็ซฏ้—ญ็Žฏ

ไธๆ˜ฏๆŠŠ AI ๅ›žๅค copy-paste ๅˆฐ draw.io๏ผŒ่€Œๆ˜ฏ AI ็›ดๆŽฅๆ“ๆŽง็”ปๅธƒใ€‚ๅŽ็ซฏ Agent ่พ“ๅ‡บ draw.io XML ๆ ผๅผ๏ผŒๅ‰็ซฏ react-drawio ็ป„ไปถๅฎžๆ—ถ่งฃๆžๅนถๆธฒๆŸ“ใ€‚

json
// Agent ๅ“ๅบ”็ป“ๆž„ { "type": "drawio", // โ† ๅ‘Š่ฏ‰ๅ‰็ซฏ๏ผš่ฟ™ๆ˜ฏๅ›พ๏ผŒ็›ดๆŽฅๆธฒๆŸ“ "content": "<mxGraphModel>...</mxGraphModel>" }

ๅฝ“ type ไธบ user ๆ—ถ๏ผŒๅ†…ๅฎนๆธฒๆŸ“ๅˆฐ่Šๅคฉ้ขๆฟ๏ผˆ่ฟฝ้—ฎใ€ๆพ„ๆธ…๏ผ‰๏ผ›ๅฝ“ type ไธบ drawio ๆ—ถ๏ผŒๅ†…ๅฎน็›ดๆŽฅๆŽจๅ…ฅ็”ปๅธƒใ€‚

2. ็”ปๅธƒไธŠไธ‹ๆ–‡ใ€Œๆบๅธฆใ€่ƒฝๅŠ›

่ฟ™ๆ˜ฏๅŒบๅˆซไบŽๆ™ฎ้€š Chat-to-Diagram ๅทฅๅ…ท็š„ๅ…ณ้”ฎ่ฎพ่ฎกใ€‚ไฝ ๅฏไปฅๅ…ˆๅœจ draw.io ็”ปๅธƒไธŠๆ‰‹ๅŠจๆ‹–ๅ‡บๅคง่‡ด็ป“ๆž„๏ผŒ็„ถๅŽๆ‰“ๅผ€ใ€Œๆบๅธฆ็”ปๅธƒไธŠไธ‹ๆ–‡ใ€ๅผ€ๅ…ณโ€”โ€”ๅฝ“ๅ‰็”ปๅธƒ็š„ๅ…จ้ƒจ็Šถๆ€ไผšไฝœไธบไธŠไธ‹ๆ–‡ๅ›žไผ ็ป™ Agent๏ผŒๅฎž็Žฐๅขž้‡ไฟฎๆ”น่€Œ้žๆฏๆฌก้ƒฝไปŽๅคด็”Ÿๆˆใ€‚

3. Google ADK ๅคšๆ™บ่ƒฝไฝ“็ผ–ๆŽ’

ๅŽ็ซฏไธๆ˜ฏ็ฎ€ๅ•่ฐƒไธ€ๆฌก LLM๏ผŒ่€Œๆ˜ฏๅŸบไบŽ Google Agent Development Kit (ADK) ๆž„ๅปบ็š„ๅฎŒๆ•ด Agent ็ณป็ปŸ๏ผš

ๅทฅไฝœๆตๆจกๅผ่ฏดๆ˜Žๅ…ธๅž‹ๅœบๆ™ฏ
SequentialAgentNode้กบๅบๆ‰ง่กŒๅคšไธชๅญ Agentๅ…ˆๆœ็ดข่ต„ๆ–™ โ†’ ๅ†็”Ÿๆˆๅ›พ่กจ
ParallelAgentNodeๅนถ่กŒๆ‰ง่กŒๅคšไธชๅญ AgentๅŒๆ—ถๆŸฅ่ฏขๅคšไธชๆ•ฐๆฎๆบ
LoopAgentNodeๅพช็Žฏ่ฟญไปฃๆ‰ง่กŒ็”Ÿๆˆ โ†’ ่‡ชๆฃ€ โ†’ ไฟฎๆญฃ โ†’ ๅ†็”Ÿๆˆ
yaml
# Agent ้…็ฝฎ็คบไพ‹ (agent-draw-io.yml) agent: agentId: drawioagent agentName: "Draw.io ๆžถๆž„ๅŠฉๆ‰‹" chatModel: model: gpt-5.1 tool: mcp: - name: baidu-search # MCP ๅทฅๅ…ท๏ผš่”็ฝ‘ๆœ็ดข type: sse baseUri: http://appbuilder.baidu.com/v2/ai_search/mcp/

4. MCP ๅ่ฎฎๆทฑๅบฆ้›†ๆˆ

ๅŽ็ซฏๅŒๆ—ถไฝœไธบ MCP Client ๅ’Œ MCP Server ่ฟ่กŒ๏ผš

  • Client ไพง๏ผšๆŽฅๅ…ฅ็™พๅบฆๆœ็ดข็ญ‰ๅค–้ƒจ MCP ๆœๅŠก๏ผŒAgent ๅฏไปฅๅฎžๆ—ถๆฃ€็ดขๆŠ€ๆœฏๆ–‡ๆกฃๆฅ่พ…ๅŠฉ็ป˜ๅ›พ
  • Server ไพง๏ผšๆšด้œฒ่‡ชๅฎšไน‰ MCP ๅทฅๅ…ทไพ›ๅ…ถไป– AI Agent ่ฐƒ็”จ๏ผŒๅฎž็Žฐ Agent-to-Agent ้€šไฟก

5. DDD ๅ…ญๅฑ‚ๆžถๆž„๏ผŒๅทฅ็จ‹ๅŒ–ๆ‹‰ๆปก

ๅŽ็ซฏไธฅๆ ผ้ตๅพช้ข†ๅŸŸ้ฉฑๅŠจ่ฎพ่ฎก๏ผˆDDD๏ผ‰ๅˆ†ๅฑ‚๏ผŒๆจกๅ—่พน็•Œๆธ…ๆ™ฐ๏ผš

ai-agent-scaffold-draw-io/ โ”œโ”€โ”€ api/ # RPC ๆŽฅๅฃๅฅ‘็บฆ + DTO โ”œโ”€โ”€ app/ # ๅฏๅŠจๅ…ฅๅฃ + ่‡ชๅŠจ้…็ฝฎ โ”œโ”€โ”€ domain/ # ้ข†ๅŸŸๆ ธๅฟƒ๏ผˆAgentใ€Chatใ€MCPใ€ๅทฅไฝœๆต๏ผ‰ โ”œโ”€โ”€ infrastructure/ # DB/Redis/ๅค–้ƒจ็ฝ‘ๅ…ณ โ”œโ”€โ”€ trigger/ # HTTP Controller โ””โ”€โ”€ types/ # ้€š็”จๆžšไธพ/ๅผ‚ๅธธ

๐ŸŽฏ ๆŠ€ๆœฏ้€‰ๅž‹

ๅฑ‚็บงๆŠ€ๆœฏ้€‰ๅž‹้€‰ๅž‹็†็”ฑ
ๅŽ็ซฏๆก†ๆžถSpring Boot 3.4.3็”Ÿๆ€ๆˆ็†Ÿ๏ผŒ้…็ฝฎ้ฉฑๅŠจ๏ผŒไธŽ Spring AI ๆ— ็ผ้›†ๆˆ
AI Agent ๅผ•ๆ“ŽGoogle ADK 0.5.0ๅŽŸ็”Ÿๆ”ฏๆŒ Multi-Agent ็ผ–ๆŽ’ใ€Session ็ฎก็†ใ€ๆตๅผไบ‹ไปถ
LLM ้›†ๆˆSpring AI + LangChain4j ๅŒ้€š้“Spring AI ็”จไบŽไธป้“พ่ทฏ๏ผŒLangChain4j ไฝœไธบๅค‡้€‰ไธŽ MCP ่กฅๅ……
ๅทฅๅ…ทๅ่ฎฎMCP (SSE/STDIO/Local)ๆ ‡ๅ‡†ๅŒ–ๅทฅๅ…ทๆŽฅๅ…ฅ๏ผŒAI Agent ไบ’่”ไบ’้€š็š„ๆ ‡ๅ‡†ๅ่ฎฎ
ๅ‰็ซฏๆก†ๆžถNext.js 16 + React 19SSR ไผ˜ๅŒ– + RSC ๆžถๆž„๏ผŒ็”Ÿไบง็บงๆ€ง่ƒฝ
ๅ›พ่กจๅผ•ๆ“Žreact-drawio (draw.io ๅตŒๅ…ฅ)ไธš็•Œๆ ‡ๅ‡†ๅ›พ่กจ็ผ–่พ‘ๅ™จ๏ผŒXML ้ฉฑๅŠจ๏ผŒ้›ถๅญฆไน ๆˆๆœฌ
ๆ ทๅผๆ–นๆกˆTailwind CSS v4ๅŽŸๅญๅŒ– CSS๏ผŒ่ฎพ่ฎก็ณป็ปŸไธ€่‡ดๆ€ง
้ƒจ็ฝฒDocker ComposeMySQL + Redis + ๅ‰ๅŽ็ซฏไธ€้”ฎ็ผ–ๆŽ’

๐Ÿš€ ไธ€ๅˆ†้’Ÿๆœฌๅœฐ่ท‘่ตทๆฅ

ๅ‰็ฝฎๆกไปถ

  • JDK 17+
  • Maven 3.6+
  • Node.js 20+
  • (ๅฏ้€‰) Docker 24+

ไธ‰ๆญฅๅฏๅŠจ

bash
# Step 1๏ผš็ผ–่ฏ‘ๅŽ็ซฏ cd ai-agent-scaffold-draw-io mvn clean package -DskipTests java -jar ai-agent-scaffold-draw-io-app/target/ai-agent-scaffold-draw-io-app.jar # Step 2๏ผšๅฏๅŠจๅ‰็ซฏ๏ผˆๆ–ฐ็ปˆ็ซฏ๏ผ‰ cd ai-agent-scaffold-draw-io-front npm install NEXT_PUBLIC_API_BASE_URL=http://localhost:8091/api/v1 npm run dev # Step 3๏ผšๆ‰“ๅผ€ๆต่งˆๅ™จ # ่ฎฟ้—ฎ http://localhost:3000๏ผŒ้€‰ๆ‹ฉ Agent๏ผŒๅผ€ๅง‹ๅฏน่ฏ๏ผ

Docker ๅ…จๅฎถๆกถ๏ผˆ็”Ÿไบง็Žฏๅขƒ๏ผ‰

bash
# ๅŸบ็ก€่ฎพๆ–ฝ๏ผˆMySQL + Redis + ็ฎก็†้ขๆฟ๏ผ‰ docker-compose -f docs/dev-ops/docker-compose-environment-aliyun.yml up -d # ๅบ”็”จ๏ผˆๅŽ็ซฏ 8091 + ๅ‰็ซฏ 3000๏ผ‰ docker-compose -f docs/dev-ops/docker-compose-app.yml up -d
ๆœๅŠก็ซฏๅฃ่ฏดๆ˜Ž
ๅ‰็ซฏ:3000AI Chat + Draw.io ็”ปๅธƒ
ๅŽ็ซฏ API:8091REST + SSE ๆตๅผ
phpMyAdmin:8899MySQL ๅฏ่ง†ๅŒ–็ฎก็†
RedisAdmin:8081Redis ๅฏ่ง†ๅŒ–็ฎก็†

๐Ÿ“ก API ไธ€่งˆ

ๆ–นๆณ•่ทฏๅพ„่ฏดๆ˜Ž
GET/api/v1/query_ai_agent_config_list่Žทๅ–ๅฏ็”จ Agent ๅˆ—่กจ
POST/api/v1/create_sessionๅˆ›ๅปบๅฏน่ฏ Session
POST/api/v1/chatๅ‘้€ๆถˆๆฏ๏ผŒ่ฟ”ๅ›ž Agent ๅ“ๅบ”
POST/api/v1/chat_streamSSE ๆตๅผๅฏน่ฏ

ๅฏน่ฏๆŽฅๅฃ็คบไพ‹

bash
curl -X POST http://localhost:8091/api/v1/chat \ -H "Content-Type: application/json" \ -d '{ "agentId": "drawioagent", "userId": "demo_user", "sessionId": "sess_001", "message": "็”ปไธ€ไธชไธ‰ๅฑ‚ๆžถๆž„๏ผšๅ‰็ซฏNext.jsใ€ๅŽ็ซฏSpring Bootใ€ๆ•ฐๆฎๅบ“MySQL๏ผŒ็”จ็ฎญๅคดๆ ‡ๆณจๆ•ฐๆฎๆตๅ‘" }'

ๅ“ๅบ”ไธญๅŒ…ๅซ type: "drawio" ็š„ๆถˆๆฏ๏ผŒๅ‰็ซฏไผš่‡ชๅŠจๆธฒๆŸ“ๅˆฐ็”ปๅธƒใ€‚


๐Ÿงญ Agent ๅ†…้ƒจๅทฅไฝœๆต

ไธ€ไธชๅฎŒๆ•ด็š„็ป˜ๅ›พ่ฏทๆฑ‚ๅœจ Agent ๅ†…้ƒจ็ป่ฟ‡ๅฆ‚ไธ‹ๆต็จ‹๏ผš

็”จๆˆท่พ“ๅ…ฅ "็”ปๅพฎๆœๅŠกๆžถๆž„ๅ›พ" โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ RootNode โ”‚ โ† ๆŽฅๆ”ถ็”จๆˆทๅŽŸๅง‹่พ“ๅ…ฅ โ”‚ ๆ„ๅ›พ่งฃๆž โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ChatModelNode โ”‚ โ† ่ฐƒ็”จ LLM (GPT/Claude/DeepSeek...) โ”‚ ้œ€ๆฑ‚็†่งฃ + ๆฃ€็ดข โ”‚ MCP ๅทฅๅ…ท๏ผš็™พๅบฆๆœ็ดข่กฅๅ……ๆŠ€ๆœฏ็ป†่Š‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ AgentNode โ”‚ โ† ๅฏ้€‰็š„ๅทฅไฝœๆต็ผ–ๆŽ’ โ”‚ Sequential/ โ”‚ ๅคš Agent ๅไฝœๅค„็†ๅคๆ‚ๅ›พ่กจ โ”‚ Parallel/Loop โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ RunnerNode โ”‚ โ† ๆœ€็ปˆ่พ“ๅ‡บ draw.io XML โ”‚ ็”Ÿๆˆ XML ๆจกๆฟ โ”‚ ๆ ผๅผๅŒ–ใ€่‡ชๆฃ€ใ€ไฟฎๆญฃ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ {"type": "drawio", "content": "<mxGraphModel>..."} โ”‚ โ–ผ ๅ‰็ซฏ react-drawio ๅฎžๆ—ถๆธฒๆŸ“ ๐ŸŽ‰

๐Ÿ”ง Agent ่‡ชๅฎšไน‰้…็ฝฎ

ไฝ ๅฏไปฅ้€š่ฟ‡็Žฏๅขƒๅ˜้‡็ตๆดปๅˆ‡ๆข LLM ๅ’Œๅทฅๅ…ท้“พ๏ผš

bash
# ๆขไธชๆจกๅž‹่ฏ•่ฏ• Claude export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_AI_API_BASE_URL=https://api.anthropic.com export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_AI_API_API_KEY=sk-ant-xxx export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_CHAT_MODEL_MODEL=claude-3-opus # ๆŽฅๅ…ฅไฝ ่‡ชๅทฑ็š„ MCP ๆœๅŠก export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_CHAT_MODEL_TOOL_MCP_LIST_0_SSE_NAME=my-tool export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_CHAT_MODEL_TOOL_MCP_LIST_0_SSE_BASE_URI=https://my-mcp-server export AI_AGENT_CONFIG_TABLES_DRAWIOAGENT_MODULE_CHAT_MODEL_TOOL_MCP_LIST_0_SSE_SSE_ENDPOINT=sse

๐ŸŽฌ ไฝฟ็”จๅœบๆ™ฏ

  • ็ณป็ปŸ่ฎพ่ฎก่ฏ„ๅฎก โ€” ๅฃๅคดๆ่ฟฐๆžถๆž„๏ผŒๅณๆ—ถ็”Ÿๆˆๅฏ่ง†ๅŒ–ๅ›พ่กจ๏ผŒ็œๅŽปๆ‹–ๆ‹ฝๆ—ถ้—ด
  • ๆŠ€ๆœฏๆ–‡ๆกฃ้…ๅ›พ โ€” ๅ†™ README / ่ฎพ่ฎกๆ–‡ๆกฃ / ่ฎบๆ–‡ๆ—ถ๏ผŒ็”จ่‡ช็„ถ่ฏญ่จ€ๅฟซ้€Ÿๅ‡บๅ›พ
  • ๆ•™ๅญฆๆผ”็คบ โ€” ่ฏพๅ ‚ไธŠ็”จๅฏน่ฏๆ–นๅผ้€ๆญฅๆž„ๅปบๆžถๆž„๏ผŒๅญฆ็”Ÿ็›ด่ง‚็†่งฃ็ป„ไปถๅ…ณ็ณป
  • ๅขž้‡ไฟฎๆ”น โ€” ๅ…ˆ่ฎฉ AI ็”Ÿๆˆๅˆ็‰ˆ๏ผŒๆ‰‹ๅŠจๅพฎ่ฐƒๅธƒๅฑ€ๅŽ๏ผŒๅ†่ฎฉ AI ๆทปๅŠ ๆ–ฐๆจกๅ—

๐Ÿ›ฃ๏ธ ๅŽ็ปญ่ง„ๅˆ’

  • ๆ”ฏๆŒๅฏผๅ‡บไธบ PNG/SVG/PDF ๅคšๆ ผๅผ
  • Agent Skills ็ƒญๅŠ ่ฝฝ๏ผˆๆ— ้œ€้‡ๅฏๅณๅฏๆทปๅŠ ๆ–ฐ Agent๏ผ‰
  • ๅคšๆจกๆ€่พ“ๅ…ฅ๏ผˆไธŠไผ ๆ‰‹็ป˜่‰ๅ›พ โ†’ AI ่ฏ†ๅˆซ โ†’ ็”Ÿๆˆ่ง„่Œƒๅ›พ่กจ๏ผ‰
  • Langfuse / LangSmith ๅฏ่ง‚ๆต‹ๆ€ง้›†ๆˆ
  • Kubernetes Helm Chart ้ƒจ็ฝฒๆ–นๆกˆ
  • ๅฏน่ฏๆจกๆฟๅธ‚ๅœบ๏ผˆ็คพๅŒบ่ดก็Œฎ Prompt ๆจกๆฟ๏ผ‰

๐Ÿ“„ License

Apache License 2.0

โญ ๅฆ‚ๆžœ่ฟ™ไธช้กน็›ฎๅฏนไฝ ๆœ‰ๅธฎๅŠฉ๏ผŒๆฌข่ฟŽ็ป™ไธช Star๏ผš
github.com/lechan775/ai-agent-drawio


Built with โค๏ธ by @lechan775 ยท ๅŸบ็ก€ๆžถๆž„ๆบ่‡ช ๅฐๅ‚…ๅ“ฅ ็š„ DDD ่„šๆ‰‹ๆžถ

ๅฆ‚ๆžœๅฏนไฝ ๆœ‰็”จ็š„่ฏ๏ผŒๅฏไปฅๆ‰“่ตๅ“ฆ
ๆ‰“่ต
ali pay
wechat pay

ๆœฌๆ–‡ไฝœ่€…:williams

ๆœฌๆ–‡้“พๆŽฅ:

็‰ˆๆƒๅฃฐๆ˜Ž:ๆœฌๅšๅฎขๆ‰€ๆœ‰ๆ–‡็ซ ้™ค็‰นๅˆซๅฃฐๆ˜Žๅค–๏ผŒๅ‡้‡‡็”จ BY-NC-SA ่ฎธๅฏๅ่ฎฎใ€‚่ฝฌ่ฝฝ่ฏทๆณจๆ˜Žๅ‡บๅค„๏ผ