From c76eba8a0e7840935894b564559686bb89dd8b9c Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 29 Jul 2026 14:53:54 +0800 Subject: [PATCH] =?UTF-8?q?docs(enemy):=20T15=20=E5=B9=B6=E5=85=A5=20T13?= =?UTF-8?q?=20=E5=AE=A1=E6=9F=A5=E9=81=97=E7=95=99=E2=80=94=E2=80=94Assign?= =?UTF-8?q?Modules=20=E6=94=B9=E5=90=8D=20+=20InvalidateGraph?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- .../2026-07-29-enemy-ai-composable-modules.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md b/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md index 086113f7..d4eb2fd0 100644 --- a/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md +++ b/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md @@ -2551,6 +2551,25 @@ git commit -m "feat(enemy): EnemyAiBrain 支持配方资产/AiScript id 二选 ## Task 15: `EnemyAiRecipeWizard` 脚手架 +> **T13 审查遗留的两项,在本任务一并做**(当时推迟的理由:彼时只有测试调用,无活的隐患; +> 本任务的向导是第二个调用方,改名与缓存失效在此落地最自然): +> +> 1. **`PerceptionRecipeSO.SetModulesForTests` 改名为 `AssignModules`** —— 它不再只服务测试, +> 向导也要用它装配模块,原名误导。 +> 2. **装配后必须让已缓存的图失效**。`AiRecipeSO` 持有 `_cached`(flyweight);若在 +> `GetOrBuildGraph()` 之后改模块,改动不会生效直到下次 `PlayModeResetHook` 清理—— +> 静默的陈旧图。为此在 `AiRecipeSO` 加: +> ```csharp +> /// 装配 / 修改模块后调用,丢弃已缓存的图。 +> protected void InvalidateGraph() => _cached = null; +> ``` +> 并让 `AssignModules` 在末尾调它。 +> +> 另一条 Minor(drawer 按简单类型名匹配,跨命名空间同名会静默选错)不在本次做: +> 当前 5 个模块名字唯一,不可达;若模块数增长到出现同名,再改成按 `FullName` 匹配。 + + + CLAUDE.md 第 2 条:不裸建。配方资产必须由向导产出,保证路径、命名符合 `AssetFolderSpec`。 **Files:**