Memory Doctor 是 Basic Memory 项目的诊断技能。它通过 bm doctor 检查用户本地 Basic Memory 项目并报告存在的问题,每个问题都会附带修复命令(若存在)。Doctor 的检查只读,不会更改项目的笔记或索引;它建议的修复会改变数据,因此只能在用户同意后运行。
使用前提:需要具备 bm(或 basic-memory)命令的 shell 环境。
适用场景
- 搜索漏掉了用户明确知道存在的笔记,或同一笔记返回两次
- 笔记已保存但文件未变化,或反之
- 用户询问 Basic Memory 是否正常,或要求“检查”“修复”
- 崩溃、导入中断或移动项目文件夹之后
运行方式 先只获取报告,速度快且 JSON 结构稳定: bm doctor --skip-self-test --json 添加 --project NAME 可只检查单个项目。不加 --skip-self-test 时,doctor 还会执行自检:在一个临时沙盒中写入、索引并搜索一条笔记,耗时数秒,用于证明安装本身可用。当报告干净但仍感觉有问题时运行自检。
报告解读 报告包含 projects 数组,每项有 name、findings、has_errors;findings 中每条包含 check、severity、summary、evidence,以及可选的 action 与 command。顶层还有 skipped_cloud_projects 与 self_test。
严重级别
- error:不修复不会消失。提供命令;若 command 为 null,则解释证据。
- warning:需要关注,可能自行恢复。有命令则提供。
- info:工作进行中的预期状态。可提及;运行中的服务器会完成它,命令也可立即完成。
索引会在后台追赶。文件索引仍在运行时,重复、缺失或多出的搜索行属于 warning,因为该轮处理可能清除它;索引稳定后则变为 error。若报告只有 info 级发现,说明没有问题。没有 Basic Memory 服务器运行时不会后台索引,因此 info 级发现也应提供命令。
云项目列在 skipped_cloud_projects 中:它们在服务器端索引,本地命令无法修复。
修复流程
- 用通俗语言向用户概述发现:哪个项目、什么问题、修复会做什么。共享同一命令的发现合并说明。
- 原样展示 doctor 输出的每条命令,运行前询问用户。bm reindex --search --full 会重新读取项目中的每个文件,大型项目可能耗时较久。
- 运行用户批准的命令。
- 再次运行 bm doctor --skip-self-test --json,确认发现已消失。
- 若某发现没有命令,不要编造。说明证据显示的内容(例如磁盘上哪些文件在较新的保存等待时发生了变化),让用户决定。
退出码 无错误且自检通过(或被跳过)时 bm doctor 退出 0,否则退出 1。warning 和 info 不会导致失败。