Vault Inspector
使用 Vault Inspector 作为 Obsidian 仓库维护的只读质量门禁。本技能适用于终端、CI 以及智能体管理的仓库工作流,可用于查找断链、孤立附件、空笔记、外部链接、重复文件、Frontmatter 类型漂移、标签使用问题和大文件。
安全规则
- 将 CLI 视为只读工具。不要在执行本技能时修改、移动、删除或重写仓库文件。
- 不要提及
--fix参数可用。CLI 在执行修复操作时会报错退出。 - 不要自动删除孤立附件、重复文件候选或大文件。应总结证据并建议手动审查。
- 不要将
title、message、generatedAt或durationMs视为稳定的自动化标识符。 - 用于自动化的稳定字段包括:
schemaVersion、toolVersion、summary、scannerId、severity、primaryPath、relatedPaths、evidence、fingerprint、fixAction、isNew和summary.newIssues。 - 使用
--progress将扫描进度输出到 stderr;保持 stdout 为机器可读格式。
何时运行
在以下情况下运行 Vault Inspector:
- 在重组、发布、导出或归档仓库之前;
- 在生成或由智能体管理的笔记发生更改之后;
- 在批量编辑链接、标签、frontmatter 或附件之前和之后;
- 在仓库或生成的文档仓库需要进行回归检查的 CI 环境中;
- 当用户询问仓库健康度、断链、孤立文件、重复文件或大文件分析时。
基本命令
在仓库目录内:
vinspect . --format json
一次性使用(无需全局安装):
npx vault-inspector /path/to/vault --format json
生成人类可读的报告:
vinspect . --format markdown --output report.md
运行选定的扫描器:
vinspect . --scanner broken-links,empty-notes,large-files --format json
仅在网络检查可接受时运行可选的外部链接扫描器:
vinspect . --scanner external-links --format json
显示进度而不污染 stdout:
vinspect . --format json --progress
基线工作流
创建基线:
vinspect . --format json --output .vault-inspector-baseline.json --fail-on none
仅在新发现的问题上失败:
vinspect . --baseline .vault-inspector-baseline.json --fail-on new --format json
使用基线时,需检查 summary.newIssues 以及每个问题的 isNew 字段。在报告已知问题之前,先报告新问题。
退出码
0:扫描完成,未达到配置的--fail-on阈值。1:扫描完成,达到了配置的--fail-on阈值。2:CLI 使用无效或扫描设置失败。
如果退出码为 2,请报告 CLI 错误,不要将 stdout 解释为成功的扫描结果。
结果解读
按以下顺序处理发现的问题:
error严重级别的断链和缺失附件链接。warning级别的问题,包括缺失标题、大文件、已确认的重复文件和较旧的孤立附件。info级别的问题,包括低使用率标签、跳过或超时的外部检查、近期孤立附件和重复文件候选。
对于每个摘要,应包含:
- 问题总数;
- 按严重级别统计的数量;
- 已运行的扫描器;
- 高置信度问题优先;
- 手动审查所需的文件路径和证据;
- 基线中的新问题数量(如有)。
避免过度确定性。当文件被 CSS、Canvas、Dataview、发布管道或外部工具引用时,孤立附件和重复文件候选可能出现误报。
建议的智能体响应
在报告扫描结果时,建议使用以下格式:
Vault Inspector 发现了 <N> 个问题:<E> 个错误,<W> 个警告,<I> 个信息。
最高优先级的问题:
- [<严重级别>] <scannerId>: <primaryPath> - <简短的基于证据的解释>
备注:
- <关于基线/新问题的相关说明>
- <关于孤立/重复文件候选需要手动审查的说明(如适用)>
如果扫描通过,说明运行的命令以及相关的零计数。不要声称仓库是完美的,应说 Vault Inspector 在所选扫描器和过滤条件下未发现任何问题。