imgrelay 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +64 -150
  2. package/dist/index.mjs +1 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,191 +1,105 @@
1
1
  # ImgRelay
2
2
 
3
- 通过统一 CLI 和 Codex Skill 调用多家 OpenAI Images 兼容中转站。用户级配置跨项目复用,
4
- 生成结果默认保存在当前工作目录的 `output/imagegen/`。
3
+ 在 Codex 中用自然语言调用第三方中转站生成图片,保存并展示原图。
4
+ 配置一次供应商、密钥和默认模型,即可在不同项目中复用。
5
5
 
6
- 首版支持文生图、供应商与凭据管理、模型列表缓存、只读检查、原图保存和 JSON 输出。
7
- 图片编辑、Responses、Chat Completions 与非标准异步协议属于后续范围。
6
+ ImgRelay 由 CLI 和 Codex Skill 组成:CLI 负责配置、请求和文件保存,Skill 负责理解需求、
7
+ 准备提示词和呈现结果。目前支持 OpenAI Images 兼容接口的文生图。
8
8
 
9
- ## 安装与开发
9
+ ## 快速上手
10
10
 
11
- 需要 Node.js 22.20+(22.x)或 24.x。发布到 npm 后:
11
+ ### 1. 安装 CLI 和 Skill
12
+
13
+ 需要 Node.js 22.20+(22.x)或 24.x。在终端运行:
12
14
 
13
15
  ```bash
14
16
  npm install -g imgrelay
15
- npx skills add bingwu-devkit/imgrelay --skill imgrelay --agent codex --global --copy
17
+ npx skills add bingwu-devkit/imgrelay --skill imgrelay
16
18
  ```
17
19
 
18
- CLI 与 Skill 分开安装;npm 安装不会改动 Codex 配置。当前源码可直接构建运行:
20
+ 两者分开安装:npm 安装提供 `imgrelay` 命令,Skills CLI 安装 Skill。
21
+ 按 Skills CLI 的提示选择 Codex、安装范围和安装方式。
22
+
23
+ ### 2. 配置中转站
24
+
25
+ 在交互终端中运行,`relay` 是你为供应商取的名称:
19
26
 
20
27
  ```bash
21
- pnpm install
22
- pnpm build
23
- node packages/cli/dist/index.mjs --help
24
- npx skills add ./skills --skill imgrelay --agent codex --global --copy
28
+ imgrelay provider add relay
29
+ imgrelay provider use relay
30
+ imgrelay doctor --provider relay
25
31
  ```
26
32
 
27
- 开发使用 pnpm 11.15.1。以下示例中的 `imgrelay` 可替换为上述 Node 命令。
28
-
29
- ## 首次配置
33
+ 按提示输入 API 基础地址、API Key 并选择默认模型;地址通常形如
34
+ `https://relay.example/v1`。密钥隐藏输入,模型列表不可用时可以手动填写模型 ID。
35
+ 完成交互后统一保存配置,这个流程不会生成图片。
30
36
 
31
- 交互式配置直接隐藏输入密钥并保存到 `config.json`,随后查询模型列表并设置默认项。
32
- 查询失败时可手动填入模型 ID,配置流程不生成图片:
37
+ 使用 Cubence 时,可以用预设创建配置并设为默认:
33
38
 
34
39
  ```bash
35
- imgrelay provider add cubence --preset cubence
36
- imgrelay provider use cubence
37
- imgrelay doctor --provider cubence
40
+ imgrelay provider add cubence --preset cubence --default
38
41
  ```
39
42
 
40
- 修改密钥同样使用交互式隐藏输入,留空保留当前密钥:
43
+ 配置保存在用户主目录的 `~/.imgrelay/`,跨项目复用。API Key 明文存储在 `config.json`,
44
+ 请通过上述交互命令输入密钥,无需发给 Codex。`doctor` 检查配置和模型接口;
45
+ 检查成功不代表所有生成参数都可用。
41
46
 
42
- ```bash
43
- imgrelay provider edit cubence
44
- ```
47
+ ### 3. 在 Codex 中生成图片
45
48
 
46
- 新增供应商和输入新密钥须在交互终端中运行,不加 `--json`。密钥明文保存在配置中,
47
- 不要求以 `sk-` 开头;删除供应商会一并移除其密钥。
48
- 非交互命令可修改已有供应商的其他参数或显式清除密钥:
49
+ 进入要保存图片的项目,向 Codex 发出请求,例如:
49
50
 
50
- ```bash
51
- imgrelay provider edit cubence --model vendor-model --json
52
- imgrelay provider edit cubence --clear-key --json
51
+ ```text
52
+ $imgrelay 生成一张戴宇航员头盔的猫,用作博客封面,横版。
53
+
54
+ 用 imgrelay 的 relay 供应商生成两张极简风格的森林插画,保存到 ./images。
55
+
56
+ 用 imgrelay 生图,提示词请原样使用:一只橘猫趴在窗边,午后自然光。
53
57
  ```
54
58
 
55
- ## 命令
59
+ Skill 使用你指定的供应商、模型和参数,未指定时沿用本机默认配置。
60
+ 对于简短需求,Codex 会围绕用途补足提示词;明确要求原样使用时保留原文。
61
+ 生成后展示已保存的图片,并说明供应商、请求模型和保存位置。
56
62
 
57
- | 命令 | 用途 |
58
- | -------------------------------------- | ----------------------------------------- |
59
- | `provider add <名称>` | 添加供应商;可显式选择 `--preset cubence` |
60
- | `provider list` | 列出摘要及默认项 |
61
- | `provider show <名称>` | 查看脱敏配置 |
62
- | `provider edit <名称>` | 修改配置与凭据,`--clear-key` 清除凭据 |
63
- | `provider use <名称>` | 设置默认供应商 |
64
- | `provider remove <名称>` | 移除供应商及配置中保存的密钥 |
65
- | `models [--provider 名称] [--refresh]` | 查询模型或查看 15 分钟缓存 |
66
- | `doctor [--provider 名称]` | 检查配置、鉴权和模型查询,不生成图片 |
67
- | `generate` | 生成并保存图片及记录 |
63
+ 默认输出在当前工作目录的 `output/imagegen/`,包含原图和生成记录。
64
+ 也可以在请求中指定目录或文件名。
68
65
 
69
- 所有命令支持 `--json` 和 `--help`,根命令支持 `--version`。
70
- JSON 模式禁用交互,标准输出仅包含一个最终 JSON,进度在标准错误。
66
+ ## 直接使用 CLI
71
67
 
72
- ## 生成图片
68
+ 不通过 Codex 也可以生成图片:
73
69
 
74
70
  ```bash
75
71
  imgrelay generate --prompt "一只戴宇航员头盔的猫"
76
- imgrelay generate --prompt "一只戴宇航员头盔的猫" --provider cubence --n 2 --json
77
- imgrelay generate --prompt "一只戴宇航员头盔的猫" --model vendor-model --size auto --quality high --output-format png
78
- imgrelay generate --prompt "一只戴宇航员头盔的猫" --output-dir ./images --filename cat.png --timeout 600
72
+ imgrelay generate --provider relay --prompt "极简风格的森林插画" --n 2 --json
73
+ imgrelay generate --prompt "一只橘猫趴在窗边" --output-dir ./images --filename cat.png
79
74
  ```
80
75
 
81
- 生成时必须通过 `--prompt` 提供非空文本。CLI 原样发送内容,保留换行及首尾空白,
82
- 不自动添加风格或约束。长提示词也通过此选项传递,按当前 shell 正确引用以保留特殊字符。
83
-
84
- 单次参数覆盖不会改动持久配置。参数值按“命令 → 供应商默认 → 工具默认”合并;
85
- 工具仅默认数量为 1,不强制尺寸、质量或格式。未知模型允许调用,模型列表缺失不阻断生成。
86
-
87
- 图片保留原始字节;Base64 优先于 URL,图片下载及重定向不带 API Key。
88
- 记录实际格式、尺寸和字节数。默认文件名包含 UUID 和序号;自定义文件名的扩展名按实际格式,
89
- 多图追加序号。默认不覆盖文件,显式 `--overwrite` 才允许覆盖。
90
-
91
- 默认生成超时为 600 秒;只读请求最多重试一次,生成 POST 不自动重试。
92
- 超时或断网意味着结果未知,上游可能仍在生成。不会自动换模型、降参数或拆成多次付费请求。
93
- 每张图片最多 32 MiB,上游 JSON 最多 128 MiB;某项失败后继续保存其他结果。
94
-
95
- ## 中转站兼容配置
96
-
97
- 同协议中转站通过 `provider add` 接入,不新增品牌客户端。
98
- Base URL 支持主机地址、`/v1`、自定义前缀及标准完整生成 URL,并集中处理路径拼接。
99
- `doctor` 展示最终地址;认证模型接口成功只证明模型查询可用,不证明生成及全部参数可用。
100
-
101
- `provider add/edit` 还支持 `--generation-path`、`--models-path`、默认生成参数、
102
- `--timeout` 和 `--capabilities-file`。端点覆盖仅接受路径,不能更换主机。
103
- 能力覆盖文件是按模型 ID 索引的 JSON:
104
-
105
- ```json
106
- {
107
- "vendor-model": {
108
- "source": "provider_override",
109
- "parameters": {
110
- "n": { "min": 1, "max": 1 },
111
- "quality": { "values": ["high"] },
112
- "outputFormat": { "values": ["png", "webp"] },
113
- "responseFormat": { "supported": false }
114
- }
115
- }
116
- }
117
- ```
76
+ 本次参数覆盖不会修改默认配置。CLI 原样发送 `--prompt`,不自动改写提示词。
77
+ 尺寸、质量和格式是否可用取决于模型与供应商;完整选项见 `imgrelay generate --help`。
118
78
 
119
- 校验按“供应商覆盖 → 已知模型能力 → 上游验证”执行,显式命令参数同样受覆盖约束。
120
- 内置 GPT Image 1/mini 的已知参数;供应商可覆盖具体差异。Cubence 预设来自需求中的一次
121
- 成功调用,仅提供默认组合,不推断其全部能力。GPT Image 默认不发送 `response_format`;
122
- 确需配置兼容返回格式的站点可通过供应商默认值与能力覆盖明确表达。
123
-
124
- ## 配置与输出
125
-
126
- Windows、Linux 和 macOS 的配置目录统一为当前用户主目录下的 `~/.imgrelay/`。
127
- `IMGRELAY_CONFIG_DIR` 可覆盖目录,相对路径基于当前工作目录解析。
128
-
129
- 供应商配置与明文 API Key 集中保存在版本 1 的 `config.json`,模型缓存保存在同目录的
130
- `models-cache.json`。文件使用系统默认权限,不做加密、专用 ACL 或权限校验。
131
- 隐藏输入的密钥保存在供应商的 `apiKey` 字段。配置结构例如:
132
-
133
- ```json
134
- {
135
- "schemaVersion": 1,
136
- "defaultProvider": "relay",
137
- "providers": {
138
- "relay": {
139
- "protocol": "openai-images",
140
- "baseUrl": "https://relay.example/v1",
141
- "apiKey": "your-api-key",
142
- "defaultModel": "vendor-model"
143
- }
144
- }
145
- }
146
- ```
79
+ | 常用命令 | 用途 |
80
+ | ---------------------------------- | ------------------------------ |
81
+ | `imgrelay provider list` | 查看供应商和默认项 |
82
+ | `imgrelay provider show relay` | 查看供应商的脱敏配置 |
83
+ | `imgrelay provider edit relay` | 修改配置或通过隐藏输入更新密钥 |
84
+ | `imgrelay provider use relay` | 切换默认供应商 |
85
+ | `imgrelay models --provider relay` | 查询模型列表,支持 `--refresh` |
86
+ | `imgrelay doctor --provider relay` | 检查配置和模型接口,不生成图片 |
147
87
 
148
- 模型缓存索引为供应商、配置修订、端点和实际凭据的 SHA-256 摘要,地址或实际凭据变化后
149
- 不会复用旧查询。CLI 输出、日志、JSON 和生成记录保持脱敏,不保存密钥明文、鉴权头、
150
- 原始 Base64 或带访问凭据的下载链接。图片和生成记录默认保存在当前工作目录的
151
- `output/imagegen/`,可通过 `--output-dir` 指定。
152
- 生成记录含提示词及请求参数,应按本机文件管理方式处理。
153
-
154
- JSON 外层固定为 `schemaVersion`、`command`、`status`、`data`、`error`。
155
- 生成结果的 `data.images` 包含本地路径、实际格式/尺寸/字节数,另有请求模型、上游报告模型
156
- (仅在返回时)、失败项、用量和 `recordPath`。使用 `error.category` 判断失败类型。
157
- 请求提交前保存记录,单项保存失败保留其他图片,记录保存失败仍返回已保存路径。
158
- `data.endpoint` 是本次实际生成地址,`data.capabilityEvidence` 保留已知模型与供应商覆盖的
159
- 来源及已有验证时间;未知能力显示为空,不从一次成功调用推断其他能力。
160
-
161
- | 退出码 | 含义 |
162
- | ------ | ------------------------------------ |
163
- | 0 | 成功 |
164
- | 1 | 内部错误 |
165
- | 2 | 输入、配置、凭据或本地能力校验错误 |
166
- | 3 | 上游错误、无效图片响应或生成结果未知 |
167
- | 4 | 图片或记录保存失败 |
168
- | 5 | 部分图片成功 |
169
- | 130 | 用户中断;不能保证取消上游请求 |
170
-
171
- ## 验证与发布
88
+ 命令支持 `--help` 和 `--json`。JSON 模式关闭交互,标准输出只有一个最终 JSON,
89
+ 进度输出到标准错误;新增供应商或更新密钥时使用不带 `--json` 的交互命令。
172
90
 
173
- ```bash
174
- pnpm check
175
- node scripts/package-smoke.mjs
176
- ```
91
+ ## 使用须知
177
92
 
178
- 测试使用本地模拟中转站和真实 CLI 子进程,不消耗真实 API 额度。
179
- CI 覆盖 Windows、Linux、macOS 和 Node.js 22、24,包括凭据权限及独立打包安装检查。
180
- Skill 使用 skill-creator 校验器检查;Skills CLI 可用 `npx skills add ./skills --list` 验证发现。
93
+ - 图片按原始字节保存,默认不覆盖已有文件;需要覆盖时显式使用 `--overwrite`。
94
+ - 生成默认等待 600 秒。超时或断网后,上游可能仍在生成;工具不会自动重提、换模型或补单。
95
+ - 部分图片失败时仍保留已保存的结果;非零退出码不一定意味着没有图片。
96
+ - 模型列表不可用时仍可手动指定模型;图片编辑及非 OpenAI Images 协议目前不支持。
181
97
 
182
- 真实 Cubence 单张生成作为发布前人工验收,在用户明确要求并提供凭据来源后执行。
183
- 默认关闭自动发布;配置 npm Trusted Publisher 后才设置仓库变量 `ENABLE_RELEASE=true`。
98
+ ## 详细文档
184
99
 
185
- 需求及设计依据见
186
- [需求文档](https://github.com/bingwu-devkit/imgrelay/blob/main/docs/image-relay-requirements.md)、
187
- [兼容性参考](https://github.com/bingwu-devkit/imgrelay/blob/main/docs/provider-compatibility-design.md)。
100
+ - [CLI 参考](https://github.com/bingwu-devkit/imgrelay/blob/main/docs/cli-reference.md):完整命令、兼容配置、存储方式、JSON 结果与退出码。
101
+ - [开发与发布](https://github.com/bingwu-devkit/imgrelay/blob/main/docs/development.md):源码运行、验证、打包和发布流程。
188
102
 
189
103
  ## 许可证
190
104
 
191
- [MIT](./LICENSE.md)。保留模板原有版权归属。
105
+ [MIT](./LICENSE.md)。
package/dist/index.mjs CHANGED
@@ -862,7 +862,7 @@ var Store = class {
862
862
  };
863
863
  //#endregion
864
864
  //#region package.json
865
- var version = "0.1.0";
865
+ var version = "0.2.1";
866
866
  //#endregion
867
867
  //#region src/provider.ts
868
868
  function answer(value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imgrelay",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "通过统一 CLI 调用多家 OpenAI Images 兼容中转站",
5
5
  "homepage": "https://github.com/bingwu-devkit/imgrelay#readme",
6
6
  "bugs": "https://github.com/bingwu-devkit/imgrelay/issues",