diff --git a/CLAUDE.md b/CLAUDE.md
index 55577fec..2e79f66f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -6,7 +6,7 @@
## 项目概述
-**Opentu (开图)** 是一个基于 Plait 框架构建的开源白板应用。支持思维导图、流程图、自由绘画、图片插入,以及 AI 驱动的内容生成(通过 Gemini 生成图片,通过 Veo3/Sora-2 生成视频)。
+**Opentu (开图)** 是一个基于 Plait 框架构建的开源白板应用。支持思维导图、流程图、自由绘画、图片插入,以及 AI 驱动的内容生成(支持 Gemini、Midjourney、Flux、Seedream、Kling 等多种图片/视频生成模型)。
| 属性 | 值 |
|------|-----|
@@ -87,7 +87,7 @@ aitu/
| 构建工具 | Nx 19.3, pnpm, SWC |
| UI 框架 | TDesign React, Tailwind CSS, Lucide React |
| 绘图框架 | Plait ^0.84, Slate.js, RoughJS, Mermaid |
-| AI/API | Gemini API, Veo3, Sora-2 |
+| AI/API | Gemini API, Midjourney, Flux, Seedream, Kling, Veo3, Sora-2 |
| 状态管理 | React Context, RxJS, LocalForage |
| 测试 | Vitest, Playwright |
@@ -109,6 +109,52 @@ Service Worker (后台执行)
**核心特性**:页面刷新不影响任务执行,通过 `remoteId` 恢复视频轮询。
+### 模型适配器架构
+
+支持多种 AI 图片/视频生成模型,通过统一的适配器接口集成:
+
+**已集成模型**:
+- **图片生成**:Gemini (Imagen 3)、Midjourney、Flux、Seedream 5.0
+- **视频生成**:Veo 3、Sora 2、Kling、Seedance
+
+**适配器注册与路由**:
+```typescript
+// 1. 定义适配器(实现 ImageModelAdapter 或 VideoModelAdapter)
+export const mjImageAdapter: ImageModelAdapter = {
+ id: 'mj-image-adapter',
+ matchTags: ['mj'], // 模型标签匹配
+ supportedModels: ['mj-imagine'],
+ async generateImage(context, request) { /* ... */ }
+};
+
+// 2. 注册到全局 registry
+registerModelAdapter(mjImageAdapter);
+
+// 3. 运行时路由(generation-api-service.ts)
+const adapter = resolveAdapterForModel(model);
+if (adapter) {
+ await executeImageViaAdapter(taskId, adapter, params);
+}
+```
+
+**关键文件**:
+- `services/model-adapters/registry.ts` - 适配器注册表
+- `services/model-adapters/types.ts` - 适配器接口定义
+- `services/model-adapters/default-adapters.ts` - 默认适配器注册
+- `services/media-executor/fallback-adapter-routes.ts` - 适配器执行路由
+
+**多图结果处理**:
+- 适配器返回 `{ url, urls?, format }` 结构
+- `urls` 数组包含所有生成的图片 URL
+- 任务完成前自动缓存远程 URL 到本地 `/__aitu_cache__/`
+- UI 层展开多图为独立预览项,支持水平排列插入
+
+**签名 URL 处理**:
+- TOS/Volces 等签名 URL 会校验 Referer 导致 403
+- 所有 `
`/`