为什么要做这件事
我的 AI Agent 系统里图片生成的能力散落在 6 个地方:系统内置的 image_generate、通义千问主技能、阿里云百炼脚本、商汤日日新、9Router 网关、还有博客发布管道里的配图逻辑。
问题很明显——问 Agent “生成一张图片”,它不知道该调哪个。6 个方案之间有大量重复代码,默认模型还是过时的 wan2.6-t2i(没有免费额度)。更离谱的是,阿里云百炼脚本和通义千问技能调的是同一个 API,但维护了两套代码。
所以我决定合并。目标:一个入口覆盖所有图片生成场景。
合并前的 6 个方案
先看看原来都有什么:
- 系统内置
image_generate— 无需加载技能,后端可配(FAL、OpenAI),但用户不能选模型,只有 landscape/portrait/square 三种比例 - qianwen-image-generation(通义千问) — 支持 5 种生成方式、16 个模型,功能最全,是事实上的主技能
- aliyun-media-generation(阿里云百炼) — 本地脚本
qwen_image.py,实际调的也是通义千问 API,和方案 2 重复 - sensenova-media-generation(商汤日日新) —
sensenova-u1-fast模型,纯文生图,支持推理生图(先理解再画) - 9Router 网关 — 统一网关转发,提到有文生图能力
- 博客发布管道 — T2 撰写要正文配图,T4 要封面图,之前靠
image_generate降级凑合
这 6 个方案的关系错综复杂。百炼脚本和通义千问调同一个接口,商汤是独立的备选,内置工具是兜底。但对 Agent 来说,没有清晰的路由规则。
合并过程
第一步:查免费额度
这是最关键的一步。我查了通义千问的用量和模型信息,发现 wan2.7-image-pro 有 50 张/月免费额度,而原来的默认模型 wan2.6-t2i 没有。
免费额度直接决定了默认模型选谁。50 张/月对个人博客配图来说绰绰有余。
第二步:合并到通义千问技能
把所有图片生成能力收拢到 qianwen-image-generation:
- 默认模型从
wan2.6-t2i改为wan2.7-image-pro(6 处引用要逐一排查) - 新增本地快速工具章节,引用
~/tools/qwen-image/qwen_image.py - 新增 API 坑点章节(文档常写错的 endpoint 和分辨率格式)
第三步:精简阿里云百炼技能
百炼脚本的 Section C(文生图/图生图)和通义千问重复,直接删掉。只保留 Section A(文生视频 T2V)和 Section B(图生视频 I2V)。
技能名也从 aliyun-media-generation 改成 aliyun-video-generation——但目录名不动,因为改目录名会影响 git 历史和脚本路径引用。技能匹配靠的是 YAML name 字段,不是目录名。
第四步:更新发布管道
博客流水线的 T2 撰写步骤明确加载 qianwen-image-generation,首选 wan2.7-image-pro(免费 50 张/月),备选商汤日日新。T4 封面设计走另一条路:guizang-social-card → image_generate → 默认 logo。
合并后的职责划分
合并完,每个技能有且只有一个明确的职责:
| 技能 | 干什么 | 推荐模型 |
|---|---|---|
qianwen-image-generation |
文生图、图生图、图像编辑(唯一入口) | wan2.7-image-pro(免费 50 张/月) |
aliyun-video-generation |
文生视频(T2V)、图生视频(I2V) | wan2.7-t2v |
sensenova-media-generation |
推理生图(备选) | sensenova-u1-fast |
image_generate |
系统内置兜底 | FAL/OpenAI |
怎么用
最简单的调用方式:
# 文生图(默认 wan2.7-image-pro)
python3 ~/tools/qwen-image/qwen_image.py generate "A cozy flower shop with wooden door" -o output.png
# 图生图(编辑)
python3 ~/tools/qwen-image/qwen_image.py edit input.png "apply watercolor style" -o output.png
# 批量生成 3 张
python3 ~/tools/qwen-image/qwen_image.py generate "提示词" -n 3 -o out.png
用技能内置脚本(功能更全,支持更多参数):
python3 ~/.hermes/skills/qianwen/qianwen-image-generation/scripts/image.py \
--model wan2.7-image-pro \
--request '{"prompt":"A cozy flower shop", "size":"1280*720"}' \
--output output.png

模型速查表
不同场景该用哪个模型:
| 模型 | 干什么 | 免费额度 | 推荐度 |
|---|---|---|---|
| wan2.7-image-pro | 文生图+编辑+序列图+4K | 50张/月 | 首选 |
| wan2.6-t2i | 纯文生图 | 无 | 一般 |
| wan2.7-image | 文生图+编辑(更快,最高2K) | 未知 | 可以 |
| qwen-image-2.0-pro | 文字渲染+真实纹理 | 未知 | 特定场景 |
| z-image-turbo | 开源SOTA | 未知 | 试试 |
5 个踩坑点
这些都是合并过程中实际踩到的,不是纸上谈兵。
坑 1:API Endpoint 文档写错了
通义千问的官方文档里,有些页面写的图片生成 endpoint 是错的。
正确的 endpoint:
POST /api/v1/services/aigc/multimodal-generation/generation
文档里出现过的错误 endpoint:
/compatible-mode/v2/images/generations → 404
分辨率格式也有坑——用星号 2048*2048,不是字母 x 2048x2048。这个报错信息不直观,排查了半天。

坑 2:wan2.6-image 不能纯文生图
wan2.6-image 是图像编辑模型,必须传 reference_images(参考图)或者开启 enable_interleave。纯文字提示词调用会直接报错。
这是合并时才发现的。之前两个技能各自维护,没人注意到这个模型的使用限制。
坑 3:Token Plan 密钥不兼容
如果你用的是阿里云百炼的 Token Plan 团队版,密钥格式是 sk-sp-...,指向不同的 endpoint。图片生成技能需要标准的 sk-... 格式 DashScope Key。
两种 Key 不通用,用错了会报 401 认证失败,但错误信息不会告诉你”你用错 Key 类型了”。
坑 4:默认模型改了 6 处
把默认模型从 wan2.6-t2i 改成 wan2.7-image-pro,涉及 SKILL.md(多处引用)、scripts/image.py、scripts/image_lib.py,还有本地工具脚本。漏改一处就会出现不一致。
经验:改默认模型前,先全局搜索旧模型名,确认所有引用点。
坑 5:目录名和技能名是两回事
改技能的 YAML name 字段就够了,不用改目录名。改目录名会影响 git 历史和脚本中的路径引用。技能匹配靠的是 YAML name 字段,不是目录名。
所以 aliyun-video-generation 这个技能,目录仍然叫 aliyun-media-generation/。看起来有点怪,但比破坏一堆路径引用要好。

总结
6 个图片生成方案合并成 1 个统一入口,核心收益是:Agent 不再纠结该调谁,用户不再记不住哪个脚本在哪。
合并的逻辑其实不复杂——找到功能最全的那个技能(通义千问),把其他方案的独有能力收进来,重复的删掉,独立的保留但明确边界。真正费时间的是排查免费额度、修正文档错误、处理密钥兼容性这些脏活。
如果你也在用 AI Agent 系统,图片生成技能散落在多个地方,可以参考这个思路:先查额度决定默认模型,再合并重复代码,最后更新所有引用。