# Image Gen

在 Agent 沙盒中生成并保存图片。当用户要求生成图片、海报、插画、文生图，或指定 Qwen-Image、其它兼容图片生成接口时使用此技能。

- Repository: https://github.com/xerrors/Yuxi (7566 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add xerrors/Yuxi --skill image-gen -g -a claude-code -y`
Codex: `npx skills add xerrors/Yuxi --skill image-gen -g -a codex -y`
Cursor: `npx skills add xerrors/Yuxi --skill image-gen -g -a cursor -y`
Gemini CLI: `npx skills add xerrors/Yuxi --skill image-gen -g -a gemini-cli -y`

## Description

在 Agent 沙盒中生成并保存图片。当用户要求生成图片、海报、插画、文生图，或指定 Qwen-Image、其它兼容图片生成接口时使用此技能。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 图片生成技能

当用户要求生成图片、海报、插画、文生图，或明确提到 Qwen-Image 时，使用此技能组织图片生成流程。

## 默认生成接口

默认使用 SiliconFlow 的 Qwen-Image 接口：

- Endpoint: `POST https://api.siliconflow.cn/v1/images/generations`
- Model: `Qwen/Qwen-Image`
- 默认参数：
  - `negative_prompt`: `""`
  - `num_inference_steps`: `20`
  - `guidance_scale`: `7.5`

调用外部接口时，必须在 Agent 沙盒执行环境中读取 `SILICONFLOW_API_KEY`。不要依赖后端进程环境变量。

## 操作流程

1. 明确用户要生成的图片内容、风格、尺寸或约束；信息不足但不影响生成时，使用合理默认值，不要反复追问。
2. 使用可用的执行工具在沙盒中运行脚本，调用图片生成接口，传入用户需求整理后的 `prompt`，并按需传入 `negative_prompt`、`num_inference_steps`、`guidance_scale`。
3. 从生成接口响应中读取图片地址，默认路径为 `images[0].url`。
4. 在同一个沙盒脚本中用 `Authorization: Bearer $SILICONFLOW_API_KEY` 下载该图片地址；如果接口直接返回 base64，则直接解码保存。
5. 根据用户要求和项目结构，将最终图片保存到当前 Workdir 中合适的位置。
6. 读取 `chat-widgets` Skill，在最终回复的完整 widget 围栏中输出独立 Image，多张图片使用 ImageGroup；path 使用保存后的绝对虚拟路径，alt 描述图片内容，需要短语时用 caption 放在左下角。用户需要下载或保存文件时，同时调用 `present_artifacts` 登记路径。
7. 最终回复简要说明图片已生成，不要把外部临时 URL 当作最终结果展示。

## 脚本示例

可根据用户需求调整 prompt 和保存位置。将示例中的 Workdir 占位路径替换为主 prompt 提供的当前绝对虚拟路径，并按用户要求选择文件位置：

```python
import os
import requests
from pathlib import Path

api_key = os.environ["SILICONFLOW_API_KEY"]
prompt = "根据用户需求整理后的图片提示词"

response = requests.post(
    "https://api.siliconflow.cn/v1/images/generations",
    headers={"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"},
    json={
        "model": "Qwen/Qwen-Image",
        "prompt": prompt,
        "negative_prompt": "",
        "num_inference_steps": 20,
        "guidance_scale": 7.5,
    },
    timeout=120,
)
response.raise_for_status()
image_url = response.json()["images"][0]["url"]

image_response = requests.get(
    image_url,
    headers={"Authorization": f"Bearer {api_key}"},
    timeout=120,
)
image_response.raise_for_status()

workdir = Path("/home/user/workspace/projects/<当前项目目录>")
output_path = workdir / "generated-image.png"
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_bytes(image_response.content)
print(output_path.as_posix())
```

## 多模型扩展

The rest: https://github.com/xerrors/Yuxi/blob/HEAD/backend/yuxi/modules/extensions/skills/builtin/image-gen/SKILL.md
