feat: restructure gen2D deck with enriched content and frankfurt theme components
Deploy Slides / build-and-deploy (push) Successful in 1m32s

- Restructure from 12 slides to 21 slides with proper section navigation
- Split into pages/ for modular maintenance (15 page files)
- Use frankfurt theme: cover layout, Item component, section frontmatter
- Remove all two-cols layouts to avoid rendering issues
- Add rich content from tmp/ docs: Eino pipeline, prompt agent, async tasks, data model, deployment
- Use Item component for structured content blocks
- Add mermaid ER diagram for data model
- Add Go code block for pipeline type definitions
This commit is contained in:
2026-05-30 14:22:50 +08:00
parent 3b343da212
commit d479504f12
16 changed files with 577 additions and 235 deletions
+46
View File
@@ -0,0 +1,46 @@
# 系统架构全景
<div class="text-sm mt-2">
```
┌──────────────────────────────────────────────────────────────────┐
│ Frontend (React + Vite + TypeScript) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────┐ ┌───────────┐ │
│ │ 项目画廊 │ │ 工作台面板 │ │ 结果预览 │ │ 风格编辑器 │ │
│ └──────────┘ └──────────────┘ └──────────┘ └───────────┘ │
│ │ Zustand 状态管理 │
│ │ react-router v7 路由 │
└────────────────────────┼─────────────────────────────────────────┘
│ HTTP (REST API) + WebSocket
┌────────────────────────┼─────────────────────────────────────────┐
│ Backend (Go + Gin + Eino) │
│ │ │
│ ┌────────────────────▼─────────────────────────────────────┐ │
│ │ Handler Layer (Gin Router) │ │
│ │ JWT 中间件 · 请求校验 · 错误处理 │ │
│ └────────────────────┬─────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────▼─────────────────────────────────────┐ │
│ │ Service Layer (业务逻辑) │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ Eino compose.Graph Pipeline │ │ │
│ │ │ PromptOptimizer → AssetGenerator → QualitySupervisor│ │ │
│ │ │ ↓ │ │ │
│ │ │ FormatAdapter │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ ┌──────────┐ ┌───────────┐ ┌──────────┐ │ │
│ │ │ 项目管理 │ │ 风格系统 │ │ 用户认证 │ │ │
│ │ └──────────┘ └───────────┘ └──────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────▼─────────────────────────────────────┐ │
│ │ Data Layer (数据访问) │ │
│ │ GORM + SQLite sync.Map 缓存 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 外部依赖:DeepSeek LLM · Stability AI · 七牛云 Kodo │
└──────────────────────────────────────────────────────────────────┘
```
</div>
+34
View File
@@ -0,0 +1,34 @@
# 异步任务模型
提交即返回,后台并发执行
<Item title="📤 任务提交流程">
1. 用户提交生成请求 → 创建 Task 记录(状态 `running`)
2. 立即返回 `taskId`,前端开始轮询 / 建立 WebSocket
3. 后台启动 goroutine 执行管线
</Item>
<Item title="🔄 管线执行与进度推送">
| 阶段 | 进度范围 | 说明 |
|------|---------|------|
| PromptOptimizer | 5% → 25% | 风格合并 + LLM 优化 |
| AssetGenerator | 25% → 60% | 调用文生图 API |
| QualitySupervisor | 60% → 80% | 视觉模型质检 |
| FormatAdapter | 80% → 100% | 格式组装 + 上传 |
</Item>
<Item title="🔁 重试策略">
- **质检重试**(管线内):QualitySupervisor 不合格 → 回退 PromptOptimizer,最多 3 次
- **任务级重试**(管线外):整个管线失败 → 5 秒间隔重试,最多 1 次
- **降级兜底**:超过重试次数后,使用当前最优结果输出
</Item>
<div class="mt-4 text-sm text-gray-400">
任务生命周期:running → completed / failed
</div>
+39
View File
@@ -0,0 +1,39 @@
# 数据模型与存储
四表结构,清晰的实体关系
```mermaid {scale: 0.8}
erDiagram
USER ||--o{ PROJECT : "拥有"
PROJECT ||--|| PROJECT_STYLE : "配置"
PROJECT ||--o{ TASK : "生成"
TASK ||--o{ ASSET : "产出"
```
<div class="grid grid-cols-2 gap-4 mt-2">
<Item title="👤 USER 用户表">
- `id`:前缀 + 随机 base62(6 字节 crypto/rand)
- `username`:唯一用户名
- `password_hash`:bcrypt 哈希
</Item>
<Item title="📁 PROJECT 工程表">
- `id`:唯一标识
- `user_id`:外键关联用户
- `name` / `description`:工程信息
</Item>
<Item title="🎨 PROJECT_STYLE 风格表">
- `project_id`:一对一关联工程
- `kv_pairs`:JSON 存储风格键值对
- 支持 `custom:` 前缀自定义标签
</Item>
<Item title="📦 TASK + ASSET 任务/素材表">
- Task:`id` / `project_id` / `prompt` / `status` / `style_override`
- Asset:`id` / `task_id` / `file_url` / `metadata`
- 文件存储:七牛云 Kodo,CDN 签名访问
</Item>
</div>
+32
View File
@@ -0,0 +1,32 @@
# 请求去重 + 实时推送
两项关键的工程优化
<Item title="🔍 请求去重(Request Dedup)">
- **策略**:`hash(prompt + assetType + params)` 生成唯一键
- **存储**:`sync.Map` 内存缓存,TTL 自动过期
- **逻辑**:相同参数的并发请求自动合并,返回已有 `taskId`
- **效果**:避免重复生成,节省 API 调用成本,提升用户体验
</Item>
<Item title="📡 WebSocket 实时推送">
- 用户建立 `ws://host/api/v1/tasks/:taskId/ws` 连接
- 管线各阶段执行时推送实时状态消息:
```json
{
"type": "progress",
"stage": "asset_generator",
"progress": 45,
"message": "正在生成素材..."
}
```
- 质检重试时推送额外信息:重试次数、重试原因
- 管线完成时推送最终结果:素材 URL、元数据
- **兼容方案**:同时支持 HTTP 轮询(`GET /api/v1/tasks/:taskId`)
</Item>
+40
View File
@@ -0,0 +1,40 @@
# 部署架构
Docker Compose 双容器 + 一键部署
```mermaid {scale: 0.8}
graph TB
subgraph Docker Compose
A[nginx 容器<br/>前端静态文件 + 反向代理]
B[app 容器<br/>Go 后端 + SQLite]
end
A -->|proxy_pass| B
B --> C[七牛云 Kodo<br/>素材文件存储]
B --> D[DeepSeek LLM<br/>提示词优化]
B --> E[Stability AI<br/>文生图 API]
User -->|HTTP| A
```
<Item title="🐳 容器化方案">
- **nginx 容器**:Vite 构建产物 + 反向代理 `/api` 到后端
- **app 容器**:Go 二进制 + SQLite 数据库文件挂载
- **网络**:Docker 内部网络通信,nginx 暴露 8080 端口
</Item>
<Item title="🚀 一键部署">
```bash
# 构建并启动
docker compose up -d --build
# 或使用部署脚本
./deploy.sh
```
- Gitee CI/CD 自动触发:push → 构建 → 部署
- SQLite 嵌入式数据库,无需额外数据库服务
- 配置通过环境变量 / `.env` 文件注入
</Item>
+47
View File
@@ -0,0 +1,47 @@
# Eino 管线编排 — compose.Graph
四阶段智能体协作的核心实现
<div class="mt-2">
```go {all|1-8|10-15|17-22|24-28}
// 类型定义
type PipelineInput struct {
UserID string
ProjectID string
TaskID string
Prompt string
AssetType string
StyleMap map[string]string
}
type PipelineState struct {
OptimizedPrompt string
ImageURL string
QualityPassed bool
RetryCount int
}
type PipelineOutput struct {
AssetURL string
Metadata map[string]any
}
```
</div>
<v-clicks>
<Item title="graph.Build() — 构建管线">
使用 `compose.NewGraph[PipelineInput, PipelineOutput]()` 创建有向图,依次注册四个节点:PromptOptimizer → AssetGenerator → QualitySupervisor → FormatAdapter。质检节点支持条件分支:通过则进入格式适配,不通过则回退到提示词优化。
</Item>
<Item title="stateHandler — 状态管理">
通过 `AddLambda` 注册状态处理器,在节点间传递优化后的提示词、图片 URL、重试计数等状态。质检节点根据 `RetryCount` 决定重优化还是降级输出。
</Item>
<Item title="graph.Invoke() — 执行管线">
传入 `PipelineInput`,管线自动按拓扑顺序执行各节点。每个节点执行完成后通过回调更新进度(5% → 25% → 60% → 80% → 100%)。
</Item>
</v-clicks>
+29
View File
@@ -0,0 +1,29 @@
# 核心亮点总结
<v-clicks>
<Item title="🤖 多智能体协作管线">
Eino `compose.Graph` 编排四阶段智能体,支持质检重试(最多 3 次)与降级输出。每个节点独立可测试、可替换。
</Item>
<Item title="🧠 提示词优化 Agent">
Eino Chain 驱动,支持任意 OpenAI 兼容 API(默认 DeepSeek)。无 API Key 自动回退模板,保证功能可用。
</Item>
<Item title="📡 实时进度推送">
WebSocket 推送管线各阶段状态、进度百分比与质检重试信息。兼容 HTTP 轮询方案。
</Item>
<Item title="🔍 请求去重">
`hash(prompt + assetType + params)` + `sync.Map` 缓存,相同参数并发请求自动合并,节省 API 调用成本。
</Item>
<Item title="🎨 工程级风格系统">
两层风格架构(Project Style + Task Override),六个维度预设键 + 自定义标签,保证素材风格一致性。
</Item>
<Item title="🚀 一键部署">
Docker Compose 双容器架构 + Gitee CI/CD 自动部署。SQLite 嵌入式数据库,零外部依赖。
</Item>
</v-clicks>
+34
View File
@@ -0,0 +1,34 @@
# 核心生成管线
基于 Eino `compose.Graph` 编排的四阶段智能体协作管线
```mermaid {scale: 0.75}
graph LR
A[用户输入] --> B[PromptOptimizer<br/>提示词优化]
B --> C[AssetGenerator<br/>素材生成]
C --> D{QualitySupervisor<br/>质检}
D -->|通过| E[FormatAdapter<br/>格式适配]
D -->|不通过| B
E --> F[输出素材]
D -->|重试 ≥ 3| E
```
<v-clicks>
<Item title="① PromptOptimizer — 提示词优化">
合并工程风格 + 任务风格覆盖,将用户描述转化为三段式规范提示词(主体描述 + 风格约束 + 技术规格)。调用 Eino Chain 驱动的 LLM 优化,无 API Key 时自动回退模板。
</Item>
<Item title="② AssetGenerator — 素材生成">
调用 OpenAI 兼容的文生图 API(默认 Stability AI),根据优化后的提示词生成素材。支持 `/v1/images/generations` 标准接口。
</Item>
<Item title="③ QualitySupervisor — 质检">
使用视觉模型自动检测生成结果,不合格则触发重优化流程(最多 3 次)。超过重试次数后降级输出当前最优结果。
</Item>
<Item title="④ FormatAdapter — 格式适配">
组装输出素材与元数据,支持 Spritesheet 打包。素材上传至七牛云 Kodo,返回 CDN 访问链接。
</Item>
</v-clicks>
+33
View File
@@ -0,0 +1,33 @@
# 痛点:2D 游戏素材制作
<div class="mt-4">
<Item title="🎨 美术成本高">
- 像素画 / 手绘需要专业美术人员,独立开发者难以负担
- 外包费用高,单张精绘素材 50-500 元不等
- 迭代周期长,试错成本高 —— 一次修改可能需要数天
</Item>
<Item title="🔧 管线适配难">
- 生成素材尺寸 / 格式不统一,无法直接导入游戏引擎
- 精灵表(Spritesheet)需手动拆分与对齐
- 多张素材之间风格一致性难以保证
</Item>
<Item title="🤖 现有 AI 工具的局限">
- 通用文生图模型缺乏游戏素材领域知识
- 无法理解 "像素风"、"赛璐璐" 等游戏美术术语
- 输出结果不可控,没有质检和重试机制
</Item>
</div>
<div class="mt-4 text-center text-gray-400">
<b>核心诉求</b>:低门槛 · 风格一致 · 管线友好 · 质量可控
</div>
+29
View File
@@ -0,0 +1,29 @@
# 提示词优化 Agent
Eino Chain 驱动的智能提示词生成
```mermaid {scale: 0.8}
graph LR
A[用户描述] --> B[风格合并]
B --> C[三段式组装]
C --> D[LLM 优化]
D --> E[最终提示词]
F[工程风格] --> B
G[任务覆盖] --> B
H[重试注入] --> D
```
<Item title="① 风格合并">
`finalStyle = merge(projectStyle, taskStyle)` — 工程风格为基底,任务风格逐键覆盖。自定义标签(`custom:` 前缀)自动提取。
</Item>
<Item title="② 三段式提示词组装">
将合并后的风格信息组装为三段式规范提示词:
- **主体描述**:用户输入的角色/场景描述
- **风格约束**:美术风格、色调、线条等风格键
- **技术规格**:尺寸、格式、透明背景等引擎适配参数
</Item>
<Item title="③ LLM 优化 + 回退机制">
调用 Eino Chain 将三段式提示词发给 DeepSeek 等 LLM 进行润色优化。**无 API Key 时自动回退到模板生成**,保证功能可用。优化失败时注入重试上下文,指导模型修正。
</Item>
+32
View File
@@ -0,0 +1,32 @@
# 路线图
<div class="grid grid-cols-2 gap-6 mt-4">
<Item title="✅ 已完成">
- 提示词优化 Agent(Eino Chain)
- 多智能体生成管线(Eino Graph)
- 工程风格系统 + 任务级覆盖
- 用户认证(JWT + bcrypt)
- 异步任务 + 进度轮询
- 素材帧预览、GIF 动画与导出
- 自定义标签系统
- Docker Compose 部署
- 请求去重 + 降级兜底
</Item>
<Item title="🔲 规划中">
- WebSocket 实时进度推送
- 批量生成与队列调度
- 文生图多模型适配(DALL-E、Midjourney)
- 素材版本管理与历史记录
- 分布式令牌桶限流(Redis + Lua)
- 自定义协程池(NumCPU × 4 workers)
- RabbitMQ 消息队列解耦
- Prometheus 监控 + Grafana 看板
</Item>
</div>
+29
View File
@@ -0,0 +1,29 @@
# gen2D 的解决方案
<div class="mt-4">
| 输入 | 处理 | 输出 |
|------|------|------|
| 自然语言描述 + 风格参数 | 多智能体协作管线 | Sprite、背景、UI 元素、动画帧 |
</div>
<v-clicks>
<Item title="🗣️ 自然语言驱动">
用文字描述你想要的素材,AI 自动理解需求并生成。支持中英文,无需编写 Prompt 工程。
</Item>
<Item title="🎨 风格一致性">
工程级风格预设系统(Project Style)+ 任务级覆盖(Task Override),保证同一项目素材风格统一。
</Item>
<Item title="📦 管线友好">
标准尺寸输出,适配 Unity / Godot 等主流引擎。自动组装 Spritesheet,附带元数据。
</Item>
<Item title="✅ 质量可控">
多智能体质检(QualitySupervisor)自动检测不合格素材,触发重优化(最多 3 次),最终降级兜底。
</Item>
</v-clicks>
+35
View File
@@ -0,0 +1,35 @@
# 预设风格键一览
六个维度覆盖游戏素材的核心视觉属性
<div class="grid grid-cols-3 gap-4 mt-4">
<Item title="🎨 美术风格 artStyle">
pixel(像素)、cartoon(卡通)、vector(矢量)、realistic(写实)、flat(扁平)、anime(动漫)
</Item>
<Item title="🌈 色调 palette">
warm(暖色)、cool(冷色)、vibrant(鲜艳)、muted(灰暗)、pastel(粉彩)、monochrome(单色)
</Item>
<Item title="✏️ 线条 lineWeight">
thin(细线)、medium(中等)、thick(粗线)、none(无线条)、sketch(手绘感)
</Item>
<Item title="🏞️ 场景 scene">
forest(森林)、dungeon(地牢)、city(城市)、space(太空)、underwater(水下)、desert(沙漠)
</Item>
<Item title="💡 光照 lighting">
bright(明亮)、dramatic(戏剧)、neon(霓虹)、soft(柔光)、sunset(日落)、dark(暗调)
</Item>
<Item title="🎭 情绪 mood">
cheerful(欢快)、dark(暗黑)、epic(史诗)、calm(宁静)、mysterious(神秘)、playful(活泼)
</Item>
</div>
<div class="mt-4 text-sm text-gray-400">
支持自定义标签:<code>custom:</code> 前缀的键值对会被自动提取到提示词中
</div>
+35
View File
@@ -0,0 +1,35 @@
# 风格系统 — 两层架构
保证一致性与灵活性的风格管理方案
<Item title="🏗️ 工程风格(Project Style)">
- 工程级别的全局风格配置,存储在 `project_style` 表中
- 以 Key-Value 对(kvPairs)形式存储,如 `artStyle=pixel`, `palette=warm`
- 同一工程下所有素材自动继承,保证风格统一
</Item>
<Item title="🔀 任务风格覆盖(Task Override))">
- 单次生成任务可覆盖部分风格键,仅指定需要变化的项
- 未指定的键自动继承工程风格
- 适合在同一工程下生成不同变体(如:同一角色的不同表情)
</Item>
<div class="mt-6">
<Item title="⚙️ 合并逻辑">
```
finalStyle = merge(projectStyle, taskStyle)
```
- 工程风格作为基底,任务风格逐键覆盖
- 自定义标签(`custom:` 前缀)自动提取到 Prompt 中
- 合并后的风格键注入三段式提示词的风格约束段
</Item>
</div>
+52
View File
@@ -0,0 +1,52 @@
# 技术栈一览
<div class="grid grid-cols-3 gap-6 mt-4">
<Item title="⚙️ 后端">
- **语言**:Go 1.26
- **框架**:Gin 1.12
- **AI 编排**:Eino 0.8(compose.Graph)
- **ORM**:GORM + SQLite
- **认证**:JWT + bcrypt
- **配置**:Viper(多层配置)
- **存储**:七牛云 Kodo
</Item>
<Item title="🖥️ 前端">
- **框架**:React 18 + TypeScript 5.6
- **构建**:Vite 6
- **状态管理**:Zustand
- **路由**:react-router v7
- **样式**:CSS Modules + 暗色主题
- **API 层**:封装 Fetch + 类型安全
</Item>
<Item title="🏗️ 基础设施">
- **容器化**:Docker 多阶段构建
- **反向代理**:nginx
- **CI/CD**:Gitee Actions 自动部署
- **数据库**:SQLite 嵌入式
- **文件存储**:七牛云 Kodo CDN
- **通信**:REST API + WebSocket
</Item>
</div>
<div class="mt-6">
<Item title="📐 架构分层原则">
- **Handler 层**(薄):请求校验、参数绑定、错误处理
- **Service 层**(厚):业务逻辑、管线编排、风格合并
- **Model 层**(数据):GORM 实体定义、数据库操作
- **日志系统**:基于 `log/slog`,分级别记录(Debug / Info / Warn / Error)
</Item>
</div>
+31 -235
View File
@@ -23,272 +23,68 @@ AI 驱动的 2D 游戏素材生成工具
</div>
---
# 痛点:2D 游戏素材制作
<div class="grid grid-cols-2 gap-8 mt-6">
<div>
### 🎨 美术成本高
- 像素画 / 手绘需专业美术人员
- 独立开发者难以负担外包费用
- 迭代周期长,试错成本高
</div>
<div>
### 🔧 管线适配难
- 生成素材尺寸 / 格式不统一
- 精灵表需手动拆分与对齐
- 风格一致性难以保证
</div>
</div>
<div class="mt-6 text-center text-gray-400">
<b>核心诉求</b>:低门槛、风格一致、管线友好
</div>
src: ./pages/problem.md
---
# gen2D 的解决方案
<div class="mt-4">
| 输入 | 处理 | 输出 |
|------|------|------|
| 文本描述 + 风格参数 | 多智能体协作管线 | Sprite、背景、UI 元素、动画帧 |
</div>
<v-clicks>
- **自然语言驱动** — 用文字描述你想要的素材,AI 自动生成
- **风格一致性** — 工程级风格预设,保证同一项目素材风格统一
- **管线友好** — 标准尺寸、格式适配 Unity / Godot 等主流引擎
- **质量可控** — 自动质检 + 重试机制,不合格素材自动优化
</v-clicks>
---
src: ./pages/solution.md
---
---
layout: section
section: '产品演示'
src: ./pages/pipeline.md
---
# 产品演示
---
layout: default
src: ./pages/style-system.md
---
# 核心生成管线
基于 Eino `compose.Graph` 的四阶段智能体协作管线
```mermaid {scale: 0.85}
graph LR
A[用户输入] --> B[PromptOptimizer<br/>提示词优化]
B --> C[AssetGenerator<br/>素材生成]
C --> D{QualitySupervisor<br/>质检}
D -->|通过| E[FormatAdapter<br/>格式适配]
D -->|不通过| B
E --> F[输出素材]
D -->|重试 ≥ 3| E
```
<v-clicks>
- **PromptOptimizer** — 合并工程风格 + 任务风格覆盖,生成三段式规范提示词
- **AssetGenerator** — 调用文生图 API 生成素材
- **QualitySupervisor** — 自动质检,不合格触发重优化(最多 3 次)
- **FormatAdapter** — 组装输出素材与元数据,降级兜底
</v-clicks>
---
layout: two-cols
src: ./pages/style-keys.md
---
# 风格系统
两层风格架构,保证一致性与灵活性
### 工程风格(Project Style)
- 工程级别的风格配置
- 保证同一工程下所有素材风格一致
### 任务风格覆盖(Task Override)
- 单次生成任务的风格差异
- 仅覆盖需要变化的键
<div class="mt-4 text-sm text-gray-400">
合并逻辑:finalStyle = merge(project, task)
</div>
::right::
<div class="pl-4 text-sm mt-12">
### 预设风格键
| 分类 | 示例 |
|------|------|
| 美术风格 | pixel, cartoon, vector |
| 色调 | warm, cool, vibrant |
| 线条 | thin, medium, thick |
| 场景 | forest, dungeon, city |
| 光照 | bright, dramatic, neon |
| 情绪 | cheerful, dark, epic |
</div>
---
layout: section
section: '技术架构'
src: ./pages/architecture.md
---
# 技术架构
---
layout: two-cols
src: ./pages/tech-stack.md
---
# 系统架构
<div class="text-sm">
```
┌─────────────────────────────┐
│ Frontend (React + Vite) │
│ 画廊 / 工作台 / 结果预览 │
└──────────────┬──────────────┘
│ HTTP / WS
┌──────────────▼──────────────┐
│ Backend (Go + Gin + Eino) │
│ ┌───────────────────────┐ │
│ │ Eino Graph Pipeline │ │
│ │ 4-Stage Agent Flow │ │
│ └───────────────────────┘ │
│ ┌────┐ ┌─────┐ ┌──────┐ │
│ │ DB │ │ Kodo│ │ LLM │ │
│ └────┘ └─────┘ └──────┘ │
└─────────────────────────────┘
```
</div>
::right::
<div class="pl-4 text-sm mt-12">
### 技术栈
| 层 | 技术 |
|----|------|
| 后端 | Go + Gin + Eino |
| ORM | GORM + SQLite |
| 认证 | JWT + bcrypt |
| 存储 | 七牛云 Kodo |
| 前端 | React + TypeScript |
| 状态 | Zustand |
| 构建 | Vite 6 |
| 部署 | Docker Compose |
</div>
---
section: '核心实现'
src: ./pages/eino-graph.md
---
# 核心亮点
<v-clicks>
- **多智能体协作管线** — Eino `compose.Graph` 编排四阶段智能体,支持质检重试与降级输出
- **提示词优化 Agent** — Eino Chain 驱动,支持任意 OpenAI 兼容 API,无 key 自动回退模板
- **实时进度推送** — WebSocket 推送管线各阶段状态、进度与质检重试信息
- **请求去重** — 相同 prompt + 参数的并发请求自动合并,返回已有 taskId
- **异步任务模型** — goroutine 并发控制,支持失败重试(最多 3 次)与降级输出
- **一键部署** — Docker Compose 双容器架构 + deploy.sh 脚本
</v-clicks>
---
layout: default
src: ./pages/prompt-agent.md
---
# 技术栈一览
<div class="grid grid-cols-3 gap-6 mt-4 text-sm">
<div>
### 后端
- Go 1.26 + Gin
- Eino 管线编排
- GORM + SQLite
- JWT 认证
- 七牛云 Kodo
</div>
<div>
### 前端
- React 18 + TS
- Vite 6
- Zustand 状态管理
- react-router v7
- CSS Modules 主题
</div>
<div>
### 基础设施
- Docker 多阶段构建
- nginx 反向代理
- Gitee CI/CD
- SQLite 嵌入式 DB
- 暗色主题支持
</div>
</div>
---
src: ./pages/async-task.md
---
# 路线图
---
src: ./pages/dedup-ws.md
---
<div class="grid grid-cols-2 gap-8 mt-4">
<div>
---
src: ./pages/data-model.md
---
### ✅ 已完成
---
src: ./pages/deployment.md
---
- 提示词优化 Agent(Eino Chain)
- 多智能体生成管线(Eino Graph)
- 工程风格系统 + 任务级覆盖
- 用户认证(JWT + bcrypt)
- 异步任务 + 实时进度推送
- 素材帧预览、GIF 动画与导出
- 自定义标签系统
---
section: '总结'
src: ./pages/highlights.md
---
</div>
<div>
### 🔲 规划中
- WebSocket 实时进度推送
- 批量生成与队列调度
- 文生图多模型适配
- 素材版本管理与历史记录
- 分布式令牌桶限流
- 自定义协程池
- RabbitMQ 消息队列
</div>
</div>
---
src: ./pages/roadmap.md
---
---
layout: center