9.1 KiB
9.1 KiB
server-node 冻结隔离说明(2026-04-24)
1. 当前状态
server-node/ 已进入冻结隔离状态,不再作为可运行、可扩展、可引用的后端工程使用。
冻结原因:项目后端主线已经切到 server-rs/ 的 Rust + SpacetimeDB 多 crate 方案,继续保留可执行的 server-node/ 入口会误导后续开发,并增加提示词资产、AI 工作流与运行态逻辑的迁移漂移风险。
2. 冻结边界
- 禁止新增任何以
server-node/为目标的运行脚本、开发入口、CI 入口或工程依赖。 - 禁止新增从前端、Rust 后端、脚本或配置主动调用
server-node/的逻辑。 - 禁止在
server-node/内继续新增业务能力;后续能力必须落到server-rs/对应 crate。 - 历史文档、审计文档、迁移基线中允许保留
server-node/作为旧系统来源说明,但不得把它描述成当前推荐实现。 - 第一批物理删除后,提示词资产与提示词相关工作流继续按迁移核对项追踪,不再恢复旧工程目录。
3. 删除前迁移核对项
以下资产曾作为删除前核对项。第一批物理删除后,旧实现不再从工作区直接读取;如需继续核对能力缺口,只允许通过历史提交、迁移文档或 server-rs/ 已迁移实现追溯:
server-node/src/prompts/customWorldEntityPrompts.ts:自定义世界实体生成 prompt。server-node/src/prompts/customWorldSceneNpcPrompts.ts:自定义世界场景 NPC prompt。server-node/src/prompts/questPrompts.ts:任务意图识别 prompt。server-node/src/prompts/runtimeItemPrompts.ts:运行时物品意图识别 prompt。server-node/src/prompts/customWorldOrchestratorPrompts.ts:旧 Custom World JSON 生成与修复 prompt。src/services/ai.ts与src/prompts/customWorldPrompts.ts中仍由前端承载的 AI orchestration / prompt 编排。
4. 工程防线
- 第一批物理删除后,根目录
package.json不再保留server-node:*、dev:node、check:server-node-freeze等旧入口。 - Vite 与本地开发脚本默认只指向 Rust
api-server,不再保留 Node/Rust 后端切换开关。 - 历史文档允许保留旧
server-node字样,但新增工程入口、脚本、依赖、运行说明不得再指向旧 Node 后端。 - 若后续需要恢复旧能力,只能迁移到
server-rs/对应 crate 或 Axum facade,不恢复server-node/工程目录。
5. 后续处理顺序
- 继续核对提示词资产与 prompt 工作流是否已完整落到 Rust 主线。
- 继续把前端残留业务编排迁入
server-rs/。 - 清理技术索引中容易误导当前入口的 Node / Express 文案。
- 保留历史审计材料,但不得把旧 Node 后端描述为当前推荐实现。
6. 已确认迁移项
6.1 场景幕背景图提示词
2026-04-25 已把旧 Node 自动资产链路中的场景幕背景图提示词包装迁移到 Rust 主线:
- 旧来源:
server-node/src/services/customWorldAgentAutoAssetService.ts的buildSceneActPrompt(...)。 - 新主源:
server-rs/crates/api-server/src/custom_world.rs的build_scene_act_background_image_prompt(...)。 - 使用位置:
generate_draft_foundation_act_backgrounds(...)收集sceneChapterBlueprints[].acts[]后,先构造幕背景图专用提示词,再调用generate_custom_world_scene_image_for_profile(...)。 - 保留语义:世界名、场景名、幕标题、幕摘要、幕目标、过渡钩子、主角色、辅助角色、世界气质、背景描述,以及“只生成环境背景,不出现角色立绘、站位 UI、对白框、按钮或文字”的约束。
- 迁移边界:
server-node/仅作为历史来源说明,不再参与运行;后续调整统一修改 Rust 主源。
7. 第一批安全删除记录(2026-04-25)
本批次开始把冻结隔离升级为物理删除。执行依据是项目后端主线已固定为 server-rs/ 的 Rust + SpacetimeDB 多 crate 方案,旧 server-node/ 不再作为可运行、可扩展、可引用的工程目录保留。
7.1 删除范围
- 删除
server-node/目录本体,旧实现只允许通过历史提交、迁移文档和已迁移到server-rs/的代码追溯。 - 删除旧 Node 后端专用入口:
scripts/dev-node.mjs、scripts/server-node-frozen.mjs、scripts/check-server-node-freeze.mjs、scripts/server-node-freeze-baseline.json、scripts/smoke-server-node.ts、scripts/smoke-same-origin-stack.ts、scripts/m7-api-compare.ts、scripts/deploy.sh、scripts/update.sh、view-llm-logs.ps1。 - 根目录
package.json删除server-node:*、dev:node、m7:api-compare与check:server-node-freeze等旧入口,并移除express、@types/express依赖。 npm run dev改为启动 Rust 本地栈;Vite 默认只代理到 Rustapi-server,不再保留GENARRATIVE_BACKEND_STACK的 Node/Rust 双栈切换口。- 清理
.gitignore中只服务server-node/的忽略规则,并同步README.md、.env.example、server-rs/README.md与scripts/dev-server/README.md。
7.2 暂不处理范围
- 历史 PRD、审计、迁移基线中的
server-node文案暂时保留为历史记录,不在第一批中大规模改写。 backend-rewrite-tasklist/中以旧 Node 后端为对照的迁移材料暂时保留,作为后续核对 Rust 主线能力缺口的历史审计输入。src/services/ai.ts与src/prompts/customWorldPrompts.ts的前端残留编排不属于本批 Node 后端删除范围;后续继续按“前端只负责表现,业务逻辑进入server-rs/”单独收口。
7.3 后续批次建议
- 技术文档索引中的 Node / Express 后端条目只保留为历史资料,不再作为当前入口或推荐方案。
- 后续如继续整理历史文档,只把仍描述
Express / PostgreSQL为当前目标架构的文字修正为“历史阶段口径”。 - 继续把前端残留业务逻辑迁入
server-rs;涉及 SpacetimeDB 的设计、实现、脚本和绑定继续显式使用相关 skill。
7.4 本轮安全核对结果
2026-04-25 本轮开始分批删除时,已确认第一批工程入口层面满足以下条件:
- 工作区根目录下已不存在
server-node/物理目录。 scripts/下已不存在旧 Node 后端专用运行、冻结、smoke、API 对比脚本。- 根目录
package.json不再包含server-node:*、dev:node、m7:api-compare与check:server-node-freeze入口。 package.json与package-lock.json不再包含express、@types/express、pg、postgres依赖包。README.md、scripts/dev-server/README.md、server-rs/README.md、vite.config.ts、scripts/*.mjs、src/、packages/与server-rs/未发现仍主动启动或调用server-node的当前工程入口。
7.5 第二批删除边界
第二批不再删除可运行工程代码,而是清理“容易误导当前实现口径”的历史文档索引:
- 只修正文档中仍把
server-node、Express 或 PostgreSQL 描述为当前推荐后端的句子。 - 保留审计、PRD、迁移基线中作为历史事实、旧实现来源、能力对照的
server-node引用。 - 不大规模重写包含中文剧情、需求、审计结论的历史文档,避免把真实历史上下文抹平。
- 若发现某个历史文档仍指导新开发继续写 Node 后端,先把该文档改为“历史阶段口径”,再继续工程处理。
8. 开发命令与脚本复核(2026-04-26)
本轮按“server-node/ 已完全移除”的状态复核当前开发入口、脚本和工程配置,确认不再保留旧 Node 后端或 Express 运行路径。
8.1 已复核范围
- 根目录
package.json与package-lock.json。 - 根目录
README.md、.env.example、.gitignore与vite.config.ts。 scripts/、.github/、jenkins/与server-rs/下的已跟踪文本文件。
8.2 复核结论
package.json中不存在server-node:*、dev:node、m7:api-compare、check:server-node-freeze等旧入口。scripts/下不存在dev-node.mjs、smoke-server-node.ts、m7-api-compare.ts、smoke-same-origin-stack.ts等旧 Node 后端脚本。package.json与package-lock.json中不存在express、@types/express、pg、postgres依赖。- 当前开发入口继续固定为
npm run dev、npm run dev:web、npm run api-server:maincloud与 Rust / SpacetimeDB 相关脚本,不恢复旧 Node 后端切换开关。
9. Caddy 本地服务入口移除(2026-04-26)
serve:caddy 仅服务旧的 dist 本地代理验证链路,不再属于当前 Rust / SpacetimeDB 主开发入口。本轮删除该入口和配套文件,避免开发命令继续暴露第二套本地服务方式。
9.1 删除范围
- 根目录
package.json删除serve:caddy。 - 删除
scripts/run-caddy-dev.mjs。 - 删除
tools/Caddyfile.dev。 .env.example删除CADDY_API_UPSTREAM样例变量。
9.2 后续口径
- 本地完整联调继续使用
npm run dev。 - 单独前端联调继续使用
npm run dev:web并通过 Vite 代理到 Rustapi-server。 - 生产包预览继续使用 Vite
preview,不恢复 Caddy 专用开发入口。