diff --git a/decks/gen2D/pages/architecture.md b/decks/gen2D/pages/architecture.md index 6f70ad0..5ee20eb 100644 --- a/decks/gen2D/pages/architecture.md +++ b/decks/gen2D/pages/architecture.md @@ -3,44 +3,26 @@
``` -┌──────────────────────────────────────────────────────────────────┐ -│ 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 │ -└──────────────────────────────────────────────────────────────────┘ +┌─────────────────────────────────────────────────────┐ +│ Frontend (React + Vite + TypeScript) │ +│ 项目画廊 · 工作台 · 结果预览 · 风格编辑器 │ +│ Zustand 状态管理 · react-router v7 │ +└─────────────────────────┬───────────────────────────┘ + │ HTTP / WebSocket +┌─────────────────────────▼───────────────────────────┐ +│ Backend (Go + Gin + Eino) │ +│ │ +│ Handler: JWT 中间件 · 请求校验 · 错误处理 │ +│ ↓ │ +│ Service: Eino compose.Graph Pipeline │ +│ PromptOptimizer → AssetGenerator │ +│ → QualitySupervisor → FormatAdapter │ +│ 项目管理 · 风格系统 · 用户认证 │ +│ ↓ │ +│ Data: GORM + SQLite · sync.Map 缓存 │ +│ │ +│ 外部: DeepSeek LLM · Stability AI · 七牛云 Kodo │ +└──────────────────────────────────────────────────────┘ ```
diff --git a/decks/gen2D/pages/async-task.md b/decks/gen2D/pages/async-task.md index e952e80..e38865f 100644 --- a/decks/gen2D/pages/async-task.md +++ b/decks/gen2D/pages/async-task.md @@ -2,33 +2,23 @@ 提交即返回,后台并发执行 - + -1. 用户提交生成请求 → 创建 Task 记录(状态 `running`) -2. 立即返回 `taskId`,前端开始轮询 / 建立 WebSocket -3. 后台启动 goroutine 执行管线 +1. 提交请求 → 创建 Task(`running`)→ 立即返回 `taskId` +2. 前端轮询 / WebSocket 获取进度 +3. 后台 goroutine 执行管线,完成后上传素材 - + -| 阶段 | 进度范围 | 说明 | -|------|---------|------| -| PromptOptimizer | 5% → 25% | 风格合并 + LLM 优化 | -| AssetGenerator | 25% → 60% | 调用文生图 API | -| QualitySupervisor | 60% → 80% | 视觉模型质检 | -| FormatAdapter | 80% → 100% | 格式组装 + 上传 | +| 阶段 | 进度 | 说明 | +|------|------|------| +| PromptOptimizer | 5→25% | 风格合并 + LLM 优化 | +| AssetGenerator | 25→60% | 调用文生图 API | +| QualitySupervisor | 60→80% | 视觉模型质检 | +| FormatAdapter | 80→100% | 格式组装 + 上传 | + +质检重试最多 3 次,任务级重试 1 次,超限降级输出。 - - - -- **质检重试**(管线内):QualitySupervisor 不合格 → 回退 PromptOptimizer,最多 3 次 -- **任务级重试**(管线外):整个管线失败 → 5 秒间隔重试,最多 1 次 -- **降级兜底**:超过重试次数后,使用当前最优结果输出 - - - -
- 任务生命周期:running → completed / failed -
diff --git a/decks/gen2D/pages/data-model.md b/decks/gen2D/pages/data-model.md index efb3bc6..1a26d55 100644 --- a/decks/gen2D/pages/data-model.md +++ b/decks/gen2D/pages/data-model.md @@ -2,7 +2,7 @@ 四表结构,清晰的实体关系 -```mermaid {scale: 0.8} +```mermaid {scale: 0.7} erDiagram USER ||--o{ PROJECT : "拥有" PROJECT ||--|| PROJECT_STYLE : "配置" @@ -12,28 +12,15 @@ erDiagram
- -- `id`:前缀 + 随机 base62(6 字节 crypto/rand) -- `username`:唯一用户名 -- `password_hash`:bcrypt 哈希 + +- 用户:`id`(base62)、`username`、`password_hash`(bcrypt) +- 工程:`id`、`user_id`、`name`、`description` - -- `id`:唯一标识 -- `user_id`:外键关联用户 -- `name` / `description`:工程信息 - - - -- `project_id`:一对一关联工程 -- `kv_pairs`:JSON 存储风格键值对 -- 支持 `custom:` 前缀自定义标签 - - - -- Task:`id` / `project_id` / `prompt` / `status` / `style_override` -- Asset:`id` / `task_id` / `file_url` / `metadata` -- 文件存储:七牛云 Kodo,CDN 签名访问 + +- 风格表:`project_id` 一对一,`kv_pairs` JSON 存储 +- 任务:`prompt`、`status`、`style_override` +- 素材:`file_url`、`metadata`,存于七牛云 Kodo
diff --git a/decks/gen2D/pages/dedup-ws.md b/decks/gen2D/pages/dedup-ws.md index 5556e39..d9270cd 100644 --- a/decks/gen2D/pages/dedup-ws.md +++ b/decks/gen2D/pages/dedup-ws.md @@ -3,30 +3,9 @@ 两项关键的工程优化 - -- **策略**:`hash(prompt + assetType + params)` 生成唯一键 -- **存储**:`sync.Map` 内存缓存,TTL 自动过期 -- **逻辑**:相同参数的并发请求自动合并,返回已有 `taskId` -- **效果**:避免重复生成,节省 API 调用成本,提升用户体验 - +`hash(prompt + assetType + params)` 生成唯一键,`sync.Map` 内存缓存。相同参数并发请求自动合并,返回已有 `taskId`,节省 API 调用成本。 - -- 用户建立 `ws://host/api/v1/tasks/:taskId/ws` 连接 -- 管线各阶段执行时推送实时状态消息: - -```json -{ - "type": "progress", - "stage": "asset_generator", - "progress": 45, - "message": "正在生成素材..." -} -``` - -- 质检重试时推送额外信息:重试次数、重试原因 -- 管线完成时推送最终结果:素材 URL、元数据 -- **兼容方案**:同时支持 HTTP 轮询(`GET /api/v1/tasks/:taskId`) - +建立 `ws://host/api/v1/tasks/:taskId/ws` 连接,管线各阶段推送进度、质检重试信息、最终结果。同时兼容 HTTP 轮询方案。 diff --git a/decks/gen2D/pages/deployment.md b/decks/gen2D/pages/deployment.md index a0ec09d..837c6b7 100644 --- a/decks/gen2D/pages/deployment.md +++ b/decks/gen2D/pages/deployment.md @@ -2,39 +2,21 @@ Docker Compose 双容器 + 一键部署 -```mermaid {scale: 0.8} +```mermaid {scale: 0.7} graph TB subgraph Docker Compose - A[nginx 容器
前端静态文件 + 反向代理] - B[app 容器
Go 后端 + SQLite] + A[nginx 容器] -->|proxy_pass| B[app 容器] end - A -->|proxy_pass| B - B --> C[七牛云 Kodo
素材文件存储] - B --> D[DeepSeek LLM
提示词优化] - B --> E[Stability AI
文生图 API] + B --> C[七牛云 Kodo] + B --> D[DeepSeek LLM] + B --> E[Stability AI] User -->|HTTP| A ``` - -- **nginx 容器**:Vite 构建产物 + 反向代理 `/api` 到后端 -- **app 容器**:Go 二进制 + SQLite 数据库文件挂载 -- **网络**:Docker 内部网络通信,nginx 暴露 8080 端口 - +nginx 容器:Vite 构建产物 + 反向代理 `/api`。app 容器:Go 二进制 + SQLite 挂载。内部网络通信,nginx 暴露 8080 端口。 - -```bash -# 构建并启动 -docker compose up -d --build - -# 或使用部署脚本 -./deploy.sh -``` - -- Gitee CI/CD 自动触发:push → 构建 → 部署 -- SQLite 嵌入式数据库,无需额外数据库服务 -- 配置通过环境变量 / `.env` 文件注入 - +`docker compose up -d --build` 或 `./deploy.sh`。Gitee CI/CD 自动触发,SQLite 嵌入式零外部依赖。 diff --git a/decks/gen2D/pages/eino-graph.md b/decks/gen2D/pages/eino-graph.md index b62c648..5cf84ee 100644 --- a/decks/gen2D/pages/eino-graph.md +++ b/decks/gen2D/pages/eino-graph.md @@ -1,27 +1,19 @@ # Eino 管线编排 — compose.Graph -四阶段智能体协作的核心实现 -
-```go {all|1-8|10-15|17-22|24-28} -// 类型定义 +```go type PipelineInput struct { - UserID string - ProjectID string - TaskID string - Prompt string - AssetType string - StyleMap map[string]string + UserID, ProjectID, TaskID string + Prompt, 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 @@ -30,18 +22,10 @@ type PipelineOutput struct {
- - -使用 `compose.NewGraph[PipelineInput, PipelineOutput]()` 创建有向图,依次注册四个节点:PromptOptimizer → AssetGenerator → QualitySupervisor → FormatAdapter。质检节点支持条件分支:通过则进入格式适配,不通过则回退到提示词优化。 - - - -通过 `AddLambda` 注册状态处理器,在节点间传递优化后的提示词、图片 URL、重试计数等状态。质检节点根据 `RetryCount` 决定重优化还是降级输出。 +`compose.NewGraph` 创建有向图,注册四节点。质检节点条件分支:通过 → 格式适配,不通过 → 回退提示词优化。 -传入 `PipelineInput`,管线自动按拓扑顺序执行各节点。每个节点执行完成后通过回调更新进度(5% → 25% → 60% → 80% → 100%)。 +传入 `PipelineInput`,按拓扑顺序执行。每节点完成回调更新进度(5% → 25% → 60% → 80% → 100%)。 - - diff --git a/decks/gen2D/pages/highlights.md b/decks/gen2D/pages/highlights.md index d0dc377..e887ced 100644 --- a/decks/gen2D/pages/highlights.md +++ b/decks/gen2D/pages/highlights.md @@ -1,29 +1,17 @@ # 核心亮点总结 - - -Eino `compose.Graph` 编排四阶段智能体,支持质检重试(最多 3 次)与降级输出。每个节点独立可测试、可替换。 +Eino `compose.Graph` 编排四阶段智能体,支持质检重试(最多 3 次)与降级输出。 -Eino Chain 驱动,支持任意 OpenAI 兼容 API(默认 DeepSeek)。无 API Key 自动回退模板,保证功能可用。 +Eino Chain 驱动,支持任意 OpenAI 兼容 API。无 Key 自动回退模板,保证功能可用。 - -WebSocket 推送管线各阶段状态、进度百分比与质检重试信息。兼容 HTTP 轮询方案。 + +WebSocket 推送各阶段进度与质检信息。相同参数并发请求自动合并,节省 API 成本。 - -`hash(prompt + assetType + params)` + `sync.Map` 缓存,相同参数并发请求自动合并,节省 API 调用成本。 + +两层风格架构(Project + Task Override)保证一致性。Docker Compose + Gitee CI/CD 零依赖部署。 - - -两层风格架构(Project Style + Task Override),六个维度预设键 + 自定义标签,保证素材风格一致性。 - - - -Docker Compose 双容器架构 + Gitee CI/CD 自动部署。SQLite 嵌入式数据库,零外部依赖。 - - - diff --git a/decks/gen2D/pages/pipeline.md b/decks/gen2D/pages/pipeline.md index 4dd7813..d7c38ff 100644 --- a/decks/gen2D/pages/pipeline.md +++ b/decks/gen2D/pages/pipeline.md @@ -2,33 +2,26 @@ 基于 Eino `compose.Graph` 编排的四阶段智能体协作管线 -```mermaid {scale: 0.75} -graph LR - A[用户输入] --> B[PromptOptimizer
提示词优化] - B --> C[AssetGenerator
素材生成] - C --> D{QualitySupervisor
质检} - D -->|通过| E[FormatAdapter
格式适配] - D -->|不通过| B - E --> F[输出素材] - D -->|重试 ≥ 3| E -``` - - - -合并工程风格 + 任务风格覆盖,将用户描述转化为三段式规范提示词(主体描述 + 风格约束 + 技术规格)。调用 Eino Chain 驱动的 LLM 优化,无 API Key 时自动回退模板。 +合并工程风格 + 任务风格覆盖,生成三段式规范提示词。调用 Eino Chain 驱动 LLM 优化,无 Key 自动回退模板。 -调用 OpenAI 兼容的文生图 API(默认 Stability AI),根据优化后的提示词生成素材。支持 `/v1/images/generations` 标准接口。 +调用 OpenAI 兼容的文生图 API(默认 Stability AI),根据优化后提示词生成素材。 - -使用视觉模型自动检测生成结果,不合格则触发重优化流程(最多 3 次)。超过重试次数后降级输出当前最优结果。 + +视觉模型自动质检,不合格触发重优化(最多 3 次)。通过后组装 Spritesheet + 元数据,上传七牛云 Kodo。 - -组装输出素材与元数据,支持 Spritesheet 打包。素材上传至七牛云 Kodo,返回 CDN 访问链接。 - +
- +```mermaid {scale: 0.7} +graph LR + A[用户输入] --> B[PromptOptimizer] --> C[AssetGenerator] --> D{质检} + D -->|通过| E[FormatAdapter] --> F[输出] + D -->|不通过| B + D -->|重试≥3| E +``` + +
diff --git a/decks/gen2D/pages/problem.md b/decks/gen2D/pages/problem.md index f7d32cc..0afd9d4 100644 --- a/decks/gen2D/pages/problem.md +++ b/decks/gen2D/pages/problem.md @@ -1,33 +1,17 @@ # 痛点:2D 游戏素材制作 -
- - -- 像素画 / 手绘需要专业美术人员,独立开发者难以负担 -- 外包费用高,单张精绘素材 50-500 元不等 -- 迭代周期长,试错成本高 —— 一次修改可能需要数天 - +专业美术人员费用高,独立开发者难以负担。外包单张 50-500 元,迭代周期长,试错成本高。 - -- 生成素材尺寸 / 格式不统一,无法直接导入游戏引擎 -- 精灵表(Spritesheet)需手动拆分与对齐 -- 多张素材之间风格一致性难以保证 - +素材尺寸/格式不统一,Spritesheet 需手动拆分。多张素材之间风格一致性难以保证。 - -- 通用文生图模型缺乏游戏素材领域知识 -- 无法理解 "像素风"、"赛璐璐" 等游戏美术术语 -- 输出结果不可控,没有质检和重试机制 - +通用文生图模型缺乏游戏素材领域知识,无法理解"像素风"等术语,输出不可控,无质检重试。 -
-
核心诉求:低门槛 · 风格一致 · 管线友好 · 质量可控
diff --git a/decks/gen2D/pages/prompt-agent.md b/decks/gen2D/pages/prompt-agent.md index 730750b..db54d4f 100644 --- a/decks/gen2D/pages/prompt-agent.md +++ b/decks/gen2D/pages/prompt-agent.md @@ -2,28 +2,21 @@ Eino Chain 驱动的智能提示词生成 -```mermaid {scale: 0.8} -graph LR - A[用户描述] --> B[风格合并] - B --> C[三段式组装] - C --> D[LLM 优化] - D --> E[最终提示词] - F[工程风格] --> B - G[任务覆盖] --> B - H[重试注入] --> D -``` - -`finalStyle = merge(projectStyle, taskStyle)` — 工程风格为基底,任务风格逐键覆盖。自定义标签(`custom:` 前缀)自动提取。 +`finalStyle = merge(projectStyle, taskStyle)` — 工程风格为基底,任务风格逐键覆盖。自定义标签自动提取。 -将合并后的风格信息组装为三段式规范提示词: -- **主体描述**:用户输入的角色/场景描述 -- **风格约束**:美术风格、色调、线条等风格键 -- **技术规格**:尺寸、格式、透明背景等引擎适配参数 +**主体描述**(用户输入)+ **风格约束**(美术风格、色调、线条)+ **技术规格**(尺寸、格式、透明背景) -调用 Eino Chain 将三段式提示词发给 DeepSeek 等 LLM 进行润色优化。**无 API Key 时自动回退到模板生成**,保证功能可用。优化失败时注入重试上下文,指导模型修正。 +调用 Eino Chain 发给 DeepSeek 润色。**无 API Key 自动回退模板**,失败时注入重试上下文。 + +```mermaid {scale: 0.65} +graph LR + A[用户描述] --> B[风格合并] --> C[三段式组装] --> D[LLM 优化] --> E[最终提示词] + F[工程风格] --> B + G[任务覆盖] --> B +``` diff --git a/decks/gen2D/pages/solution.md b/decks/gen2D/pages/solution.md index 809a486..c21c729 100644 --- a/decks/gen2D/pages/solution.md +++ b/decks/gen2D/pages/solution.md @@ -1,29 +1,17 @@ # gen2D 的解决方案 -
- | 输入 | 处理 | 输出 | |------|------|------| | 自然语言描述 + 风格参数 | 多智能体协作管线 | Sprite、背景、UI 元素、动画帧 | -
- - -用文字描述你想要的素材,AI 自动理解需求并生成。支持中英文,无需编写 Prompt 工程。 + +用文字描述素材需求,AI 自动生成。工程级风格预设保证同一项目素材风格统一。 - -工程级风格预设系统(Project Style)+ 任务级覆盖(Task Override),保证同一项目素材风格统一。 - - - -标准尺寸输出,适配 Unity / Godot 等主流引擎。自动组装 Spritesheet,附带元数据。 - - - -多智能体质检(QualitySupervisor)自动检测不合格素材,触发重优化(最多 3 次),最终降级兜底。 + +标准尺寸输出,适配 Unity / Godot。自动质检 + 重试(最多 3 次)+ 降级兜底。 diff --git a/decks/gen2D/pages/style-system.md b/decks/gen2D/pages/style-system.md index 5f5b630..bcc618b 100644 --- a/decks/gen2D/pages/style-system.md +++ b/decks/gen2D/pages/style-system.md @@ -3,33 +3,13 @@ 保证一致性与灵活性的风格管理方案 - -- 工程级别的全局风格配置,存储在 `project_style` 表中 -- 以 Key-Value 对(kvPairs)形式存储,如 `artStyle=pixel`, `palette=warm` -- 同一工程下所有素材自动继承,保证风格统一 - +全局风格配置,以 kvPairs 存储(如 `artStyle=pixel`)。同一工程下所有素材自动继承,保证风格统一。 - - -- 单次生成任务可覆盖部分风格键,仅指定需要变化的项 -- 未指定的键自动继承工程风格 -- 适合在同一工程下生成不同变体(如:同一角色的不同表情) - + +单次任务可覆盖部分风格键,未指定的自动继承工程风格。适合生成同一角色的不同变体。 -
- - -``` -finalStyle = merge(projectStyle, taskStyle) -``` - -- 工程风格作为基底,任务风格逐键覆盖 -- 自定义标签(`custom:` 前缀)自动提取到 Prompt 中 -- 合并后的风格键注入三段式提示词的风格约束段 - +`finalStyle = merge(projectStyle, taskStyle)` — 工程风格为基底,任务风格逐键覆盖。自定义标签(`custom:` 前缀)自动提取注入提示词。 - -
diff --git a/decks/gen2D/pages/tech-stack.md b/decks/gen2D/pages/tech-stack.md index f90a693..8a8ccfe 100644 --- a/decks/gen2D/pages/tech-stack.md +++ b/decks/gen2D/pages/tech-stack.md @@ -1,51 +1,37 @@ # 技术栈一览 -
+
-- **语言**:Go 1.26 -- **框架**:Gin 1.12 -- **AI 编排**:Eino 0.8(compose.Graph) -- **ORM**:GORM + SQLite -- **认证**:JWT + bcrypt -- **配置**:Viper(多层配置) -- **存储**:七牛云 Kodo +- Go 1.26 + Gin 1.12 +- Eino 0.8 管线编排 +- GORM + SQLite +- JWT + bcrypt 认证 +- Viper 多层配置 +- 七牛云 Kodo -- **框架**:React 18 + TypeScript 5.6 -- **构建**:Vite 6 -- **状态管理**:Zustand -- **路由**:react-router v7 -- **样式**:CSS Modules + 暗色主题 -- **API 层**:封装 Fetch + 类型安全 +- React 18 + TypeScript +- Vite 6 构建 +- Zustand 状态管理 +- react-router v7 +- CSS Modules 暗色主题 +- 封装 Fetch API 层 -- **容器化**:Docker 多阶段构建 -- **反向代理**:nginx -- **CI/CD**:Gitee Actions 自动部署 -- **数据库**:SQLite 嵌入式 -- **文件存储**:七牛云 Kodo CDN -- **通信**:REST API + WebSocket - - - -
- -
- - - -- **Handler 层**(薄):请求校验、参数绑定、错误处理 -- **Service 层**(厚):业务逻辑、管线编排、风格合并 -- **Model 层**(数据):GORM 实体定义、数据库操作 -- **日志系统**:基于 `log/slog`,分级别记录(Debug / Info / Warn / Error) +- Docker 多阶段构建 +- nginx 反向代理 +- Gitee CI/CD 自动部署 +- SQLite 嵌入式 DB +- 七牛云 Kodo CDN +- REST + WebSocket