知识图谱skill
---name: schema-driven-wikidescription: 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|projecttags: [tag1, tag2]summary: One-line description of this pageupdated: 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 Principles1. **先读 index.md** — 任何操作前先了解当前知识库结构2. **raw/ 只读** — 绝不修改源材料3. **不确定时先提议** — 展示计划等确认后再写4. **Lint 只出清单** — 用户逐条确认后才改5. **log.md 只追加** — 不重写已有条目(历史 ingest 记录保留,即使引用的页面已删)5b. **log.md 按时间倒序排列(最新在最顶)** — 这是用户阅读偏好。每次追加新条目时,**插入到 log.md 顶部**(第一个 ## [ 之前),而非底部追加,这样打开文件第一眼就看到最新改动。若因批量操作导致顺序错乱,可临时做一次整体反转恢复倒序,事后在 log 中标注 [reordered]6. **[[wikilink]] 用于所有交叉引用**(Obsidian 标准写法**不带 .md**)7. **Query 时最多遍历 2 跳** wikilink8. **写完必须更新 index.md log.md** — 这是 Ingest 的硬性要求漏一个都不算完成9. **自动识别写知识库意图** — 用户说写到知识库更新知识库记下来时不等用户说第二遍直接执行 Ingest 流程10. **分类思想高于目录结构** — 目录可调整,但总 index 单口 / 项目概念归 projects / 技术栈按框架横向 / 简洁不冗余 / 先审计后执行五条原则长期遵守