From a1063b677495b5161ab37e979e150910bdb0f0f2 Mon Sep 17 00:00:00 2001 From: kang Date: Tue, 19 May 2026 11:58:55 +0800 Subject: [PATCH] auto-save 2026-05-19 11:58 (~3) --- .memory/worklog.json | 7 +++++++ src/lib/providers.ts | 4 +++- src/lib/templates.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index 4276ebe..7e3ce2c 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -582,6 +582,13 @@ "message": "auto-save 2026-05-19 11:53 (~3)", "hash": "2c2d11b", "files_changed": 4 + }, + { + "ts": "2026-05-19T11:53:58+08:00", + "type": "commit", + "message": "fix: prevent duplicate pack generation", + "hash": "e761e72", + "files_changed": 1 } ] } diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 45fb5a4..f730251 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -231,7 +231,9 @@ export async function inferCharacterSpecFromImage(opts: { '根据上传图片推断 CharacterSpec,严格输出 JSON,不要 markdown,不要解释。', '字段必须完整匹配:name, oneLiner, targetUser, speciesShape, bodyRatio, faceFeatures, colorPalette, materials, accessories, signatureElements, manufacturingNotes, patentFocus, marketingAngle, negativePrompt, sourceImageId, sourceImageUrl, lockedAt。', '数组字段必须为字符串数组。', - '不要把已知商业 IP 当成可用授权素材;若图像疑似迪士尼、三丽鸥、泡泡玛特等已注册 IP,在 negativePrompt 中明确提示需替换为原创元素。', + '如果图像中存在用户上传的原创品牌名、角色名、服装字样、帽标、面罩图案或配件图形,必须作为角色识别元素保留,不要改名、翻译、替换或弱化。', + '不要把已知第三方商业 IP 当成可用授权素材;只有图像明显疑似迪士尼、三丽鸥、泡泡玛特等已注册第三方 IP 时,才在 negativePrompt 中提示替换为原创元素。', + 'negativePrompt 只能禁止无关品牌、水印、真实明星肖像、第三方已注册 IP 和偏离源图的元素;不要要求替换用户上传图中的原创品牌/主标识。', opts.userHint?.trim() ? `用户提示:${opts.userHint.trim()}` : '用户没有提供命名提示,请根据图像生成一个中性原创名称。', `当前时间戳:${Date.now()}`, `源图 URL:${opts.imageUrl}`, diff --git a/src/lib/templates.ts b/src/lib/templates.ts index 0e38976..e297969 100644 --- a/src/lib/templates.ts +++ b/src/lib/templates.ts @@ -1137,6 +1137,6 @@ export function renderCharacterSummary(spec: CharacterSpec): string { `识别元素:${spec.signatureElements.join('、')}`, `专利重点:${spec.patentFocus.join('、')}`, `营销角度:${spec.marketingAngle.join('、')}`, - `不要出现:${spec.negativePrompt}`, + `生成约束:${spec.negativePrompt}`, ].join(';'); }