feat(project): init

This commit is contained in:
2026-04-27 14:33:50 +08:00
commit 3d74b28f26
12 changed files with 2789 additions and 0 deletions

184
SKILL.md Normal file
View File

@@ -0,0 +1,184 @@
---
name: gpt-image-2-generator
description: Use this skill when the user wants to generate or edit images with GPT Image 2 through an apicodex-compatible or OpenAI-compatible image API. It uses the bundled Python tool, reads token and base URL from the current working directory's .env or config files before falling back to the skill config, supports prompt-only generation, prompt plus reference images, sync b64 responses, async task polling, and a local web UI.
---
# GPT Image 2 生图
## 何时使用
当用户要求“生图”“改图”“参考图生成”“多图融合”“启动本地网页生图工具”时,使用这个 skill。
- 优先直接运行随 skill 提供的脚本,不要临时手写 HTTP 请求。
- 始终传入 `prompt`
- 如果用户提供图片、本地路径、图片 URL 或 data URI就额外传入一个或多个 `--image-ref`
## 运行约定
从 Codex 使用本 skill 时,命令应保持在用户项目目录执行,不要先 `cd` 到 skill 目录。
原因:
- 脚本会优先读取当前执行目录的配置。
- 这样它才能复用用户项目里的 `.env``config/token.txt``config/base_url.txt` 和输出目录设置。
## 配置优先级
按下面顺序解析配置:
1. 进程环境变量
2. 当前执行目录的 `.env`
3. 当前执行目录的 `config/`
4. skill 自带的 `config/` 作为兜底
优先识别这些键:
- `IMAGE_API_KEY`
- `IMAGE_BASE_URL`
- `IMAGE_MODEL`
- `IMAGE_OUTPUT_DIR`
- `GPT_IMAGE_2_TOKEN`
- `GPT_IMAGE_2_BASE_URL`
- `GPT_IMAGE_2_MODEL`
- `GPT_IMAGE_2_OUTPUT_DIR`
- `APICODEX_API_KEY`
- `APICODEX_BASE_URL`
支持的当前执行目录配置文件:
- `config/token.txt`
- `config/base_url.txt`
- `config/model.txt`
- `config/output_dir.txt`
`base_url` 可以写成根地址,例如 `https://apicodex.xyz`,脚本会自动补成 `/v1`;也可以直接写完整 API 前缀,例如 `https://apicodex.xyz/v1`
脚本支持两种请求风格:
- `apicodex`
- `openai`
默认按 `base_url` 自动推断;如果需要手动指定,可在 `.env` 中设置:
- `IMAGE_REQUEST_STYLE=apicodex`
- `IMAGE_REQUEST_STYLE=openai`
也支持 `GPT_IMAGE_2_REQUEST_STYLE``IMAGE_API_STYLE`
绝对不要在聊天中输出用户的完整 token。
## 标准流程
1. 先直接运行脚本。
2. 如果输出包含 `No usable token found`,告诉用户需要 apicodex 兼容网关 token。
3. 如果用户还没有配置文件,优先提供 `.env` 模板,或直接帮用户初始化模板文件。
4. 用户提供 token 后,运行 `--save-token` 保存到当前执行目录的 `config/token.txt`
5. 如果用户还需要自定义网关地址,运行 `--save-base-url` 保存到当前执行目录的 `config/base_url.txt`
6. 重新执行原命令。
## 推荐的 .env
推荐优先用当前项目目录的 `.env`,最小配置如下:
```dotenv
IMAGE_API_KEY=your_apicodex_token_here
IMAGE_BASE_URL=https://apicodex.xyz/v1
IMAGE_MODEL=gpt-image-2
IMAGE_REQUEST_STYLE=auto
IMAGE_OUTPUT_DIR=./output
```
如果当前网关更接近 OpenAI-compatible可以继续沿用项目已有的
```dotenv
IMAGE_API_KEY=your_gateway_token_here
IMAGE_BASE_URL=https://your-gateway.example/v1
IMAGE_MODEL=gpt-image-2
IMAGE_REQUEST_STYLE=openai
IMAGE_OUTPUT_DIR=./output
```
`--size` 同时支持:
- 比例,例如 `2:3``16:9`
- 像素尺寸,例如 `1024x1536``2048x3584`
当请求风格是 `openai` 且你传入比例尺寸时,脚本会自动换算成常见像素尺寸再发送。
如果用户问“`.env` 怎么写”,直接给上面的模板;也可以直接运行下面两个命令。
## 常用命令
先确认脚本实际会读取哪份配置:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --show-config
```
直接打印 `.env` 模板:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --print-env-template
```
在当前执行目录写出 `.env.example`
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --init-config
```
保存 token 到当前执行目录:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --save-token "<token>"
```
保存 base URL 到当前执行目录:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --save-base-url "https://apicodex.xyz/v1"
```
纯文本生图:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --prompt "一只橘猫坐在窗台看夕阳,水彩画风格" --size 16:9
```
显式走 OpenAI-compatible 风格:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --prompt "电影感人像" --size 1024x1536 --request-style openai
```
带参考图:
```bash
python3 ~/.codex/skills/gpt-image-2-generator/scripts/generate_image.py --prompt "把参考图融合成复古海报" --size 4:3 --image-ref ./photo-a.png --image-ref https://example.com/photo-b.jpg
```
Windows 上优先用:
```powershell
py -3 %USERPROFILE%\.codex\skills\gpt-image-2-generator\scripts\generate_image.py --show-config
```
## 网页工具
- `python3 ~/.codex/skills/gpt-image-2-generator/scripts/web_app.py --open`
- 默认地址 `http://127.0.0.1:7862/`
- 网页工具与 CLI 使用同一套执行目录配置解析逻辑
## 返回模式
脚本同时兼容:
- 同步 `data[*].b64_json`
- 同步 URL / data URI 返回
- 异步 `task_id` / `data.id` 轮询
## 参考资料
需要接口细节、响应样例、比例列表或轮询样例时,再读取:
- `references/api.md`