Synaplan Multimodal Gateway
ทางการOffers the complete functionality of the Open Source server as a MCP example
คุณทำอะไรได้บ้างด้วย Synaplan Multimodal Gateway?
- Query RAG knowledge base — Ask questions against your uploaded documents and get AI answers grounded in your own content via
POST /mcp. - Retrieve AI memories — Look up user profiles and interaction history stored in Qdrant vector search through the MCP endpoint.
- Decompose complex requests — Submit multi-step tasks that the AI planner breaks into a task graph (extract, summarize, generate) and streams back live progress.
- Manage chat channels — Connect and configure WhatsApp, email, or embedded chat widgets for multi-channel AI-powered conversations.
- Connect external MCP servers — Register your own MCP servers under Channels so the multi-task planner can pull live data from them via
mcp_fetchnodes.
เอกสาร
Synaplan
การจัดการความรู้ที่ขับเคลื่อนด้วย AI พร้อม RAG, วิดเจ็ตแชท และการผสานรวมหลายช่องทาง
อินสแตนซ์จริง: web.synaplan.com | เอกสาร: docs.synaplan.com | API: Swagger UI

ข้อกำหนดเบื้องต้น
- Docker + Docker Compose v2 (Docker Desktop บน macOS/Windows หรือ Docker Engine + ปลั๊กอิน Compose บน Linux)
- Git
- RAM 8 GB ขั้นต่ำ (แนะนำ 16 GB สำหรับการติดตั้งมาตรฐานแบบ local-AI)
- พื้นที่ดิสก์ว่าง ~9 GB สำหรับการติดตั้งมาตรฐาน (~5 GB สำหรับแบบมินิมอล)
- พอร์ต TCP ว่าง
5173,8000,8082,8025,3307,6333,11435
Mac ที่ใช้ Apple Silicon (M1–M4): อิมเมจคอนเทนเนอร์ของ Synaplan ถูกเผยแพร่สำหรับ
linux/amd64ดังนั้นจึงทำงานภายใต้การจำลองบน Apple Silicon ใน Docker Desktop → Settings → General ให้เปิดใช้งาน "Use Rosetta for x86/amd64 emulation on Apple Silicon" (macOS 13+) เพื่อให้คอนเทนเนอร์ทำงานเร็วขึ้นและเสถียรกว่า QEMU เริ่มต้นมาก ทุกอย่างทำงานได้โดยไม่ต้องใช้ — แค่ช้าลง และการ build ครั้งแรกใช้เวลานานกว่า
เริ่มต้นอย่างรวดเร็ว
git clone https://github.com/metadist/synaplan.git
cd synaplan
docker compose up -d
เปิด http://localhost:5173 — UI พร้อมใช้งานใน ~2 นาที ด้วยการติดตั้งมาตรฐาน โมเดล Ollama ภายใน (gpt-oss:20b, bge-m3, รวม ~14 GB) จะดาวน์โหลดต่อในพื้นหลัง — แชทที่ใช้ AI ภายในจะเริ่มทำงานเมื่อการดาวน์โหลดเสร็จสิ้น (docker compose logs -f backend แสดงความคืบหน้า) สำหรับประสบการณ์ครั้งแรกที่เร็วที่สุด ให้ใช้การติดตั้ง แบบมินิมอล ด้านล่าง
ตัวเลือกการติดตั้ง
| โหมด | คำสั่ง | ขนาด | เหมาะสำหรับ |
|---|---|---|---|
| มาตรฐาน | docker compose up -d | ~9 GB | ฟีเจอร์ครบถ้วน, AI ภายใน |
| มินิมอล | docker compose -f docker-compose-minimal.yml up -d | ~5 GB | AI บนคลาวด์เท่านั้น (Groq/OpenAI) |
สำหรับการติดตั้งแบบมินิมอล ให้ตั้งค่า API key ของคุณ ก่อน เริ่มสแต็ก เพื่อให้การบูตครั้งแรกเห็นค่านั้น (หลีกเลี่ยงการรีสตาร์ท) รับคีย์ฟรีที่ console.groq.com:
echo "GROQ_API_KEY=your_key" >> backend/.env
docker compose -f docker-compose-minimal.yml up -d
เริ่มต้นไปแล้วโดยไม่มีคีย์? เพิ่มคีย์และรีสตาร์ทแบ็กเอนด์:
echo "GROQ_API_KEY=your_key" >> backend/.env && docker compose restart backend
การเข้าถึง
| บริการ | URL |
|---|---|
| แอป | http://localhost:5173 |
| API | http://localhost:8000 |
| เอกสาร API | http://localhost:8000/api/doc |
| phpMyAdmin | http://localhost:8082 |
| MailHog | http://localhost:8025 |
ข้อมูลรับรองการเข้าสู่ระบบเริ่มต้น:
| อีเมล | รหัสผ่าน | ระดับ |
|---|---|---|
| [email protected] | admin123 | ADMIN |
| [email protected] | demo123 | PRO |
| [email protected] | test123 | NEW (ยังไม่ยืนยัน) |
ฟีเจอร์
- แชท AI — Ollama, OpenAI, Anthropic, Groq, Gemini
- การจัดเส้นทางหลายงาน — ตัววางแผน AI แยกคำขอที่ซับซ้อนออกเป็นกราฟงาน (แยก → สรุป → สร้าง → ตอบกลับ) และสตรีมการ์ดงานสดขณะที่ขั้นตอนดำเนินการ
- การค้นหา RAG — การค้นหาเอกสารเชิงความหมายด้วย MariaDB VECTOR หรือ Qdrant
- วิดเจ็ตแชท — ฝังบนเว็บไซต์ใดก็ได้ (คู่มือวิดเจ็ต)
- การสนับสนุนสด — เลเยอร์ WebSocket แบบเรียลไทม์ (Centrifugo + Redis): การ接管แชทวิดเจ็ตโดยมนุษย์, ตัวบ่งชี้การพิมพ์, การแจ้งเตือนผู้ปฏิบัติงาน (คู่มือเรียลไทม์)
- WhatsApp — การผสานรวม Meta Business API
- อีเมล — การตอบกลับอีเมลที่ขับเคลื่อนด้วย AI
- เสียง — การถอดเสียง Whisper (อินพุต) + ตัวเลือก synaplan-tts (เอาต์พุต)
- เอกสาร — PDF, Word, Excel, รูปภาพพร้อม OCR
- ความทรงจำ AI — การสร้างโปรไฟล์ผู้ใช้ด้วยการค้นหาเวกเตอร์ Qdrant
- ระบบข้อเสนอแนะ — การจับและวิเคราะห์ข้อเสนอแนะที่ขับเคลื่อนโดย Qdrant
- ปลั๊กอิน — ระบบปลั๊กอินแบบไม่รุกราน (คู่มือปลั๊กอิน)
- เซิร์ฟเวอร์ MCP (การเข้าถึงก่อนใคร) — เชื่อมต่อไคลเอนต์ AI (Claude, Cursor, …) ผ่าน Model Context Protocol; RAG และความทรงจำของคุณกลายเป็นเครื่องมือที่
POST /mcp(คู่มือ MCP) - ไคลเอนต์ MCP (การเข้าถึงก่อนใคร) — เชื่อมต่อเซิร์ฟเวอร์ MCP ของคุณ (CRM, วิกิ, n8n, …) ภายใต้ Channels → MCP Servers; ตัววางแผนหลายงานดึงข้อมูลสดจากเซิร์ฟเวอร์เหล่านั้นผ่านโหนด DAG
mcp_fetch— อ่านอย่างเดียว, ป้องกัน SSRF, เลือกใช้ตามหัวข้อ เปิดใช้งานโดยแฟล็กBCONFIGที่ seeded (MCP.CLIENT_ENABLED,MULTITASK.MCP_FETCH_ENABLED—app:seedตั้งค่าเป็น ON เมื่อ deploy; แถว0ที่ชัดเจนคือสวิตช์หยุดฉุกเฉินของผู้ปฏิบัติงาน) ดู docs/MULTITASK_DATA_NODES.md
ฐานข้อมูลเวกเตอร์ Qdrant
Qdrant ทำงานเป็นบริการ Docker ภายใน — ไม่จำเป็นต้องกำหนดค่าใดๆ มันขับเคลื่อนความทรงจำ AI, การค้นหาเอกสาร RAG และระบบข้อเสนอแนะ
เริ่มต้นโดยอัตโนมัติด้วย docker compose up -d Synaplan ทำงานได้อย่างสมบูรณ์โดยไม่มีมัน (ความทรงจำและการค้นหาเวกเตอร์จะถูกปิดใช้งาน)
การประมวลผลแบบเรียลไทม์และเบื้องหลัง
ไฟล์ compose ทั้งสองยังเริ่มบริการภายในสามรายการ (ไม่มีพอร์ตโฮสต์, ไม่ต้องตั้งค่า):
| บริการ | บทบาท |
|---|---|
redis | โครงสร้างพื้นฐานที่ใช้ร่วมกันที่จำเป็น: แคช, เซสชัน, ล็อก, การจำกัดอัตรา, คิวข้อความ (Redis Streams), เอนจิน Centrifugo |
centrifugo | เกตเวย์ WebSocket สำหรับฟีเจอร์เรียลไทม์ (การ接管แชทสด, ตัวบ่งชี้การพิมพ์, การแจ้งเตือนผู้ปฏิบัติงาน) — เบราว์เซอร์เชื่อมต่อแบบ same-origin ผ่าน /connection/websocket |
worker | ผู้บริโภค Symfony Messenger ที่ดำเนินการงาน async (การประมวลผล AI, การจัดทำดัชนีเอกสาร, การรวบรวมข้อมูลวิดเจ็ต) |
ในคลัสเตอร์หลายโหนด ทุกโหนดใช้ Redis ร่วมกัน ดังนั้นเหตุการณ์ WebSocket ที่เผยแพร่บนโหนดหนึ่งจะไปถึงเบราว์เซอร์ที่เชื่อมต่อกับโหนดอื่นๆ รายละเอียด: docs/REALTIME.md.
การแปลงข้อความเป็นเสียง (ตัวเลือก)
สำหรับเอาต์พุตเสียง ให้รัน synaplan-tts ควบคู่กับ Synaplan:
git clone https://github.com/metadist/synaplan-tts.git && cd synaplan-tts && docker compose up -d
คำสั่งทั่วไป
# Logs
docker compose logs -f backend
# Restart
docker compose restart backend
# Reset database
docker compose down -v && docker compose up -d
# Run tests
make test
# Code quality
make lint
เอกสารประกอบ
เอกสารสำหรับผู้ใช้และ API อยู่ที่ docs.synaplan.com แหล่งที่มา: metadist/synaplan-docs
คู่มือใน repo (สำหรับนักพัฒนาที่ทำงานบนโค้ดเบสนี้):
| คู่มือ | คำอธิบาย |
|---|---|
| การติดตั้ง | คำแนะนำการตั้งค่าโดยละเอียด |
| การกำหนดค่า | ตัวแปรสภาพแวดล้อม, คีย์ API |
| การพัฒนา | คำสั่ง, การทดสอบ, สถาปัตยกรรม |
| เรียลไทม์ / WebSockets | เลเยอร์เรียลไทม์ Centrifugo + Redis, การ deploy หลายโหนด |
| ระบบ RAG | การค้นหาและประมวลผลเอกสาร |
| วิดเจ็ตแชท | ฝังแชทบนเว็บไซต์ |
| การตั้งค่า Meta Business API | |
| อีเมล | การผสานรวมช่องทางอีเมล |
Repositories ที่เกี่ยวข้อง
| Repo | วัตถุประสงค์ |
|---|---|
| synaplan | แอปหลัก (repo นี้) |
| synaplan-docs | ไซต์เอกสารสาธารณะ (docs.synaplan.com) |
| synaplan-tts | บริการ Piper TTS ตัวเลือก |
| synaplan-sortx | ปลั๊กอินการจัดเรียงเอกสาร + เครื่องมือภายใน |
| synaplan-charts | Helm charts สำหรับ Kubernetes |
| synaplan-platform | การกำหนดค่าการ deploy สำหรับ production |
โครงสร้างโปรเจกต์
synaplan/
├── backend/ # Symfony PHP API
├── frontend/ # Vue.js SPA
├── docs/ # Documentation
├── _docker/ # Docker configs
└── plugins/ # Plugin system
การมีส่วนร่วม
ดู AGENTS.md สำหรับแนวทางการพัฒนาและมาตรฐานโค้ด