From 74b4e36426e591a4c81bde4f7f526ceed04c84f8 Mon Sep 17 00:00:00 2001 From: yibo Date: Tue, 18 Aug 2026 17:57:50 +0800 Subject: [PATCH] docs(CLAUDE.md): 修掉「数据存储」整节 —— 有两个 data 根,之前当成一个写 --- CLAUDE.md | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0105790..71b2a3a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -87,7 +87,7 @@ npm run okr:migrate # goals → okr 存量迁移 | `server/src/tools/` | Master Agent 可调用的工具(call-agent, marketplace, orchestrate, train-skill, …) | | `web/src/views/` | 页面:AgentChat, AgentList, CompanyDashboard, GraphConsole, JobsPanel, OkrDashboard, PipelineEditor, QuotaMonitor, SkillsMarket, TaskTimeline, TemplateAgents + DevLoop 四页(Dashboard / Projects / NewRequirement / Ops) | | `packages/` | `acp-core`, `agent-core`, `evolution`, `plugin-bootstrap` | -| `data/skills/` | Skill 仓库(代码外部目录,路径由 `config.skillsDataDir` 控制) | +| `/../data/skills/` | Skill 仓库。**在仓库外面一层**,不是 `/data/skills/`(后者不存在)。路径由 `config.skillsDataDir` 控制,见下「数据存储」的两个 data 根 | | `scripts/` | 运维脚本(含 `sync-skills.js`) | | `docs/` | 设计文档,**按状态分目录**:`done/`(已实现 / 长期参考手册,含 `system-design/` 01–26 章与 `user-guides/`)、`todo/`(当前主线,27/28 系列)、`todo/future/`(暂缓)、`_archive/`。另有 `prd/`(DevLoop 规格源,见上)。**索引在 [`docs/README.md`](docs/README.md),逐条带状态说明 —— 找文档从那里进,别在本表里加文件名**(这一行曾经列了 5 个具体文件,文档移进 `done/` 之后全成了死链) | @@ -120,12 +120,31 @@ npm run okr:migrate # goals → okr 存量迁移 ### 数据存储(SQLite,无需 PostgreSQL) -- `data/skills/` — Skill 目录(数万条) -- `data/skills.sqlite` — Skill 主库 + FTS5 -- `data/benchmark.sqlite` — Benchmark 运行数据 -- `data/users.sqlite` — 用户数据 -- `data/trained_skills/` — 用户训练产物(按 userId 隔离) -- `server/conversations/` — 会话持久化 +> [!IMPORTANT] +> **有两个不同的 `data/` 根,别混**。ArenaSK 时代的三个库落在**仓库外面一层**, +> LemonBoss 的数据在**仓库内**。看到 `data/xxx` 先确认是哪一个 —— 备份、迁移、 +> 换机器时漏掉仓库外那半边,skill / 用户 / benchmark 数据会静默丢失。 +> 判据看源码里 `path.resolve(__dirname, ...)` 的层数(当前 11 个模块指仓库内、3 个指仓库外)。 + +**仓库外** `/../data/` — ArenaSK 侧(`benchmark-db.js` / `skill-db.js` / `user-db.js`, +均可用 `SKILLS_DB_PATH` / `USERS_DB_PATH` / `BENCHMARK_DB_PATH` 等 env 覆盖): + +- `skills/` — Skill 目录(数万条),路径由 `config.skillsDataDir` 控制 +- `skills.sqlite` — Skill 主库 + FTS5 +- `users.sqlite` — 用户数据 +- `benchmark_logs.sqlite` — Benchmark 运行数据(**不是** `benchmark.sqlite`) +- `trained_skills/` — 用户训练产物(按 userId 隔离) + +**仓库内** `/data/` — LemonBoss 侧(company / okr / graph / devloop 都在这儿): + +- `graph.sqlite` — 图谱库(`GRAPH_DB_PATH` 可覆盖) +- `companies/` — 公司态(含 DevLoop 项目根、agent memory) +- `okr/` `logs/` `agents/` — OKR 索引 / 运行日志 / agent 运行态 + +会话持久化有**两套**,不是一处: + +- `/conversations/` — ArenaSK / Innovator 侧(`config.conversationsDir`,`CONVERSATIONS_DIR` 可覆盖) +- `/conversations/{convId}/` — LemonBoss agent-chat 侧(`agent-chat.getConvDir` → `locator.companyStateDir`) ### 配置文件 -- libgit2 0.21.4