本文档描述 kb check / kb update 的当前实现行为(截至 2026-04-16)。
适用范围:本地索引链路(
.kb/refs.json+./.kb/.kbignore+.kb/index*.json)。
当前快照由 .kb/refs.json 投影得到:
- 读取 refs 条目(alias/path/category/perms)
- 应用过滤条件:
--category--raw-only(仅保留path以./.kb/raw/开头).kbignore
- 受保护路径过滤(排除
kb.md与./.kb/下非./.kb/raw/文件)
- 对过滤后的条目,只保留本地路径真实存在的记录
- 计算记录签名(signature)与摘要(excerpt)
基线来自最近一次成功写入的索引文件:
.kb/index.json.kb/index.errors.json.kb/index.meta.json
若索引不存在,则按“空基线”处理。
默认身份键:path(路径身份)。
在路径身份策略下:
- 新路径出现:
to_add - 同路径签名变化:
to_update - 基线路径消失:
to_remove(reason =missing_path)
kb check 只做差异预览,不落盘。
输出字段:
has_changesto_addto_updateto_removesuggested_commandduration_ms
kb update 在当前快照与基线比较后执行:
- 默认:缺失路径计入
marked_invalid --prune:缺失路径计入removed--dry-run:仅返回统计,不写索引文件
输出字段:
addedupdatedremovedmarked_invalidduration_msfullraw_category_created(当前固定false)
- 仅保留
path以./.kb/raw/开头的 refs 记录参与比较
- 仅保留指定分类条目
- 分类集合来自
kb.md标题行(# <category>)
- 当前为保留参数位,不改变 update 行为
在输入状态不变时:
- 连续两次
kb update,第二次应返回:added=0updated=0removed=0
当前实现保持以下确定性约束:
- 输出结构稳定(JSON 字段层级固定)
- 列表顺序稳定(底层按路径/别名排序)
- 同一输入重复执行输出一致
- 命令手册:
docs/cli/command-manual.md - kb.md 规范:
docs/cli/kb-md-spec.md - 忽略规则:
docs/cli/kbignore-spec.md - 错误目录:
docs/cli/error-catalog.md