# Express 后端任务 4 AI 编排收口状态(2026-04-08) ## 1. 结论 按 `EXPRESS_BACKEND_PARALLEL_WORKSTREAM_PLAN_2026-04-08.md` 的任务 4 定义,本轮已经把正式运行时的 `story / character chat / npc chat / custom world generation / quest intent / runtime item intent` 的主要 AI 编排入口收回到 Express 后端。 当前可以视为: - 正式运行时主链已不再依赖浏览器端大体量 AI 实现作为兜底。 - prompt 组装、上游模型请求、SSE 转发已以后端为主。 - 前端保留的本地 AI 大模块只通过懒加载方式服务于非正式运行时遗留入口,不再作为正式运行时默认路径。 --- ## 2. 已完成项 ### 2.1 后端统一 orchestration 入口 - `server-node/src/modules/ai/storyOrchestrator.ts` - `server-node/src/modules/ai/chatOrchestrator.ts` - `server-node/src/modules/ai/customWorldOrchestrator.ts` 这些模块承接: - story prompt 组装 - character chat prompt 组装 - npc chat / recruit prompt 组装 - custom world generation 后端入口封装 ### 2.2 服务层收口 已收口到后端服务或模块的文件: - `server-node/src/services/llmClient.ts` - `server-node/src/services/storyService.ts` - `server-node/src/services/chatService.ts` - `server-node/src/services/customWorldGenerationService.ts` - `server-node/src/services/questService.ts` - `server-node/src/services/runtimeItemService.ts` ### 2.3 前端正式运行时 fallback 清理 `src/services/aiService.ts` 已完成以下收缩: - story 正式路径不再 fallback 到浏览器本地 AI 编排 - character suggestions / summary / reply stream 不再 fallback 到浏览器本地 AI 编排 - npc dialogue / recruit stream 不再 fallback 到浏览器本地 AI 编排 - 移除了正式运行时对 `VITE_ENABLE_BROWSER_RUNTIME_AI_FALLBACK` 的依赖 - 移除了正式运行时对本地轻量离线文案 fallback 的默认依赖 - 对 `./ai` 的引用改为懒加载,避免正式运行时默认把大体量 AI 模块打进主路径 - 正式运行时主流程 hook 已统一改走 `aiService`,不再直接从 `src/services/ai.ts` 获取 story/chat 主链能力 ### 2.4 旧 bridge 清理 已移除: - `server-node/src/bridges/legacyAiRuntimeBridge.ts` --- ## 3. 当前边界说明 以下项仍然存在于前端目录,但不再属于正式运行时默认 AI 执行路径: - `src/services/ai.ts` - `src/services/aiFallbacks.ts` - `src/components/CustomWorldEntityEditorModal.tsx` 中的工具链直连调用 它们当前主要作为: - 兼容性遗留实现 - 懒加载的非主路径工具能力 - 非本轮正式运行时链路的复用来源 这不再构成任务 4 的主阻塞,但后续仍应继续配合任务 1 / 任务 7 做彻底分层。 --- ## 4. 非任务 4 主阻塞但需要记录的事项 ### 4.1 仍属编辑器/工具链范畴的遗留调用 - `generateCustomWorldSceneImage` 仍通过懒加载复用旧实现。 原因: - 该能力属于自定义世界工具链,不是正式运行时剧情 / 对话主链。 - 当前不会再影响“浏览器正式运行时是否依赖本地大 AI 编排”这一任务 4 验收项。 ### 4.2 分层彻底闭合仍需后续任务配合 尽管任务 4 已完成主链收口,但以下更深层收敛仍建议交由后续任务继续推进: - 继续减少 `server-node` 对 `src/**` 纯提示词/纯规则模块的历史复用 - 继续把共享 contract / schema 下沉到 `packages/shared` - 继续把工具链与正式运行时拆分 这些属于任务 1、任务 7、任务 8 的后续工作,不再阻塞任务 4 验收。 --- ## 5. 本轮建议验收口径 任务 4 可按以下口径验收: - 浏览器正式运行时不再默认兜底到本地大体量 AI 编排 - story/chat/custom world generation 主链 prompt 组装与请求执行权在后端 - SSE 主链以后端转发为准 - upstream timeout / abort / error 统一走后端处理链