mcpField
H
happycode-imagegen

happycode-imagegen

github.com/gorden888创意与媒体2156 次安装5 周前更新
代码仓库

关于 happycode-imagegen

HappyCode Image Gen 是一项调用 HappyCode 客户端生成或编辑图像的技能。它提供单图和批量流程,并由客户端处理身份验证、下载和文件输出。

主要功能

  1. 01根据提示词生成图像
  2. 02使用提供的输入编辑图像
  3. 03批量生成 2–5 张图像
  4. 04向客户端传递参考图和蒙版
  5. 05委托客户端处理身份验证和文件

适用场景

  1. 01根据文字请求生成图像
  2. 02修改此前生成的图像
  3. 03生成多张由提示词派生的图像
  4. 04使用提供的蒙版编辑图像

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gorden888/happycode-imagegen --skill happycode-imagegen

安装后在 Claude Code 中输入/happycode-imagegen确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.gitignore
config.example.json
agents/
openai.yaml
scripts/
imagegen-batch.mjs
imagegen-batch.py
imagegen.py
imagegen.mjs

详细介绍

HappyCode Image Gen

仅使用 <SKILL_DIR>/scripts 中的 HappyCode 客户端;不要调用内置的 image_gen 工具或其他提供方。阅读本文件后直接运行客户端。不要检查其他技能文件、读取 config.json、运行测试、探测 API 或执行设置,除非客户端返回 CONFIG_REQUIRED。客户端负责身份验证、请求默认值、代理、超时、下载、PNG 验证和输出创建。

确定操作并编写提示词

  1. 将未提供输入图像的请求视为生成。将要求修改现有图像的请求视为编辑;仅在没有可用目标时询问目标图像。
  2. 将提供的每张图像识别为编辑目标、参考图、遮罩或辅助输入。使用重复的 --image 传入所有相关的非遮罩图像;仅对提供的遮罩使用 --mask。
  3. 只有缺少的细节导致无法执行时,才再提问。
  4. 将用户的请求原样作为 --prompt 参数传入,以下方的批量转换规则为例外。不要翻译、改述、扩写、审查或添加风格、内容、负面提示或保留要求。仅在选择输入时解析代词。
  5. 对所有动态参数使用 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 请求。切勿在输出目录中搜索结果,也切勿切换提供方。

配置

  1. 仅检查报告的配置路径是否存在。如果不存在,将 <SKILL_DIR>/config.example.json 原样复制到该路径;如果已存在,则不要覆盖。
  2. 告知用户在本地设置 api_key。通常保持 base_url 和 model 不变;将 proxy 设置为一个 URL 或 ""。
  3. 在 Codex 桌面版中,提供指向配置文件的绝对可点击链接。若回复仅限终端,则在同一个代码围栏块中提供其绝对路径和准确的 CONFIG_EDIT_COMMAND: 值。
  4. 等待用户确认,然后准确重试原操作一次。

切勿读取、显示或修改现有配置值,也切勿要求用户将 API 密钥粘贴到对话中。

完成

  • SAVED 只能证明文件已保存。仅当用户要求审阅、任务需要视觉验证,或后续编辑需要视觉理解时,才检查该文件。
  • 仅根据用户的具体要求对比已检查的结果。报告未满足的要求,但不要重试;只有用户提出要求时才进行有针对性的修正。
  • 在支持图片的界面中,按 BATCH_RESULT 的索引顺序返回已保存的批量图片。否则,仅以内嵌形式返回已保存的图片,并附上简洁的替代文本;但若用户要求提供路径、说明或审阅结果,或者批量操作部分失败,则不受此限。在其他界面中,简洁报告用户要求的已保存路径。

评论

支持 Markdown