Files
memind/docs/image-make-integration.md
T
john 4b15610aa8
Memind CI / Test, build, and release guards (pull_request) Successful in 2m47s
feat(image): complete reviewed generation delivery
2026-07-20 20:04:53 +08:00

126 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# image_make 隔离接入
## 边界
`image_make` 是独立服务。Memind 只通过 HTTP API 调用,下载结果并校验后写入 MindSpace;
`image_make` 不连接 Memind 数据库,也不能直接写 MindSpace。开关关闭或请求失败时,现有页面、
封面与缩略图流程保持不变。
## 后台开关
开关位于 `memind_adm` 的「资产能力」页面,按以下顺序生效:
1. 资产能力总开关开启;
2. 图片生成插件开启,Provider 选择 `image_make`
3. 单独开启需要的用途:页面正文图片、页面头图、卡片封面、信息流与缩略图源图;
4. Memind 运行环境同时配置 `IMAGE_MAKE_BASE_URL``IMAGE_MAKE_TOKEN`
所有开关默认关闭。信息流缩略图仍由 MindSpace 从 `feed_cover` canonical 源资产派生,禁止为了
缩略图再次调用生图模型。
Provider、默认模型、超时和 ComfyUI 参数由 MemindAdm 的图片生成配置写入 Portal 数据库。
百炼密钥优先复用「统一模型中心」中已启用的 DashScope/Qwen 视觉 Provider;管理接口只返回
脱敏状态,不返回明文密钥。
独立 `image_make` 服务通过下列内部接口拉取运行配置:
```http
GET /api/internal/image-make/runtime-config
Authorization: Bearer <IMAGE_MAKE_TOKEN>
```
该接口会把运行时所需的 Provider 配置返回给受信任的 `image_make` 服务,因此必须只在内网使用,
并保证 Portal 与 `image_make` 配置相同的 Token。
## Memind API
登录用户可显式调用:
```http
POST /api/mindspace/v1/images/generate
Idempotency-Key: imgreq_xxx
Content-Type: application/json
{
"purpose": "hero",
"prompt": ""
}
```
`purpose` 可选值:`inline_image``hero``card_cover``feed_cover`
成功时服务先完成以下步骤,再返回 `201`
1. 创建并轮询 image_make 任务;
2. 下载图片并校验 MIME、文件头、大小与 SHA-256
3. 通过现有 `createChatAsset` 写入用户 MindSpace 公共候选资产;
4. 获得 canonical `publicUrl` 后 best-effort acknowledge image_make 临时结果。
开关关闭返回带 `fallback: true``409`;服务未配置或暂不可用返回带 `fallback: true`
`503`。调用方必须继续原有页面或默认缩略图流程。
## 本地配置
```bash
IMAGE_MAKE_BASE_URL=http://127.0.0.1:8080
IMAGE_MAKE_TOKEN=dev-token
IMAGE_MAKE_REQUEST_TIMEOUT_MS=15000
IMAGE_MAKE_GENERATION_TIMEOUT_MS=600000
IMAGE_MAKE_POLL_INTERVAL_MS=1000
IMAGE_MAKE_MAX_RESULT_BYTES=20971520
IMAGE_MAKE_SEMANTIC_REVIEW_ENABLED=1
IMAGE_MAKE_SEMANTIC_REVIEW_MIN_SCORE=70
IMAGE_MAKE_SEMANTIC_REVIEW_MAX_ATTEMPTS=3
```
Token 只进入 Memind 运行环境,不在 `memind_adm` 页面或数据库中保存、展示。
页面 Agent 通过 sandbox MCP 的 `generate_image` 工具调用 Portal 内部入口。需要额外配置
`MINDSPACE_AGENT_API_BASE_URL`MCP 使用现有 `MINDSPACE_INTERNAL_AGENT_SECRET` 鉴权,成功结果
直接返回 MindSpace `publicUrl``workspaceRelativePath`。工具始终受同一后台总开关、Provider
开关和用途开关约束。容器部署时 base URL 应使用容器可访问的 Portal 地址,不能使用容器自身的
`127.0.0.1`
`image_make` 服务还需配置:
```bash
AUTH_TOKEN_MEMIND=<与 Portal IMAGE_MAKE_TOKEN 相同的值>
IMAGE_MAKE_MEMIND_CONFIG_URL=http://<portal-host>:8081/api/internal/image-make/runtime-config
IMAGE_MAKE_MEMIND_CONFIG_TOKEN=<与 Portal IMAGE_MAKE_TOKEN 相同的值>
```
## 语义审核
生成结果写入 MindSpace 前默认调用统一模型中心配置的 Qwen VL/DashScope 视觉模型做图文一致性
审核。审核不可用、返回格式无效或相关度低于阈值时均 fail closed,不保存图片;语义不匹配最多
重试三次,并为每次重试使用新的幂等键。生产启用图片生成前必须同时验证生图 Provider 与视觉
审核 Provider,不能只验证 `/health`
## 发布前置条件
Portal runtime 不包含独立 `image_make` 服务。正式启用前必须确保:
1. `image_make` 来自独立、可追溯的 Git commit 和发布产物;
2. 服务已在目标环境启动,`/health``/ready` 均通过;
3. Portal 与服务端 Token 一致,运行配置接口可从服务侧访问;
4. MemindAdm 中 Provider、用途开关和统一模型中心 DashScope Key 已配置;
5. 使用真实图片请求完成生成、语义审核、MindSpace 落盘和页面引用的端到端验收。
若这些条件未完成,保持所有图片用途开关关闭;不得把 Portal 代码已上线等同于图片生成能力已
可用。
相关代码改动至少执行:
```bash
npm test
npm run build
npm run verify:mindspace-publish-guards:full
npm run verify:mindspace-page-sync-guards
npm run verify:h5-session-patches
```
## 回滚
`memind_adm` 关闭图片生成插件或资产能力总开关即可立即停止新调用。该回滚不删除已经入库
的 MindSpace 图片,不要求回滚数据库字段,也不改变既有页面内容。