| name | lint |
| description | 知识库健康度检查。扫描 wiki/ 目录,自动修复索引同步和 frontmatter 缺失问题。对于死链、孤岛页面、知识冲突、标签爆炸,生成报告供人工决策。当用户输入 /lint、/scan、/health 或要求"检查知识库状态"时调用。 |
| user-invocable | true |
Lint 技能
核心目标
定期"体检"知识库,自动修复安全问题,对需要人工决策的问题生成报告。
核心原则:保守修复,不确定的操作生成报告供人工决策。
触发条件
- 用户输入
/lint
- 用户询问"我的知识库健康状况如何"
- 用户要求"检查知识库状态"或"检查健康"
知识库路径
使用 Glob 工具动态定位当前工作区下的 wiki/ 目录
工作流程
步骤 1:索引同步检查(自动修复)
读取总索引:
Read wiki/index.md
检查项:
- 提取索引中注册的所有页面
- 扫描
wiki/ 下所有 .md 文件(排除 index.md、log.md、README.md 和 _conflicts/ 目录)
- 比对差异
自动修复:
- 文件存在但未注册 → 读取文件的 frontmatter,自动添加到 index.md 对应的 domain + type 分组
- 已注册但文件不存在 → 从 index.md 删除该条目,记录到 log.md
修复日志:
## [YYYY-MM-DD] lint | 索引同步修复
- 新增到索引:[[页面1]], [[页面2]]
- 从索引删除:[[不存在的页面]]
步骤 2:死链检测(生成报告)
扫描所有 .md 文件,提取所有 [[双链]] 格式的链接
检查项:
生成建议报告(不自动修复):
-
相似页面替换建议:
- 计算编辑距离(Levenshtein distance < 3)
- 如果找到相似页面 → 建议替换
- 示例:
[[Transformr]] → 建议替换为 [[Transformer]]
-
无法修复的死链:
报告格式:
### 死链检测 (N 处)
- `[[错误链接]]` 在 [[页面A]] → 建议替换为 `[[正确链接]]`
- `[[不存在的页面]]` 在 [[页面B]] → 无相似页面,建议删除或创建
步骤 3:孤岛页面检测(生成报告)
统计被引用次数:
- 扫描所有页面,统计每个页面被其他页面引用的次数(排除 self-reference)
- 找出 0 入链的页面 → 孤岛页面
生成建议报告(不自动修复):
- 读取孤岛页面的内容和 frontmatter(type, tags)
- 根据 tags,找到 3-5 个最相关的页面
- 建议在这些页面的
## 关联连接 区域添加链接
报告格式:
### 孤岛页面检测 (N 个)
- [[孤岛页面A]] (tags: #AI #NLP) → 建议在 [[页面1]], [[页面2]], [[页面3]] 中添加链接
- [[孤岛页面B]] (tags: #财务) → 建议在 [[页面4]], [[页面5]] 中添加链接
步骤 4:Frontmatter 规范检查(自动修复)
对每个页面检查:
必需字段:
type (concept | entity | source | synthesis)
tags (数组,3-5 个)
created (YYYY-MM-DD)
updated (YYYY-MM-DD)
自动修复策略:
- 缺失 type → 根据文件路径推断(concepts/ → concept)
- 缺失 created/updated → 使用文件时间戳
- tags 数量不足 → 不自动补全,生成报告
修复日志:
## [YYYY-MM-DD] lint | Frontmatter 修复
- 补全 type:3 个页面
- 补全 created/updated:5 个页面
步骤 5:知识冲突检测(生成报告)
全局搜索:
- 使用 Grep 工具搜索所有包含
## 知识冲突 的页面
生成冲突报告:
对每个冲突页面,在 wiki/_conflicts/ 创建冲突文件:
---
title: "知识冲突:<主题>"
created: YYYY-MM-DD
pages: [[页面A]], [[页面B]]
---
## 冲突描述
- **页面 A** ([[页面A]]) 说:[摘录冲突内容]
- **页面 B** ([[页面B]]) 说:[摘录冲突内容]
## 来源
- 页面 A 来源:[sources 字段]
- 页面 B 来源:[sources 字段]
## 建议
[LLM 分析后的建议]
## 决策
[ ] 采纳建议
[ ] 保留页面 A
[ ] 保留页面 B
[ ] 自定义合并方案:___________
不自动修复,等待用户决策。
步骤 6:标签爆炸检测(生成报告)
统计标签使用情况:
- 扫描所有页面的 frontmatter,统计每个标签的使用次数
检查项:
- 单次使用标签 — 只被使用 1 次的标签
- 相似标签 — 语义相似但拼写不同(如
深度学习 vs DeepLearning)
- 标签数量异常 — 页面标签数量 < 3 或 > 5
生成报告(不自动修复):
## 标签健康报告
### 单次使用标签(建议删除或合并)
- `标签1` — 仅在 [[页面A]] 使用
- `标签2` — 仅在 [[页面B]] 使用
### 相似标签(建议统一)
- `深度学习` (5 次) vs `DeepLearning` (2 次) → 建议统一为 `深度学习`
- `机器学习` (8 次) vs `ML` (3 次) → 建议统一为 `机器学习`
### 标签数量异常
- [[页面C]] — 只有 1 个标签(建议补充)
- [[页面D]] — 有 8 个标签(建议精简)
是否需要批量替换标签?
最终报告输出
扫描和修复完成后,生成报告到 wiki/_lint/report_YYYY-MM-DD.md:
# 知识库健康体检报告 — YYYY-MM-DD
## 总体统计
- 页面总数:N
- 标签总数:N
- 平均每个页面被引用次数:N
## 自动修复完成
- 索引同步:新增 X 个,删除 Y 个
- Frontmatter:补全 X 个页面的缺失字段
## 建议修复(需用户确认)
### 死链检测 (N 处)
- `[[错误链接]]` 在 [[页面A]] → 建议替换为 `[[正确链接]]`
### 孤岛页面检测 (N 个)
- [[孤岛页面A]] → 建议在 [[页面1]], [[页面2]] 中添加链接
### 标签建议
- 单次使用标签:`标签1` (仅在 [[页面A]])
- 相似标签:`深度学习` (5次) vs `DeepLearning` (2次) → 建议统一
## 人工决策(仅报告)
### 知识冲突 (N 个)
- [[页面A]] 与 [[页面B]] 存在观点冲突,详见 `wiki/_conflicts/`
### 页面重复 (N 个)
- [[页面C]] 与 [[页面D]] 标题相似度 85%,建议合并
## 下一步行动
1. 查看 `wiki/_conflicts/` 目录,决策知识冲突
2. 确认是否批量替换相似标签
3. 为孤岛页面添加链接
同时在对话中输出简化版本,提示用户查看完整报告。
操作日志
修复完成后,在 wiki/log.md 末尾追加:
## [YYYY-MM-DD] lint | 周度健康检查
- 自动修复: 索引同步 3 处,Frontmatter 补全 5 处
- 建议修复: 死链 2 处,孤岛页面 1 处
- 人工决策: 知识冲突 1 个
不自动执行 Git 提交,而是提示用户:
✅ Lint 完成
- 自动修复:X 处
- 建议修复:Y 处(详见报告)
- 完整报告:wiki/_lint/report_YYYY-MM-DD.md
使用 `/sync` 提交到 Git
强制约束
- 先检测后修复 — 完成所有检测后,再执行自动修复
- 保守修复 — 不确定的操作不要自动执行,生成报告供人工决策
- 记录所有操作 — 修复的每一步都要记录到 log.md
- 不修改源文件 — 只修复 wiki/ 目录下的文件,不触碰 raw/
关联连接
- [[wiki/index.md]] — 总索引
- [[wiki/log.md]] — 操作日志
- [[wiki/_conflicts/]] — 冲突报告目录
- [[CLAUDE.md]] — Wiki 架构总规范