From 7d842f0b150668bed4dcea3c18923328330a4384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Mon, 21 Sep 2026 15:32:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E8=AE=B0spacetime-client=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=89=AF=E6=9C=AC=E6=96=87=E4=BB=B6=E7=9A=84=E6=8E=92?= =?UTF-8?q?=E9=9A=9C=E7=BB=8F=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 记录 active.rs 用 path 属性指定真实模块、同名副本不参与编译的现象与原因 - 给出改动前先查 path 属性、只改 active 目录、用编译双绿确认的处理口径 --- docs/project-memory/shared-memory/pitfalls.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/project-memory/shared-memory/pitfalls.md b/docs/project-memory/shared-memory/pitfalls.md index a8c482d06..c2ba880c9 100644 --- a/docs/project-memory/shared-memory/pitfalls.md +++ b/docs/project-memory/shared-memory/pitfalls.md @@ -5710,3 +5710,11 @@ Cocos Creator 根目录由 `package.json.creator.version` 与普通 `assets/` - **处理(现行口径)**:① 依赖里只放数据,回调走 ref(`openActiveProjectRef`)——effect 不再因回调换身份而重跑;② `useDirectActiveTurns` 轮询只在快照内容变化时才 `setActiveTurns`(并给空态做引用稳定),避免每 5 秒换一次数组身份去带动下游 effect;③ `WindowChrome` 的 context value 用 `useMemo` 收口。判断类问题的通行判据:**凡是把"每次渲染新生成的函数/对象"写进 effect 依赖的,一律视为 bug**。 - **验证**:修复后同一台机器、同一路径下 35 秒内新增 `Maximum update depth` **0 条**,renderer 工作集 **254 MB**(修复前 4.2–4.4 GB);`apps/ai-game-creator-shell/tests/directActiveTurns.test.tsx` 断言轮询返回值不变时快照引用不变。 - **关联**:`apps/ai-game-creator-shell/src/features/app-shell/WorkspaceLauncher.tsx`、`apps/ai-game-creator-shell/src/features/agent-runtime/directActiveTurns.ts`、`apps/ai-game-creator-shell/src/components/WindowChrome.tsx`、`apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts`。 + +## 2026-09-21 改了 `spacetime-client` 的同名文件却不生效:未参与编译的重复副本 + +- **现象**:给 `spacetime-client` 的 external generation facade 新增方法(`set_external_generation_job_provider_checkpoint`)后,`cargo check -p spacetime-client` 通过,但在同一文件里继续加注释、改签名都对调用方没有任何影响,直到 api-server 侧报「方法不存在」才发现改动落在了一份死文件上。 +- **原因**:`src/active.rs` 用 `#[path = "active/.rs"] pub mod ;` 显式指定真实模块路径,`src/.rs` 里另有一份同名副本并不参与编译。`rg "fn <名字>"` 会同时命中两份,肉眼很容易以为改对了。 +- **处理(现行口径)**:改 `spacetime-client` 的模块前先 `rg -n '#\\[path = "active/' server-rs/crates/spacetime-client/src/active.rs` 确认该模块的真实文件;只有 `active/` 下的文件参与编译。历史死副本 `src/external_generation.rs` 已在 `ac08ccbe3` 删除,不要再以「两边都改一遍」的方式维持同步。 +- **验证**:`cargo check -p spacetime-client` 与 `cargo check -p api-server` 同时通过,且 `rg --files server-rs/crates/spacetime-client/src` 中同名文件只剩一份。 +- **关联**:`server-rs/crates/spacetime-client/src/active.rs`、`server-rs/crates/spacetime-client/src/active/external_generation.rs`、`server-rs/crates/spacetime-client/src/active/mapper.rs`。