所有用户知识都以 markdown 文件存在;数据库里的 facts / takes / links / timeline 全是从 markdown 派生出来的索引。灾难恢复不需要备份——擦掉 DB,从 brain repo 重新抽取即可。多机同步就是 git push / pull。
真实数据 · 一条命令重建整个大脑 system-of-recordDATA
# DB 损坏?不需要备份。markdown 就是真相,DB 是派生缓存。 gbrain rebuild --confirm-destructive # 删掉所有派生表 gbrain sync # 从 brain repo 重新导入 markdown gbrain extract all # 重新抽取 facts/takes/links/timeline # 计数与崩溃前完全一致 —— 派生状态被无损重建
真实代码 · 写入是原子的 fence-write.ts:233CODE
// 原子写入: 先写 .tmp → 重新解析校验 → POSIX rename 覆盖
writeFileSync(tmpPath, body, "utf-8");
const tmpBody = readFileSync(tmpPath, "utf-8");
const parsed = parseFactsFence(tmpBody);
if (parsed.warnings.length > 0) {
// 解析失败: .tmp 留在磁盘作隔离证据, 绝不写进 DB
recordWriteFailure(target.slug, target.sourceId, parsed.warnings, filePath);
return { inserted: 0, ids: [], fenceWriteFailed: true };
}
// rename 是 POSIX 原子操作: 文件要么是旧内容, 要么是新内容, 绝不残缺
renameSync(tmpPath, filePath);markdown 文件永远不会写一半——POSIX rename 的原子性,就是"git 当数据库"这件事的一致性硬保证。