# zsjz-ai 项目长期记忆 ## 本机环境怪癖(每次会话都会遇到) - **bash 工具可用**(2026-09-24 起实测 `ls/cat/grep/sed/find/rm/cp/comm/diff` 都正常); 早期会话的「shim 报 dirname not found」已不复现。仍优先用 Glob/Grep/Read 读文件。 - PowerShell 工具的 stdout **不回显**:要拿输出必须落盘再读。落盘务必用 `... | Out-File -FilePath -Encoding utf8`;**`>` 会写成 UTF-16**,Read 工具会当二进制拒绝。 - `Remove-Item` 被 safe-delete 钩子拦截 → 删文件用 `[System.IO.File]::Delete('绝对路径')`;bash `rm -f` 可以。 - 仓库根 = 主仓库 `E:\workspace\zsjz-ai`(git common dir);当前 worktree 是 `C:\Users\cc\WorkBuddy\Worktrees\zsjz-ai\dev-3-*`。**worktree 只有被跟踪的文件**, 被 gitignore 的本地目录不会带过来(见下),缺东西时去主仓库拷。 ### worktree 首次可用的初始化(2026-09-24 踩实) 1. **`frontend/` 是 pnpm 项目**:`pnpm install` 会因 esbuild postinstall 报 `spawnSync node.exe EBUSY`(沙箱里孙进程 spawn node 被拦),**而且失败后 `node_modules/.bin` 不会生成**,于是 `pnpm type:check / build` 全报「不是内部或外部命令」。 → 解法:`pnpm install --ignore-scripts`。esbuild 真二进制在 `@esbuild/win32-x64`, postinstall 只是 `--version` 校验,跳过无害(实测 `require('esbuild').version` 正常)。 2. **`ai-electron/` 是 npm 项目**(只有 `package-lock.json`,node_modules 是扁平结构、无 `.pnpm`): **不要用 pnpm 装**(会因 `esbuild@^0.28.0` 解析失败 —— 镜像元数据里 latest 还是 0.27.4)。 正确姿势:从主仓库拷 `ai-electron/package-lock.json`(被 gitignore 了),再 `npm install --ignore-scripts --no-audit --no-fund`(约 23s / 710 包)。 校验命令:`npx tsc --noEmit`(= `npm run typecheck`)、`npm test`(vitest,91 用例)、 `npm run build-electron`(产出 `public/electron/main.js`)。 3. 被 gitignore 误伤、worktree 里没有、缺了直接构建失败的目录(从主仓库 `cp -r` 过来,不会污染 git status): - `ai-electron/frontend/build/`(根 `.gitignore:22` 的 `build/` 命中;vite.config.ts 要 `./build`) - `ai-electron/frontend/src/case/views/data/`(`ai-electron/.gitignore:7` 的 `data/` 命中, 把源码目录也误伤了;路由 `routes/index.ts` 直接引用,51 个文件) - `ai-electron/package-lock.json` 4. 其余 5600+ 条「主仓库有、worktree 没有」都是运行时垃圾(`data/`、`out/`、`logs/`),不用管。 ## 前端(`ai-electron/frontend/`) - 技术栈:Vue 3 + `