---
name: image-gen
description: "生成图片：配图、插图、海报、头像、示意图、Logo 草稿、封面、banner。触发词：画一张、画个、生成图片、生成一张图、做张图、做个图、配图、出图、生图、AI 绘图、image、draw、illustration、poster。仅从零生成，不做已有图片的编辑或修改。"
---

# 图片生成

通过团队 AI 网关生成图片。**按张计入团队积分**，所以不要为一次请求反复重试。

## 怎么用

```bash
node scripts/generate.mjs --prompt "一片红色枫叶，扁平矢量风格，白色背景"
```

可选参数：

| 参数 | 默认 | 说明 |
|---|---|---|
| `--n` | 1 | 张数。**每张都单独计费**，用户没明确要多张就别传 |
| `--size` | `1024x1024` | 还支持 `1024x1536`（竖）、`1536x1024`（横） |
| `--quality` | 由网关决定 | `low` / `medium` / `high`。**high 是标准价的 3 倍**，用户没要求就别传 |
| `--out-dir` | 当前目录 | 一般不要传，见下面第 1 条 |

脚本只往 stdout 打印文件名、尺寸和大小。

## 四条硬约束

**1. 图片必须留在会话目录里，引用必须用相对路径。**

桌面端渲染 `![](...)` 时会把路径按会话目录解析，**解析结果只要落在会话目录之外就直接渲染成空** —— 没有报错、没有占位图、控制台也没有任何东西。所以：

```markdown
![一片红色枫叶](maple-leaf-20260909-231500.png)   ← 对
![一片红色枫叶](/tmp/x.png)                        ← 用户看到的是一段没有图的文字
![一片红色枫叶](file:///Users/…/x.png)             ← 同上
```

直接用脚本打印出来的文件名，不要加目录前缀、不要转成绝对路径。

**2. 绝对不要读这个图片文件。**

不要 `cat`、不要 `base64`、不要用读文件工具打开它。一张图是 1–3 MB 的 base64，把它读进上下文会**直接撑爆会话的压缩机制**，之后每一轮都在白烧。你需要知道的一切（文件名、尺寸、大小）脚本已经打印了。

**3. 不要自己拼 HTTP 请求。**

只调 `scripts/generate.mjs`。不要去读 `TEAMCLU_TEAM_PROVIDER`、更不要读 `tc_gateway_token`，也不要用 curl 直接打网关。

**4. 失败就照实告诉用户，不要重试。**

脚本已经把错误翻译成人话了（积分不足、额度超限、团队没开网关、尺寸不支持、内容被拦截）。把那句话转述给用户就行 —— 这些都是用户自己能解决的问题，重试只会再花一次钱。唯一值得重试一次的是超时。

## 提示词写法

英文和中文都可以。把风格、构图、背景写进去，模型会自己改写提示词（脚本会把改写后的版本打印出来）：

- 好：`一片红色枫叶，扁平矢量风格，纯白背景，居中构图`
- 差：`枫叶`

生成一张大约需要 30 秒，属于正常，不要中途取消。

## 完整示例

```bash
$ node scripts/generate.mjs --prompt "一片红色枫叶，扁平矢量，白底"
maple-leaf-20260909-231500.png  (765 KB, 1024x1024)
  改写后的提示词: A single red maple leaf, flat vector illustration, white background
```

然后在回复里写：

```markdown
![一片红色枫叶](maple-leaf-20260909-231500.png)
```
