关于 happycode-imagegen
HappyCode Image Gen 是一项调用 HappyCode 客户端生成或编辑图像的技能。它提供单图和批量流程,并由客户端处理身份验证、下载和文件输出。
主要功能
- 01根据提示词生成图像
- 02使用提供的输入编辑图像
- 03批量生成 2–5 张图像
- 04向客户端传递参考图和蒙版
- 05委托客户端处理身份验证和文件
适用场景
- 01根据文字请求生成图像
- 02修改此前生成的图像
- 03生成多张由提示词派生的图像
- 04使用提供的蒙版编辑图像
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gorden888/ happycode-imagegen --skill happycode-imagegen安装后在 Claude Code 中输入/happycode-imagegen确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.md.gitignoreconfig.example.jsonagents/openai.yamlscripts/imagegen-batch.mjsimagegen-batch.pyimagegen.pyimagegen.mjs详细介绍
HappyCode Image Gen
仅使用 <SKILL_DIR>/scripts 中的 HappyCode 客户端;不要调用内置的 image_gen 工具或其他提供方。阅读本文件后直接运行客户端。不要检查其他技能文件、读取 config.json、运行测试、探测 API 或执行设置,除非客户端返回 CONFIG_REQUIRED。客户端负责身份验证、请求默认值、代理、超时、下载、PNG 验证和输出创建。
确定操作并编写提示词
- 将未提供输入图像的请求视为生成。将要求修改现有图像的请求视为编辑;仅在没有可用目标时询问目标图像。
- 将提供的每张图像识别为编辑目标、参考图、遮罩或辅助输入。使用重复的
--image传入所有相关的非遮罩图像;仅对提供的遮罩使用--mask。 - 只有缺少的细节导致无法执行时,才再提问。
- 将用户的请求原样作为
--prompt参数传入,以下方的批量转换规则为例外。不要翻译、改述、扩写、审查或添加风格、内容、负面提示或保留要求。仅在选择输入时解析代词。 - 对所有动态参数使用 shell 引号,确保客户端收到的提示词和路径与参数值完全一致。
跟踪编辑输入
- 在内部记住每个成功的
SAVED路径对应的输入目标;纯文本生成没有输入目标。不要打印或持久化此记录。 - 对于普通的后续请求,编辑最近一次成功生成的结果。
- 如果用户拒绝最近一次结果,则对其记录的输入目标应用修正,而不是对被拒绝的图像进行编辑。如果该结果没有输入目标,则不使用
--image重新生成。保留其他所有明确要求。 - 对于批量生成,将每个已保存路径与其
BATCH_RESULT索引关联。按索引解析“第二张图”等顺序引用;仅当后续请求没有明确指出多个结果中的哪一个时,才询问用户要选哪张图。
批量生成
- 仅当数量明确修饰所请求的图像时,才将其视为输出数量。单张图像中的主体数量不属于批量生成。
- 对于 2-5 张新图像,为每张图像分别编写一个提示词,并使用一个批量客户端。仅将输出数量短语替换为单张图像短语;保留其他所有文本。
- 如果请求要求使用不同的属性值,当将适用的“不同”替换为“随机”能使每个提示词独立成立时,仅进行这项替换;否则保留原措辞。
- 对于超过 5 张输出,不要启动客户端,并请用户减少数量。对于“多个”或“一些”等不明确的数量,请询问具体数量。
执行
首先使用 Node:
node "<SKILL_DIR>/scripts/imagegen.mjs" --prompt "<request>"
node "<SKILL_DIR>/scripts/imagegen.mjs" --image "<target>" --prompt "<edit>"
node "<SKILL_DIR>/scripts/imagegen-batch.mjs" --prompt "<derived prompt 1>" --prompt "<derived prompt 2>"
当协议允许回退时,使用可用的 Python 3 启动器(python3、python 或 py -3)以及对应的客户端:
python "<SKILL_DIR>/scripts/imagegen.py" --prompt "<same request>"
python "<SKILL_DIR>/scripts/imagegen-batch.py" --prompt "<derived prompt 1>" --prompt "<derived prompt 2>"
仅当用户要求更改目标位置时才添加 --out。在支持图像的界面上,否则使用默认路径 <working-directory>/output;在其他界面上,先询问目标位置。不要创建用户未要求的变体。
客户端使用 600 秒的网络超时。每项操作只启动一个客户端进程;批量客户端负责并发子进程,并将终止信号转发给这些子进程。该进程运行期间,绝不要重启、检查输出文件或启动其他命令。
使用 functions.exec 时,将客户端调用及所有后续操作放在同一次 functions.exec 调用中。JavaScript 输入必须以以下确切内容作为第一行,并使用下方的控制流;仅将 cmd 替换为完整 shell 引用的单个命令或批量命令:
// @exec: {"yield_time_ms": 660000, "max_output_tokens": 20000}
const first = await tools.exec_command({
cmd: '<shell-quoted client command>',
yield_time_ms: 30000,
max_output_tokens: 20000,
});
let result = first;
let output = first.output || "";
let sessionId = first.session_id;
while (sessionId != null) {
const next = await tools.write_stdin({
session_id: sessionId,
chars: "",
yield_time_ms: 300000,
max_output_tokens: 20000,
});
result = next;
output += next.output || "";
sessionId = next.session_id;
}
text(JSON.stringify({ exit_code: result.exit_code, output }));
当 sessionId 不为 null 时,不要让 functions.exec 返回,也不要将 write_stdin 移到后续模型轮次中。外层显示的 Script running with cell ID 表示操作尚未结束;应继续同一个 functions.exec 单元格,而不是启动另一个由模型驱动的客户端或继续会话。
客户端协议
| 结果 | 必须执行的操作 |
|---|---|
ERROR: CONFIG_REQUIRED: <path> 加上 CONFIG_EDIT_COMMAND: | 按照下方的配置说明操作。用户确认配置前不要重试。 |
RUNTIME_UNAVAILABLE: | 尚未发起 API 请求。准确运行对应的 Python 单项或批量客户端一次;切勿显示此标记。 |
SAVED: <absolute-path> | 将该路径视为内部技术完成状态和编辑溯源状态;切勿回显此标记。 |
BATCH_RESULT: <json> | 按其从 1 开始的 index 记录结果。根据 status 使用 saved、config_path 和 config_edit_command;切勿公开协议行。 |
BATCH_SUMMARY: <json> | 进程退出后,将其视为批量操作结果。对于 config_required,按照配置说明操作;对于 runtime_unavailable,使用 Python 一次;对于 partial,按索引顺序保留已保存的路径,简洁报告 failed_items,切勿自动重试失败项。 |
显式的 ERROR: 或 RUNTIME_UNAVAILABLE: 以外的非零退出状态 | 将操作视为失败或完成状态未知。切勿自动回退或重试。 |
以零状态退出但没有 SAVED: | 将其视为客户端协议故障,切勿自动重试。 |
有效的 session_id、空输出/截断输出,或没有退出状态 | 将其视为尚未结束,并继续等待同一进程。切勿报告已完成或超时。 |
如果 shell 无法启动 node,请使用对应的 Python 客户端,因为尚未发起 API 请求。切勿在输出目录中搜索结果,也切勿切换提供方。
配置
- 仅检查报告的配置路径是否存在。如果不存在,将
<SKILL_DIR>/config.example.json原样复制到该路径;如果已存在,则不要覆盖。 - 告知用户在本地设置
api_key。通常保持base_url和model不变;将proxy设置为一个 URL 或""。 - 在 Codex 桌面版中,提供指向配置文件的绝对可点击链接。若回复仅限终端,则在同一个代码围栏块中提供其绝对路径和准确的
CONFIG_EDIT_COMMAND:值。 - 等待用户确认,然后准确重试原操作一次。
切勿读取、显示或修改现有配置值,也切勿要求用户将 API 密钥粘贴到对话中。
完成
SAVED只能证明文件已保存。仅当用户要求审阅、任务需要视觉验证,或后续编辑需要视觉理解时,才检查该文件。- 仅根据用户的具体要求对比已检查的结果。报告未满足的要求,但不要重试;只有用户提出要求时才进行有针对性的修正。
- 在支持图片的界面中,按
BATCH_RESULT的索引顺序返回已保存的批量图片。否则,仅以内嵌形式返回已保存的图片,并附上简洁的替代文本;但若用户要求提供路径、说明或审阅结果,或者批量操作部分失败,则不受此限。在其他界面中,简洁报告用户要求的已保存路径。