知识图谱skill


name: schema-driven-wiki

description: "Obsidian 知识库维护技能。当用户提到以下任何关键词时自动调用此技能:知识库、wiki、写进知识库、更新知识库、记到知识库、查知识库、知识库里有、帮我记一下、帮我整理、Ingest、Query、Lint、Obsidian、vault。支持三大工作流:Ingest(导入新知识)、Query(查询知识)、Lint(健康检查)。所有页面使用 \[wikilink] 双向链接,维护 wiki/index.md 总索引和 wiki/log.md 日志。"

tags: obsidian, wiki, knowledge-base, schema, knowledge-management

platforms: linux, macos, windows


Schema-Driven Wiki(知识库管理)

> 维护 `D:\Obsidian Agent\Agent\wiki\` 下的结构化知识库,由 `Schema.md` 和本技能共同治理。

自动触发规则

**本技能应在以下情况自动激活:**

  1. 用户提到"知识库""wiki""写进/更新/记到/查到知识库"

  2. 用户说"帮我记一下""帮我整理一下这个知识点"

  3. 用户讨论了一个技术概念后说"写到知识库""更新进去"

  4. 用户问题涉及的内容在知识库中已有相关页面(先查再答)

  5. 用户提到 Obsidian、vault、Ingest、Query、Lint

**触发后的第一步永远是**:先读 `wiki/index.md` 了解当前知识库结构,再决定是查询、写入还是检查。


Configuration

硬编码路径(Windows 专用,无需配置环境变量)

| 变量 | 值 | 说明 |

|------|-----|------|

| `WIKI_VAULT_PATH` | `D:\Obsidian-llm-wiki` | Vault 根目录 |

| `WIKI_WIKI_DIR` | `wiki` | Wiki 内容目录(相对 vault) |

| `WIKI_RAW_DIR` | `raw` | 原始来源材料目录(只读) |


分类思想(Classification Philosophy)

> **目录结构是暂时的,分类思想才是长久的。** 以下原则指导所有 Ingest / 重构决策。

核心原则

| 原则 | 说明 | 反例 → 正例 |

|------|------|-------------|

| **总 index 单口管理** | 分类入口只在 `wiki/index.md` 唯一维护,**子目录不建 `_index.md`**。避免维护双份、信息不同步。 | ❌ 每建一个 `concepts/xxx/` 就建 `_index.md` → ✅ 只在总 index 的底部分类区集中列出 |

| **项目专属概念归 projects/** | 与特定项目强绑定的知识(如 AI News 的缓存设计、Carbon Audit 的领域模型)放在 `projects/`,**不混入技术栈区**。技术栈区只放跨项目通用的知识。 | ❌ `concepts/ai-news/`、`concepts/carbon-audit/` 顶层目录 → ✅ 移入 `projects/`,跟随各自枢纽页 |

| **技术栈按框架横向组织** | `concepts/` 下按**技术/框架**划分(LangChain / LangGraph / RAG / Multi-Agent / AutoGen / Deep Agents / Python 语法 / Python Web / FastAPI),与所含页面一一对应。 | ❌ 把 Python 语法页散到 LangChain/LangGraph 子目录 → ✅ 统一放 `concepts/python-syntax/` |

| **简洁不冗余** | 单页面分类(如 `sources/` 只剩 1 页)直接删除,内容合并到相关处。空目录(`entities/`、`comparisons/`、`overview/`)及时清理。 | ❌ 为 1 个页面保留整个 `sources/` 目录 → ✅ 删除目录,引用改为纯文本指向实际文件 |

| **先审计后执行** | 移动/删除页面前,先 `grep` 找出所有 wikilink 引用,评估断链风险,再批量替换。操作后**全量死链扫描**验证。 | ❌ 直接 `rm` 页面 → ✅ grep 引用 → 移动/替换 → 验证 0 断链 |

目录结构(当前实际结构)

```

<vault>/

├── Schema.md # Schema & workflow rules

├── raw/ # Raw sources (PDF, web, images). READ-ONLY!

└── wiki/

├── index.md # ⭐ 总索引(唯一入口,子目录不另建 _index.md)

├── log.md # Append-only change log

├── projects/ # 项目枢纽页 + 项目专属概念

│ ├── project_carbon_audit.md (枢纽)

│ ├── project_ai_news.md (枢纽)

│ ├── concept_carbon_domain.md

│ ├── concept_chainlit.md

│ ├── concept_ai_news_architecture.md

│ ├── concept_ai_news_cache_design.md

│ ├── concept_ai_news_duplicate_prevention.md

│ └── concept_ai_news_response_format.md

└── concepts/ # 技术栈知识(跨项目通用)

├── rag/ # RAG 原理 + 工程 + Embedding + 向量库 + 幻觉

├── python-syntax/ # Annotated / yield / with / 装饰器 / AOP / * **

├── python-web/ # HTTP / 路由 / ORM / MySQL / Redis / RESTful / SSE

├── fastapi/ # 入门 / 参数 / 响应 / 异常 / 中间件 / 依赖注入

└── agent/ # Agent 技术栈(框架专属 + 通用编排)

├── concept_prompt_engineering.md

├── agent-dev-paradigm/ # Agent 开发范式(如 Gateway)

├── langchain/ # LCEL / AgentExecutor / vs OpenAI SDK

├── langgraph/ # State / Graph / Checkpointer / LangSmith

├── multi-agent/ # 编排模式 / 看板 / 认知 / Router / HITL

├── autogen/ # 微软框架 GroupChatManager / auto 路由

└── deep-agents/ # LangChain Agent Harness 主从架构

```

> ⚠️ `sources/`、`entities/`、`comparisons/`、`overview/` 已删除(内容合并或无需保留)。


Page Format & Directory Structure

Frontmatter 模板

```yaml


type: "source|entity|concept|comparison|overview|project"

tags: "tag1", "tag2"

summary: "One-line description of this page"

updated: "2026-07-12"


```

文件命名规范

| 类型 | 格式 | 示例 |

|------|------|------|

| Concept | `concept_<slug>.md` | `concept_sse.md` |

| Project | `project_<name>.md` | `project_carbon_audit.md` |

> ⚠️ `source_<name>.md` 类型已弃用------单页面 source 不值得独立目录,溯源引用改为纯文本指向实际代码文件。


Workflows

Workflow 1: Ingest --- 导入新知识

**触发词**:"写进知识库""更新到知识库""记下来""帮我整理这个知识点""Ingest"

**流程**:

```

Step 1 --- 确认范围

  • 用户指定了具体内容 → 直接进入 Step 2

  • 用户只是泛泛说"把这个记下来" → 先确认要记录哪些知识点、放哪个分类

Step 2 --- 确定分类和文件位置(按分类思想决策)

┌─────────────────────────────────────────────────────────┐

│ 决策树: │

│ 内容是否与特定项目强绑定? │

│ ├── 是 → projects/<对应项目>/concept_xxx.md │

│ └── 否(跨项目通用技术栈)→ 按框架/技术选子目录: │

│ Agent 通用(提示词/范式) → concepts/agent/ │

│ LangChain → concepts/agent/langchain/ │

│ LangGraph → concepts/agent/langgraph/ │

│ RAG → concepts/rag/ │

│ Multi-Agent 编排 → concepts/agent/multi-agent/ │

│ AutoGen → concepts/agent/autogen/ │

│ Deep Agents → concepts/agent/deep-agents/ │

│ Python 语法 → concepts/python-syntax/ │

│ Python Web/SSE → concepts/python-web/ │

│ FastAPI → concepts/fastapi/ │

└─────────────────────────────────────────────────────────┘

⚠️ 不要为单个新页面创建新子目录;新子目录只在 ≥2 页同类内容时建立

Step 3 --- 写概念页

  • 使用标准 frontmatter

  • 结构:一句话理解 → 核心内容(表格/代码/图示) → 相关页面 \[wikilink]

  • 与已有页面建立双向链接

Step 4 --- 更新索引和日志

  • wiki/index.md:概览表更新文章数,底部分类区新增行(完整路径 \[projects/concept_xxx] 或 \[concepts/...])

  • wiki/log.md:**追加到顶部**(第一个 `## [` 之前),维持时间倒序(最新在最顶)

```

**规则**:

  • `raw/` 是只读的 --- 绝不修改源文件

  • 只写 `wiki/` 目录下的内容

  • **不建子目录的 `_index.md`** --- 分类入口只在总 index 维护

  • 新建子目录时同步更新 index.md 概览表

Workflow 2: Query --- 查询知识

**触发词**:"知识库里有没有""帮我查一下""查知识库""Query"

**流程**:

```

Step 1 --- 先查 index.md

读 wiki/index.md,按分类和 summary 定位候选页面。

不要第一步就 grep 全文搜索。

Step 2 --- 读候选页面

读 1-3 个最相关的页面。

Step 3 --- 如果是技术问答

直接引用 \[Page Names] 回答用户问题。

如果发现知识缺口 → 提议 Ingest 新知识。

Step 4 --- 如果需要追踪关系

用 Grep 搜 \[PageName] 找反向链接,最多遍历 2 跳。

```

Workflow 3: Lint --- 健康检查

**触发词**:"整理知识库""对知识库做 Lint""检查知识库"

**流程**:

```

Step 1 --- 扫描 wiki/ 检查:

• 页面间矛盾

• 过期陈述

• 孤立页面(零 inbound wikilink)

• 反复出现但没有独立页面的概念

• 缺少交叉引用

• 冗余 _index.md(子目录不应有)

• 单页面分类目录(如 sources/ 只剩 1 页)

• 项目专属概念错放在 concepts/ 顶层

Step 2 --- 生成建议清单,不改任何文件

Step 3 --- 用户确认后逐条执行

Step 4 --- 记录到 wiki/log.md

```


结构重构原则(Refactoring Rules)

> 当需要移动/删除页面或重组目录时遵守。

| 步骤 | 操作 | 工具 |

|------|------|------|

| 1. 审计 | 找出所有引用待删/待移页面的 wikilink | `grep -rn "PageName" wiki/ --include="*.md"` |

| 2. 评估 | 区分"正文引用(需替换为纯文本)"vs"历史 log 记录(保留)" | 人工判断 |

| 3. 执行 | 移动文件 → 替换 wikilink → 删除空目录 | `mv` / Python 脚本 / `rmdir` |

| 4. 验证 | 全量死链扫描,确认 0 断链 | Python 脚本(注意 Obsidian wikilink 不带 `.md`) |

**典型重构场景**:

  • 项目专属概念从 `concepts/` 移入 `projects/` → 同步更新 index 概览表 + 底部分类区

  • 删除单页面分类目录 → 替换所有 wikilink 为纯文本,删除目录

  • 合并重复页面 → 保留主页,重定向旧页(或删除),更新所有引用


Operating Principles

  1. **先读 index.md** --- 任何操作前先了解当前知识库结构

  2. **raw/ 只读** --- 绝不修改源材料

  3. **不确定时先提议** --- 展示计划,等确认后再写

  4. **Lint 只出清单** --- 用户逐条确认后才改

  5. **log.md 只追加** --- 不重写已有条目(历史 ingest 记录保留,即使引用的页面已删)

5b. **log.md 按时间倒序排列(最新在最顶)** --- 这是用户阅读偏好。每次追加新条目时,**插入到 log.md 顶部**(第一个 `## \` 之前),而非底部追加,这样打开文件第一眼就看到最新改动。若因批量操作导致顺序错乱,可临时做一次整体反转恢复倒序,事后在 log 中标注 \[reordered

  1. **\[wikilink] 用于所有交叉引用**(Obsidian 标准写法**不带 `.md`**)

  2. **Query 时最多遍历 2 跳** wikilink

  3. **写完必须更新 index.md + log.md** --- 这是 Ingest 的硬性要求,漏一个都不算完成

  4. **自动识别写知识库意图** --- 用户说"写到知识库""更新知识库""记下来"时,不等用户说第二遍,直接执行 Ingest 流程

  5. **分类思想高于目录结构** --- 目录可调整,但"总 index 单口 / 项目概念归 projects / 技术栈按框架横向 / 简洁不冗余 / 先审计后执行"五条原则长期遵守

相关推荐
DS随心转小程序1 小时前
实测评测 AI 导出鸭转化效能,全方位优化 DeepSeek 输出 word 文档落地使用效率
人工智能·aigc·word·豆包·deepseek·ai导出鸭
哈尔ai1 小时前
别让模型接口成为参数黑洞:Spring MVC 请求绑定、校验与错误契约实战
人工智能
ONEYAC唯样1 小时前
唯样-AI时代,MLCC迎来第二个黄金十年
人工智能
szxinmai主板定制专家1 小时前
基于Zynq MPSoC的多路GMSL相机同步采集与低延迟图像预处理系统|车载视觉高速解决方案
人工智能·zynq·gmsl·rk3588+fpga·rk3576+fpga
王莎莎1 小时前
科研 Agent 先别急着搜:为什么 schema discovery 才是工作流的第一步
人工智能
zhulin10281 小时前
用 TRAE Work 3 小时的工作量,压缩到 20 分钟
人工智能
不加辣椒1 小时前
第10章:上下文工程系统架构设计
人工智能
Bigger2 小时前
把中式美学塞进工具站,到底怎样才不土?我拿烟火食间试了一遍
人工智能·设计·视觉设计
科技新芯2 小时前
通义千问进入特斯拉中国车机深度测试阶段
人工智能·物联网·生活