@waterwx/dsh-novel-forge 1.3.0 → 1.3.2

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.
package/lib/index.js CHANGED
@@ -2060,7 +2060,7 @@ async function extractRoleVisual(ctx, config, project, outputDir, roleName) {
2060
2060
  "- source:说明依据(如\"第1章/第8章外貌描写;瞳色未明确\")。",
2061
2061
  "- expressions:该角色在本书剧情中需要的情绪表情清单数组,6-12 个(如 [\"疲惫\",\"麻木\",\"压抑悲伤\",\"皱眉\",\"紧绷\",\"放空\"]),依据正文情绪描写与角色处境推断。",
2062
2062
  "- promptKit:四类精修提示词(字段化+出图约束,参考示例结构):",
2063
- " · portrait 立绘:角色设计稿定位,纯白纯色背景,全身完整无裁切,无多余杂物;字段流:年龄感、身高(有依据才写)、发型发色、胡茬、眼眸、面部气质、上身服装分件(含磨损)、下身、鞋、标志物细节。",
2063
+ " · portrait 立绘:严格按字段顺序写(参考示例结构):开头构图定位(正面站立全身人像)→ 风格(3D动漫,超精细建模)→ 背景(纯白纯色背景)→ 身份(男子,{角色名},外表{年龄},男性)→ 发型发色 → 胡茬 → 眼眸 → 面部 → 气质 → 上身服装分件(颜色款式+磨损细节)→ 下身 → 鞋 → 标志物(标签/印记,含细节如洇暗翘边)→ 收尾(角色设计稿,细节完整展示,无多余杂物,全身完整无裁切)。",
2064
2064
  " · sheet 四视图:同一角色的 正面/左侧面/右侧面/背面 四视图设定表(character sheet),纯白背景,全身完整,四个视角分别描述,服装与标志物细节完整展示。",
2065
2065
  " · expressions 表情:每个表情一段,脸部特写(头部到锁骨),纯白背景,五官与角色定稿完全一致,只换情绪表达(眼神/嘴角/眉),皮肤纹理细节完整,无多余杂物。",
2066
2066
  " · details 细节:多组局部细节集合参考图(一张图多个局部框),纯白背景;把该角色全部标志物逐项列出(如标签/印记/工牌/袖口磨损/鞋),每项一句特写描述;细节清晰锐利,角色细节参考稿,无多余杂物。",
@@ -2132,7 +2132,7 @@ async function generateRolePromptKit(ctx, config, project, roleName) {
2132
2132
  system: [
2133
2133
  "你是一位 AI 绘图提示词工程师。基于给定角色的形象锚点、表情清单与本书视觉规则,输出四类生图提示词(每类 zh+en 各一段)。",
2134
2134
  "四类:",
2135
- "1. portrait 立绘:全身/半身正视图,含完整服装与标志物。",
2135
+ "1. portrait 立绘:正面站立全身人像,3D动漫超精细建模,纯白纯色背景;按字段流组织:身份(男子,角色名,外表年龄)→ 发型发色 → 胡茬 → 眼眸 → 面部 → 气质 → 上身服装分件(含磨损)→ 下身 → 鞋 → 标志物(含细节)→ 收尾(角色设计稿,细节完整展示,无多余杂物,全身完整无裁切)。",
2136
2136
  "2. sheet 四视图:同一角色的 正面/左侧面/右侧面/背面 四视图设定表(character sheet),纯白背景,四个视角分别描述。",
2137
2137
  "3. expressions 表情:每个表情一段,脸部特写(头部到锁骨),纯白背景,五官与角色定稿完全一致,只换情绪表达(眼神/嘴角/眉),皮肤纹理细节完整,无多余杂物。",
2138
2138
  "4. details 细节:多组局部细节集合参考图(一张图多个局部框),纯白背景;把该角色全部标志物逐项列出,每项一句特写描述;细节清晰锐利,角色细节参考稿,无多余杂物。",
@@ -6207,7 +6207,7 @@ function makeRoutes(deps) {
6207
6207
  }
6208
6208
  const role = project.roles.find((r) => r.name === name);
6209
6209
  if (role === void 0) {
6210
- writeJson(res, 404, { error: `角色 ${name} 不存在` });
6210
+ writeJson(res, 404, { error: `当前激活《${project.bookName}》,角色 ${name} 不存在——若期望的书不对,请先在书架切换该书并刷新` });
6211
6211
  return;
6212
6212
  }
6213
6213
  const label = body?.label?.trim() ?? "";
@@ -6564,7 +6564,7 @@ function makeRoutes(deps) {
6564
6564
  }
6565
6565
  const scene = project.scenes.find((x) => x.name === name);
6566
6566
  if (scene === void 0) {
6567
- writeJson(res, 404, { error: `场景 ${name} 不存在` });
6567
+ writeJson(res, 404, { error: `当前激活《${project.bookName}》,场景 ${name} 不存在——若期望的书不对,请先在书架切换该书并刷新` });
6568
6568
  return;
6569
6569
  }
6570
6570
  const label = body?.label?.trim() ?? "全景";