5.9 KiB
5.9 KiB
Prompt 目录收口方案(2026-04-19)
1. 这次调整解决什么问题
此前提示词分散在多个后端、前端和工具文件里:
server-node/src/modules/ai/**server-node/src/modules/quest/**server-node/src/modules/runtime-item/**server-node/src/services/customWorld*.tsserver-node/src/services/eightAnchorPromptBuilder.tsserver-node/src/modules/assets/characterAssetRoutes.tssrc/services/**src/components/**
问题主要有三类:
- 业务逻辑和 prompt 文本混写,改提示词时容易顺手改坏运行时逻辑。
- 同一类 prompt 缺少集中入口,排查系统 prompt / user prompt / repair prompt 成本高。
- 老桥接层、测试和新业务链路同时依赖时,迁移成本高,容易出现导出断裂。
这次收口目标不是“重写全部 AI 链路”,而是把当前正式业务 prompt 主源收到独立目录,业务模块退化成“准备上下文 + 调用 prompt 脚本”。
2. 新目录
本轮落地后的目录:
packages/shared/src/prompts/
└─ qwenSprite.ts
server-node/src/prompts/
├─ characterAssetPrompts.ts
├─ chatPromptBuilders.ts
├─ customWorldAgentPrompts.ts
├─ customWorldEntityPrompts.ts
├─ customWorldOrchestratorPrompts.ts
├─ customWorldSceneNpcPrompts.ts
├─ eightAnchorPrompts.ts
├─ questPrompts.ts
├─ runtimeItemPrompts.ts
├─ storyOrchestratorPrompts.ts
└─ storyPromptBuilders.ts
src/prompts/
├─ characterChatPrompts.ts
├─ customWorldEntityActionPrompts.ts
├─ customWorldOrchestratorPrompts.ts
├─ customWorldPrompts.ts
├─ customWorldRolePromptDefaults.ts
├─ questPrompts.ts
├─ runtimeItemPrompts.ts
├─ storyOrchestratorPrompts.ts
└─ storyPromptBuilders.ts
当前职责划分:
chatPromptBuilders.ts- 角色私聊 / NPC 聊天 / 招募对话 prompt
storyPromptBuilders.ts- 主剧情 system prompt 与 user prompt builder
storyOrchestratorPrompts.ts- 剧情语言修复 prompt
questPrompts.ts- 任务意图 system prompt 与 user prompt builder
runtimeItemPrompts.ts- 运行时物品意图 system prompt 与 user prompt 文本装配
customWorldOrchestratorPrompts.ts- 自定义世界主编排 JSON 生成与 repair prompt
customWorldAgentPrompts.ts- 世界草稿 JSON prompt、补角色 / 补地点 prompt
customWorldEntityPrompts.ts- 世界编辑器角色 / 场景实体生成 prompt
customWorldSceneNpcPrompts.ts- 世界编辑器场景 NPC 生成 prompt
characterAssetPrompts.ts- 角色主图 / 动作试片正式生成 prompt
eightAnchorPrompts.ts- 八锚点状态推断、模式规则与正式单轮共创 prompt
src/prompts/customWorldPrompts.ts- 自定义世界分阶段生成 prompt 与场景背景图 prompt
src/prompts/customWorldRolePromptDefaults.ts- 角色资产工作台默认 prompt 种子唯一主源
src/prompts/customWorldEntityActionPrompts.ts- 编辑器技能动作 prompt
packages/shared/src/prompts/qwenSprite.ts- 共享资产层的基础角色 prompt 模板
3. 落地规则
3.1 业务模块只做两件事
- 整理运行时上下文
- 调用
server-node/src/prompts/**下的脚本输出 prompt
不要在业务模块里继续直接内联大段 system prompt / repair prompt / user prompt 模板文本。
3.2 Prompt 文件只放文本相关职责
允许放:
- system prompt 常量
- user prompt builder
- repair prompt builder
- prompt 专用的文本摘要函数
不建议放:
- 运行时状态 mutation
- 仓储读写
- HTTP 处理
- 与 prompt 无关的领域推导
3.3 兼容层保留旧导出
本轮对已有纯 prompt builder 文件采取了兼容迁移,旧路径保留为薄 re-export:
server-node/src/modules/ai/chatPromptBuilders.tsserver-node/src/modules/ai/storyPromptBuilders.tsserver-node/src/services/eightAnchorPromptBuilder.tssrc/services/prompt.tssrc/services/characterChatPrompt.tssrc/services/questPrompt.tssrc/services/runtimeItemAiPrompt.tssrc/components/asset-studio/customWorldRolePromptDefaults.tspackages/shared/src/assets/qwenSprite.ts
对于 runtimeQuestModule.ts、runtimeItemModule.ts 这类被桥接层直接引用的模块,本轮保留原导出名,通过 re-export 指向新 prompt 文件,保证兼容性。
4. 后续新增 prompt 的写法
新增提示词时按下面顺序处理:
- 先判断属于后端、前端/编辑器还是共享工具层。
- 后端正式业务优先补到
server-node/src/prompts/*.ts。 - 前端/编辑器 prompt 优先补到
src/prompts/*.ts。 - 可复用的共享资产 prompt 优先补到
packages/shared/src/prompts/*.ts。 - 业务模块只传入已经整理好的上下文字段,不在模块内部继续拼长文本。
- 至少补一条该 prompt 的调用链测试或现有测试断言。
建议命名:
- system prompt:
XXX_SYSTEM_PROMPT - repair prompt:
buildXXXRepairPrompt - user prompt:
buildXXXPrompt - 纯文本装配:
buildXXXPromptText
5. 本轮范围与当前状态
本轮已经收口:
- Story
- Chat
- Quest
- Runtime Item
- Custom World 主编排
- Custom World Agent 草稿增补
- Custom World 编辑器角色 / 场景 / 场景 NPC 生成
- Character Asset
- Eight Anchor
- Scene Image
- 前端剧情 / 私聊 / 任务 / 物品 prompt 兼容层
- 编辑器与工具链 prompt 种子
当前状态:
- 正式业务 prompt 主源已经集中到 prompt 目录。
- 旧
services/、tools/、components/下保留的相关文件主要是兼容层或调用方。 - 当前没有再发现需要优先继续抽离的大块业务 prompt 正文。
6. 验证方式
本轮调整后建议至少执行:
npm run check:encodingnpm run server-node:testnpm --prefix server-node run build
本轮实测结果:
npm run check:encoding通过npm --prefix server-node run build通过npm run build通过npm run server-node:test143 项全部通过