5.4 KB · updated 2026-07-31 · md

doctor.zh.md

docs/i18n/doctor.zh.md

tesserae doctor — 项目健康检查

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end --> tesserae doctor 会端到端地检查一个 Tesserae 工作区——初始化、图谱完整性、注册表一致性、新鲜度、锁、LLM 登录状态以及磁盘卫生——并打印一份检查清单。它默认只读--fix 只应用可安全重复执行的修复,绝不会破坏活动状态。

tesserae doctor                 # check the current project
tesserae doctor --fix           # apply the safe repairs, then re-check
tesserae doctor --all --json    # every registered project, JSON report
tesserae doctor --project ~/src/other

检查内容

二十项检查,按类别分组:

检查类别验证内容--fix 动作
project_initializedcore.tesserae/ 存在且看起来像一个 Tesserae 工作区仅报告(建议运行 tesserae init
graph_parsecoregraph.json 可解析且形状符合预期仅报告(建议运行 tesserae compile
config_validcore.tesserae/config.json 可解析并通过 init 模板校验仅报告
vault_configuredcore配置的 vault 路径可以解析SAFE:当解析出的 vault 目录位于项目内部时创建该目录
registry_consistentregistry~/.tesserae/registry.json 的条目指向真实存在的项目根目录SAFE:清理根目录已消失的条目,删除遗留的 active 键;图谱缺失时仅报告
graph_stalenessfreshness自上次编译记录的 git_head 以来的 git 增量仅报告(建议运行 tesserae refresh —— 编译开销较大)
site_search_indexfreshness静态站点 / search-index.jsongraph.json 更新SAFE:重建站点
backend_artifactsfreshnessRAG-Anything 产物是最新的仅报告(它们的刷新是 LLM/网络重操作)
session_chunksfreshness每日 session-chunk 覆盖率在近期窗口内没有缺口仅报告(建议运行 tesserae sessions chunk-backfill
wiki_lintgraph图谱 ⇄ wiki 漂移 + 可轻易修复的 lint 发现SAFE:应用 lint 的琐碎修复(fix_trivial
compile_lockprocesses是否有活动的编译锁被持有,以及被哪个 pid 持有仅报告 —— doctor 绝不杀掉进程也绝不移除活动锁
daemon_pidprocessesdaemon.pid 指向一个存活的 engine 进程SAFE:当持有者已死亡时删除该 pidfile
llm_loginenvironment配置的 LLM 后端确实可用(claude/codex CLI 已登录,或存在 API key)仅报告(建议运行 claude /login / codex login
optional_depsenvironment可选依赖的状态(memex、raganything)仅报告(安装需要联网)
embedding_backendenvironment有真正的语义嵌入后端可用仅报告(建议 pip install tesserae[semantic]
environmentenvironment整体环境检测摘要仅报告的小节
build_historyhygiene.build-history 的大小和形状SAFE:裁剪它,且始终保留最新的 git_head 条目(新鲜度检查依赖它)
idempotencehygiene输出快照的 idempotence_suspect 触发线仅报告(这是 bug 信号,不应自动修复)
orphan_worktreeshygiene陈旧的 git worktree 注册项SAFEgit worktree prune;删除目录仅报告
hook_log_bloathygiene.tesserae/.session-*-hook.log 的增长SAFE:轮转/截断超过 10 MB 的日志

崩溃的检查会作为一条 error 级发现被报告——doctor 本身永不抛出异常。

--fix 策略

  • --fix 运行上表标记为 SAFE 的检查,然后重新检测,使报告反映修复后的状态。
  • 每个修复都是幂等的:连续运行两次 doctor --fix,第二次运行结果是干净的。
  • Doctor 绝不杀掉进程,也绝不移除活动的编译锁——被持有的锁会连同持有它的 pid 一并报告,并保持原样。
  • 重型或联网操作(重新编译、依赖安装、后端刷新)绝不会被折叠进 --fix;doctor 会打印出命令供你自己运行。

退出码

tesserae lint 同一约定:

退出码含义
0健康 —— 没有高于 OK 的发现
1存在警告
2存在错误

报告产物

每次运行都会把两种形式的报告写入工作区:

.tesserae/doctor-report.md      # human checklist
.tesserae/doctor-report.json    # structured findings

--json 额外把 JSON 报告打印到 stdout,替代 markdown 检查清单。--all 遍历注册表中的每个项目(忽略 --project),并按项目分别报告。

MCP:doctor_report

MCP 服务器以 doctor_report 工具的形式暴露同一份报告(对照 lint_report,包括其返回内容的字节上限),因此 agent 可以在对话中途检查工作区健康状况而无需调用 shell。它需要一个项目根目录——传入 graph_path/project,或配置一个默认图谱。