[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1545":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":13,"starSnapshotCount":13,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},1545,"UE-Mapping","Liamour\u002FUE-Mapping","Liamour",null,"HTML",601,46,30,0,49,368,73.02,false,"master",true,[],"2026-06-12 04:00:10","\u003Cdiv align=\"center\">\n\n# AICartographer\n\n**[English](README.en.md) · 简体中文**\n\n**为 Unreal Engine 5 而生的 AI 蓝图地图仪**\n\n把整个 UE5 项目折叠成一张可点开、可叙事、可分析的地图 —— 由 LLM 给每个蓝图写下\"它在做什么 \u002F 谁调用谁\"，由力导向图给你看清系统形状，由 Markdown vault 让你把笔记永久留在自己的项目里。\n\n[![UE](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FUnreal_Engine-5.7-313131?logo=unrealengine)](https:\u002F\u002Fwww.unrealengine.com\u002F)\n[![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61dafb?logo=react&logoColor=000)](https:\u002F\u002Freact.dev\u002F)\n[![Vite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-8-646cff?logo=vite&logoColor=fff)](https:\u002F\u002Fvitejs.dev\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-009688?logo=fastapi&logoColor=fff)](https:\u002F\u002Ffastapi.tiangolo.com\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green)](#license)\n\n[功能特性](#功能特性) · [架构](#架构) · [四级视图](#四级视图) · [快速开始](#快速开始) · [便携包](#便携包安装推荐) · [LLM 厂商](#llm-厂商支持) · [开发](#开发)\n\n\u003C\u002Fdiv>\n\n---\n\n## 这是什么\n\nAICartographer 是一个嵌入 UE5 编辑器的 React 插件 + Python 后端，用 LLM 给整个项目的蓝图建一份\"叙事地图\"：\n\n- **不是又一个蓝图浏览器** — 它写故事：每个 BP 的 markdown 页面会讲\"`OnDamageReceived` 在 `CurrentHP \u003C= 0` 时被 broadcast，被 `GameMode.HandleDeath` 消费\"，而不是干巴巴列变量名。\n- **不是又一个 AI 工具** — 它产出真正属于你项目的资产：所有 LLM 分析、笔记、tag 都落在 `\u003Cproject>\u002F.aicartographer\u002Fvault\u002F` 下的 .md 文件里，**每位开发者本地一份**，不进 git（[原因和入职流程见下方](#团队协作vault-不进-git)）。\n- **不是云端工具** — UE 编辑器和后端都跑在你本地，LLM key 由你输入并只活在 localStorage 里。\n\n> 适合谁：处理过中大型 UE5 项目、想快速上手别人代码 \u002F 自己旧项目的开发者。第一次拉到一个 50+ 蓝图的工程时，这玩意能让你少看 80% 的废墟。\n\n---\n\n## 功能特性\n\n| 类别 | 能做什么 |\n|---|---|\n| **AI 叙事** | LLM 给每个蓝图写\"INTENT \u002F EXECUTION FLOW \u002F MEMBER INTERACTIONS \u002F EXTERNAL COUPLING \u002F RISK\"五段叙事 |\n| **系统聚类** | L1 项目级 LLM 把蓝图聚成 3-8 个系统（combat \u002F ai \u002F spawn \u002F ui ...），并写出跨系统耦合分析 |\n| **四级视图** | Lv0 总览墙 → Lv1 系统级图 → Lv2 单个蓝图详情 → Lv3 函数内部 K2Node 流图 |\n| **双视图模式** | 同一节点可在「Markdown 阅读」和「力导向图浏览」之间一键切换 |\n| **多厂商 LLM** | 同时支持 Volcengine（Doubao \u002F DeepSeek 等 Ark 端点）和 Anthropic Claude（含 extended-thinking 五档 effort） |\n| **完整 i18n** | UI + LLM 输出整套支持中英切换，受控词表 \u002F asset_path 保持英文以保兼容 |\n| **持久笔记** | `## [ NOTES ]` 区段是开发者私有，重扫永不覆盖；AST 变化时会标 `notes_review_needed` |\n| **本地优先** | 优先走 UE C++ Bridge 直读 vault；后端不可达时降级 HTTP，AI Chat 离线优雅降级 |\n| **增量扫描** | AST hash 命中就跳过；framework scan（无 LLM）\u002F deep scan（单节点 LLM）\u002F batch scan（全量 LLM）三档可选 |\n\n---\n\n## 架构\n\n```mermaid\ngraph TB\n    subgraph UE[\"UE5 编辑器进程\"]\n        Editor[蓝图编辑器]\n        Plugin[AICartographer C++ 插件]\n        WebView[CEF WebView\u003Cbr\u002F>嵌入 React UI]\n        Plugin -->|BindUObject| WebView\n        Editor -.->|读取 UEdGraph| Plugin\n    end\n\n    subgraph Frontend[\"React 前端 (CEF 内)\"]\n        UI[四级视图\u003Cbr\u002F>+ Settings + AIChat]\n        Stores[Zustand stores\u003Cbr\u002F>useLLMStore · useScanStore · useUIStore]\n        Bridge[bridgeApi.ts\u003Cbr\u002F>JS ↔ UFUNCTION]\n        HTTP[vaultApi.ts \u002F scanApi.ts]\n        UI --> Stores\n        UI --> Bridge\n        UI --> HTTP\n    end\n\n    subgraph Backend[\"Python FastAPI 后端\"]\n        Routes[main.py 路由]\n        VW[vault_writer.py\u003Cbr\u002F>frontmatter + markdown]\n        LP[llm_providers.py\u003Cbr\u002F>Volcengine + Claude]\n        Redis[(Redis 任务队列)]\n        Routes --> VW\n        Routes --> LP\n        Routes --> Redis\n    end\n\n    subgraph Vault[\"项目 vault (磁盘)\"]\n        MD[\"&lt;project&gt;\u002F.aicartographer\u002Fvault\u002F\u003Cbr\u002F>Blueprints\u002F*.md · Systems\u002F*.md · _meta\u002F\"]\n    end\n\n    subgraph LLM[\"LLM 服务\"]\n        VOL[Volcengine Ark]\n        ANT[Anthropic API]\n    end\n\n    WebView \u003C--> UI\n    Bridge \u003C--> Plugin\n    HTTP -->|可选降级| Routes\n    VW --> MD\n    Bridge -.->|直读 markdown| MD\n    LP --> VOL\n    LP --> ANT\n\n    style UE fill:#2d3748,stroke:#4a5568,color:#fff\n    style Frontend fill:#1a365d,stroke:#2c5282,color:#fff\n    style Backend fill:#22543d,stroke:#2f855a,color:#fff\n    style Vault fill:#744210,stroke:#975a16,color:#fff\n    style LLM fill:#553c9a,stroke:#6b46c1,color:#fff\n```\n\n**桥优先级**：C++ Bridge 可用就走 Bridge（无需启动 Python），缺失方法时降级到 `localhost:8000` HTTP。LLM 调用永远走后端（Bridge 不持有 key）。\n\n---\n\n## 四级视图\n\n| 层级 | 名称 | 看什么 | 数据来源 |\n|---|---|---|---|\n| **Lv0** | CardWall | 项目总览：所有系统 \u002F 蓝图 \u002F C++ \u002F Interface 的卡片墙 | `Systems\u002F_overview.md` + 全 vault 索引 |\n| **Lv1** | SystemGraph \u002F SystemMarkdown | 单个系统内部的成员关系图（d3-force 力导向）或叙事 .md | `Systems\u002F\u003Caxis>.md` |\n| **Lv2** | BlueprintFocus \u002F BlueprintGraph | 单个蓝图的 Exports \u002F Variables \u002F Edges \u002F Backlinks 详情，或它内部成员的图 | `Blueprints\u002F\u003Cname>.md` |\n| **Lv3** | FunctionFlow | 单个函数的 K2Node 执行图（事件红 \u002F 调用蓝 \u002F 分支棕 \u002F Cast 绿，exec 边带动画） | C++ Bridge `ReadBlueprintFunctionFlow` 直读 UEdGraph |\n\n辅助：\n- **AIChat** — 右下浮窗，把当前 Lv2 节点喂给 LLM 当上下文聊\n- **QuickSwitcher** — `Cmd\u002FCtrl+P`，按标题 \u002F tag \u002F intent 模糊匹配跳转\n- **Settings** — 项目根 + LLM 厂商配置 + 语言开关 + Rebuild backlinks \u002F Rebuild MOCs\n\n> _截图位待上传 — 在 `docs\u002Fimages\u002F` 下放 `lv0-cardwall.png` `lv1-graph.png` `lv2-focus.png` `lv3-flow.png`，再编辑此处的图片引用。_\n>\n> ![Lv1 SystemGraph](docs\u002Fimages\u002Flv1-graph.png)\n> ![Lv3 FunctionFlow](docs\u002Fimages\u002Flv3-flow.png)\n\n---\n\n## 团队协作（vault 不进 git）\n\nvault 内容（`\u003Cproject>\u002F.aicartographer\u002Fvault\u002F*.md`）是 LLM 给每个蓝图写的叙事笔记 + 结构化 frontmatter，**每位开发者本地一份**。它不进 git，原因有两个：\n\n- LLM 输出每次有差异 → 进 git 会让每次扫描产生巨大 diff、merge 冲突频繁\n- vault 取决于本地的 LLM key、模型选择、扫描时机 → 不同开发者扫出来的 .md 不会一致\n\n### 新人入职流程\n\n1. 拉代码（你的 UE 项目，不带 vault）\n2. 启动 plugin，配置 LLM key 和模型（设置面板）\n3. 点 **Run framework scan**（秒级，不调 LLM，写出骨架）\n4. 顶栏 **Run project scan**（首次全量大约 15-30 分钟，取决于项目大小和模型）\n5. 之后正常开发，AssetRegistry stale 监听会自动 mark 需要重扫的笔记（路线图阶段 A1）\n\n### 共享什么 \u002F 不共享什么\n\n| 共享（进 git） | 不共享（本地） |\n|---|---|\n| UE 项目代码 + AICartographer plugin | `.aicartographer\u002Fvault\u002FBlueprints\u002F*.md` |\n| 后端配置（`backend\u002F.env.local` 除外） | `.aicartographer\u002Fvault\u002FSystems\u002F*.md` |\n| 词表（`_meta\u002Ftag-vocabulary.json`，可选共享） | 你本地的 LLM key |\n\n**你的 UE 项目 .gitignore 必须包含**：\n\n```gitignore\n.aicartographer\u002F\n```\n\n（如果你 fork 的是 AICartographer 仓库本身，本仓库的 .gitignore 已经包含此规则。）\n\n---\n\n## 快速开始\n\n两条路径：\n\n| 你是 | 走哪条 | 总耗时 |\n|---|---|---|\n| 想直接用 \u002F 把它发给同事 | [**便携包安装**](#便携包安装推荐) — 1.6 MB zip，三个 `.bat` | ~10 min |\n| 想改源码 \u002F 二次开发 | [**从源码构建**](#从源码构建) — 克隆仓库 + npm + pip | ~30 min |\n\n---\n\n## 便携包安装（推荐）\n\n> 给\"只想用上\"的同事 — 不需要克隆仓库、不需要装 Node、不需要装 Memurai。仓库自带的便携 Redis 直接打进 zip。\n\n### 前置\n\n- Windows 10 \u002F 11\n- **Unreal Engine 5.6+**\n- **Visual Studio 2022**（带\"使用 C++ 的桌面开发\"工作负载） — UE 第一次开项目时用它编插件\n- **Python 3.11+** — 安装时务必勾 \"Add Python to PATH\"（[python.org\u002Fdownloads](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)）\n- **LLM API key**：Volcengine endpoint id（`ep-...`）+ key，或 Anthropic API key\n- **一个 UE C++ 项目**作为测试床；没有可在 Epic Launcher → Marketplace 免费下载 [Cropout sample](https:\u002F\u002Fwww.unrealengine.com\u002Fmarketplace\u002Fen-US\u002Fproduct\u002Fcropout-sample-project)\n\n### 步骤（约 10 分钟）\n\n1. **拿到 zip** — 从 [GitHub Releases](https:\u002F\u002Fgithub.com\u002FLiamour\u002FUE-Mapping\u002Freleases) 下，或自己构建：\n   ```powershell\n   git clone https:\u002F\u002Fgithub.com\u002FLiamour\u002FUE-Mapping.git\n   cd UE-Mapping\n   .\\dist\\build-release.ps1\n   # → release\u002FAICartographer-Portable-\u003C日期>.zip (1.6 MB)\n   ```\n\n2. **解压 + 启动后端** — 解压到任意目录（比如 `D:\\AICartographer\\`），双击 `START.bat`\n   - 首次自动建 venv + pip install（1-3 分钟）\n   - 看到 `OK Backend healthy at http:\u002F\u002F127.0.0.1:8000\u002Fapi\u002Fhealth` 就成功了\n   - **这个窗口别关** — 关了后端就停了。要停服务在窗口里按 Ctrl+C\n\n3. **装插件到 UE 项目** — 双击 `INSTALL-PLUGIN.bat`\n   - 自动列出 `Documents\\Unreal Projects\\` 下的项目，选编号或粘贴 `.uproject` 路径\n   - 脚本拷 `plugin\u002FAICartographer\u002F` → `\u003C你项目>\u002FPlugins\u002FAICartographer\u002F`\n   - 自动改 `.uproject` 把插件加到 `Plugins[]` 并启用\n\n4. **第一次打开 .uproject** — 双击 `.uproject` 文件\n   - UE 弹 \"Missing Modules\" 对话框 → 点 **Yes** 让它编插件（VS 后台跑 1-2 分钟）\n   - Blueprint-only 项目会先弹\"Add C++ class\"引导转 C++（一次性）\n   - 编完 UE 自动打开\n\n5. **打开面板 + 配置** — UE 菜单 `Window` → `Developer Tools` → `Misc` → `AICartographer Web UI`\n   - 右上角齿轮 → **Settings**\n   - **Project root**：填 `.uproject` 所在文件夹（比如 `D:\\MyGame`）\n   - **Language**：English \u002F 简体中文\n   - **LLM Provider**：选 Volcengine 或 Claude → 填 key → 点 **Test connection** 看绿灯\n   - Settings → **Run framework scan**（秒级、不烧钱、写出骨架 .md）\n   - 顶栏 → **Run project scan**（吃 LLM 配额，30 秒~几分钟）\n   - 完成后进 **Lv0** 总览 → 点系统进 **Lv1** → 点蓝图进 **Lv2** → 点函数进 **Lv3**\n\n扫完后 vault 落在 `\u003C你项目>\u002F.aicartographer\u002Fvault\u002F` 下，本地拥有，**不进 git**（[团队协作章节](#团队协作vault-不进-git) 解释了原因）。详细排错见 [INSTALL.md](INSTALL.md) 和便携包内的 `README-FIRST.txt`。\n\n### 便携包目录结构\n\n```\nAICartographer-Portable-\u003C日期>\u002F\n├── START.bat                 ← 启动后端（双击）\n├── STOP.bat                  ← 停止 \u002F 清理残留\n├── INSTALL-PLUGIN.bat        ← 拷插件到一个 UE 项目\n├── README-FIRST.txt          ← 给终端用户的 5 分钟指南\n├── backend\u002F                  ← Python 后端源码（100 KB）\n├── plugin\u002FAICartographer\u002F    ← UE 插件 + 预编译 React WebUI（580 KB）\n├── runtime\u002Fredis\u002F            ← 便携 Redis 二进制（2.9 MB）\n└── tools\u002F                    ← launcher.py \u002F install_plugin.py \u002F stop.py\n```\n\n首次启动后会多出 `runtime\u002Fpython-venv\u002F`（约 150-200 MB），存 fastapi\u002Fuvicorn\u002Fanthropic\u002Fopenai 等依赖。\n\n---\n\n## 从源码构建\n\n> 想 hack 代码 \u002F 二次开发走这条。如果只是用，请走上面的便携包。\n\n### 前置条件\n\n- **UE 5.7+**（构建好 AICartographer 插件）\n- **Python 3.11+**（推荐 3.14；Win 用户注意 PATH 配 `C:\\Python\u003Cver>\\Scripts`）\n- **Node 20+**（开发前端用；UE webview 直接吃 build 好的单文件 bundle）\n- **Redis**（任务队列；Win 自带的 3.0.504 已通过 pipeline-HSET 兼容）\n- **LLM API key**：Volcengine ark.cn-beijing.volces.com endpoint id，或 Anthropic API key\n\n### 1. 克隆 + 拉依赖\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FLiamour\u002FUE-Mapping.git\ncd UE-Mapping\n\n# 后端\ncd backend\npip install -r requirements.txt\n\n# 前端\ncd ..\u002FUE_mapping_plugin\nnpm install\n```\n\n### 2. 启动后端\n\n```powershell\n# Redis\nD:\\path\\to\\Redis-x64-3.0.504\\redis-server.exe\n\n# FastAPI（新终端）\ncd backend\npython -m uvicorn main:app --reload --port 8000\n```\n\n### 3. 构建前端 bundle 到插件\n\n```bash\ncd UE_mapping_plugin\nnpm run build\n# 自动写入 ..\u002FPlugins\u002FAICartographer\u002FResources\u002FWebUI\u002Findex.html (~508 kB single file)\n```\n\n### 4. 在 UE 里打开你的项目\n\n- 把 `Plugins\u002FAICartographer\u002F` 拷到你 UE 项目的 `Plugins\u002F`\n- VS \u002F Rider 重新 build C++ 模块（Live Coding 不能注册新 UFUNCTION）\n- 打开编辑器 → AICartographer 标签\n\n### 5. 配置 + 第一次扫描\n\n1. Settings → Project root 填你的 UE 工程目录\n2. Settings → LLM provider 配 key（Volcengine 或 Claude）→ Test connection\n3. 选语言（English \u002F 简体中文）\n4. Settings → **Run framework scan**（无 LLM，秒级）→ 写出骨架 .md\n5. 顶栏 **Run project scan**（L2 batch + L1 cluster，根据项目大小 30s ~ 几分钟）\n6. 进 Lv0 看项目总览，点系统进 Lv1，点蓝图进 Lv2，点函数进 Lv3\n\n### 打一份便携包发给同事\n\n```powershell\n.\\dist\\build-release.ps1                 # → release\u002FAICartographer-Portable-\u003C日期>.zip\n.\\dist\\build-release.ps1 -Version 1.0.0  # 自定义版本号\n.\\dist\\build-release.ps1 -NoZip          # 只生成目录，方便本地测\n```\n\n打包脚本只做拷贝，**不修改源码**。生成的 zip 是 1.6 MB，解压 3.6 MB。\n\n---\n\n## LLM 厂商支持\n\n| Provider | 端点 | 模型选项 | 推理强度 |\n|---|---|---|---|\n| **Volcengine Ark** | `ark.cn-beijing.volces.com` | 自填 endpoint id（`ep-...`，可绑 Doubao \u002F DeepSeek-R1 等） | — |\n| **Anthropic Claude** | 官方 API | Opus \u002F Sonnet \u002F Haiku | low \u002F medium \u002F high \u002F extra_high \u002F max（映射到 extended-thinking budget） |\n\n**密钥安全**：\n- 用户在前端填入，存 `localStorage` 的 `aicartographer.llm.config`\n- 每次请求随 payload 带给后端，后端**永不落盘**\n- 后端 `.env` 没有任何 LLM key 字段\n\n**可调参数**（Settings → LLM provider）：\n- 并发 1–64（默认 20，限流避免触发供应商 RPM 上限）\n- 语言 EN \u002F ZH（同时影响 UI 和 LLM 输出）\n- 单次请求 90s 超时 + tenacity 重试 4 次（指数 1–30s）\n\n---\n\n## 国际化\n\n切换 `Settings → Language → 简体中文`：\n\n- ✅ 整个 UI（21 个组件）\n- ✅ LLM 输出叙事（intent \u002F 章节正文）\n- ✅ Markdown 模板（`## [ 简介 ]` `## [ 成员 ]` `## [ 反向链接 ]`）\n- ✅ 风险提示（`> [!system_risk] 系统风险等级：**warning**`）\n- ❌ 受控词表保留英文（`#system\u002Fcombat` `#layer\u002Fgameplay` 等，前端解析所用 key）\n- ❌ `asset_path` \u002F blueprint 名 \u002F 函数标识符（资产唯一 ID）\n\n> 已存在的 .md 不会自动回填语言 — 需要重扫（删 vault \u002F 改 AST \u002F 点 Rebuild backlinks 至少更新反链段）\n\n---\n\n## 项目结构\n\n```\nUE-Mapping\u002F\n├── Plugins\u002FAICartographer\u002F              # UE5 C++ 插件\n│   ├── Source\u002FAICartographer\u002F\n│   │   ├── Public\u002FAICartographerBridge.h     # UFUNCTION 暴露层\n│   │   └── Private\u002FAICartographerBridge.cpp  # ReadBlueprintFunctionFlow \u002F RequestDeepScan \u002F ListBlueprintAssets\n│   └── Resources\u002FWebUI\u002Findex.html       # vite-plugin-singlefile bundle 写入此处\n│\n├── UE_mapping_plugin\u002F                   # React 前端\n│   └── src\u002F\n│       ├── components\u002F\n│       │   ├── levels\u002F                  # Lv0 \u002F Lv1 \u002F Lv2 \u002F Lv3 视图\n│       │   ├── shell\u002F                   # ActivityBar \u002F TopBar \u002F Tabs \u002F Breadcrumb\n│       │   ├── settings\u002F                # SettingsModal \u002F LLMProviderPanel \u002F ScanOrchestrator\n│       │   ├── chat\u002FAIChat.tsx\n│       │   ├── search\u002FQuickSwitcher.tsx\n│       │   └── notes\u002FNotesEditor.tsx\n│       ├── services\u002F\n│       │   ├── bridgeApi.ts             # C++ Bridge wrapper\n│       │   ├── vaultApi.ts              # vault HTTP\u002FBridge 双通路\n│       │   ├── scanApi.ts               # batch scan\n│       │   ├── frameworkScan.ts         # 骨架扫描（无 LLM）\n│       │   └── projectScan.ts           # L1 项目聚类\n│       ├── store\u002F\n│       │   ├── useLLMStore.ts           # 厂商 + 语言 + 并发\n│       │   ├── useScanStore.ts          # 扫描进度 + 自动刷新\n│       │   └── useUIStore.ts            # 视图模式 + 弹窗状态\n│       └── utils\u002F\n│           ├── i18n.ts                  # useT() Hook + L10nMsg 类型\n│           └── frontmatter.ts           # YAML 解析 + 嵌套→扁平规范化\n│\n├── backend\u002F                             # Python FastAPI\n│   ├── main.py                          # 路由 + L2 \u002F L1 prompts\n│   ├── llm_providers.py                 # LLMProvider ABC + Volcengine + Claude\n│   ├── vault_writer.py                  # markdown 写入 + i18n 模板表\n│   ├── tag_vocabulary_default.json      # 受控词表（system\u002Flayer\u002Frole）\n│   └── requirements.txt\n│\n├── HANDOFF.md                           # 跨 session 完整工程交接文档（中文）\n└── README.md                            # 本文件\n```\n\n---\n\n## 开发\n\n### TypeScript 类型检查\n\n```bash\ncd UE_mapping_plugin\nnpx tsc --noEmit\n```\n\n### 前端 dev server（HMR）\n\n```bash\nnpm run dev\n# 仅在浏览器开发时用；UE webview 是吃 build 好的 bundle\n```\n\n### 后端语法检查\n\n```bash\ncd backend\npython -c \"import ast; ast.parse(open('main.py', encoding='utf-8').read())\"\n```\n\n### 添加新 UFUNCTION\n\n每次在 `AICartographerBridge.h` 加新方法都需要**关 UE → VS \u002F Rider 重新 build → 重启编辑器**。Live Coding 不能注册新 UCLASS \u002F UPROPERTY \u002F UFUNCTION。SettingsModal 的桥状态行会显示 `partial`（找到桥但缺方法）来提示需要 rebuild。\n\n### 控制台规范\n\n后端日志统一用 `[SYS_LOG]` `[SYS_WARN]` `[SYS_ERR]` `[L1]` `[VAULT]` 前缀，方便 grep。LLM key 在日志里走 `mask_key()` 脱敏。\n\n---\n\n## 已知限制\n\n- **Redis 3.0.504**（Win 自带）不支持多字段 HSET — 已用 pipeline + 单字段写入绕过。要升级建议换 [Memurai](https:\u002F\u002Fwww.memurai.com\u002F) 或 WSL2 + 官方 Redis 7.x。\n- **Live Coding 限制** — 见上文，新 UFUNCTION 必须冷重启。\n- **切语言不回填旧 .md** — `is_unchanged()` 跳过 AST 未变节点，需要 force rescan 才会用新语言重写模板。\n- **L3 函数流暂无 LLM 分析** — 当前 L3 只做可视化，文字解读由 L2 的 `MEMBER INTERACTIONS` 章节承担。\n\n---\n\n## 路线图\n\n- [ ] 真项目大规模实测（500+ BP 工程）\n- [ ] AIChat 把当前打开的 Lv2\u002FLv3 节点喂给 LLM 当上下文\n- [ ] Notes 双向同步（编辑 → 触发 backlinks 重建）\n- [ ] L3 加 LLM 函数级叙事（\"这个函数的执行流是 ...\"）\n- [ ] CPP \u002F Interface 类型的扫描器（当前以 BP 为主）\n- [ ] 集成测试（pytest + Playwright）\n\n---\n\n## License\n\nMIT — 详见 [LICENSE](LICENSE)（如有）\n\n---\n\n\u003Cdiv align=\"center\">\n\n**Built with care, then handed off via [HANDOFF.md](HANDOFF.md).**\n\n如果这个项目帮你看清了一个老 UE 工程，请告诉我：[Issues](https:\u002F\u002Fgithub.com\u002FLiamour\u002FUE-Mapping\u002Fissues)\n\n\u003C\u002Fdiv>\n","AICartographer 是一个为 Unreal Engine 5 设计的 AI 蓝图地图仪，通过 LLM（大语言模型）生成项目的蓝图叙事地图。其核心功能包括利用 LLM 为每个蓝图编写详细的意图、执行流程等五段叙事，并通过力导向图展示系统结构；支持多级视图切换及本地优先的数据处理策略，确保开发者能在不同视角下高效理解项目架构。此外，该工具还支持多厂商 LLM 接入与完整的国际化支持，所有分析结果以 Markdown 格式存储于本地，便于团队协作时保持数据私密性。AICartographer 特别适用于需要快速熟悉中大型 UE5 项目或旧代码库的开发者，在接手拥有大量蓝图的工程时能显著提高工作效率。",2,"2026-06-11 02:44:36","CREATED_QUERY"]