Files
Genarrative/docs/audits/engineering/SERVER_NODE_FREEZE_AND_DEPRECATION_2026-04-24.md
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

9.1 KiB
Raw Blame History

server-node 冻结隔离说明2026-04-24

1. 当前状态

server-node/ 已进入冻结隔离状态,不再作为可运行、可扩展、可引用的后端工程使用。

冻结原因:项目后端主线已经切到 server-rs/ 的 Rust + SpacetimeDB 多 crate 方案,继续保留可执行的 server-node/ 入口会误导后续开发并增加提示词资产、AI 工作流与运行态逻辑的迁移漂移风险。

2. 冻结边界

  1. 禁止新增任何以 server-node/ 为目标的运行脚本、开发入口、CI 入口或工程依赖。
  2. 禁止新增从前端、Rust 后端、脚本或配置主动调用 server-node/ 的逻辑。
  3. 禁止在 server-node/ 内继续新增业务能力;后续能力必须落到 server-rs/ 对应 crate。
  4. 历史文档、审计文档、迁移基线中允许保留 server-node/ 作为旧系统来源说明,但不得把它描述成当前推荐实现。
  5. 第一批物理删除后,提示词资产与提示词相关工作流继续按迁移核对项追踪,不再恢复旧工程目录。

3. 删除前迁移核对项

以下资产曾作为删除前核对项。第一批物理删除后,旧实现不再从工作区直接读取;如需继续核对能力缺口,只允许通过历史提交、迁移文档或 server-rs/ 已迁移实现追溯:

  1. server-node/src/prompts/customWorldEntityPrompts.ts:自定义世界实体生成 prompt。
  2. server-node/src/prompts/customWorldSceneNpcPrompts.ts:自定义世界场景 NPC prompt。
  3. server-node/src/prompts/questPrompts.ts:任务意图识别 prompt。
  4. server-node/src/prompts/runtimeItemPrompts.ts:运行时物品意图识别 prompt。
  5. server-node/src/prompts/customWorldOrchestratorPrompts.ts:旧 Custom World JSON 生成与修复 prompt。
  6. src/services/ai.tssrc/prompts/customWorldPrompts.ts 中仍由前端承载的 AI orchestration / prompt 编排。

4. 工程防线

  1. 第一批物理删除后,根目录 package.json 不再保留 server-node:*dev:nodecheck:server-node-freeze 等旧入口。
  2. Vite 与本地开发脚本默认只指向 Rust api-server,不再保留 Node/Rust 后端切换开关。
  3. 历史文档允许保留旧 server-node 字样,但新增工程入口、脚本、依赖、运行说明不得再指向旧 Node 后端。
  4. 若后续需要恢复旧能力,只能迁移到 server-rs/ 对应 crate 或 Axum facade不恢复 server-node/ 工程目录。

5. 后续处理顺序

  1. 继续核对提示词资产与 prompt 工作流是否已完整落到 Rust 主线。
  2. 继续把前端残留业务编排迁入 server-rs/
  3. 清理技术索引中容易误导当前入口的 Node / Express 文案。
  4. 保留历史审计材料,但不得把旧 Node 后端描述为当前推荐实现。

6. 已确认迁移项

6.1 场景幕背景图提示词

2026-04-25 已把旧 Node 自动资产链路中的场景幕背景图提示词包装迁移到 Rust 主线:

  1. 旧来源:server-node/src/services/customWorldAgentAutoAssetService.tsbuildSceneActPrompt(...)
  2. 新主源:server-rs/crates/api-server/src/custom_world.rsbuild_scene_act_background_image_prompt(...)
  3. 使用位置:generate_draft_foundation_act_backgrounds(...) 收集 sceneChapterBlueprints[].acts[] 后,先构造幕背景图专用提示词,再调用 generate_custom_world_scene_image_for_profile(...)
  4. 保留语义:世界名、场景名、幕标题、幕摘要、幕目标、过渡钩子、主角色、辅助角色、世界气质、背景描述,以及“只生成环境背景,不出现角色立绘、站位 UI、对白框、按钮或文字”的约束。
  5. 迁移边界:server-node/ 仅作为历史来源说明,不再参与运行;后续调整统一修改 Rust 主源。

7. 第一批安全删除记录2026-04-25

本批次开始把冻结隔离升级为物理删除。执行依据是项目后端主线已固定为 server-rs/ 的 Rust + SpacetimeDB 多 crate 方案,旧 server-node/ 不再作为可运行、可扩展、可引用的工程目录保留。

7.1 删除范围

  1. 删除 server-node/ 目录本体,旧实现只允许通过历史提交、迁移文档和已迁移到 server-rs/ 的代码追溯。
  2. 删除旧 Node 后端专用入口:scripts/dev-node.mjsscripts/server-node-frozen.mjsscripts/check-server-node-freeze.mjsscripts/server-node-freeze-baseline.jsonscripts/smoke-server-node.tsscripts/smoke-same-origin-stack.tsscripts/m7-api-compare.tsscripts/deploy.shscripts/update.shview-llm-logs.ps1
  3. 根目录 package.json 删除 server-node:*dev:nodem7:api-comparecheck:server-node-freeze 等旧入口,并移除 express@types/express 依赖。
  4. npm run dev 改为启动 Rust 本地栈Vite 默认只代理到 Rust api-server,不再保留 GENARRATIVE_BACKEND_STACK 的 Node/Rust 双栈切换口。
  5. 清理 .gitignore 中只服务 server-node/ 的忽略规则,并同步 README.md.env.exampleserver-rs/README.mdscripts/dev-server/README.md

7.2 暂不处理范围

  1. 历史 PRD、审计、迁移基线中的 server-node 文案暂时保留为历史记录,不在第一批中大规模改写。
  2. backend-rewrite-tasklist/ 中以旧 Node 后端为对照的迁移材料暂时保留,作为后续核对 Rust 主线能力缺口的历史审计输入。
  3. src/services/ai.tssrc/prompts/customWorldPrompts.ts 的前端残留编排不属于本批 Node 后端删除范围;后续继续按“前端只负责表现,业务逻辑进入 server-rs/”单独收口。

7.3 后续批次建议

  1. 技术文档索引中的 Node / Express 后端条目只保留为历史资料,不再作为当前入口或推荐方案。
  2. 后续如继续整理历史文档,只把仍描述 Express / PostgreSQL 为当前目标架构的文字修正为“历史阶段口径”。
  3. 继续把前端残留业务逻辑迁入 server-rs;涉及 SpacetimeDB 的设计、实现、脚本和绑定继续显式使用相关 skill。

7.4 本轮安全核对结果

2026-04-25 本轮开始分批删除时,已确认第一批工程入口层面满足以下条件:

  1. 工作区根目录下已不存在 server-node/ 物理目录。
  2. scripts/ 下已不存在旧 Node 后端专用运行、冻结、smoke、API 对比脚本。
  3. 根目录 package.json 不再包含 server-node:*dev:nodem7:api-comparecheck:server-node-freeze 入口。
  4. package.jsonpackage-lock.json 不再包含 express@types/expresspgpostgres 依赖包。
  5. README.mdscripts/dev-server/README.mdserver-rs/README.mdvite.config.tsscripts/*.mjssrc/packages/server-rs/ 未发现仍主动启动或调用 server-node 的当前工程入口。

7.5 第二批删除边界

第二批不再删除可运行工程代码,而是清理“容易误导当前实现口径”的历史文档索引:

  1. 只修正文档中仍把 server-node、Express 或 PostgreSQL 描述为当前推荐后端的句子。
  2. 保留审计、PRD、迁移基线中作为历史事实、旧实现来源、能力对照的 server-node 引用。
  3. 不大规模重写包含中文剧情、需求、审计结论的历史文档,避免把真实历史上下文抹平。
  4. 若发现某个历史文档仍指导新开发继续写 Node 后端,先把该文档改为“历史阶段口径”,再继续工程处理。

8. 开发命令与脚本复核2026-04-26

本轮按“server-node/ 已完全移除”的状态复核当前开发入口、脚本和工程配置,确认不再保留旧 Node 后端或 Express 运行路径。

8.1 已复核范围

  1. 根目录 package.jsonpackage-lock.json
  2. 根目录 README.md.env.example.gitignorevite.config.ts
  3. scripts/.github/jenkins/server-rs/ 下的已跟踪文本文件。

8.2 复核结论

  1. package.json 中不存在 server-node:*dev:nodem7:api-comparecheck:server-node-freeze 等旧入口。
  2. scripts/ 下不存在 dev-node.mjssmoke-server-node.tsm7-api-compare.tssmoke-same-origin-stack.ts 等旧 Node 后端脚本。
  3. package.jsonpackage-lock.json 中不存在 express@types/expresspgpostgres 依赖。
  4. 当前开发入口继续固定为 npm run devnpm run dev:webnpm run api-server:maincloud 与 Rust / SpacetimeDB 相关脚本,不恢复旧 Node 后端切换开关。

9. Caddy 本地服务入口移除2026-04-26

serve:caddy 仅服务旧的 dist 本地代理验证链路,不再属于当前 Rust / SpacetimeDB 主开发入口。本轮删除该入口和配套文件,避免开发命令继续暴露第二套本地服务方式。

9.1 删除范围

  1. 根目录 package.json 删除 serve:caddy
  2. 删除 scripts/run-caddy-dev.mjs
  3. 删除 tools/Caddyfile.dev
  4. .env.example 删除 CADDY_API_UPSTREAM 样例变量。

9.2 后续口径

  1. 本地完整联调继续使用 npm run dev
  2. 单独前端联调继续使用 npm run dev:web 并通过 Vite 代理到 Rust api-server
  3. 生产包预览继续使用 Vite preview,不恢复 Caddy 专用开发入口。