你的 Wiki 有多少僵尸页有多少断链有多少过期内容如果你回答不上来你的 Wiki 正在悄悄腐烂。这不是危言耸听。一个 AI Agent 持续维护的 Wiki每 ingest 一批新资料就有 10-20% 的已有页面需要更新。如果这些更新没跟上——旧的参数、过期的配置、被推翻的结论——读者打开一个页面不知道哪些还适用、哪些已经过期。LLM Wiki 设计了一套 12 项自动化检查定期扫描全库发现问题就标出来。这篇文章逐一拆解每项检查的设计逻辑、实现方法和真实案例。先看效果一次 Lint 扫描的输出Agent 执行lint命令后输出是这样的断链Critical2 个。[[旧工具链]]、[[传感器驱动]]——这两个页面在 Wikilinks 中被引用但不存在。需要创建或修正链接。孤岛页Warning3 个。HI3519DV500_硬件原理分析、硬件设计知识提炼、OpenCV 移植参考——这 3 页入站链接为 0在 Graph View 里看不到。过期页面Warning1 个。DDR4 接口设计——最后更新 2026-06-16但大量关联页面启动配置、BSP 编译在 2026-06-20 后均有更新。可能部分信息过时。标签异常Infoalerts 标签不在 SCHEMA.md 分类体系中。应改为 debug 或新增到分类体系。日志轮转Infolog.md 当前 492 条接近 500 条上限。建议近期轮转。一次扫描5 分钟全部问题自动化发现。检查体系总览优先级检查项检测内容触发条件 Critical断链检测[[wikilinks]] 引用了不存在的页面即时 Critical死链检测引用的外部 URL 返回 404即时 High孤岛页检测入站链接为 0 的内容页即时 High过期检测页面最后更新日期早于关联页面的更新日期 90 天以上即时 Medium矛盾检测两个页面标记了 contested:true 或同一主题不同结论即时 Medium置信度检测confidence: low 的页面即时 Medium单来源检测只引用了 1 个来源但没有设置 confidence 字段即时 Medium标签审计使用了不在 SCHEMA.md 分类体系中的标签即时 Low页面尺寸超过 200 行的页面标记为建议拆分即时 Low索引完整性index.md 里列出但文件不存在的页面 / 文件存在但 index 没列出即时 Low来源漂移raw/ 中 sha256 校验值变化的文件即时 Low日志轮转log.md 超过 500 条即时深入五项核心检查检查 1断链检测——最致命的问题原理提取全 Wiki 所有 [[wikilinks]] 的目标页面名与 filesystem 上实际存在的 .md 文件做差集。代码思路Agent 执行的逻辑遍历 entities/concepts/comparisons/ 下所有 .md 文件提取文件名去掉 .md 后缀作为实际页面列表遍历所有页面的正文提取所有[[...]]中的目标名差集 被引用但不在实际页面列表中的名字真实案例我的 Wiki 早期有 [[UE 配置]] 和 [[VDEC 配置]] 两个 wikilinks但对应的页面从未创建。Agent 在 lint 时发现并标记——要么补建要么把 wikilinks 改成纯文本。影响断链不只是点不开。在 Obsidian Graph View 里断链是一个只有出箭头的虚线——读者以为那里有一个节点但点了之后是找不到页面。这比没有链接更糟。检查 2孤岛页检测——最隐蔽的问题原理建立入站链接映射表入站为 0 的就是孤岛。实施细节不同于断链检测只看能不能点开孤岛检测关注有没有人指向它。排除 index/log/SCHEMA 三个元页面后任何内容页面如果入站为 0就有问题。我的孤岛案例27 个内容页中 3 个孤岛。其中 2 个是独立参考文档硬件原理分析、硬件设计提炼——内容高度自包含不需要大量入站链接。1 个是 OpenCV 移植页面——它链了其他页面但别人没回链需要补充 backlinks。判断逻辑孤岛不等于该删。Agent 标记孤岛后我逐个判断内容独立 → 保留但标记 low-priority需要交叉引用 → 执行 backlink 同步。检查 3过期检测——时间是最隐蔽的杀手原理对比页面 updated 日期与关联页面的最后更新日期。如果 A 页面的更新时间比所有关联 B 页面的更新时间都早 90 天以上A 可能过期。具体算法对每个页面找到所有通过 wikilinks 互联的邻居页面取邻居页面中最新的 updated 日期如果本页面 updated 日期 邻居最新日期 - 90 天 → 标记过期真实案例DDR4 接口设计最后更新于 2026-06-16。它的邻居页面中启动配置最后更新于 2026-06-20BSP 编译系统更新于 2026-06-23。DDR4 接口比它的所有邻居都至少老 4 天——不严重但值得检查是否遗漏了更新。为什么 90 天对于工程类 Wiki90 天是一个合理的过期间隔——技术文档通常 3 个月内有实质更新。对于快速变化领域AI 模型评估建议缩短到 30 天。检查 4来源漂移——raw/ 文件被改了原理raw/ 目录的每个文件在摄入时记录了 sha256 哈希值。Lint 时重新计算并对比——如果哈希变了说明原始来源被修改了。场景一份在线文档你摄入时是 v1.0。3 个月后作者更新了 v1.1你再次爬取。sha256 变了——Agent 对比新旧内容更新引用了这份来源的 Wiki 页面。为什么重要如果 raw/ 悄悄变了但 Wiki 没更新读者看到的就是过时结论。sha256 漂移检测让这种悄悄过时变得可发现。检查 5标签审计——分类体系不能腐烂原理提取全 Wiki frontmatter 中所有 tags与 SCHEMA.md 中定义的有效标签列表做差集。真实案例我早期有一次 Agent 给一个页面打了alerts标签。alerts不在 SCHEMA.md 的 25 个标签体系中。Lint 发现后Agent 把它改成了debug排查和告警相关的正规标签。为什么标签审计重要一个标签不在分类体系中意味着任何按标签搜索的查询都找不到这个页面。它成了一座隐形的孤岛——入站链接正常但标签搜索对它无效。Lint 的自动化集成Lint 不应该是一个想起来就跑一下的手动操作。它应该嵌入 Wiki 的维护流程中。我的集成方式每次 batch ingest 完成后自动触发一次 lint 扫描。Agent 在写完 log.md 的最后一条记录后紧接着跑 lint。这保证了每批新资料入库后潜在的问题断链、过期、孤岛能立刻被发现。为什么不在 ingest 过程中跑因为 ingest 中最容易产生断链——Agent 先建了新页面 AA 里引用了还在计划中的页面 B。如果这时跑 lintB 会被标记为断链。但实际上 B 的建页操作在队列里还没执行。正确的顺序是全部建页和更新操作完成 → 跑 backlink 同步 → 最后跑 lint。Lint 报告的处理Agent 不自动修复 lint 发现的问题——只标记。因为有些问题可能不是问题OpenCV 交叉编译页面入站为 0——但它是一个高度专业化的移植指南不需要回链BSP 编译系统 400 行——但它是完整参考页面有意设计为长页面Agent 标记后我人工判断确认的问题让 Agent 修复否定的问题加ignore标记到相关页面。实战用 Lint 发现真实问题发现一标签分歧。早期 Wiki 里同一个标签体系里出现了debug和debugging两个标签。原因是两批不同的 ingestAgent 分别选择了不同的标签。Lint 发现后统一为debug。发现二过期数据。DDR4 接口设计页面里写建议使用 CL14 2400MHz。3 个月后原厂更新了设计指南新版本推荐 CL12。Lint 扫描时对比了 raw/ 中设计指南文件的 sha256——发现源文件变了。进一步对比发现 CL 值的更新没同步到 Wiki。发现三断链。Agent 在外设接口总览页面中写了 [[UE 配置]]但对应的页面从未创建。原因是 ingest 时 Agent 判断UE 配置只有 2 段话不满足建页阈值但忘了把 wikilink 改回纯文本。Lint 发现后修复。给 Lint 加门槛不是所有 lint 发现都需要人工处理。可以设置阈值自动处理标签不在分类体系中 → 自动查找最接近的已有标签替换index 条目缺失 → 自动补全日志超过 500 条 → 自动轮转人工确认孤岛页 → 判断是否需要回链还是独立文档过期页 → 判断是否需要更新还是信息仍然有效矛盾页 → 判断哪个版本正确仅标注confidence: low → 标注但不自动更新页面尺寸 200 行 → 标注建议拆分但不自动拆这个分级让 lint 从所有问题都丢给用户变成自己能修的自己修拿不准的才问用户。实践建议Lint 的节奏每次 ingest 后自动 lint。我配置了 Agent 在每次批量摄入完成后自动执行一次 lint。摄入可能引入断链新页面引用了计划建但忘了建的页面、可能改变过期状态新内容让旧页面看起来过时了。每周全量 lint。独立于 ingest每周跑一次全量扫描。主要关注来源漂移外部文档可能被更新和日志轮转log.md 的膨胀。Lint 不是修好就完了。每项发现都是一个学习机会——为什么产生了断链是建页流程有漏洞还是命名不统一为什么 confidence: low是缺乏来源还是忘了标注把 lint 反馈转化为 SCHEMA.md 规则更新让同样的问题不再发生。
LLM Wiki应用之健康检查篇——12项自动化体检守住知识质量
你的 Wiki 有多少僵尸页有多少断链有多少过期内容如果你回答不上来你的 Wiki 正在悄悄腐烂。这不是危言耸听。一个 AI Agent 持续维护的 Wiki每 ingest 一批新资料就有 10-20% 的已有页面需要更新。如果这些更新没跟上——旧的参数、过期的配置、被推翻的结论——读者打开一个页面不知道哪些还适用、哪些已经过期。LLM Wiki 设计了一套 12 项自动化检查定期扫描全库发现问题就标出来。这篇文章逐一拆解每项检查的设计逻辑、实现方法和真实案例。先看效果一次 Lint 扫描的输出Agent 执行lint命令后输出是这样的断链Critical2 个。[[旧工具链]]、[[传感器驱动]]——这两个页面在 Wikilinks 中被引用但不存在。需要创建或修正链接。孤岛页Warning3 个。HI3519DV500_硬件原理分析、硬件设计知识提炼、OpenCV 移植参考——这 3 页入站链接为 0在 Graph View 里看不到。过期页面Warning1 个。DDR4 接口设计——最后更新 2026-06-16但大量关联页面启动配置、BSP 编译在 2026-06-20 后均有更新。可能部分信息过时。标签异常Infoalerts 标签不在 SCHEMA.md 分类体系中。应改为 debug 或新增到分类体系。日志轮转Infolog.md 当前 492 条接近 500 条上限。建议近期轮转。一次扫描5 分钟全部问题自动化发现。检查体系总览优先级检查项检测内容触发条件 Critical断链检测[[wikilinks]] 引用了不存在的页面即时 Critical死链检测引用的外部 URL 返回 404即时 High孤岛页检测入站链接为 0 的内容页即时 High过期检测页面最后更新日期早于关联页面的更新日期 90 天以上即时 Medium矛盾检测两个页面标记了 contested:true 或同一主题不同结论即时 Medium置信度检测confidence: low 的页面即时 Medium单来源检测只引用了 1 个来源但没有设置 confidence 字段即时 Medium标签审计使用了不在 SCHEMA.md 分类体系中的标签即时 Low页面尺寸超过 200 行的页面标记为建议拆分即时 Low索引完整性index.md 里列出但文件不存在的页面 / 文件存在但 index 没列出即时 Low来源漂移raw/ 中 sha256 校验值变化的文件即时 Low日志轮转log.md 超过 500 条即时深入五项核心检查检查 1断链检测——最致命的问题原理提取全 Wiki 所有 [[wikilinks]] 的目标页面名与 filesystem 上实际存在的 .md 文件做差集。代码思路Agent 执行的逻辑遍历 entities/concepts/comparisons/ 下所有 .md 文件提取文件名去掉 .md 后缀作为实际页面列表遍历所有页面的正文提取所有[[...]]中的目标名差集 被引用但不在实际页面列表中的名字真实案例我的 Wiki 早期有 [[UE 配置]] 和 [[VDEC 配置]] 两个 wikilinks但对应的页面从未创建。Agent 在 lint 时发现并标记——要么补建要么把 wikilinks 改成纯文本。影响断链不只是点不开。在 Obsidian Graph View 里断链是一个只有出箭头的虚线——读者以为那里有一个节点但点了之后是找不到页面。这比没有链接更糟。检查 2孤岛页检测——最隐蔽的问题原理建立入站链接映射表入站为 0 的就是孤岛。实施细节不同于断链检测只看能不能点开孤岛检测关注有没有人指向它。排除 index/log/SCHEMA 三个元页面后任何内容页面如果入站为 0就有问题。我的孤岛案例27 个内容页中 3 个孤岛。其中 2 个是独立参考文档硬件原理分析、硬件设计提炼——内容高度自包含不需要大量入站链接。1 个是 OpenCV 移植页面——它链了其他页面但别人没回链需要补充 backlinks。判断逻辑孤岛不等于该删。Agent 标记孤岛后我逐个判断内容独立 → 保留但标记 low-priority需要交叉引用 → 执行 backlink 同步。检查 3过期检测——时间是最隐蔽的杀手原理对比页面 updated 日期与关联页面的最后更新日期。如果 A 页面的更新时间比所有关联 B 页面的更新时间都早 90 天以上A 可能过期。具体算法对每个页面找到所有通过 wikilinks 互联的邻居页面取邻居页面中最新的 updated 日期如果本页面 updated 日期 邻居最新日期 - 90 天 → 标记过期真实案例DDR4 接口设计最后更新于 2026-06-16。它的邻居页面中启动配置最后更新于 2026-06-20BSP 编译系统更新于 2026-06-23。DDR4 接口比它的所有邻居都至少老 4 天——不严重但值得检查是否遗漏了更新。为什么 90 天对于工程类 Wiki90 天是一个合理的过期间隔——技术文档通常 3 个月内有实质更新。对于快速变化领域AI 模型评估建议缩短到 30 天。检查 4来源漂移——raw/ 文件被改了原理raw/ 目录的每个文件在摄入时记录了 sha256 哈希值。Lint 时重新计算并对比——如果哈希变了说明原始来源被修改了。场景一份在线文档你摄入时是 v1.0。3 个月后作者更新了 v1.1你再次爬取。sha256 变了——Agent 对比新旧内容更新引用了这份来源的 Wiki 页面。为什么重要如果 raw/ 悄悄变了但 Wiki 没更新读者看到的就是过时结论。sha256 漂移检测让这种悄悄过时变得可发现。检查 5标签审计——分类体系不能腐烂原理提取全 Wiki frontmatter 中所有 tags与 SCHEMA.md 中定义的有效标签列表做差集。真实案例我早期有一次 Agent 给一个页面打了alerts标签。alerts不在 SCHEMA.md 的 25 个标签体系中。Lint 发现后Agent 把它改成了debug排查和告警相关的正规标签。为什么标签审计重要一个标签不在分类体系中意味着任何按标签搜索的查询都找不到这个页面。它成了一座隐形的孤岛——入站链接正常但标签搜索对它无效。Lint 的自动化集成Lint 不应该是一个想起来就跑一下的手动操作。它应该嵌入 Wiki 的维护流程中。我的集成方式每次 batch ingest 完成后自动触发一次 lint 扫描。Agent 在写完 log.md 的最后一条记录后紧接着跑 lint。这保证了每批新资料入库后潜在的问题断链、过期、孤岛能立刻被发现。为什么不在 ingest 过程中跑因为 ingest 中最容易产生断链——Agent 先建了新页面 AA 里引用了还在计划中的页面 B。如果这时跑 lintB 会被标记为断链。但实际上 B 的建页操作在队列里还没执行。正确的顺序是全部建页和更新操作完成 → 跑 backlink 同步 → 最后跑 lint。Lint 报告的处理Agent 不自动修复 lint 发现的问题——只标记。因为有些问题可能不是问题OpenCV 交叉编译页面入站为 0——但它是一个高度专业化的移植指南不需要回链BSP 编译系统 400 行——但它是完整参考页面有意设计为长页面Agent 标记后我人工判断确认的问题让 Agent 修复否定的问题加ignore标记到相关页面。实战用 Lint 发现真实问题发现一标签分歧。早期 Wiki 里同一个标签体系里出现了debug和debugging两个标签。原因是两批不同的 ingestAgent 分别选择了不同的标签。Lint 发现后统一为debug。发现二过期数据。DDR4 接口设计页面里写建议使用 CL14 2400MHz。3 个月后原厂更新了设计指南新版本推荐 CL12。Lint 扫描时对比了 raw/ 中设计指南文件的 sha256——发现源文件变了。进一步对比发现 CL 值的更新没同步到 Wiki。发现三断链。Agent 在外设接口总览页面中写了 [[UE 配置]]但对应的页面从未创建。原因是 ingest 时 Agent 判断UE 配置只有 2 段话不满足建页阈值但忘了把 wikilink 改回纯文本。Lint 发现后修复。给 Lint 加门槛不是所有 lint 发现都需要人工处理。可以设置阈值自动处理标签不在分类体系中 → 自动查找最接近的已有标签替换index 条目缺失 → 自动补全日志超过 500 条 → 自动轮转人工确认孤岛页 → 判断是否需要回链还是独立文档过期页 → 判断是否需要更新还是信息仍然有效矛盾页 → 判断哪个版本正确仅标注confidence: low → 标注但不自动更新页面尺寸 200 行 → 标注建议拆分但不自动拆这个分级让 lint 从所有问题都丢给用户变成自己能修的自己修拿不准的才问用户。实践建议Lint 的节奏每次 ingest 后自动 lint。我配置了 Agent 在每次批量摄入完成后自动执行一次 lint。摄入可能引入断链新页面引用了计划建但忘了建的页面、可能改变过期状态新内容让旧页面看起来过时了。每周全量 lint。独立于 ingest每周跑一次全量扫描。主要关注来源漂移外部文档可能被更新和日志轮转log.md 的膨胀。Lint 不是修好就完了。每项发现都是一个学习机会——为什么产生了断链是建页流程有漏洞还是命名不统一为什么 confidence: low是缺乏来源还是忘了标注把 lint 反馈转化为 SCHEMA.md 规则更新让同样的问题不再发生。