首页 / 全部技能 / 内容创作 / canghe-image-gen
内容创作 · freestylefly/canghe-skills

canghe-image-gen

AI image generation with OpenAI, Google, DashScope and Canghe APIs. Supports text-to-image, reference images, aspect ratios. Sequential by default; parallel generation available on request. Use when user asks to generate, create, or draw images.

风险提醒:橙色 · 评估后使用AI 侦查报告
作者 freestyleflyGitHub freestylefly/canghe-skills ↗许可 MIT(仓库根 LICENSE)commit dd0bf35595
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

本 skill 的执行体是一个 Bun/TypeScript CLI(scripts/main.ts),agent 按 SKILL.md 用 npx -y bun 启动它;参数解析、配置合并、provider 选择与结果落盘都在这个入口完成。

skills/canghe-image-gen/SKILL.md
npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "A cat" --image cat.png
注:这里在做什么:SKILL.md 只给调用方式,真正入口是脚本;脚本路径由 ${SKILL_DIR} 拼出。

provider 自动选择:显式 --provider 优先;带 --ref 时按 Google→OpenAI→Canghe 顺序;无 --ref 则按环境里存在的 key 取第一个(多 key 时 Google 优先生效)。

skills/canghe-image-gen/scripts/main.ts
const hasGoogle = !!(process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY);
注:这里在做什么:detectProvider 用各 API key 是否存在来推断后端,缺 key 直接报错并提示建 .env。

四家后端各自成模块、统一 ProviderModule 接口(getDefaultModel / generateImage),协议各不相同:OpenAI 走 images/generations 与 edits,Google 走 Gemini generateContent 或 Imagen predict,DashScope 走通义万象端点,Canghe 走 OpenAI 兼容的 chat/completions。

skills/canghe-image-gen/scripts/providers/canghe.ts
const res = await fetch(`${getBaseUrl()}/chat/completions`, {
注:这里在做什么:Canghe 网关把图片当聊天回复返回,脚本再用正则从文本里抽 base64。

参考图支持因后端而异:Google 多模态把参考图读成 base64 放进 inlineData,OpenAI 走 /images/edits 表单,Canghe 以 image_url 传(本地文件转 data URI、http URL 直传);DashScope 与 Imagen 明确报错不支持。

skills/canghe-image-gen/scripts/providers/google.ts
const { data, mimeType } = await readImageAsBase64(refPath);
注:这里在做什么:gemini 多模态把本地参考图编码后随 prompt 一起提交。

配置分层优先级固定为 CLI args > EXTEND.md > 环境变量 > cwd/.canghe-skills/.env > ~/.canghe-skills/.env,main.ts 自行解析 EXTEND.md 的 YAML front matter 与 .env 键值,不依赖 dotenv。

skills/canghe-image-gen/SKILL.md
**Load Priority**: CLI args > EXTEND.md > env vars > `<cwd>/.canghe-skills/.env` > `~/.canghe-skills/.env`
注:这里在做什么:loadEnv 与 loadExtendConfig 按此顺序把配置灌进 process.env。

生成结果以二进制写到用户指定的 --image 路径(无扩展名自动补 .png),写前递归建目录;生成失败只自动重试一次,且对「引用图不支持/缺 key」等错误不重试。

skills/canghe-image-gen/scripts/main.ts
await writeFile(outputPath, imageData);
注:这里在做什么:main() 拿到 provider 返回的 Uint8Array 后落盘,--json 时额外打印元数据。

批量/并行是两种模式:默认顺序逐张生成;并行只在用户明确要求时启用,靠宿主的多后台子代理跑(建议 4、上限 8),脚本本身不含并行逻辑。

skills/canghe-image-gen/SKILL.md
**Parallel Generation**: Only use when user explicitly requests parallel/concurrent generation.
注:这里在做什么:并行属 agent 编排层策略,不在 main.ts 内实现。

2核心能力

01文生图:四后端(OpenAI / Google / DashScope 通义万象 / Canghe 网关)任选或自动
02参考图/图生图(Google 多模态、OpenAI GPT Image edits、Canghe image_url)
03宽高比与尺寸控制(1:1、16:9、9:16、4:3、3:4、2.35:1,及 --size WxH)
04质量/分辨率预设:normal|2k,Google 另有 --imageSize 1K|2K|4K
05prompt 来源多样:内联文本、--promptfiles 多文件拼接、stdin
06偏好持久化:EXTEND.md 可设默认 provider/quality/宽高比/尺寸/模型
07批量数量 --n 与 JSON 输出 --json(便于脚本/流水线消费)
08显式并行生成(宿主多子代理,仅在用户要求时)

3外部依赖

类型依赖
clibun(经 npx -y bun 运行 TS 入口,会联网获取包)
apiOpenAI Images API
apiGoogle Generative Language API(Gemini / Imagen)
apiDashScope(阿里通义万象)
apiCanghe 第三方网关
packageNode 内建模块 node:fs/promises、node:path、node:os(经 Bun 运行)

4风险提醒 风险提醒:橙色 · 评估后使用

风险提醒:橙色 · 评估后使用
  • 默认把 Canghe 第三方网关(https://api.canghe.ai/v1)列为可选后端之一,选择它时请求与素材会经过该第三方服务。
  • prompt 与参考图会被上传到所选外部生成服务(OpenAI/Google/DashScope/Canghe),按各家隐私条款处理,涉密或敏感素材不宜使用。
  • 需要多个高权限 API key,且明文存放于 .canghe-skills/.env,存在文件权限与泄露风险。
  • 经 npx -y bun 启动,会联网拉取并执行远程 bun 包,属远程包执行面(与档位无关,仅提示)。
橙色:为自身声明用途读取四家 API key(环境变量与 .env 文件),并把用户 prompt 与参考图外发到 OpenAI/Google/DashScope/Canghe 生成后端,命中橙档「读凭据 + 素材出网」。脚本用 Node/Bun 原生 fetch(默认校验证书),未见关闭 TLS、逆向/冒充/绕过防护或任意代码执行,故不升红;因确有本地脚本执行、外部 CLI(npx/bun 拉取远程包)与本地写盘,故不降蓝。

5第二遍独立确认

  • [ok] 执行入口是否唯一且真实存在 — SKILL.md 的调用示例与 main.ts 的 printUsage 一致(npx -y bun scripts/main.ts --prompt ... --image ...),main.ts 末尾 main().catch 会 process.exit(1),证明它是 CLI;目录仅 8 个档(SKILL.md + preferences-schema.md + main.ts + 4 个 provider + types.ts),无其它可执行文件。
  • [ok] 四家 provider 端点与凭证读取点 — openai.ts→api.openai.com/v1 + OPENAI_API_KEY;google.ts→generativelanguage.googleapis.com + GOOGLE_API_KEY/GEMINI_API_KEY;dashscope.ts→dashscope.aliyuncs.com + DASHSCOPE_API_KEY;canghe.ts→api.canghe.ai/v1 + CANGHE_API_KEY。均可用对应 *_BASE_URL 覆盖。
  • [ok] 是否漏掉网络外发 — 全目录除 providers/*.ts 的 fetch 外无网络能力:main.ts 只做 IO 与编排,types.ts / preferences-schema.md 无网络代码;未见 socket/child_process/exec/urllib。
  • [ok] TLS 是否被降级 — 四家后端都用 Node/Bun 原生 fetch(默认校验证书),未见 ssl.CERT_NONE / rejectUnauthorized=false / --no-verify,因此不触发红档。
  • [discrepancy] 「并行生成」宣称是否有代码支撑 — SKILL.md 的 Parallel Generation 段描述用宿主 Task 子代理 run_in_background=true 并发并给并发建议,但 scripts/main.ts 只有单次 --n 的串行生成,未实现任何并发;该能力完全依赖 agent 编排层,脚本不提供。
  • [ok] 默认 provider 与质量口径 — SKILL.md 写 default provider google、quality 2k;detectProvider 多 key 时返回 available[0](google 排第一),main.ts 对空 quality 置 '2k',与文档一致。
  • [ok] 参考图 provider 限制 — SKILL.md 称 --ref 受 Google 多模态 / OpenAI edits / Canghe 支持;google.ts 对 Imagen、openai.ts 对 dall-e、main.ts 对 dashscope+ref 均抛错,与文档相符。

6结论

  • 一份脚本统管四家图像后端并按 key 自动路由,扩展新 provider 只需加一个文件并实现统一接口,设计干净利落。
  • 配置分层与 .env/EXTEND.md 自解析,用户零配置也能跑;工程细节(无扩展名补 .png、mkdir -p、重试白名单)考虑周到。
  • 选项覆盖实用:宽高比、质量、参考图、prompt 文件、批量与 JSON 输出,适合被其它 skill/脚本当工具调用。
  • 适合:需要脚本化、批量或跨多家后端出图的创作者与自动化流程;尤其适合把出图能力嵌入其它 agent 工作流的场景。
    不适合:对素材出网极度敏感、要求全离线或数据不出内网的场景;以及只想用单一固定后端、不愿维护多把 key 的用户。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-10-10
    方式 A · 人下载镜像包下载 canghe-image-gen.tar.gz
    sha256: 6d47e36b6c02f891…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit dd0bf35595;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库freestylefly / freestylefly/canghe-skills
    本 skill commitdd0bf35595
    许可MIT(仓库根 LICENSE)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近