9.5 KiB
角色资产 Prompt 链路审计(2026-04-20)
更新时间:2026-04-20
0. 本次审计回答什么问题
本次只回答角色资产相关的 4 个问题:
characterAssetPrompts.ts里的visualPromptText和animationPromptText,是不是“生成角色形象 / 动作形象的默认描述”。- 生成角色形象的系统提示词在哪个文件,生成默认角色形象描述文本的提示词在哪个文件。
- 生成角色动作的系统提示词在哪个文件,生成默认角色动作描述文本的提示词在哪个文件。
- 当前链路里是否存在冗余流程、保留接口或无效代码。
1. 先说结论
结论不是“只有一套 prompt”,而是:
当前角色资产链路仍然有两层 prompt,但“默认描述文本”已经统一成单一主源。
1.1 默认描述文本层
这层的目标是:
先给资产工坊里的输入框一个默认可编辑文本。
这层不直接拿去生成图片或动作视频。
当前实际主链来源:
src/prompts/customWorldRolePromptDefaults.ts
它会把角色已有字段映射成:
visualPromptTextanimationPromptTextscenePromptText
其中:
visualPromptText优先取visualDescriptionanimationPromptText优先取actionDescriptionscenePromptText优先取sceneVisualDescription
这层是默认描述文本,不是正式图像模型 prompt。
1.2 正式模型 prompt 层
这层的目标是:
把“默认描述文本”进一步编译成正式给图像模型 / 动作模型的完整 prompt。
当前主链来源:
server-node/src/prompts/characterAssetPrompts.tspackages/shared/src/prompts/qwenSprite.ts
也就是说:
- 前端先有一段短文本
- 后端再用正式 prompt builder 把它扩成模型真正使用的完整 prompt
2. 角色形象生成链路
2.1 生成角色形象的系统提示词在哪
如果这里问的是“正式生成角色主图时,真正控制模型输出方向的 prompt 主源在哪”,答案是:
server-node/src/prompts/characterAssetPrompts.tspackages/shared/src/prompts/qwenSprite.ts
更准确说:
buildNpcVisualPrompt- 文件:
server-node/src/prompts/characterAssetPrompts.ts - 作用:把短描述文本和角色摘要合并
- 文件:
buildMasterPrompt- 文件:
packages/shared/src/prompts/qwenSprite.ts - 作用:提供正式的角色主图 prompt 骨架
- 文件:
最终角色形象正式生成请求使用的是:
buildNpcVisualPrompt(...)
调用位置:
server-node/src/modules/assets/characterAssetRoutes.ts
即:
角色主图正式生成的系统提示词主链,不在前端默认值文件,而在后端 characterAssetPrompts.ts + 共享 qwenSprite.ts。
2.2 生成默认角色形象描述文本的提示词在哪
当前资产工坊默认输入框实际使用:
src/prompts/customWorldRolePromptDefaults.ts
这不是 LLM system prompt,而是本地字段映射规则。
换句话说,当前页面上的默认“形象描述”主要来自:
role.visualDescription- 或回退到
role.description
3. 角色动作生成链路
3.1 生成角色动作的系统提示词在哪
当前正式动作生成主链在:
server-node/src/prompts/characterAssetPrompts.tspackages/shared/src/prompts/qwenSprite.ts
其中分两类:
buildArkCharacterAnimationPrompt- 当前图生视频动作链路主入口
buildNpcAnimationPrompt- 通用动作视频 prompt builder
buildImageSequencePrompt- 连续帧方案动作 prompt builder
buildVideoActionPrompt- 共享动作模板骨架,在
packages/shared/src/prompts/qwenSprite.ts
- 共享动作模板骨架,在
当前主动作链路更偏向:
buildArkCharacterAnimationPrompt
调用位置:
server-node/src/modules/assets/characterAssetRoutes.ts
3.2 生成默认角色动作描述文本的提示词在哪
当前资产工坊真实默认“动作描述”来源:
src/prompts/customWorldRolePromptDefaults.ts
规则是:
- 优先
actionDescription - 回退
combatStyle
这仍然是默认描述文本层,不是最终动作模型 prompt。
4. characterAssetPrompts.ts 里的 visualPromptText / animationPromptText 到底是什么
这两个字段容易混淆,因为它们名字里带 Prompt。
但当前工程里它们更准确的定位是:
“默认描述文本 bundle 字段名”,不是最终图像模型请求体里的最终 prompt 名称。
也就是:
visualPromptText- 在 UI 里更像“角色形象描述默认文本”
- 之后会再被编译进正式图像 prompt
animationPromptText- 在 UI 里更像“角色动作描述默认文本”
- 之后会再被编译进正式动作 prompt
所以对你的问题可以直接回答为:
是,它们在当前语义上确实可以看作“默认角色形象 / 动作描述文本”。
但需要补一句:
它们不是最终一步的正式模型系统提示词,而是正式模型 prompt 的上游输入。
5. 当前真实调用链
5.1 当前资产工坊页面初始默认值主链
当前真实主链:
- 角色对象已有字段进入前端
src/prompts/customWorldRolePromptDefaults.tsCustomWorldRoleAssetStudioModal.tsx- 输入框初始值:
visualPromptTextanimationPromptText
这条链:
- 快
- 本地可控
- 不依赖额外一次 LLM 调用
5.2 当前正式角色主图生成主链
- 前端把输入框里的
visualPromptText提交到后端 server-node/src/prompts/characterAssetPrompts.tsbuildNpcVisualPrompt
packages/shared/src/prompts/qwenSprite.tsbuildMasterPrompt
- 图像模型正式生成
5.3 当前正式角色动作生成主链
- 前端把输入框里的
animationPromptText提交到后端 server-node/src/prompts/characterAssetPrompts.tsbuildArkCharacterAnimationPrompt- 或
buildNpcAnimationPrompt - 或
buildImageSequencePrompt
packages/shared/src/prompts/qwenSprite.tsbuildVideoActionPrompt
- 动作模型正式生成
6. 冗余流程与当前问题
6.1 默认描述文本双链已收口
此前默认描述文本同时存在:
- 前端本地字段映射
- 后端 bundle 编译接口
本轮已经统一为:
src/prompts/customWorldRolePromptDefaults.ts
也就是:
默认描述文本现在只有一条真实主源。
对应变化:
- 不再保留后端独立的默认 bundle 编译接口。
- 不再保留前端对应的 bundle 生成 API 壳层。
server-node/src/prompts/characterAssetPrompts.ts只保留正式模型 prompt builder。
判断:
默认描述文本层的双份真相已经被消除。
6.2 scenePromptText 结构存在,但当前资产工坊没有完整承接
当前这套链路里:
customWorldRolePromptDefaults.ts会返回scenePromptTextcharacterAssetPrompts.ts也会返回scenePromptText
但当前资产工坊 UI 里并没有完整对应输入框链路。
这说明:
场景描述文本在结构层存在,但在当前角色资产工坊里没有形成完整的用户可编辑闭环。
6.3 共享模板与工具模板存在相似实现,但职责不同
仓库里同时有:
packages/shared/src/prompts/qwenSprite.tssrc/prompts/qwenSpriteSheetToolPrompts.ts
它们都提供类似的主图 / 动作模板能力。
但当前定位不同:
packages/shared/src/prompts/qwenSprite.ts- 正式角色资产主链共享模板
src/prompts/qwenSpriteSheetToolPrompts.ts- Qwen 工具链 prompt
它们不是同一条业务主链里的重复实现,但确实容易让人误读为“双份正式模板”。
判断:
这是“职责上可解释,但认知上高混淆”的并行模板,不建议现在直接删,但需要文档明确边界。
6.4 当前没有证据说明正式主图 / 动作 prompt builder 是无效代码
以下 builder 当前都有正式调用点:
buildNpcVisualPromptbuildNpcVisualNegativePromptbuildArkCharacterAnimationPromptbuildNpcAnimationPromptbuildImageSequencePrompt
因此它们不能算“无效代码”。
真正已经被清理掉的保留链路,是此前未接入主 UI 的默认 bundle 接口:
CHARACTER_PROMPT_BUNDLE_SYSTEM_PROMPTbuildCharacterPromptBundleUserPrompt/api/assets/character-prompts/generate
这套链路已经不再保留在当前仓库主线中。
7. 本次建议
如果后续要继续收口,建议按顺序处理:
- 继续以前端本地映射作为默认描述文本唯一主源。
- 对
scenePromptText做完整承接,不要继续停留在结构存在但 UI 不消费的状态。 - 继续保留
packages/shared/src/prompts/qwenSprite.ts与工具链 prompt 分层,但在文档里强制写清“正式主链 / 工具链”边界。
8. 本次审计覆盖文件
server-node/src/prompts/characterAssetPrompts.tspackages/shared/src/prompts/qwenSprite.tsserver-node/src/modules/assets/characterAssetRoutes.tssrc/prompts/customWorldRolePromptDefaults.tssrc/components/CustomWorldRoleAssetStudioModal.tsxsrc/components/asset-studio/characterAssetWorkflowPersistence.tssrc/prompts/qwenSpriteSheetToolPrompts.ts
9. 一句话版结论
一句话总结就是:
当前角色资产系统把“默认描述文本”和“正式模型 prompt”拆成了两层,这是合理的;默认描述文本层已经统一为前端本地映射单一主源,当前剩余主要问题不再是双主源,而是 scenePromptText 仍未形成完整 UI 闭环。