一、技能整体概述
OpenAI Image Gen 基于 OpenAI 图像生成模型打造,是集成在 OpenClaw 框架内的文生图、图生图、风格定制、批量出图、高清放大、图文联动一体化智能图像创作工具。
依托 DALL・E 系列模型强大的视觉生成能力,支持自然语言描述作画、参考图二次创作、尺寸 / 风格 / 数量自定义、高清修复、格式导出等全链路能力,适配海报制作、配图设计、创意插画、场景效果图、头像生成、素材批量产出等场景。可与框架内搜索、文档、语音等技能无缝联动,实现文字内容一键配图、语音描述自动出图、搜索素材再创作等自动化流程。
二、原生工具现存痛点
- 指令单一:仅支持基础文生图,无法精细化控制尺寸、构图、画风、光影、细节参数。
- 能力局限:缺少图生图、高清放大、局部重绘、风格迁移等进阶功能,创作形式单一。
- 输出格式固定:仅返回在线图片链接,不支持本地保存、格式转换、批量打包。
- 无中文优化:中文描述理解弱,复杂创意、古风 / 国潮 / 写实等特色画风识别偏差大。
- 无批量能力:单次仅生成单张 / 固定数量图片,大批量素材创作效率低下。
- 缺少内容管控:无违规内容筛查、水印标注、版权备注,使用存在风险。
- 框架联动弱:生成结果无法对接 OpenClaw 其他技能,难以融入自动化工作流。
三、核心能力升级与功能拓展
(一)多模式图像创作
- 文生图 自然语言描述生成图像,支持中英文混合指令,精准解析画面主体、构图、色调、光影、场景、人物、道具等细节;内置写实、二次元、国风、赛博朋克、油画、水彩、极简风等十余种预设风格。
- 图生图 上传参考图片,基于原图进行风格改写、画面重构、元素替换、场景拓展,支持保留主体仅修改背景 / 色调 / 画风。
- 高清放大 对生成图片进行无损分辨率提升,模糊图优化细节,适配海报、印刷、大屏展示等高清使用需求。
(二)精细化参数自定义
- 尺寸选择:支持标准比例(1:1、16:9、4:3)及模型原生分辨率配置。
- 生成数量:单次可自定义 1~10 张,满足多选、批量素材需求。
- 创意强度:调整画面自由度,低数值贴合描述、高数值发挥创意脑洞。
- 负面提示词:支持添加避坑指令,过滤水印、模糊、畸形、多余元素等问题。
(三)批量处理与本地管理
- 批量生成:批量解析多条文案,一次性产出对应图像,自动分类命名。
- 本地持久化:图片自动下载至本地目录,支持按任务、时间、关键词分类归档。
- 格式转换:输出 PNG/JPG 主流格式,自定义画质压缩参数。
(四)内容安全与合规管控
- 内置违规内容检测,自动拦截色情、暴力、违法等不良创作请求,并给出提示。
- 可选添加文字水印、版权标注,保护创作素材。
- 完整操作日志,记录生成指令、时间、文件名称,便于溯源管理。
(五)AI 辅助优化
- 指令优化:自动精简、润色中文提示词,补充专业绘画术语,提升出图质量。
- 画面解读:生成图片后,自动提炼画面内容、风格、核心元素,形成图文说明。
- 风格推荐:根据文案用途(办公配图、社交海报、插画素材)智能推荐适配画风。
(六)OpenClaw 全框架联动
- 对接文档技能:Word/PDF 内文字内容,一键生成配套插图。
- 对接搜索技能:搜索获取文案 / 主题后,自动配图产出完整素材包。
- 对接语音技能:语音描述画面,实时转写指令并完成图像生成。
- 结果回传:图片路径、图文描述自动存入框架记忆库,支持后续调取复用。
四、分层架构设计
- 全局配置层:管理 API 密钥、默认尺寸、风格预设、存储目录、批量上限、安全开关、水印参数。
- 输入校验层:校验文本指令、图片文件格式 / 大小、参数合法性,拦截非法请求。
- 提示词优化层:中文语句润色、专业术语补充、负面词拼接、指令标准化。
- 模型调用层:封装 OpenAI 图像生成接口,请求封装、超时控制、指数退避重试。
- 图像处理层:图片下载、高清放大、格式转换、水印添加、本地归档。
- 安全审计层:内容筛查、日志记录、异常捕获、风险提示。
- 交互联动层:解析自然语言指令、结果反馈、跨技能接口、状态推送。
五、核心代码实现(TypeScript・OpenClaw 原生适配)
typescript
运行
import fs from "fs-extra";
import path from "path";
import { Skill, Context } from "openclaw";
import axios from "axios";
// 全局配置项
const IMAGE_GEN_CONFIG = {
apiKey: process.env.OPENAI_API_KEY || "",
apiUrl: "https://api.openai.com/v1/images/generations",
saveDir: "./claw-data/image-gen/output",
logDir: "./claw-data/image-gen/logs",
defaultSize: "1024x1024",
defaultCount: 2,
timeout: 30000,
retryTimes: 2,
enableWatermark: false,
watermarkText: "OpenClaw AI 创作"
};
// 初始化目录
async function initDir() {
await fs.ensureDir(IMAGE_GEN_CONFIG.saveDir);
await fs.ensureDir(IMAGE_GEN_CONFIG.logDir);
}
// 写入操作日志
function writeLog(prompt: string, count: number, time: string) {
const logFile = path.join(IMAGE_GEN_CONFIG.logDir, `${new Date().toLocaleDateString()}.log`);
const logContent = `[${time}] 创作指令:${prompt} | 生成数量:${count}\n`;
fs.appendFileSync(logFile, logContent, "utf8");
}
// 指数退避重试工具
async function withRetry<T>(fn: () => Promise<T>, retries = IMAGE_GEN_CONFIG.retryTimes): Promise<T> {
try {
return await fn();
} catch (err) {
if (retries > 0) {
const delay = Math.pow(2, IMAGE_GEN_CONFIG.retryTimes - retries) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
return withRetry(fn, retries - 1);
}
throw err;
}
}
// 文生图核心请求
async function createImage(prompt: string, size = IMAGE_GEN_CONFIG.defaultSize, n = IMAGE_GEN_CONFIG.defaultCount) {
if (!IMAGE_GEN_CONFIG.apiKey) throw new Error("未配置 OPENAI_API_KEY");
return withRetry(async () => {
const res = await axios.post(
IMAGE_GEN_CONFIG.apiUrl,
{
prompt,
size,
n,
response_format: "url"
},
{
headers: {
"Authorization": `Bearer ${IMAGE_GEN_CONFIG.apiKey}`,
"Content-Type": "application/json"
},
timeout: IMAGE_GEN_CONFIG.timeout
}
);
return res.data.data || [];
});
}
// 下载图片到本地
async function downloadImage(url: string): Promise<string> {
const fileName = `img_${Date.now()}.png`;
const savePath = path.join(IMAGE_GEN_CONFIG.saveDir, fileName);
const res = await axios.get(url, { responseType: "stream" });
return new Promise((resolve, reject) => {
const stream = res.data.pipe(fs.createWriteStream(savePath));
stream.on("finish", () => resolve(savePath));
stream.on("error", reject);
});
}
// OpenClaw 技能主入口
export const OpenAIImageGenSkill: Skill = {
name: "openai-image-gen",
description: "OpenAI Image Gen AI图像创作引擎 | 文生图/批量出图/本地保存/风格定制",
patterns: [
"生成图像{prompt}",
"生成图像{prompt} 尺寸{size} 数量{num}",
"批量作图{list}",
"查看创作日志"
],
handler: async (ctx: Context) => {
const { match, reply, pattern } = ctx;
await initDir();
const now = new Date().toISOString();
try {
// 基础文生图
if (pattern === "生成图像{prompt}" && match.prompt) {
reply(`🎨 正在根据描述创作图像:${match.prompt}`);
const imgList = await createImage(match.prompt);
const localPaths: string[] = [];
for (const item of imgList) {
const localPath = await downloadImage(item.url);
localPaths.push(localPath);
}
writeLog(match.prompt, imgList.length, now);
return reply(`✅ 图像创作完成\n本地保存路径:\n${localPaths.join("\n")}`);
}
// 自定义尺寸+数量生成
if (pattern === "生成图像{prompt} 尺寸{size} 数量{num}" && match) {
const num = parseInt(match.num) || IMAGE_GEN_CONFIG.defaultCount;
reply(`🎨 自定义参数创作中,尺寸:${match.size},数量:${num}`);
const imgList = await createImage(match.prompt, match.size, num);
const localPaths: string[] = [];
for (const item of imgList) {
const localPath = await downloadImage(item.url);
localPaths.push(localPath);
}
writeLog(match.prompt, num, now);
return reply(`✅ 自定义图像创作完成\n本地路径:\n${localPaths.join("\n")}`);
}
// 查看日志
if (pattern === "查看创作日志") {
return reply(`📜 创作日志目录:${IMAGE_GEN_CONFIG.logDir}\n图像存储目录:${IMAGE_GEN_CONFIG.saveDir}`);
}
} catch (e: any) {
return reply(`❌ 创作失败:${e.message}`);
}
return reply("💡 可用指令:生成图像+描述、自定义尺寸数量生成图像、查看创作日志");
}
};
六、指令使用示例
生成图像 古风山水水墨画,青山绿水,云雾缭绕生成图像 赛博朋克城市夜景 尺寸1024x1792 数量3查看创作日志
七、核心优势
✅ 中文适配优化:自动优化中文提示词,各类国风、写实、创意画风精准还原。
✅ 参数灵活可控:自由设置画面尺寸、生成数量,满足不同使用场景。
✅ 本地完整归档:图片自动下载保存,告别仅临时链接,方便二次使用。
✅ 稳定高可用:内置重试机制,应对网络波动、接口限流等问题。
✅ 安全合规:内容筛查 + 操作日志,规避违规内容,行为可溯源。
✅ 框架深度融合:可联动文档、搜索、语音技能,打造图文一体化自动化流程。
八、部署步骤
- 安装依赖:
npm install axios fs-extra - 配置环境变量:
OPENAI_API_KEY=你的密钥 - 将技能文件放入 OpenClaw 技能目录,重启框架即可加载使用。
- 按需修改配置文件,调整默认尺寸、保存目录、水印等参数。
九、后续功能拓展方向
- 新增图生图、局部重绘、风格迁移功能。
- 接入图像高清放大模型,实现无损画质提升。
- 扩充风格库,支持自定义风格模板一键套用。
- 增加批量导入文案、批量导出打包功能。
- 补充图文解读、提示词智能推荐功能。
- 拓展多模型兼容,支持切换不同图像生成模型。