This commit is contained in:
2026-04-10 15:37:02 +08:00
parent 161cd32277
commit f19e482c8f
233 changed files with 43987 additions and 5127 deletions

View File

@@ -0,0 +1,109 @@
# 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 统一走后端处理链