个人知识 Wiki 管理(Quartz v2)。录入资料、查询知识、健康检查。当用户说"录入wiki"、"wiki ingest"、"加到wiki"、"wiki查一下"、"wiki lint"、"/wiki"等关键词时触发。
Scanned 9/13/2026
Install to Claude Code
npx -y skills add yangwhale/CloseCrab --skill wiki --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Wiki?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/yangwhale-wiki)More formats (shields.io, HTML) on the badges page.
---
name: wiki
description: 个人知识 Wiki 管理(Quartz v2)。录入资料、查询知识、健康检查。当用户说"录入wiki"、"wiki ingest"、"加到wiki"、"wiki查一下"、"wiki lint"、"/wiki"等关键词时触发。
---
# CC Wiki v2 — 个人知识 Wiki 管理
基于 Quartz (Static Site Generator) + Markdown + BM25 搜索引擎 + MCP Server 的 LLM 维护知识 Wiki。灵感来自 Karpathy 的 LLM Wiki 模式。
**站点**: `$WIKI_URL`(环境变量配置)
**完整技术文档**: `~/CloseCrab/docs/wiki-v2.md`
## 触发条件
- `/wiki ingest <url|文件|文本>` — 录入新资料
- `/wiki query <问题>` — 基于 Wiki 回答问题
- `/wiki lint` — 健康检查
- `/wiki status` — 显示 Wiki 统计 + 知识覆盖度
- 自然语言:"帮我录入到 wiki"、"加到知识库"、"wiki 里有没有..."
## 第一性原理(来自 Karpathy LLM Wiki)
### 角色分工
**人类的职责**:策展来源、引导分析方向、提出好问题、思考这一切意味着什么。
**LLM 的职责**:其他所有事——总结、交叉引用、归档、簿记。
### 知识编译,而非检索
不要每次从原始文档重新检索(RAG 模式)。而是将知识**编译一次,持续更新**。Wiki 是编译后的产物——交叉引用已经建好,矛盾已经标记,综合分析已经反映了所有已读内容。
### Schema 共同进化
SKILL.md 是**活文档**,随使用不断迭代。Bot 在操作中发现规则不够用时,应主动建议修改。
### 参与度由用户决定
- **深度参与**(默认):逐个录入,边录边讨论要点
- **批量模式**:一次性投放多个来源,LLM 自主处理
## 路径约定
**所有命令都用 `$WIKI_REPO`,不要写死 `~/my-wiki-v2`** —— 不同机器上 wiki
仓库的目录名不一样(`my-wiki-v2` / `my-wiki` / `my-wiki-study`)。
`WIKI_REPO` 由 `config/env.sh` 的 `compute_dynamic_vars()` 探测后注入。
```
$WIKI_REPO # Quartz repo(本机实际路径见下方自检)
$WIKI_REPO/content # Markdown 源文件
$WIKI_REPO/raw # 原始资料(不可变)
WIKI_URL=$CC_PAGES_URL_PREFIX/wiki-v2
```
跑任何 wiki 命令前先自检一次,**没设就当场报错,不要猜路径**:
```bash
echo "${WIKI_REPO:?WIKI_REPO 未设置 —— 检查 config/env.sh 的 compute_dynamic_vars}"
```
## 目录结构
```
$WIKI_REPO/
├── content/ # Markdown 源文件(Bot 维护)
│ ├── index.md # 首页
│ ├── sources/ # 来源摘要
│ ├── entities/ # 实体页面(人/产品/项目/硬件)
│ ├── concepts/ # 概念页面(技术/方法/理论)
│ └── analyses/ # 分析对比
├── raw/ # 原始资料(不可变)
│ ├── articles/ # 网页文章
│ ├── papers/ # 论文 PDF
│ └── notes/ # 碎片笔记
├── scripts/ # 工具脚本
│ ├── wiki_utils.py # 常量、frontmatter 解析、wikilink 提取
│ ├── query.py # BM25 搜索引擎(倒排索引 + LRU 缓存)
│ ├── wiki-mcp-server.py # MCP Server(9 个 tools)
│ ├── ingest.py # 录入管道(保存 raw + 创建骨架)
│ ├── lint.py # 健康检查(断链/孤儿/frontmatter)
│ ├── status.py # 统计信息 + 知识覆盖度评分
│ ├── benchmark.py # 搜索质量基准测试(P@1, P@3, MRR)
│ ├── build-and-sync.sh # Quartz 构建 + GCS 同步
│ ├── synonyms.json # 同义词表(30+ AI/ML 术语)
│ └── test_queries.json # 30 个标准测试查询
├── quartz.config.ts # Quartz 配置
└── quartz.layout.ts # Quartz 布局
```
> 上面这份脚本清单是**某一个** wiki 仓库的样子,不是契约。不同 wiki 仓库的
> 脚本集会有出入(实例:Study Wiki 没有 `gen-moc.py` / `benchmark.py`,
> 却多一个 `graph.py`)。**动手前以 `ls $WIKI_REPO/scripts` 为准**,
> 别照着这里的清单去调一个本地没有的脚本。
## Markdown 页面模板
```markdown
---
title: "标题"
description: "一句话摘要(用于搜索结果展示)"
type: source
date: 2026-04-12
tags:
- tag1
- tag2
aliases:
- 别名1
---
## 原文
[原文链接](https://example.com) · 2026-04-12
## 核心要点
1. **要点一**:说明
2. **要点二**:说明
## 详细内容
使用 [[wikilinks]] 链接到其他页面。
表格、列表、代码块都用标准 Markdown。
```
**Frontmatter 必填字段**: title, type, date, tags
**可选字段**: description, aliases, deprecated, lastmod
**页面类型**: source(来源摘要), entity(实体), concept(概念), analysis(分析)
**内部链接**: 用 `[[slug]]` 或 `[[slug|显示文本]]` wikilink 语法
## Quartz 内建功能(不需要脚本)
Quartz 已内建以下功能,**不需要手动维护**:
- **Graph 知识图谱**: 自动从 `[[wikilinks]]` 生成
- **Backlinks 反向链接**: 每页底部自动显示
- **FlexSearch 全文搜索**: 构建时自动生成索引
- **目录索引 (FolderPage)**: 自动生成目录页
- **Tag 页面**: 自动聚合同标签页面
- **ToC 目录**: 每页自动生成
- **KaTeX 数学**: 支持 `$inline$` 和 `$$block$$`
## 搜索引擎能力(query.py)
query.py 是一个高性能搜索引擎,核心特性:
| 特性 | 说明 |
|------|------|
| **倒排索引** | `{term → [(slug, field, count)]}` 预构建,O(1) 查找 |
| **LRU 缓存** | 热查询 <0.01ms(128 条缓存) |
| **BM25 评分** | k1=1.5, b=0.75, IDF 加权,field 权重(title×10, tags×5, desc×3, body×1) |
| **中文分词** | jieba 精确模式,CJK/ASCII 自动切换 |
| **同义词扩展** | `synonyms.json` 双向映射(tpu↔ironwood/trillium 等) |
| **模糊匹配** | Levenshtein distance ≤ 2 自动纠错 |
| **Tag 共现扩展** | 搜 `tpu` 自动带 `tpu-v7`(基于共现矩阵) |
| **意图分类** | slug/title 精确查找直接返回(0.05ms) |
| **时间衰减** | 180 天半衰期,新页面优先 |
| **图谱加权** | wikilink hub 页面加权 |
| **Entity bonus** | entity/concept 精确匹配 +25 |
| **多 Snippet** | 最多 3 个不重叠片段, ±80 chars, 高亮匹配 |
| **摘要预生成** | description 或正文前 300 字 |
**性能**: 冷查询 1-67ms, 热查询 <0.01ms, P@1=88.9%, P@3=94.7%, MRR=0.851
## 操作流程
### /wiki ingest — 录入新资料
**步骤:**
1. **获取内容**: URL → WebFetch 抓取;PDF → 读取;文本 → 直接使用
2. **创建骨架页面**:
```bash
python3 "$WIKI_REPO"/scripts/ingest.py url \
--slug article-name --title "Title" --tags "tag1,tag2" \
--source-url "https://..." --text "fetched content..."
```
3. **与用户讨论**: 展示 3-5 个关键要点,确认重点方向
4. **填充详细内容**: 用 Edit 工具填充骨架页面(见下方"内容要求")
5. **创建/更新 entity 和 concept 页面**(Bot LLM 判断需要时)
6. **构建部署**:
```bash
bash "$WIKI_REPO"/scripts/build-and-sync.sh
```
7. **回复用户**: 附上新页面 URL `$WIKI_URL/sources/slug`
**Slug 命名**: kebab-case + 日期后缀,如 `tpu-v7-specs-20260412`
### Source 页面内容要求
Source 页面是**编译后的知识页面**,用户打开就能获取核心知识,不需要跳到外部原文。
**必须包含**:
1. **原文链接**: 保留指向原始资料的链接
2. **核心要点** (Key Takeaways): 3-7 个最重要的结论,用编号列表
3. **详细内容**: 根据原文类型选择合适的结构化内容
4. **数据和表格**: 关键数据以表格形式保留
5. **Wiki 关联**: 通过 `[[wikilinks]]` 链接到相关页面
### /wiki query — 基于 Wiki 提问
**步骤:**
1. **搜索**(优先用 MCP tools):
```bash
# MCP(推荐)
wiki_query("搜索关键词") # BM25 全文搜索
wiki_ask("具体问题") # RAG 式问答,直接提取答案段落
wiki_search("type:source tag:tpu") # 结构化过滤
# CLI 回退
python3 "$WIKI_REPO"/scripts/query.py "搜索关键词" --top-k 5
```
2. 深入阅读返回的相关页面(用 `wiki_page(slug)` 或 Read 工具)
3. 发现相关页面:`wiki_related(slug)` 获取推荐
4. 综合回答,引用具体页面 URL
5. **判断是否回存 Wiki**:
- **应该回存**: 对比分析、综合研究、新发现的关联
- **不需要**: 简单事实查询、单页面信息复述
- 回存时创建 `analyses/{slug}.md`,然后运行 `build-and-sync.sh`
### /wiki lint — 健康检查
```bash
python3 "$WIKI_REPO"/scripts/lint.py
```
检查项:
- **断链**: `[[slug]]` 引用的 slug 没有对应 .md 文件
- **孤儿页面**: 没有任何页面 `[[引用]]` 的页面
- **缺失 frontmatter**: title/type/date/tags 缺失
- **内容过短**: 正文 < 100 字
- **标签不一致**: 相似标签未统一
**知识发现**(Lint 时顺带思考):
- 哪些领域来源太少?建议用户补充
- 哪些页面相关但没有链接?
- 是否可以生成新的对比分析?
### /wiki status — 统计信息 + 知识覆盖度
```bash
python3 "$WIKI_REPO"/scripts/status.py
```
显示:页面总数(按类型)、标签分布、最近变更、知识覆盖度评分(connectivity × 40 + freshness × 30 + tag diversity × 30)、orphan 数量、平均 wikilinks 数。
## 构建部署
```bash
# 一键构建 + 同步
bash "$WIKI_REPO"/scripts/build-and-sync.sh
```
等价于:
```bash
cd "$WIKI_REPO"
npx quartz build
gcloud storage rsync -r --delete-unmatched-destination-objects public/ gs://$GCS_BUCKET/cc-pages/wiki-v2/
```
**注意**: 构建前会自动删除 `~/package.json`(如果是空文件),避免干扰 Quartz。
## MCP Server(9 个 Tools)
MCP Server 路径:`$WIKI_REPO/scripts/wiki-mcp-server.py`
配置在 `~/.claude.json` 的 `mcpServers.wiki` 中。基于 fastmcp 框架,所有 tools 用 `@_safe_tool` 包裹防崩溃。
| Tool | 用途 | 适用场景 |
|------|------|---------|
| `wiki_query(question, top_k=5)` | BM25 全文搜索,返回排名结果 + snippets | 主要搜索入口 |
| `wiki_page(slug)` | 读取页面全文 | snippet 不够时深入阅读 |
| `wiki_ask(question)` | RAG 式问答,提取最相关段落 | 直接问题("TPU v7 HBM 多大?") |
| `wiki_related(slug, top_k=5)` | 图+tag+类型推荐相关页面 | "看完这个还应该看什么?" |
| `wiki_search(keyword)` | 快速关键词/结构化搜索 | `type:source tag:tpu /regex/` |
| `wiki_list(type="", tag="")` | 按类型和/或标签列出页面 | 浏览类操作 |
| `wiki_graph_neighbors(slug, depth=1)` | N-hop wikilink 邻居 | 知识图谱探索 |
| `wiki_graph_path(source, target)` | 两页面最短路径(BFS) | 发现知识关联 |
| `wiki_status()` | 统计 + 知识覆盖度报告 | 健康总览 |
**MCP tools 可用时优先用 MCP,否则回退到脚本调用。**
### wiki_search 结构化语法
```
type:source tag:tpu # 按类型+标签过滤
/v[67]/ # 正则匹配标题
type:entity /karp/ # 组合查询
```
## 质量规则
1. **一个概念一个页面**: 不要在一个页面里混合多个无关概念
2. **优先更新已有页面**: 先用 wiki_query 确认不存在再新建
3. **矛盾必须标注**: 发现矛盾用 `> [!warning]` callout
4. **来源必须引用**: 每个事实性陈述都应标注来源
5. **Slug 命名**: kebab-case,简短有意义,如 `tpu-v7`、`knowledge-compounding`
6. **不要修改 raw/**: 原始资料只增不改
7. **Wikilinks 链接**: 提到已有页面的概念/实体时,用 `[[slug]]` 链接
## 脚本清单
| 脚本 | 用途 | 调用时机 |
|------|------|---------|
| `wiki_utils.py` | 常量、frontmatter 解析、slug 查找、wikilink 提取 | 被其他脚本 import |
| `query.py` | BM25 搜索引擎 + 倒排索引 + LRU 缓存 | MCP server / CLI |
| `wiki-mcp-server.py` | MCP Server, 9 个 tools | Claude Code MCP |
| `ingest.py` | 录入管道: 保存 raw + 创建骨架 | `/wiki ingest` |
| `lint.py` | 健康检查: 断链、孤儿、frontmatter | `/wiki lint` |
| `status.py` | 统计 + 知识覆盖度评分 | `/wiki status` |
| `benchmark.py` | 搜索质量基准测试(P@1, P@3, MRR) | 调参验证 |
| `build-and-sync.sh` | Quartz 构建 + GCS 同步 | 每次内容变更 |
| `synonyms.json` | 同义词表(30+ AI/ML 术语) | query.py 加载 |
| `test_queries.json` | 30 条标准测试查询 | benchmark.py |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!