$npx -y skills add chubbyguan/chubbyskills --skill knowledge-base-managementObsidian 知识库全生命周期管理:三层架构、素材入库(ABC分级)、健康检查、GBrain/GraphRAG/LLM Wiki 三件套集成、目录整理
| 1 | # Knowledge Base Management — 知识库全生命周期管理 |
| 2 | |
| 3 | ## 核心架构 |
| 4 | |
| 5 | ### 三层架构 |
| 6 | |
| 7 | ``` |
| 8 | 素材库/ → Layer 1: 不可变原始素材(AI 只读) |
| 9 | wiki/ → Layer 2: AI 编译的结构化知识(AI 维护) |
| 10 | 产出/ → Layer 3: 按需生成的视图(不持久化) |
| 11 | ``` |
| 12 | |
| 13 | **核心原则**:素材库是事实源(不可变),Wiki 是 AI 编译的投影(必须溯源),产出是按需生成的视图(不持久化)。 |
| 14 | |
| 15 | ### Vault 配置 |
| 16 | |
| 17 | vault 路径通过环境变量配置,不写死在脚本里: |
| 18 | |
| 19 | ```bash |
| 20 | export VAULT_DIR="$HOME/Documents/your-vault" # 你的 Obsidian vault 根目录 |
| 21 | ``` |
| 22 | |
| 23 | - **健康检查 cron**:建议每周日 9:00 运行 `scripts/vault_health_check.py`(见第 2 节) |
| 24 | |
| 25 | --- |
| 26 | |
| 27 | ## 1. 素材入库 (Ingest) |
| 28 | |
| 29 | ### 新素材处理流水线 |
| 30 | |
| 31 | ``` |
| 32 | 用户丢素材 → |
| 33 | ① 判断类型 → 存入素材库/对应子目录 |
| 34 | ② 提取关键信息 → 决定是否建 wiki 页面 |
| 35 | ③ 如果值得:建选题(打 SHARP 分)或更新项目页 |
| 36 | ④ 更新 wiki/index.md 索引 |
| 37 | ``` |
| 38 | |
| 39 | ### 素材分级 (ABC Grading) |
| 40 | |
| 41 | | 等级 | 标准 | 处理 | |
| 42 | |------|------|------| |
| 43 | | **A** | 核心方法论/框架/系统 | 优先编译为选题 | |
| 44 | | **B** | 有洞察但不够系统 | 备选,作为 A 的补充 | |
| 45 | | **C** | 水货/重复/与定位无关 | 归档,不主动编译 | |
| 46 | |
| 47 | ### 公众号文章处理 |
| 48 | |
| 49 | **来源一:wechat-article-exporter 自动同步(每天 07:00 cron)** |
| 50 | 公众号文章直接存入 `素材库/公众号文章/<公众号名>/`,每日自动增量同步。 |
| 51 | |
| 52 | **来源二:手机保存的文章同步(每天 08:00 cron)** |
| 53 | 通过手机保存的文章先落到一个待处理目录(按日期),再由一个归类脚本搬入素材库并按领域筛选优质文章做 A+B 深度处理。 |
| 54 | |
| 55 | > 归类脚本(如 `sync_notes_to_kb.py`)与各人的目录结构强相关,本仓库不内置,按下面的「工作流」自建即可。 |
| 56 | |
| 57 | **工作流**: |
| 58 | ``` |
| 59 | 新文章入库 → |
| 60 | ① 脚本自动归类到 素材库/公众号文章/<公众号名>/ |
| 61 | ② URL 去重(跳过已存在的文章) |
| 62 | ③ 领域关键词筛选(AI/半导体/消费/电商/品牌/投资/Agent/Skill) |
| 63 | 跳过纯营销、与用户领域无关的文章 |
| 64 | ④ 命中关键词的精选文章 → A+B 双轨处理(每日上限 5 篇) |
| 65 | A层:观点提取+分类+3条Takeaway → wiki/📡 外部输入/公众号/<公众号名>/<主题>/ |
| 66 | B层:问题链+伴读引导 → 同上 |
| 67 | ⑤ 更新 wiki/index.md(外部输入 — 最新 A+B 处理 表格) |
| 68 | ``` |
| 69 | |
| 70 | **关键原则**: |
| 71 | - 聚焦高价值主题(匹配用户兴趣),不追求全量覆盖 |
| 72 | - 每个 wiki 页面必须用 `source` frontmatter 列出引用素材路径 |
| 73 | - 深度处理上限 5 篇/天,分批消化 |
| 74 | - 文章路径格式:`[[../../../../素材库/公众号文章/<公众号>/<文件名>]]` |
| 75 | |
| 76 | --- |
| 77 | |
| 78 | ## 2. 健康检查 (Audit) |
| 79 | |
| 80 | ### 自动检查项 |
| 81 | |
| 82 | 每周日 9:00 cron 自动运行,检查: |
| 83 | - 断链(broken wikilinks) |
| 84 | - 缺 source 字段 |
| 85 | - frontmatter 缺失 |
| 86 | - 待沉淀概念 |
| 87 | - 低链接密度 |
| 88 | |
| 89 | **脚本**:`scripts/vault_health_check.py`(本仓库提供,零依赖,纯标准库) |
| 90 | |
| 91 | ```bash |
| 92 | # 指定 vault 路径 |
| 93 | python3 scripts/vault_health_check.py "$HOME/Documents/your-vault" |
| 94 | |
| 95 | # 或读 VAULT_DIR 环境变量 |
| 96 | export VAULT_DIR="$HOME/Documents/your-vault" |
| 97 | python3 scripts/vault_health_check.py --json |
| 98 | |
| 99 | # 把缺 source 字段也视为问题(强溯源场景) |
| 100 | python3 scripts/vault_health_check.py --require-source |
| 101 | ``` |
| 102 | |
| 103 | 检查项:断链、缺 frontmatter/source/summary、孤立笔记、空目录、内容重复、文件名含空格。 |
| 104 | 存在断链时退出码为 1,方便接入 cron / CI 告警。 |
| 105 | |
| 106 | ### 清理标准 |
| 107 | |
| 108 | | 操作 | 规则 | |
| 109 | |------|------| |
| 110 | | 去重 | SHA256 或 diff 确认相同后删除副本 | |
| 111 | | 归位 | 散落文件按类型移到素材库/对应子目录 | |
| 112 | | 归档 | 历史版本移到 `wiki/🗄️ 归档/`,不删除 | |
| 113 | | 空目录 | 直接删除。含 redirect README 的 legacy 目录也算空目录 | |
| 114 | | 全库审计 | 执行第 6 节「全库审计与批量归档」 | |
| 115 | | 目录审查 | 执行第 5 节「目录审查与增量清理」 | |
| 116 | |
| 117 | ### 文件命名规范 |
| 118 | |
| 119 | ``` |
| 120 | ✅ 选题-AI-Agent-未来方向.md # 连字符连接,无空格 |
| 121 | ❌ 选题-DemisHassabis Agent.md # 含空格,wikilink 断裂 |
| 122 | ``` |
| 123 | |
| 124 | ### 迁移提示页格式 |
| 125 | |
| 126 | 当文档内容迁移到新位置时,旧文件不删除,改为迁移提示: |
| 127 | |
| 128 | ```yaml |
| 129 | --- |
| 130 | title: ⚠️ 已迁移 - 原文件名(旧版 vX.0) |
| 131 | type: note |
| 132 | tags: [已废弃, 旧版, 已迁移] |
| 133 | created: YYYY-MM-DD |
| 134 | summary: 已被 [[新位置/新文件名|新版本]] 取代。 |
| 135 | --- |
| 136 | ``` |
| 137 | |
| 138 | **关键规则**: |
| 139 | - frontmatter: `⚠️ 已迁移` 标题 + `已废弃` 标签 |
| 140 | - 说明为什么旧版不再适用(1-3条) |
| 141 | - 明确的新链接 |
| 142 | - **不要保留旧的正文内容** |
| 143 | |
| 144 | --- |
| 145 | |
| 146 | ## 3. 工具集成 (Tools) |
| 147 | |
| 148 | ### 🧠 本地索引(本仓库提供,零依赖) |
| 149 | |
| 150 | `tools/vault_index.py` 会把 Markdown vault 建成 SQLite 索引,支持关键词搜索、semantic-lite 检索、平台/标签过滤、最近笔记、读取笔记和统计。SQLite FTS5 可用时自动启用;不可用时降级为 LIKE 搜索,中文内容也能命中。 |
| 151 | |
| 152 | ```bash |
| 153 | # 在仓库根目录运行 |
| 154 | python3 tools/vault_index.py index "$VAULT_DIR" |
| 155 | python3 tools/vault_index.py search "AI Agent" |
| 156 | python3 tools/vault_index.py semantic "内容策略" |
| 157 | python3 tools/vault_index.py search "品牌" --platform wechat |
| 158 | python3 tools/vault_index.py recent --limit 10 |
| 159 | python3 tools/vault_index.py read "10_Sources/x/example.md" --vault "$VAULT_DIR" |
| 160 | python3 tools/vault_index.py stats |
| 161 | ``` |
| 162 | |
| 163 | 默认索引位置:`.chubby/vault_index.sqlite`。也可以用 `--db /path/to/index.sqlite` 指定。 |
| 164 | |
| 165 | ### 🗂️ 自动归档与知识卡片(本仓库提供,零依赖) |
| 166 | |
| 167 | `tools/vault_curator.py` 默认 dry-run,适合先看会移动/生成什么: |
| 168 | |
| 169 | ```bash |
| 170 | python3 tools/vault_curator.py archive "$VAULT_DIR" |
| 171 | python3 tools/vault_curator.py archive "$VAULT_DIR" --apply |
| 172 | python3 tools/vault_curator.py card "$VAULT_DIR" "10_Sources/x/example.md" --apply |
| 173 | ``` |
| 174 | |
| 175 | - `archive` 只处理 `00_Inbox/**/*.md`,按 `platform`、`summary`、processed 标签归入 `10_Sources/<platform>/` 或 `20_Processed/`。 |
| 176 | - `card` 从单篇笔记生成 `20_Processed/Cards/*.md`,保留来源、摘要、要点和 tags。 |
| 177 | |
| 178 | ### 🔌 MCP Server(本仓库提供,推荐) |
| 179 | |
| 180 | `scripts/mcp_server.py` 把知识库的「搜索 / 语义检索 / 读取 / 最近笔记 / 重建索引 / 统计」暴露成 MCP 工具,让**任何支持 MCP 的 Agent**(Claude Code、Codex 等)直接查你的库——形成「采集类 skill 负责写入、MCP 负责被调用查询」的闭环。 |
| 181 | |
| 182 | ```bash |
| 183 | pip install mcp |
| 184 | VAULT_DIR=/path/to/your-vault python3 scripts/mcp_server.py |
| 185 | ``` |
| 186 | |
| 187 | 在 Agent 的 MCP 配置里: |
| 188 | |
| 189 | ```json |
| 190 | { |
| 191 | "mcpServers": { |
| 192 | "chubby-kb": { |
| 193 | "command": "python3", |
| 194 | "args": ["<knowledge-base-management/scripts/mcp_server.py 的绝对路径>"], |
| 195 | "env": { "VAULT_DIR": "/path/to/your-vault" } |
| 196 | } |
| 197 | } |
| 198 | } |
| 199 | ``` |
| 200 | |
| 201 | 暴露的工具:`search_vault(query, limit, platform, tag)`、`semantic_search_vault(query, limit, platform, tag)`、`read_kb_note(path)`、`list_recent_notes(limit, platform)`、`reindex_vault()`、`vault_index_stats()`。 |
| 202 | 内置路径穿越防护,只能读 `VAULT_DIR` 范围内的笔记。 |
| 203 | |
| 204 | --- |
| 205 | |
| 206 | > 以下均为**可选的第三方/外部工具**,不随本仓库提供。路径(如 `~/graphrag-poc/`、 |
| 207 | > `~/.herme |