| name | image-gen |
| description | AI 图像生成助手,支持文生图和图生图,对接 OpenRouter / 阿里云百炼 / 火山方舟 / Google Gemini。
内置 API Key 加密管理:Key 以 AES 加密存入 WPS 笔记,解密密钥由「设备ID + 笔记ID + provider」现场派生,本机无需存储额外文件。
触发词:"帮我生图""文生图""图生图""用 AI 画一张""生成一张图""根据这张图生成""垫图生图""用 Flux 生图""用 Gemini 生图"。
与 wpsnote-cli gen-image 的区别:本 Skill 支持图生图、多服务商选择、更高质量模型,是内置生图的升级替代方案。
|
| metadata | {"version":"2.0.0","category":"content-creation","tags":["image","gen-image","flux","gemini","dashscope","openrouter"],"dependencies":["wps-note"],"scripts":["comm_script/image_gen.py"]} |
Image Gen — AI 图像生成
支持文生图 + 图生图,自动管理 API Key,生成结果可直接插入 WPS 笔记。
铁律
- API Key 不得在对话中输出,无论任何情况
encrypt-key 子命令输出的 ciphertext_b64 可以展示(这是密文,不是真实 Key)
- 告警文案必须完整展示,不可省略
- 模型名称不允许修改,不允许用户自定义。每个 provider 只有唯一一个确认可用的模型,AI 必须严格使用下表中的值,不得根据用户描述、偏好或自行推断填写其他模型名——任何其他模型名均视为幻觉:
| provider | 唯一可用模型(硬编码,不可改动) |
|---|
| openrouter | google/gemini-3.1-flash-image-preview |
| dashscope(百炼) | qwen-image-2.0-pro |
| ark(即梦) | doubao-seedream-5-0-260128 |
| gemini | gemini-3-pro-image-preview |
用户只能选择用哪个 provider,模型由 AI 根据上表自动填入,任何情况下不接受覆盖。
核心流程
确认需求 → 确定 provider + model → 获取/解密 Key → 执行生图 → 询问是否插入笔记
Step 1:确认生图需求
询问:
请告诉我:
1. 生图描述(prompt)是什么?
2. 有参考图吗?(有 → 图生图;没有 → 文生图)
3. 比例偏好?(1:1 / 16:9 / 9:16 / 4:3 / 3:4,默认 1:1)
- 无参考图 → 文生图,全部 provider 可用
- 有参考图 → 图生图,仅 openrouter(本地文件)/ gemini(本地文件)/ ark即梦(公网 URL)支持;百炼不支持图生图
Step 2:确定 Provider
让用户从以下四个 provider 中选一个,模型由 AI 自动填入(见铁律):
| provider | 特点 | 适合场景 |
|---|
| openrouter | 走代理,文生图 + 图生图(本地文件垫图) | 代理环境,需要图生图 |
| dashscope(百炼) | 国内直连,仅文生图 | 国内网络,纯文生图 |
| ark(即梦) | 国内直连,文生图 + 图生图(垫图须公网 URL) | 国内网络,需要图生图 |
| gemini | 走代理,文生图 + 图生图(本地文件垫图) | 代理环境,Google 直连 |
用户未指定时,根据是否有代理、是否需要图生图主动推荐。
openrouter / gemini 国内需要代理,询问用户是否提供 --proxy。
Step 3:获取 Key
3.1 先搜笔记
search_notes 搜索 图像生成 Key,找到后 read_note 读取,在表格中找 provider 对应行,取出 ciphertext_b64 和 note_id。
找到密文 → 直接进入 Step 4(note 模式,脚本自动解密)。
找不到笔记或对应行 → 进入 Step 3.2。
3.2 向用户索取 Key
我需要 {provider} 的 API Key 才能继续。
获取地址:{平台 URL}
请直接粘贴你的 Key:
收到 Key 后询问是否保存(见 Step 3.3)。
3.3 询问是否保存 Key
必须完整展示以下告警:
⚠️ 安全风险告知(请认真阅读)
如果你选择保存,Key 将以 AES 加密后存入 WPS 笔记:
- 加密密钥由「本机设备 ID + 笔记 ID + provider」现场派生,本机无需存储额外文件
- WPS 笔记不会获取你的 Key 内容,密文在其他设备上无法解密
- ⚠️ 如果你添加了第三方 MCP 插件,该插件可读取笔记内容(含密文)
- ⚠️ 换设备后,同一密文无法解密,需重新保存
是否保存?
A. 保存(我已知悉风险)
B. 不保存(本次临时使用)
选择保存:
-
检查 图像生成 Key 笔记是否存在,不存在则 create_note 新建(标题 图像生成 Key,加 #图像生成 标签)
-
执行加密:
python3 comm_script/image_gen.py encrypt-key \
--note-id "{笔记 note_id}" \
--provider "{provider}" \
--key "{用户提供的Key}"
- 从输出中取
ciphertext_b64,整表替换写入笔记(新增或替换对应 provider 行):
<table>
<tr>
<td><p><strong>provider</strong></p></td>
<td><p><strong>ciphertext_b64</strong></p></td>
<td><p><strong>更新时间</strong></p></td>
</tr>
<tr>
<td><p>{provider}</p></td>
<td><p>{ciphertext_b64}</p></td>
<td><p>{当前日期}</p></td>
</tr>
</table>
- 对话只说:「Key 已加密保存到笔记《图像生成 Key》,下次自动读取。」
选择不保存:Key 仅本次使用,直接进入 Step 4,--key 直接传字符串。
Step 4:执行生图
note 模式(已有保存的 Key)
python3 comm_script/image_gen.py \
--provider "{provider}" \
--model "{model}" \
--key "note:{note_id}" \
--ciphertext "{ciphertext_b64}" \
--prompt "{prompt}" \
[--image "{参考图路径或URL}"] \
[--proxy "{代理地址}"] \
--aspect "{比例}" \
[--size "{分辨率}"] \
--out "./output"
临时模式(本次直接使用)
python3 comm_script/image_gen.py \
--provider "{provider}" \
--model "{model}" \
--key "{用户提供的Key}" \
--prompt "{prompt}" \
[--image "{参考图路径或URL}"] \
[--proxy "{代理地址}"] \
--aspect "{比例}" \
--out "./output"
执行前告知:「正在调用 {provider} 生成图片,预计 30-120 秒…」
生图完成后,从 [saved] {路径} 行获得本地图片路径。
Step 5:询问是否插入笔记
图片已生成:{路径}
需要插入到 WPS 笔记吗?
A. 插入当前打开的笔记
B. 插入指定笔记(请告诉我标题)
C. 不用,本地保存就行
选择插入时,执行以下步骤:
1. 获取目标笔记的 anchor_id(必须先做)
wpsnote-cli outline --note_id "{note_id}" --json
取 blocks 数组最后一个元素的 id 作为 anchor_id。
2. 插入图片(优先 CLI)
wpsnote-cli insert-image \
--note_id "{note_id}" \
--anchor_id "{最后一个block的id}" \
--position "after" \
--src "{图片本地路径或URL}" \
--json
返回 block_id 表示插入成功。
3. 降级:CLI 失败则用 MCP
insert_image({ note_id: "{note_id}", anchor_id: "{anchor_id}", position: "after", src: "{url或本地路径}" })
⚠️ insert-image 要求目标笔记当前在 WPS 编辑器中打开,否则报 INTERNAL_ERROR。如果报错,提示用户在 WPS 中打开该笔记后重试。
Step 6:删除 Key
用户说「删除 Key」「清除保存的 Key」「换一个 Key」时:
- 搜索
图像生成 Key 笔记,整表替换删除对应 provider 行
- 告知:「{provider} 的密文已从笔记中删除。下次生图需重新提供 Key。」
无需清理本机文件(note 模式本机本就无存储)。
常见问题处理
| 场景 | 处理方式 |
|---|
| 解密失败(换了设备) | 提示"换设备后密文不可用,请重新执行保存流程" |
| openrouter / gemini 连接超时 | 提示"国内需要代理,请提供代理地址" |
| 百炼传了参考图 | 自动忽略,告知"百炼不支持图生图" |
| 火山方舟垫图是本地文件 | 提示"须为公网 URL" |
| 依赖未安装 | 提示 pip install httpx cryptography |