Commit 74b4e36426e591a4c81bde4f7f526ceed04c84f8
1 parent
c5f4ff31
docs(CLAUDE.md): 修掉「数据存储」整节 —— 有两个 data 根,之前当成一个写
顺着上一笔的判据(引用了不存在的东西)继续扫,扫出的不是零星笔误,是一处结构性失真。
事实(按绝对路径解析源码里的 path.resolve(__dirname, ...),不是数字面量 ——
数字面量会错,path-resolver.js 比 db 文件深一层,同样的 '../../../data' 落点不同):
仓库内 <repo>/data/ — 11 个模块(company / okr / graph / devloop / schedule / pipeline …)
仓库外 <repo>/../data/ — 3 个模块(skill-db、user-db、benchmark-db,ArenaSK 时代遗留)
原文把六条全挂在扁平的 `data/` 前缀下,读的人只会理解成仓库内一个根。这不是抠字眼:
备份 / 迁移 / 换机器时漏掉仓库外那半边,skill、用户、benchmark 数据会**静默丢失**。
一并修掉的具体错误:
- `data/benchmark.sqlite` → 实际文件名是 `benchmark_logs.sqlite`
- `server/conversations/` → 该路径不存在。会话持久化实际有**两套**:
ArenaSK/Innovator 侧在 `<repo>/conversations/`(config.conversationsDir),
LemonBoss agent-chat 侧在公司态目录下(getConvDir → locator.companyStateDir)
- 目录速查里的 `data/skills/` 改成 `<repo>/../data/skills/`,点明 `<repo>/data/skills/` 并不存在
- 补上仓库内侧原本一条没列的 graph.sqlite / companies/ / okr/ / logs/ / agents/
- 每个库补上真实的 env 覆盖名(SKILLS_DB_PATH / USERS_DB_PATH / BENCHMARK_DB_PATH / GRAPH_DB_PATH)
新写进去的每一条路径与每一个 env 名都用脚本核过存在性(10 路径 + 5 env 全 ✅)。
docs/README.md 的 markdown 链接同批扫过,零死链。
npm run test:unit 1057/1057 绿。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Showing
1 changed file
with
26 additions
and
7 deletions
CLAUDE.md
| @@ -87,7 +87,7 @@ npm run okr:migrate # goals → okr 存量迁移 | @@ -87,7 +87,7 @@ npm run okr:migrate # goals → okr 存量迁移 | ||
| 87 | | `server/src/tools/` | Master Agent 可调用的工具(call-agent, marketplace, orchestrate, train-skill, …) | | 87 | | `server/src/tools/` | Master Agent 可调用的工具(call-agent, marketplace, orchestrate, train-skill, …) | |
| 88 | | `web/src/views/` | 页面:AgentChat, AgentList, CompanyDashboard, GraphConsole, JobsPanel, OkrDashboard, PipelineEditor, QuotaMonitor, SkillsMarket, TaskTimeline, TemplateAgents + DevLoop 四页(Dashboard / Projects / NewRequirement / Ops) | | 88 | | `web/src/views/` | 页面:AgentChat, AgentList, CompanyDashboard, GraphConsole, JobsPanel, OkrDashboard, PipelineEditor, QuotaMonitor, SkillsMarket, TaskTimeline, TemplateAgents + DevLoop 四页(Dashboard / Projects / NewRequirement / Ops) | |
| 89 | | `packages/` | `acp-core`, `agent-core`, `evolution`, `plugin-bootstrap` | | 89 | | `packages/` | `acp-core`, `agent-core`, `evolution`, `plugin-bootstrap` | |
| 90 | -| `data/skills/` | Skill 仓库(代码外部目录,路径由 `config.skillsDataDir` 控制) | | 90 | +| `<repo>/../data/skills/` | Skill 仓库。**在仓库外面一层**,不是 `<repo>/data/skills/`(后者不存在)。路径由 `config.skillsDataDir` 控制,见下「数据存储」的两个 data 根 | |
| 91 | | `scripts/` | 运维脚本(含 `sync-skills.js`) | | 91 | | `scripts/` | 运维脚本(含 `sync-skills.js`) | |
| 92 | | `docs/` | 设计文档,**按状态分目录**:`done/`(已实现 / 长期参考手册,含 `system-design/` 01–26 章与 `user-guides/`)、`todo/`(当前主线,27/28 系列)、`todo/future/`(暂缓)、`_archive/`。另有 `prd/`(DevLoop 规格源,见上)。**索引在 [`docs/README.md`](docs/README.md),逐条带状态说明 —— 找文档从那里进,别在本表里加文件名**(这一行曾经列了 5 个具体文件,文档移进 `done/` 之后全成了死链) | | 92 | | `docs/` | 设计文档,**按状态分目录**:`done/`(已实现 / 长期参考手册,含 `system-design/` 01–26 章与 `user-guides/`)、`todo/`(当前主线,27/28 系列)、`todo/future/`(暂缓)、`_archive/`。另有 `prd/`(DevLoop 规格源,见上)。**索引在 [`docs/README.md`](docs/README.md),逐条带状态说明 —— 找文档从那里进,别在本表里加文件名**(这一行曾经列了 5 个具体文件,文档移进 `done/` 之后全成了死链) | |
| 93 | 93 | ||
| @@ -120,12 +120,31 @@ npm run okr:migrate # goals → okr 存量迁移 | @@ -120,12 +120,31 @@ npm run okr:migrate # goals → okr 存量迁移 | ||
| 120 | 120 | ||
| 121 | ### 数据存储(SQLite,无需 PostgreSQL) | 121 | ### 数据存储(SQLite,无需 PostgreSQL) |
| 122 | 122 | ||
| 123 | -- `data/skills/` — Skill 目录(数万条) | ||
| 124 | -- `data/skills.sqlite` — Skill 主库 + FTS5 | ||
| 125 | -- `data/benchmark.sqlite` — Benchmark 运行数据 | ||
| 126 | -- `data/users.sqlite` — 用户数据 | ||
| 127 | -- `data/trained_skills/` — 用户训练产物(按 userId 隔离) | ||
| 128 | -- `server/conversations/` — 会话持久化 | 123 | +> [!IMPORTANT] |
| 124 | +> **有两个不同的 `data/` 根,别混**。ArenaSK 时代的三个库落在**仓库外面一层**, | ||
| 125 | +> LemonBoss 的数据在**仓库内**。看到 `data/xxx` 先确认是哪一个 —— 备份、迁移、 | ||
| 126 | +> 换机器时漏掉仓库外那半边,skill / 用户 / benchmark 数据会静默丢失。 | ||
| 127 | +> 判据看源码里 `path.resolve(__dirname, ...)` 的层数(当前 11 个模块指仓库内、3 个指仓库外)。 | ||
| 128 | + | ||
| 129 | +**仓库外** `<repo>/../data/` — ArenaSK 侧(`benchmark-db.js` / `skill-db.js` / `user-db.js`, | ||
| 130 | +均可用 `SKILLS_DB_PATH` / `USERS_DB_PATH` / `BENCHMARK_DB_PATH` 等 env 覆盖): | ||
| 131 | + | ||
| 132 | +- `skills/` — Skill 目录(数万条),路径由 `config.skillsDataDir` 控制 | ||
| 133 | +- `skills.sqlite` — Skill 主库 + FTS5 | ||
| 134 | +- `users.sqlite` — 用户数据 | ||
| 135 | +- `benchmark_logs.sqlite` — Benchmark 运行数据(**不是** `benchmark.sqlite`) | ||
| 136 | +- `trained_skills/` — 用户训练产物(按 userId 隔离) | ||
| 137 | + | ||
| 138 | +**仓库内** `<repo>/data/` — LemonBoss 侧(company / okr / graph / devloop 都在这儿): | ||
| 139 | + | ||
| 140 | +- `graph.sqlite` — 图谱库(`GRAPH_DB_PATH` 可覆盖) | ||
| 141 | +- `companies/` — 公司态(含 DevLoop 项目根、agent memory) | ||
| 142 | +- `okr/` `logs/` `agents/` — OKR 索引 / 运行日志 / agent 运行态 | ||
| 143 | + | ||
| 144 | +会话持久化有**两套**,不是一处: | ||
| 145 | + | ||
| 146 | +- `<repo>/conversations/` — ArenaSK / Innovator 侧(`config.conversationsDir`,`CONVERSATIONS_DIR` 可覆盖) | ||
| 147 | +- `<agent 公司态目录>/conversations/{convId}/` — LemonBoss agent-chat 侧(`agent-chat.getConvDir` → `locator.companyStateDir`) | ||
| 129 | 148 | ||
| 130 | ### 配置文件 | 149 | ### 配置文件 |
| 131 | 150 |