koishi-plugin-aka-ai-generator 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/index.js +20 -9
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -521,7 +521,8 @@ var COMMANDS = {
521
521
  GENERATE_IMAGE: "生成图像",
522
522
  COMPOSE_IMAGE: "合成图像",
523
523
  CHANGE_POSE: "改姿势",
524
- OPTIMIZE_DESIGN: "优化设计",
524
+ OPTIMIZE_DESIGN: "修改设计",
525
+ PIXELATE: "变像素",
525
526
  QUERY_QUOTA: "图像额度",
526
527
  RECHARGE: "图像充值",
527
528
  RECHARGE_HISTORY: "图像充值记录",
@@ -571,7 +572,7 @@ var Config = import_koishi.Schema.intersect([
571
572
  {
572
573
  commandName: "变写实",
573
574
  commandDescription: "以真实摄影风格重建主体",
574
- prompt: "请根据用户提供的图片,在保持主体身份、外观与姿态的前提下生成一张超写实的摄影作品。采用Ultra-realistic 3D rendered风格,确保光影、皮肤质感、服饰纹理与背景环境都贴近真实世界。画面应呈现raw and natural的原始自然感,具有authentic film snapshot的真实胶片质感。使用strong contrast between light and dark营造强烈明暗对比,产生deep shadows深阴影效果。整体需具备tactile feel触感质感和simulated texture模拟纹理细节,可以适度优化噪点与瑕疵,但不要改变主体特征或添加额外元素,整体效果需像专业摄影棚拍摄的真实照片。",
575
+ prompt: "请根据用户提供的图片,在严格保持主体身份、外观特征与姿态不变的前提下,生成一张照片级真实感的超写实摄影作品。要求:1. 采用专业相机拍摄(如佳能EOS R5),使用85mm f/1.4人像镜头,呈现柯达Portra 400胶片质感,8K超高清画质,HDR高动态范围,电影级打光效果;2. 画面应具有照片级真实感、超现实主义风格和高细节表现,确保光影、皮肤质感、服饰纹理与背景环境都贴近真实世界;3. 使用自然光影营造真实氛围,呈现raw and natural的原始自然感,具有authentic film snapshot的真实胶片质感,使用strong contrast between light and dark营造强烈明暗对比,产生deep shadows深阴影效果;4. 整体需具备tactile feel触感质感和simulated texture模拟纹理细节,可以适度优化噪点与瑕疵,但不要改变主体特征或添加额外元素;5. 整体效果需像专业摄影棚拍摄的真实照片,具有电影级画质;6. 如果主体是人物脸部,脸部生成效果应参考欧美混血白人精致美丽帅气英俊的外观特征进行生成,保持精致立体的五官轮廓、健康光泽的肌肤质感、优雅的气质和自然的表情,确保面部特征协调美观。",
575
576
  enabled: true
576
577
  },
577
578
  {
@@ -619,7 +620,8 @@ function apply(ctx, config) {
619
620
  { name: COMMANDS.GENERATE_IMAGE, description: "使用自定义prompt进行图像处理" },
620
621
  { name: COMMANDS.COMPOSE_IMAGE, description: "合成多张图片,使用自定义prompt控制合成效果" },
621
622
  { name: COMMANDS.CHANGE_POSE, description: "改变图像主体的姿势造型,保持主体细节和风格不变" },
622
- { name: COMMANDS.OPTIMIZE_DESIGN, description: "优化图像主体的结构设计,保持原有设计语言和风格" },
623
+ { name: COMMANDS.OPTIMIZE_DESIGN, description: "修改图像主体的结构设计,保持原有设计语言和风格" },
624
+ { name: COMMANDS.PIXELATE, description: "将图像主体转换为8位像素艺术风格" },
623
625
  { name: COMMANDS.QUERY_QUOTA, description: "查询用户额度信息" }
624
626
  ],
625
627
  // 管理员指令
@@ -996,7 +998,7 @@ function apply(ctx, config) {
996
998
  if (activeTasks.has(userId)) {
997
999
  return "您有一个图像处理任务正在进行中,请等待完成";
998
1000
  }
999
- await session.send('图片+描述\n\n多张图片使用"合成图像"指令');
1001
+ await session.send("图片+描述");
1000
1002
  const collectedImages = [];
1001
1003
  let prompt = "";
1002
1004
  while (true) {
@@ -1022,7 +1024,7 @@ function apply(ctx, config) {
1022
1024
  prompt = text;
1023
1025
  break;
1024
1026
  }
1025
- await session.send("已收到图片,请发送 prompt 描述文字");
1027
+ await session.send("请发送描述");
1026
1028
  continue;
1027
1029
  }
1028
1030
  if (text) {
@@ -1124,7 +1126,7 @@ Prompt: ${prompt}`);
1124
1126
  prompt = text;
1125
1127
  break;
1126
1128
  }
1127
- await session.send(`已收到 ${collectedImages.length} 张图片,请继续发送图片或发送 prompt 文字`);
1129
+ await session.send(`已收到 ${collectedImages.length} 张图片,继续发送或输入描述`);
1128
1130
  continue;
1129
1131
  }
1130
1132
  if (text) {
@@ -1199,21 +1201,30 @@ Prompt: ${prompt}`);
1199
1201
  const posePrompt = "请根据用户提供的图片,在严格保持主体身份、外观特征、服装细节、艺术风格和整体氛围不变的前提下,生成一个新的姿势造型。新姿势应该更加帅气、可爱、有张力或符合主体内容的动态感,展现出更好的视觉表现力。要求:1. 完全保持主体的面部特征、发型、服装、配饰等所有细节不变;2. 完全保持原有的艺术风格(如二次元、写实、手绘等)不变;3. 只改变身体的姿势、动作和姿态,让主体看起来更有活力和表现力;4. 姿势应该自然、协调,符合主体的身份和性格特征;5. 保持背景环境的基本风格不变(可以适当调整视角或构图)。";
1200
1202
  return processImageWithTimeout(session, img, posePrompt, COMMANDS.CHANGE_POSE, options?.num);
1201
1203
  });
1202
- ctx.command(`${COMMANDS.OPTIMIZE_DESIGN} [img:text]`, "优化图像主体的结构设计,保持原有设计语言和风格").option("num", "-n <num:number> 生成图片数量 (1-4)").action(async ({ session, options }, img) => {
1204
+ ctx.command(`${COMMANDS.OPTIMIZE_DESIGN} [img:text]`, "修改图像主体的结构设计,保持原有设计语言和风格").option("num", "-n <num:number> 生成图片数量 (1-4)").action(async ({ session, options }, img) => {
1203
1205
  if (!session?.userId) return "会话无效";
1204
1206
  const limitCheck = await checkDailyLimit(session.userId);
1205
1207
  if (!limitCheck.allowed) {
1206
1208
  return limitCheck.message;
1207
1209
  }
1208
- const designPrompt = "请根据用户提供的图片,在严格保持原有设计语言、视觉风格、功能特征和整体主题不变的前提下,对图像主体的结构设计进行优化。要求:1. 完全保持原有的设计语言和视觉风格(如现代简约、复古、科幻、奇幻等)不变;2. 保持主体的核心功能特征和身份定位不变;3. 可以合理且美观地添加、删改或优化结构元素(如装饰细节、功能组件、线条轮廓、比例关系等),使设计更加完善和美观;4. 所有优化必须符合原有主题的视觉风格,增强设计美感而不破坏原有设计语言;5. 优化后的设计应该更加协调、统一,具有更好的视觉层次和设计完整性;6. 保持色彩方案、材质质感和整体氛围的一致性。";
1210
+ const designPrompt = "请根据用户提供的图片,在严格保持原有设计语言、视觉风格、功能特征和整体主题不变的前提下,对图像主体的结构设计进行修改。要求:1. 完全保持原有的设计语言和视觉风格(如现代简约、复古、科幻、奇幻等)不变;2. 保持主体的核心功能特征和身份定位不变;3. 可以合理且美观地添加、删改或修改结构元素(如装饰细节、功能组件、线条轮廓、比例关系等),使设计更加完善和美观;4. 所有修改必须符合原有主题的视觉风格,增强设计美感而不破坏原有设计语言;5. 修改后的设计应该更加协调、统一,具有更好的视觉层次和设计完整性;6. 保持色彩方案、材质质感和整体氛围的一致性。";
1209
1211
  return processImageWithTimeout(session, img, designPrompt, COMMANDS.OPTIMIZE_DESIGN, options?.num);
1210
1212
  });
1213
+ ctx.command(`${COMMANDS.PIXELATE} [img:text]`, "将图像主体转换为8位像素艺术风格").option("num", "-n <num:number> 生成图片数量 (1-4)").action(async ({ session, options }, img) => {
1214
+ if (!session?.userId) return "会话无效";
1215
+ const limitCheck = await checkDailyLimit(session.userId);
1216
+ if (!limitCheck.allowed) {
1217
+ return limitCheck.message;
1218
+ }
1219
+ const pixelPrompt = "请根据用户提供的图片,将图像主体转换为经典的8位像素艺术风格。要求:1. 完全保持主体的身份、外观特征和核心识别元素不变,确保转换后仍然清晰可识别;2. 采用极简的8位像素风格,使用有限的复古调色板(通常为16-256色),营造经典街机游戏的美学氛围;3. 所有细节都进行像素化处理,使用清晰的像素块和锐利的边缘,避免平滑渐变;4. 采用干净的块状形式,保持简单、标志性的设计,突出主体的核心特征;5. 背景可以简化为纯色背景(如纯白或纯黑),或者保持简单的像素化背景,确保主体突出;6. 整体风格应具有强烈的复古游戏感,让人联想到经典街机游戏和早期电子游戏的视觉美学;7. 保持主体的比例和基本结构,但用像素块重新诠释所有细节。";
1220
+ return processImageWithTimeout(session, img, pixelPrompt, COMMANDS.PIXELATE, options?.num);
1221
+ });
1211
1222
  ctx.command(`${COMMANDS.RECHARGE} [content:text]`, "为用户充值次数(仅管理员)").action(async ({ session }, content) => {
1212
1223
  if (!session?.userId) return "会话无效";
1213
1224
  if (!isAdmin(session.userId)) {
1214
1225
  return "权限不足,仅管理员可操作";
1215
1226
  }
1216
- const inputContent = content || await getPromptInput(session, "请输入充值信息,格式:\n@用户1 @用户2 充值次数 [备注]\n\n例如:\n@难捅一号 10 测试充值");
1227
+ const inputContent = content || await getPromptInput(session, "请输入充值信息,格式:\n@用户1 @用户2 充值次数 [备注]");
1217
1228
  if (!inputContent) return "输入超时或无效";
1218
1229
  const elements = import_koishi.h.parse(inputContent);
1219
1230
  const atElements = import_koishi.h.select(elements, "at");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-aka-ai-generator",
3
3
  "description": "自用AI生成插件(GPTGod & Yunwu)",
4
- "version": "0.1.0",
4
+ "version": "0.1.3",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [