用途
image-gen 是一个图像生成技能,作用是把用户的文本描述转换为 AI 生成的图片。它适用于需要封面图、插画或概念图的场景。触发条件包括"生成图片""画一张""AI图""generate image""配图""create picture""draw""visualize""generate an image"等表述。
技能明确不适用于以下情形:需要生成音频内容(应使用 /podcast、/speech)、需要生成视频(应使用 /explainer)、需要编辑已有图片(不支持)、需要从 URL 提取内容(应使用 /content-parser)。
主要能力
- 基于文本提示词生成 AI 图片。
- 支持可选参考图,来源可以是本地文件或 URL,CLI 原生处理两者,无需区分。
- 支持多种分辨率与宽高比。
- 生成结果保存为本地文件。
使用方式
前置检查
技能会先按照共享文档中的认证流程检查 CLI 是否安装、是否登录;若未安装或未登录,会自动安装并自动登录,不要求用户手动执行命令。随后根据认证模式决定命令前缀:openapi 模式下使用 listenhub openapi image,否则使用 listenhub image。
配置
遵循零提问启动:若配置文件不存在,会静默创建默认配置并继续,不询问任何设置问题。默认配置为:
mkdir -p ".listenhub/image-gen"
echo '{"outputDir":".listenhub","outputMode":"inline"}' > ".listenhub/image-gen/config.json"
若文件已存在,则静默读取并继续。只有在用户明确要求重新配置时,才会进入设置流程,显示当前输出方式(inline / download / both)并询问 outputMode,随后立即保存。
交互流程
- 图片描述:自由文本输入,询问用户想生成什么图片。若提示词非常短(少于 10 个词)且用户未要求逐字生成,会主动询问是否需要帮助丰富提示词,否则原样使用。
- 模型:询问选择 pro(推荐,gemini-3-pro-image,质量更高)或 flash(gemini-3.1-flash-image,更快更便宜,并解锁极端宽高比 1:4、4:1、1:8、8:1)。
- 分辨率与宽高比:同时询问。分辨率有 1K(标准)、2K(推荐,高质量且平衡)、4K(超高质量,生成较慢)。宽高比所有模型可选 16:9(横屏宽屏)、1:1(方形)、9:16(竖屏手机屏幕)、其他(2:3、3:2、3:4、4:3、21:9);选择 flash 模型时还会额外提供 1:4、4:1、1:8、8:1。
- 参考图(可选):询问是否需要参考图进行风格引导。若需要,则收集以逗号分隔的路径或 URL。最多 5 张,支持 jpg、png、webp、gif,单文件最大 10MB。每张参考图通过一个
--reference标志传给 CLI。 - 确认与生成:汇总所有选择(提示词、模型、分辨率、宽高比、参考图数量),等待用户明确确认后才运行 CLI 命令。
命令行调用
基础命令形式为:
$CMD_PREFIX create \
--prompt "{description}" \
--model "{model}" \
--lang "{lang}" \
--aspect-ratio {16:9|9:16|1:1} \
--size {1K|2K|4K} \
--json
带参考图时,为每张参考图追加一个 --reference:
$CMD_PREFIX create \
--prompt "{description}" \
--model "{model}" \
--lang "{lang}" \
--aspect-ratio 16:9 \
--size 2K \
--reference ./sketch.png \
--reference ./photo.jpg \
--json
--lang 标志为提示词提供语言提示,从用户提示词语言推断(如中文提示词对应 zh,英文对应 en)。命令以后台方式执行,超时为 180000。
结果处理
读取配置中的 OUTPUT_MODE,解析 CLI 的 JSON 输出以提取图片 URL(.imageUrl)。
inline 或 both 模式:下载到临时文件后用 Read 工具读取,图片内联显示在对话中。
JOB_ID=$(date +%s)
listenhub download "$IMAGE_URL" -o /tmp/image-gen-${JOB_ID}.jpg
download 或 both 模式:保存到产物目录。
JOB_ID=$(date +%s)
DATE=$(date +%Y-%m-%d)
JOB_DIR=".listenhub/image-gen/${DATE}-${JOB_ID}"
mkdir -p "$JOB_DIR"
listenhub download "$IMAGE_URL" -o "${JOB_DIR}/${JOB_ID}.jpg"
输出保存位置为 .listenhub/image-gen/YYYY-MM-DD-{jobId}/,而不是 ~/Downloads/。
提示词处理
默认直接传递用户提示词,不做修改。仅当提示词很短(几个词)且用户未要求逐字生成时,才询问是否需要加入风格、光照、构图等细节来丰富提示词。以下情况绝不修改:长篇、详细或结构化的提示词(视为有经验的用户);用户表示"完全按这个提示词"。
若用户同意优化,可采用的手法包括:风格补充(如 "cyberpunk" 添加 "neon lights, futuristic, dystopian")、场景补充(时间、光照、天气)、质量补充("highly detailed"、"8K quality"、"cinematic composition")。始终使用英文关键词,因为模型以英文训练。提交前会展示优化后的提示词。
适用场景
- 用户希望根据文本描述生成 AI 图片。
- 需要封面图、插画或概念图。
- 希望通过参考图引导生成风格。
限制
- 不支持编辑已有图片。
- 不生成音频(应使用 /podcast、/speech)。
- 不生成视频(应使用 /explainer)。
- 不从 URL 提取内容(应使用 /content-parser)。
- 参考图最多 5 张,单文件最大 10MB,支持格式为 jpg、png、webp、gif。
- 极端宽高比(1:4、4:1、1:8、8:1)仅在 flash 模型下可用。
组合性
该技能不调用其他技能(直接调用 CLI);它可被平台技能用于封面图(Phase 2)。
示例
示例一:用户说"Generate an image: cyberpunk city at night"。流程为:提示词较短,询问是否丰富,用户拒绝;选择模型 pro;分辨率 2K;宽高比 16:9;无参考图;随后执行 create 命令并解析输出。
示例二:用户说"Generate an image in this style"并提供本地文件与一个 URL。流程为:提示词为 "a serene mountain lake at dawn";模型 pro;分辨率 2K;宽高比 16:9;参考图为 /path/to/style-reference.png 和 https://example.com/photo.jpg;随后执行带两个 --reference 的 create 命令并解析输出。