Skip to content

Commit 8c562f1

Browse files
committed
docs: rewrite 04-15 changelog with system evolution perspective
Position auto-maintenance as closure of the ops capability arc (04-06 observe → 04-09 align → 04-15 auto-repair), not isolated feature.
1 parent 05114fa commit 8c562f1

1 file changed

Lines changed: 46 additions & 49 deletions

File tree

docs/changelog/2026-04-15.md

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,77 @@
11
# ContextAtlas 更新总结(2026-04-15)
22

3-
本轮更新围绕健康检查性能和自动化运维闭环展开
3+
本轮更新是 04-06 以来运维能力建设的一次收口
44

5-
> 新增 `--quick` 健康检查模式(260x 提速)、幽灵索引目录清理命令、以及 post-checkout/post-merge git hooks 自动维护
5+
> 把散落的健康检查、幽灵清理、catalog 重建串成一条 git hook 驱动的自动运维闭环,从"有观测"推进到"自动修复"
66
7-
## 一、为什么要更新
7+
## 一、在系统发展中的位置
88

9-
- `health:check` 对所有项目逐一初始化 VectorStore + 策略分析,在项目数较多时耗时显著,无法用于自动化流程
10-
- 旧架构遗留、测试泄漏和临时仓库会导致 baseDir 下堆积无 `current` / `snapshots` 的幽灵索引目录
11-
- `hub:cleanup-ghost` 只清理 Hub 注册表,不管文件系统层的幽灵目录
12-
- 缺少开发者本地的自动维护机制,依赖手动执行清理命令
9+
4 月的运维能力建设经历了三个阶段:
1310

14-
## 二、这次更新的目标
11+
| 阶段 | 时间 | 内容 |
12+
|------|------|------|
13+
| 建观测 | 04-06 ~ 04-07 | health check 面板、queue 监控、daemon 状态、告警引擎 |
14+
| 对齐与统一 | 04-09 ~ 04-14 | 告警阈值对齐、Hub 注册表清理、application 层统一入口 |
15+
| 自动闭环 | 04-15 | git hook 触发 → 健康检测 → 条件修复,开发者无感 |
16+
17+
04-15 的核心价值不是新增了某个命令,而是把前两阶段建立的能力**串成了不需要人工干预的闭环**
18+
19+
## 二、为什么要更新
20+
21+
前两阶段留下了两个断点:
1522

16-
1. 新增 `health:check --quick` 快速模式,跳过 VectorStore / strategySummary / snapshot 扫描
17-
2. 新增 `hub:cleanup-stale-indexes` 命令,清理无 `current` / `snapshots` 的遗留索引目录
18-
3. 新增 post-checkout / post-merge git hooks,自动检测并修复索引健康
19-
4. Hook 安装脚本,`pnpm install` 自动部署
23+
1. **观测到修复需要人工介入**health check 能发现问题(04-06/04-07),Hub 清理能清注册表(04-14),但开发者需要手动跑命令,容易遗忘
24+
2. **全量 health check 在项目数增长后变慢**:04-07 建立的健康面板对所有项目逐一初始化 VectorStore,项目累积后耗时显著,不适合高频触发
25+
26+
此外,旧架构遗留的索引目录(无 snapshot 系统)和测试泄漏会持续产生幽灵项目,`hub:cleanup-ghost`(04-14)只清理 Hub 注册表,不清理文件系统层。
2027

2128
## 三、如何更新
2229

23-
### 1. `--quick` 健康检查模式
30+
### 1. `--quick` 健康检查:适配高频场景
2431

25-
`analyzeIndexHealth` 新增 `quick` 参数:
32+
`analyzeIndexHealth` 新增 `quick` 参数,分两个快速路径
2633

27-
- **无显式 projectIds**:跳过全部 snapshot 扫描,只查 queue + daemon~0.36s)
34+
- **无显式 projectIds**:跳过全部 snapshot 扫描,只查 queue + daemon
2835
- **有显式 projectIds**:只扫描指定项目,跳过 VectorStore 和 strategySummary
29-
- CLI 新增 `--quick` 选项:`contextatlas health:check --quick --json`
3036

31-
### 2. 幽灵索引目录清理
37+
这是对 04-07 建立的健康面板的**性能适配**——原始面板设计用于"完整诊断",但自动化场景需要"快速筛查"。
38+
39+
### 2. 幽灵索引目录清理:补全 04-14 的清理覆盖面
3240

33-
新增 `cleanupStaleIndexes()` 函数和 `hub:cleanup-stale-indexes` CLI 命令
41+
04-14 的 `hub:cleanup-ghost` 清理 Hub 注册表中的幽灵项目,但不触及文件系统。新增 `cleanupStaleIndexes()` `hub:cleanup-stale-indexes` CLI 命令覆盖文件系统层
3442

3543
- 扫描 baseDir 下所有项目目录
36-
- 识别无 `current` 指针且无 `snapshots` 目录但有 `index.db` 的幽灵目录
37-
- 支持 `--dry-run`(仅预览)和 `--json`(脚本消费)
44+
- 识别无 `current` 指针且无 `snapshots` 目录但有 `index.db` 的幽灵目录(来自旧架构遗留和测试泄漏)
3845
- 保护有 `current``snapshots` 的活跃项目
3946

40-
### 3. Git Hooks 自动维护
47+
### 3. Git Hooks:把检测和修复串成闭环
4148

42-
新增三层防护机制:
43-
44-
| 层级 | 机制 | 效果 |
45-
|------|------|------|
46-
| 1 | 60s 防抖 | 快速切换分支不重复触发 |
47-
| 2 | `--quick` 模式 | health:check 仅查 queue + daemon(0.36s) |
48-
| 3 | 24h 清理节流 | 幽灵清理每天最多执行一次,先检查再清理 |
49+
post-checkout / post-merge hooks 实现三层防护:
4950

50-
Hook 行为:
51+
| 层级 | 机制 | 对接的前序能力 |
52+
|------|------|----------------|
53+
| 防抖 | 60s 内不重复触发 | 避免快速切换分支时的重复开销 |
54+
| 快速筛查 | `health:check --quick` | 对接 04-07 的健康面板(适配高频模式) |
55+
| 条件清理 | dry-run 先检查,有幽灵才删除 | 对接 04-14 的 Hub 清理 + 新增的文件系统清理 |
5156

52-
1. `health:check --quick --json` 检测健康状态
53-
2. `healthy` → 跳过(0.36s 结束)
54-
3. `unhealthy` → 条件触发清理 + catalog 重建
55-
4. 清理路径:先 `--dry-run` 检查幽灵数量,有才执行删除
56-
5. 全程 `nohup` 后台执行,不阻塞任何 git 操作
57+
额外设计:24h 清理节流——重操作(目录扫描和删除)每天最多执行一次,日常切换只跑轻量检查和 catalog 重建。
5758

5859
### 4. 安装机制
5960

60-
- `scripts/git-hooks/post-checkout` + `scripts/git-hooks/post-merge`:hook 源文件
61-
- `scripts/setup-hooks.sh`:安装脚本(复制 + chmod)
62-
- `package.json``"prepare"` 脚本:`pnpm install` 自动触发安装
61+
`package.json``prepare` 脚本在 `pnpm install` 时自动部署 hooks。无 `contextatlas` CLI 的环境静默跳过。
6362

6463
## 四、解决了什么问题
6564

66-
| 问题 | 解决方案 |
67-
|------|----------|
68-
| health:check 全量扫描过慢 | `--quick` 模式跳过重操作,亚秒级完成 |
69-
| 幽灵索引目录堆积 | `hub:cleanup-stale-indexes` 一键清理 |
70-
| 开发者需手动维护 | post-checkout/post-merge 自动后台维护 |
71-
| 连续切换分支触发多次 | 60s 防抖 + nohup 后台 |
72-
| 清理每次都跑浪费时间 | 24h 节流 + dry-run 先检查 |
65+
| 问题 | 来源 | 解决方案 |
66+
|------|------|----------|
67+
| 健康观测到修复需要人工 | 04-06/04-07 建了观测但缺闭环 | git hook 自动触发 |
68+
| 全量 health check 太慢 | 04-07 面板未考虑项目累积 | `--quick` 跳过重操作 |
69+
| 幽灵目录只在注册表层清理 | 04-14 只覆盖 Hub 注册表 | `cleanup-stale-indexes` 覆盖文件系统 |
70+
| 开发者忘记手动维护 | 人总是忘 | 自动化到 checkout/merge 触发点 |
7371

7472
## 五、边界、兼容性与当前状态
7573

76-
- `health:check` 不加 `--quick` 时行为不变(完整扫描)
74+
- `health:check` 不加 `--quick` 时行为不变(完整扫描,适合手动诊断
7775
- `health:full` 不受影响
7876
- Hook 安装幂等(覆盖写入 `.git/hooks/`
7977
- Hook 在无 `contextatlas` CLI 的环境下静默跳过
@@ -99,19 +97,18 @@ Hook 行为:
9997
新 CLI 命令:
10098

10199
```bash
102-
# 快速健康检查
100+
# 快速健康检查(对接 04-07 健康面板的高频模式)
103101
contextatlas health:check --quick --json
104102

105-
# 清理幽灵索引目录
103+
# 清理幽灵索引目录(补全 04-14 Hub 清理的文件系统层)
106104
contextatlas hub:cleanup-stale-indexes --dry-run --json # 预览
107105
contextatlas hub:cleanup-stale-indexes --json # 执行
108-
contextatlas hub:cleanup-stale-indexes # 文本报告
109106
```
110107

111108
## 七、验证口径
112109

113110
```bash
114-
# 单元测试(15 个测试)
111+
# 单元测试
115112
node --import tsx --test tests/cleanup-stale-indexes.test.ts tests/index-health.test.ts
116113

117114
# CLI 验证

0 commit comments

Comments
 (0)