feat: 初始化 sundynix-agentix 分层式 AI Agent 平台脚手架
5 层 + 1 条 NATS 零拷贝消息总线的 monorepo(Monolith First → Microservices Morph B)。 纵向主干(任务流 + Token 流回流)已真实跑通,横向各层能力为带注释的桩。 已贯通(real code): - sundynix-shared: 共享契约 + JetStream/core NATS 真实收发(bus) + 内嵌 NATS(devnats) + e2e 测试 - sundynix-gateway: Gin 接入 + DSL 解析组装 + NATS Publish + SSE 流式输出 - sundynix-dispatcher: NATS 消费 + Eino Orchestrator 流式回流 + 熔断器 + LLM Pool 占位流式 - 链路: HTTP POST → DSL → sundynix.tasks.* → Dispatcher → Token 经 sundynix.streams.<id> 回流 → SSE - 基础设施: docker-compose(nats/postgres/redis/neo4j/milvus) + Makefile(make demo/e2e) 待填(桩): - Eino 图编排 compose.NewGraph、LLM Pool 接 vLLM/Ollama - Gateway store 换真实 pgx/redis - sundynix-mcp-go: Bleve+Milvus+Neo4j 混合检索 / UniOffice / 外部 API - sundynix-mcp-py: gVisor 沙箱 / MinerU(PaddleOCR) / Docker 解释器 - sundynix-desktop: React Flow 画布 → DSL 导出 → SSE 展示
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# sundynix-agentix
|
||||
|
||||
分层式 AI Agent 平台 — **Monolith First → Microservices (Morph B)**。
|
||||
架构总览见 [architecture.md](architecture.md) / [architecture.png](architecture.png)。
|
||||
|
||||
## 仓库结构(Monorepo)
|
||||
|
||||
| 目录 | 层 | 语言 / 技术栈 | 职责 |
|
||||
|---|---|---|---|
|
||||
| [`sundynix-desktop/`](sundynix-desktop) | 1 · Client | Wails + React 19 + TS + shadcn/ui | 桌面端、React Flow Agent 编排、导出 JSON DSL、LLM Wiki 面板 |
|
||||
| [`sundynix-gateway/`](sundynix-gateway) | 2 · Gateway | Go · Gin | 统一接入、DSL 解析组装、计费、Guardrail、PgSQL + Redis |
|
||||
| [`deploy/nats/`](deploy/nats) | 3 · Message Bus | NATS (Go) | 零拷贝骨干网:Queue + Stream |
|
||||
| [`sundynix-dispatcher/`](sundynix-dispatcher) | 4 · Dispatcher | Go · Eino | 图编排、LLM Pool 调度、自动化评测、熔断降级 |
|
||||
| [`sundynix-mcp-go/`](sundynix-mcp-go) | 5a · MCP Tools (I/O) | Go | MCP 网关、Wiki 混合检索(Bleve/Milvus/Neo4j)、UniOffice、外部 API |
|
||||
| [`sundynix-mcp-py/`](sundynix-mcp-py) | 5b · MCP Tools (算法) | Python | MCP 网关、安全沙箱(gVisor/KataVM)、MinerU(PaddleOCR)、Docker 解释器 |
|
||||
| [`sundynix-shared/`](sundynix-shared) | 共享契约 | Go | Task 数据契约、NATS subject 约定、JetStream 收发逻辑(bus)、内嵌 NATS(devnats) |
|
||||
|
||||
## 核心数据流
|
||||
|
||||
1. `Gateway` 解析 DSL → **Publish** `sundynix.tasks.*` (NATS Queue)
|
||||
2. `Dispatcher` 订阅任务 → `Eino` 图编排 → 调用 `LLM Pool`
|
||||
3. 经 NATS 调用第 5 层 `MCP Tools`
|
||||
4. 结果以零拷贝 Token Stream 经 `sundynix.streams.task_id` 回流 → SSE/WS 推给 `Client`
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 无 Docker — 一键验证任务流(推荐先跑这个)
|
||||
|
||||
```bash
|
||||
make demo # 内嵌NATS + Gateway + Dispatcher,提交一个 DSL 任务,看 Dispatcher 消费到
|
||||
make e2e # 仅跑共享 bus 的端到端测试(go test,内嵌 NATS)
|
||||
```
|
||||
|
||||
`make demo` 实测输出:
|
||||
```
|
||||
Gateway: POST /api/v1/tasks → task_xxx → published (seq=1)
|
||||
Dispatcher: [eino] task_xxx received → streaming tokens...
|
||||
SSE 客户端: event:token data:已 event:token data:编 ... event:done ← 流式闭环打通
|
||||
```
|
||||
完整链路:HTTP POST → DSL 解析 → NATS 任务队列 → Dispatcher 消费 → LLM 流式推理
|
||||
→ Token 经 `sundynix.streams.<id>` 回流 → Gateway SSE → 客户端逐 token 收到。
|
||||
|
||||
### 完整环境(Docker)
|
||||
|
||||
```bash
|
||||
make infra # 启动 NATS / Postgres / Redis / Milvus / Neo4j (docker-compose)
|
||||
make devnats # 或:无 Docker 时单独起内嵌 JetStream NATS
|
||||
make gateway # 运行 Gateway
|
||||
make dispatcher # 运行 Dispatcher
|
||||
make mcp-go # 运行 Go MCP 工具服务
|
||||
make mcp-py # 运行 Python MCP 工具服务
|
||||
make desktop # 开发模式运行桌面端 (wails dev)
|
||||
```
|
||||
|
||||
> Go 多模块用 `go.work` 工作区串联;`sundynix-shared` 通过各服务 go.mod 的 `replace` 指向本地。
|
||||
|
||||
## NATS Subject 约定
|
||||
|
||||
| Subject | 类型 | 说明 |
|
||||
|---|---|---|
|
||||
| `sundynix.tasks.*` | Queue | 分布式任务队列 |
|
||||
| `sundynix.streams.<task_id>` | Stream | 零拷贝 Token 字节管道 |
|
||||
| `sundynix.tools.go.*` | Queue | Go MCP 工具调用 |
|
||||
| `sundynix.tools.py.*` | Queue | Python MCP 工具调用 |
|
||||
Reference in New Issue
Block a user