obsidian-note-workflow · git:20260516.c68a9b7 · 2026-05-16 · sha256 74ca958094f3e696

obsidian-note-workflow git:20260516.c68a9b7A

Immutable. This exact content never changes and is served at /api/v1/blob/74ca958094f3e696.

---
name: obsidian-note-workflow
description: Use when creating, querying, or managing Obsidian notes with preview-first workflow, intelligent classification, automatic directory creation, and vault initialization
---

# Obsidian Note Workflow

## Overview

通用 Obsidian 笔记智能管理系统:预览优先 → 智能分类 → 自动创建 → 查询管理 → 库初始化。

**核心原则**:
- **快速优先**:确定的内容自动归类,不确定才预览
- **预览极简**:只显示目录+理由+候选文件名,不显示标签选项
- **优先更新**:检测相似文件,优先更新而非创建
- **两阶段加载**:预览读分类规则,确认后读标签规则
- **智能标签**:优先匹配现有标签,创建新标签后更新规则
- **历史追溯**:每次操作都记录到 history.md,支持查询
- **延迟生成**:确认后再生成标签、元数据
- **元数据分离**:分类、标签、命名规范、历史记录分开存储
- **原样记录用户内容,不主动扩展**
- 无需配置文件,智能分析

**智能推断**:通过分析现有目录和文件,自动识别分类规则、命名规范、标签体系。

## When to Use

```dot
digraph when_to_use {
    "用户提供内容" [shape=diamond];
    "用户查询笔记" [shape=diamond];
    "用户管理笔记" [shape=diamond];
    "初始化笔记库" [shape=diamond];

    "创建模式" [shape=box];
    "查询模式" [shape=box];
    "管理模式" [shape=box];
    "初始化模式" [shape=box];

    "用户提供内容" -> "创建模式";
    "用户查询笔记" -> "查询模式";
    "用户管理笔记" -> "管理模式";
    "初始化笔记库" -> "初始化模式";
}
```

**使用场景**:
- 用户提供会议、想法、待办等内容需要创建笔记
- 用户查询待办、标签、项目相关文档
- 用户标记完成、批量整理笔记
- **用户初始化现有笔记库**,生成分类规则和标签规则

---

## Mode 0: Initialize Vault (初始化模式) ⭐

### 初始化命令

当用户说"初始化我的笔记库"或"生成分类规则"时触发:

```dot
digraph init_flow {
    "扫描目录结构" -> "分析文件命名模式";
    "分析文件命名模式" -> "提取常用标签";
    "提取常用标签" -> "推断分类规则";
    "推断分类规则" -> "生成 _metadata_/ 元数据文件";
    "生成 _metadata_/ 元数据文件" -> "总结笔记库结构";
}
```

### Step 1: 扫描目录结构

**使用 Bash 工具扫描**:
```bash
# 查找所有一级目录
find . -maxdepth 1 -type d | grep -v "^\./\." | sort

# 查找所有二级目录
find . -maxdepth 2 -type d | grep -v "^\./\." | sort

# 统计每个目录的文件数量
for dir in */; do echo "$dir: $(find "$dir" -type f -name "*.md" | wc -l) files"; done
```

### Step 2: 分析文件命名模式

**提取命名规则**:
```bash
# 查看每个目录的文件命名模式
find ./00实时会议记录 -name "*.md" -type f | head -10
find ./01临时 -name "*.md" -type f | head -10
```

**识别模式**:
- 日期前缀:`YYYY-MM-DD-*`
- 客户前缀:`客户名-*`
- 类型后缀:`*-会议.md`

### Step 3: 提取常用标签

**从 frontmatter 提取**:
```bash
# 提取所有 tags 字段
grep -r "^tags:" --include="*.md" -A 5 | sort | uniq -c

# 统计标签使用频率
grep -rh "^tags:" --include="*.md" -A 5 | grep "^  -" | sort | uniq -c | sort -rn
```

### Step 4: 推断分类规则

**基于目录名称和文件内容推断**:

| 目录名 | 推断用途 | 典型文件模式 |
|-------|---------|-------------|
| `meetings/` `会议/` `00实时会议记录/` | 会议纪要 | `YYYY-MM-DD-*.md` |
| `temp/` `临时/` `01临时/` | 临时笔记 | `临时-*.md` `*.md` |
| `work/` `工作/` `03工作/` | 工作脚本 | `*.sh` `*.js` `脚本-*` |
| `clients/` `客户/` `04客户/` | 客户文档 | `客户名-*.md` |

### Step 5: 生成元数据文件

**在 `_metadata_/` 目录下生成多个元数据文件**:

#### `_metadata_/classification-rules.md`(分类规则 - 轻量级)
**用途**:预览阶段快速判断分类,文件小,加载快
**内容**:
- 每个目录的用途描述
- 关键词匹配规则
- 置信度判断标准

#### `_metadata_/tag-rules.md`(标签规则 - 重量级)
**用途**:确认后生成标签,文件可很大
**内容**:
- 完整的标签体系
- 标签推断规则
- 标签使用频率统计

#### `_metadata_/naming-conventions.md`(命名规范)
**用途**:确认后生成文件名
**内容**:
- 各类文档的命名规范
- 现有文件命名示例
- 最佳实践建议

#### `_metadata_/history.md`(操作历史)⭐
**用途**:记录所有操作历史,支持查询
**内容**:
- 按时间倒序排列的操作记录
- 每次操作的时间戳、类型、文件、概览
- 支持按次数、时间、类型、内容查询
- 持续追加,永不删除

### Step 6: 总结笔记库结构

**生成报告**:

```
🔍 笔记库分析报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📊 基本信息
- 总目录数: X 个
- 总文件数: Y 个
- 分析时间: YYYY-MM-DD

📂 目录结构
[一级目录列表,包含文件数统计]

🏷️ 标签体系
[按频率排序的常用标签]

📝 命名规范
[检测到的命名模式]

✅ 已完成
- 创建了 _metadata_/ 元数据文件夹
- 生成了分类规则文件(轻量,预览用)
- 生成了标签规则文件(重量,确认后用)
- 生成了命名规范文件
- 创建了操作历史文件(空文件,后续追加)

💡 后续使用
AI 将使用分离的元数据文件来加速预览和分类。
```

### 初始化元数据文件

**创建 `_metadata_/` 文件夹,并生成多个元数据文件**:

#### 1. `_metadata_/classification-rules.md`(分类规则)

```markdown
# 分类规则 - 用于预览阶段快速判断

**最后更新**: YYYY-MM-DD
**用途**: 轻量级分类规则,用于快速预览

## 目录分类规则

### 00实时会议记录/
- **用途**: 实时会议工作区
- **关键词**: 会议、录音、问答
- **置信度**: 90%(会议关键词)
- **典型文件**: 会议录音.md, 问答记录.md

### 01临时/
- **用途**: 临时笔记、快速想法
- **关键词**: 临时、测试、想法
- **置信度**: 90%(临时关键词)
- **典型文件**: 临时-*.md, 测试*.md

### 02提示词/
- **用途**: AI 工具提示词和配置
- **关键词**: 提示词、prompt、session
- **置信度**: 95%(明确类型)
- **典型文件**: *提示词.md

### 03工作/
- **用途**: 工作脚本、技术文档
- **关键词**: 脚本、插件、参数
- **置信度**: 90%(脚本关键词)
- **典型文件**: *脚本.md, *参数.md

### 04客户/
- **用途**: 客户项目文档
- **关键词**: 华为、OPPO、小天才、电信、飞速
- **置信度**: 95%(明确客户名)
- **典型文件**: [客户名]-*.md

## 置信度判断标准

- 95%: 明确客户名、明确类型(提示词、脚本)
- 90%: 明确关键词(临时、测试、会议)
- <90%: 需要预览确认
```

#### 2. `_metadata_/tag-rules.md`(标签规则)

```markdown
# 标签规则 - 用于确认后生成标签

**最后更新**: YYYY-MM-DD
**用途**: 完整标签体系和推断规则

## 标签分类

### 内容类型标签
- `#会议纪要` - 检测"会议"、"讨论" → 添加
- `#提示词` - 检测"提示词"、"prompt" → 添加
- `#脚本` - 检测"脚本"、"代码"、"函数" → 添加
- `#想法` - 检测"想法"、"突然想到" → 添加
- `#方案` - 检测"方案"、"解决" → 添加

### 状态标签
- `#进行中` - 正在进行的工作
- `#已完成` - 已完成的事项
- `#待验证` - 需要验证的内容

### 客户标签
- `#华为` - 检测"华为" → 添加
- `#OPPO` - 检测"OPPO"、"oppo" → 添加
- `#小天才` - 检测"小天才" → 添加
- `#电信` - 检测"电信" → 添加
- `#飞速` - 检测"飞速" → 添加

### 技术标签
- `#AI` - 检测"AI"、"智能" → 添加
- `#工具` - 检测"工具"、"软件" → 添加
- `#工作流` - 检测"工作流"、"流程" → 添加

## 标签组合规则

**会议记录**: `#会议纪要` + `#[客户名]`
**提示词**: `#提示词` + `#AI` + `#工具`
**脚本**: `#脚本` + `#工具`
**临时笔记**: `#想法`(仅此一个)
**客户方案**: `#方案` + `#[客户名]` + `#AI`
```

#### 3. `_metadata_/naming-conventions.md`(命名规范)

```markdown
# 命名规范 - 用于确认后生成文件名

**最后更新**: YYYY-MM-DD
**用途**: 文件命名规范和示例

## 各类文档命名规范

### 会议记录
**格式**: `YYYY-MM-DD-[客户]-会议类型.md`
**示例**: `2026-02-08-华为-AI平台讨论会议.md`

### 技术方案
**格式**: `[客户]-方案名称.md`
**示例**: `华为-AI平台升级方案.md`

### 提示词文档
**格式**: `[工具名称]-提示词-功能.md`
**示例**: `claudecode-提示词-会议记录.md`

### 脚本文档
**格式**: `[功能描述]-脚本.md`
**示例**: `自动分类-脚本.md`

### 临时笔记
**格式**: `临时-[主题]-YYYY-MM-DD.md`
**示例**: `临时-想法-20260208.md`

## 文件名规范
- ✅ 使用中英文、数字、连字符
- ❌ 不使用空格、特殊字符
- ✅ 日期格式: YYYY-MM-DD
- ✅ 客户名使用缓存中的标准名称
```

#### 4. `_metadata_/history.md`(操作历史)

```markdown
# 操作历史

**创建时间**: YYYY-MM-DD
**用途**: 记录所有创建和更新操作

---

## [YYYY-MM-DD HH:mm:ss]
**操作**: 初始化
**文件**: _metadata_/history.md
**概览**: 初始化笔记库,创建元数据文件

---
(后续操作将按时间倒序追加到此文件)
```

---

## Mode 1: Create Workflow (创建模式) ⚡

### 快速创建流程

```dot
digraph create_flow {
    rankdir=LR;
    node [shape=box, style=rounded];

    "1. 读取分类规则(轻量)" -> "2. 内容识别 + 置信度判断";
    "2. 内容识别 + 置信度判断" -> "高置信度?";
    "高置信度?" -> "是" -> "读取标签规则(重量) + 创建";
    "高置信度?" -> "否" -> "3. 极简预览";

    "3. 极简预览" -> "4. 用户确认";
    "4. 用户确认" -> "读取标签规则(重量) + 创建";
}
```

### Step 1: 读取轻量元数据(预览阶段)

**读取两个轻量文件**(快速预览):
1. 检查 `_metadata_/classification-rules.md` 是否存在
2. 检查 `_metadata_/naming-conventions.md` 是否存在
3. 如果不存在,自动运行初始化流程
4. **读取内容**:
   - `classification-rules.md`:目录分类规则、关键词、置信度
   - `naming-conventions.md`:命名规范(用于生成候选文件名)
5. **暂不读取** `tag-rules.md`(重量级文件,确认后读)

### Step 2: 内容识别 + 置信度判断 + 文件匹配

**基于缓存的分类规则**,识别内容并判断置信度。

**同时进行文件匹配**(优先更新现有文件):
- 搜索目标目录中是否有相似文件
- 相似度判断:标题相似度、内容相似度、日期匹配
- 如果找到相似文件(≥70%相似度),建议更新
- 如果没有相似文件,建议创建新文件

**高置信度自动创建**(≥90%):

| 匹配模式 | 目标目录 | 置信度 |
|---------|---------|-------|
| 明确客户名 + 会议 | `04客户/[客户]/会议/` | 95% |
| 包含"提示词" | `02提示词/` | 95% |
| 包含"脚本"、"函数" | `03工作/` | 90% |
| 包含"临时"、"测试" | `01临时/` | 90% |

**低置信度需要预览**(<90%):

- 新客户名称(不确定是否创建子目录)
- 跨类别内容(同时匹配多个目录)
- 内容过短(少于10字)
- 无明显特征(无关键词匹配)

**重要原则**:
- ⚠️ **原样记录用户内容,不要主动扩展**
- ⚠️ **只整理格式,不添加额外内容**
- ⚠️ **如果需要补充内容,必须先征求用户同意**

### Step 3: 智能预览(创建 vs 更新)

**优先更新现有文件**:
- 搜索目标目录,检查是否有相似文件
- 相似度判断:标题相似度、内容主题、日期匹配
- 找到相似文件(≥70%)→ 建议更新
- 无相似文件 → 建议创建

**预览格式**:

```
📂 归类建议
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

检测到相似文件: [是/否]

【方案1 - 更新现有】
文件: 04客户/华为/CodeBuddy工具优势.md
相似度: 85%
理由: 标题相似,内容主题匹配

【方案2 - 创建新文件】
文件名选项:
  1. CodeBuddy工具对比分析.md
  2. CodeBuddy功能特点.md
  3. AI工具-CodeBuddy优势.md

理由:
  • 包含工具功能对比分析
  • 匹配客户文档特征

请选择:
[u] 更新现有文件  [c] 创建新文件(选择1-3)  [n] 修改目录
```

**注意事项**:
- ✅ 优先建议更新现有文件(避免碎片化)
- ✅ 显示3个候选文件名供选择
- ✅ 相似度判断基于标题和内容
- ✅ 用户确认后才开始处理标签

### Step 4: 两阶段生成元数据 + 智能标签

**阶段1:用户确认后(或高置信度自动触发)**

1. **读取标签规则**(第二阶段加载):
   - 读取 `_metadata_/tag-rules.md`
   - 读取 `_metadata_/naming-conventions.md`
   - **只在确认后才加载这些文件**(加速预览!)

2. **自动生成 frontmatter**:
   ```yaml
   ---
   title: [自动提取标题]
   date: [今天日期]
   tags:
     - [基于 tag-rules.md 推断3-5个标签]
   status: completed
   ---
   ```

3. **智能标签生成**(优先匹配现有标签):

   **步骤1:读取现有标签**
   - 从 `_metadata_/tag-rules.md` 读取所有已有标签
   - 分析内容,提取关键词

   **步骤2:匹配现有标签**(优先)
   - 内容关键词与现有标签匹配
   - 客户名匹配 → `#客户名`
   - 内容类型匹配 → `#会议纪要`、`#提示词`、`#脚本` 等
   - 技术栈匹配 → `#AI`、`#工具` 等

   **步骤3:创建新标签**(仅当无法匹配时)
   - 如果现有标签无法满足(少于3个),创建新标签
   - 新标签命名规则:
     - 简洁明了(2-4个字)
     - 使用中文或英文
     - 避免重复和相似标签
   - **每个文件生成 3-10 个标签**

4. **调用 obsidian-markdown skill** 创建或更新笔记

### Step 5: 动态更新元数据文件 + 记录历史

**智能维护元数据体系**(确保后续分类准确)+ **记录操作历史**:

1. **检测需要更新的元数据**
   - 是否创建了新标签?
   - 是否创建了新目录?
   - 是否发现了新的命名模式?

2. **更新 tag-rules.md**(如果创建了新标签)
   - 将新标签添加到对应的分类中
   - 记录新标签的推断规则
   - 示例:
     ```markdown
     ## 内容类型标签
     - `#新标签` - 检测"关键词" → 添加
     ```

3. **更新 classification-rules.md**(如果创建了新目录)
   - 将新目录添加到分类规则中
   - 记录目录的用途、关键词、置信度
   - 示例:
     ```markdown
     ### 05新客户/
     - **用途**: 新客户项目文档
     - **关键词**: [客户名]
     - **置信度**: 95%(明确客户名)
     - **典型文件**: [客户名]-*.md
     ```

4. **更新 naming-conventions.md**(如果发现新命名模式)
   - 记录新发现的命名规律
   - 添加到对应的文档类型中
   - 示例:
     ```markdown
     ### 工具对比文档
     **格式**: [工具名]-对比-分析.md
     **示例**: CodeBuddy-对比-分析.md
     **检测时间**: YYYY-MM-DD
     ```

5. **无需更新的情况**
   - 所有标签、目录、命名模式都已存在
   - 只是更新现有文件内容

6. **记录操作历史**(每次操作都记录)
   - 追加到 `_metadata_/history.md`
   - 记录格式:
     ```markdown
     ## [YYYY-MM-DD HH:mm:ss]
     **操作**: [创建/更新]
     **文件**: [文件路径]
     **概览**: [一句话描述]
     **标签**: [新创建的标签,如有]
     **目录**: [新创建的目录,如有]
     ```
   - 用于后续查询历史记录

**元数据维护原则**:
- ✅ **动态更新**:创建新内容时自动维护元数据
- ✅ **持续优化**:每次操作都可能改进分类准确性
- ✅ **历史追踪**:所有操作都记录在 history.md
- ✅ **无需重新初始化**:元数据实时保持最新状态

---

## 自动创建置信度规则

### 高置信度场景(直接创建)

✅ **明确客户名**:检测到缓存中存在的客户名
✅ **明确类型**:提示词、脚本、会议
✅ **明确状态**:临时、测试、想法

### 低置信度场景(需要预览)

⚠️ **新客户名**:缓存中不存在的客户名
⚠️ **跨类别**:同时匹配多个目录特征
⚠️ **内容过短**:少于10个字符
⚠️ **模糊内容**:无明确关键词

### 特殊场景

🔧 **用户指定目录**:如果用户说"放到XX目录",直接创建
🔧 **用户指定标题**:如果用户说"标题是XX",使用用户指定的标题

---

## Mode 2: Query Functions (查询模式)

### 查询类型

| 查询类型 | 触发词示例 | 实现方法 |
|---------|-----------|---------|
| **待办查询** | "查询所有待办"、"列出任务" | 搜索 `- [ ]` 格式 |
| **状态查询** | "查看未完成的" | 搜索 task + status |
| **标签查询** | "列出标签为X的笔记" | Grep frontmatter tags |
| **目录查询** | "某目录下有哪些文档" | 搜索特定目录 |
| **时间查询** | "某月份的文档" | 搜索文件名日期 |
| **关键词搜索** | "搜索包含某词" | Grep 内容 |
| **历史查询** | "最近3次创建"、"最近5小时的操作" | 读取 `_metadata_/history.md` |

### 历史查询(新增)

**查询最近的操作记录**:

1. **按次数查询**
   - "最近3次创建的内容"
   - "最近5次修改"
   - "最近10次操作"
   - 实现:从 `_metadata_/history.md` 读取最后N条记录

2. **按时间查询**
   - "最近5小时创建的内容"
   - "今天创建的笔记"
   - "昨天修改的文件"
   - 实现:解析 history.md 的时间戳,筛选符合条件的记录

3. **按类型查询**
   - "最近创建的客户文档"
   - "最近更新的提示词文件"
   - 实现:结合 history.md 和文件路径筛选

4. **按内容查询**
   - "最近关于华为的记录"
   - "最近包含AI的笔记"
   - 实现:搜索 history.md 中的概览字段

**历史记录格式示例**:
```markdown
# 操作历史

## [2026-02-08 16:45:30]
**操作**: 创建
**文件**: 04客户/小客户X/会议纪要-20260208.md
**概览**: 小客户X项目启动会议
**标签**: #会议纪要 #小客户X #启动会
**目录**: 04客户/小客户X/

## [2026-02-08 15:20:10]
**操作**: 更新
**文件**: 02提示词/claudecode提示词.md
**概览**: 添加会议记录相关提示词

## [2026-02-08 14:30:25]
**操作**: 创建
**文件**: 04客户/华为/CodeBuddy工具优势.md
**概览**: CodeBuddy工具的功能特点记录
**标签**: #工具 #CodeBuddy

## [2026-02-08 11:15:00]
**操作**: 初始化
**文件**: _metadata_/history.md
**概览**: 初始化笔记库,创建元数据文件
```

**查询示例及响应**:

用户问:"最近3次创建的内容"
AI 响应:
```
📋 最近3次创建的内容
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [2026-02-08 16:45] 小客户X/会议纪要-20260208.md
   小客户X项目启动会议

2. [2026-02-08 14:30] 华为/CodeBuddy工具优势.md
   CodeBuddy工具的功能特点记录

3. [2026-02-07 09:20] OPPO/AI平台升级方案.md
   OPPO智能体平台技术升级方案
```

用户问:"最近5小时的操作"
AI 响应:
```
📋 最近5小时的操作(共5条)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [16:45] 创建 - 小客户X/会议纪要-20260208.md
2. [15:20] 更新 - claudecode提示词.md
3. [14:30] 创建 - 华为/CodeBuddy工具优势.md
4. [13:10] 创建 - 临时-想法-20260208.md
5. [12:05] 更新 - 插件调用参数.md
```

用户问:"今天关于华为的记录"
AI 响应:
```
📋 今天关于华为的记录(共2条)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. [14:30] 华为/CodeBuddy工具优势.md
   CodeBuddy工具的功能特点记录

2. [10:15] 华为/AI平台讨论会议.md
   华为AI平台技术讨论会议纪要
```

---

## Mode 3: Management (管理模式)

### 待办状态管理

- 标记完成:`- [ ]` → `- [x]`
- 批量操作:查询 → 选择 → 更新
- 更新 frontmatter `status` 字段

### 批量整理

- 整理临时目录
- 归档已完成项目
- 统一标签格式

---

## Intelligent Directory Matching (智能目录匹配)

### 匹配逻辑

```dot
digraph matching {
    "读取分类规则" -> "分析内容特征";
    "分析内容特征" -> "匹配现有目录";

    "匹配现有目录" -> "是否匹配?";
    "是否匹配?" -> "是" -> "使用现有目录";
    "是否匹配?" -> "否" -> "建议新目录";

    "建议新目录" -> "用户确认";
    "用户确认" -> "创建新目录";
}
```

### 智能推断

**基于已有目录模式推断新目录**:

- 检测到客户名 → 创建类似 `clients/[客户]/` 的目录
- 检测到新类型 → 询问用户或基于相似目录推断

---

## 元数据文件结构(`_metadata_/`)

### 文件分离设计 + 动态维护

**设计目标**:预览快!分阶段加载元数据 + 动态维护确保准确性 + 历史可追溯

| 文件 | 大小 | 加载时机 | 主要用途 | 何时更新 | 何时查询 |
|------|------|---------|---------|---------|---------|
| `_metadata_/classification-rules.md` | 小 | 预览阶段 | 快速判断分类 | 创建新目录时 | - |
| `_metadata_/naming-conventions.md` | 中 | 预览阶段 | 生成候选文件名 | 发现新命名模式时 | - |
| `_metadata_/tag-rules.md` | 大 | 确认后 | 生成标签 | 创建新标签时 | - |
| `_metadata_/history.md` | 增量增长 | 查询时 | 追溯操作历史 | 每次操作后 | 查询历史时 |

### 两阶段加载 + 历史记录

```
预览阶段:
  ↓
读取 classification-rules.md + naming-conventions.md(轻量)
  ↓
快速显示分类建议 + 候选文件名

用户确认后:
  ↓
读取 tag-rules.md(重量)
  ↓
生成完整元数据(标签)
  ↓
创建/更新笔记

动态维护:
  ↓
检测新标签、新目录、新命名模式
  ↓
自动更新对应的元数据文件
  ↓
追加操作历史到 history.md

历史查询:
  ↓
读取 history.md
  ↓
筛选符合条件的记录(次数/时间/类型/内容)
```

### 元数据文件说明

**classification-rules.md**(预览阶段读取 + 动态更新)
- **用途**:快速判断分类、目录匹配
- **读取时机**:预览阶段(第一)
- **更新时机**:创建新目录时
- **包含内容**:
  - 目录用途、关键词匹配
  - 置信度标准
  - 典型文件示例

**naming-conventions.md**(预览阶段读取 + 动态更新)
- **用途**:生成候选文件名(3个选项)
- **读取时机**:预览阶段(第二)
- **更新时机**:发现新命名模式时
- **包含内容**:
  - 各类文档命名规范
  - 现有文件示例
  - 最佳实践

**tag-rules.md**(确认后读取 + 动态更新)
- **用途**:生成3-10个标签
- **读取时机**:用户确认后(重量文件)
- **更新时机**:创建新标签时
- **包含内容**:
  - 完整标签体系(可很大)
  - 标签推断规则
  - 标签组合规则

**history.md**(查询时读取 + 每次操作追加)
- **用途**:追溯操作历史、查询历史记录
- **读取时机**:查询历史时
- **更新时机**:每次创建/更新笔记后追加
- **包含内容**:
  - 操作时间戳
  - 操作类型(创建/更新)
  - 文件路径
  - 一句话概览
  - 新标签(如有)
  - 新目录(如有)
- **查询维度**:
  - 按次数:最近N次操作
  - 按时间:最近N小时/天
  - 按类型:创建/更新
  - 按内容:关键词搜索概览

### 动态维护示例

**场景1:创建新客户目录**
```
用户输入: 小客户X的会议记录
  ↓
检测到新客户名(不在 classification-rules.md 中)
  ↓
创建目录: 04客户/小客户X/
  ↓
更新 classification-rules.md
  + ### 小客户X/
  +   - **用途**: 小客户X项目文档
  +   - **关键词**: 小客户X
  +   - **置信度**: 95%(明确客户名)
```

**场景2:发现新命名模式**
```
用户输入: CodeBuddy工具对比
  ↓
生成候选文件名时,发现"工具对比"是新类型
  ↓
更新 naming-conventions.md
  + ### 工具对比文档
  +   **格式**: [工具名]-对比-分析.md
  +   **示例**: CodeBuddy-对比-分析.md
  +   **检测时间**: 2026-02-08
```

**场景3:创建新标签**
```
用户输入: 低代码平台集成方案
  ↓
生成标签时,匹配不到"低代码"相关标签
  ↓
创建新标签: #低代码
  ↓
更新 tag-rules.md
  + ### 技术标签
  +   - `#低代码` - 检测"低代码"、"无代码" → 添加
```

---

## Reference: Obsidian Standards

### Frontmatter 格式

```yaml
---
title: 笔记标题
date: 2026-02-07
tags:
  - tag1
  - tag2
status: in-progress
priority: normal
aliases:
  - 备选名称
cssclasses:
  - custom-class
completed: false
due: 2026-02-15T14:30:00
---
```

### Tags 格式

**内联**: `#tag1 #tag2`
**Frontmatter**:
```yaml
tags:
  - tag1
  - tag2
```

**命名规则**:
- ✅ 字母(任何语言)、数字(非首位)、`_`、`-`、`/`
- ❌ 空格、特殊字符

### Task Lists

```markdown
- [ ] 未完成
- [x] 已完成
- [ ] 带子任务
  - [ ] 子任务1
```

### Wikilinks & Callouts

```markdown
[[笔记]]
[[笔记|显示文本]]
[[笔记#标题]]

> [!info] 信息
> [!warning] 警告
> [!tip]+ 折叠
```

---

## Required Dependency

**REQUIRED SUB-SKILL**: Must call `obsidian-markdown` for creating and editing notes.

**NEVER**:
- Use Write tool directly to create notes
- Create notes without proper Obsidian formatting
- 显示过多预览信息影响速度

**ALWAYS**:
- 高置信度内容自动创建
- 低置信度内容才预览,且预览极简
- **两阶段加载**:预览读 classification-rules.md,确认后读 tag-rules.md
- Call `obsidian-markdown` skill for note creation/editing
- Follow Obsidian Flavored Markdown standards
- Read `_metadata_/classification-rules.md` for 快速分类判断

---

## Common Mistakes

| 错误 | 后果 | 正确做法 |
|------|------|---------|
| 不初始化直接创建 | 无法智能分类 | 先运行"初始化笔记库" |
| 直接使用 Write 工具 | 格式不符合标准 | 调用 `obsidian-markdown` |
| 跳过预览直接创建 | 用户无法确认 | 严格遵循预览流程 |
| **主动扩展用户内容** | **偏离用户意图** | **原样记录,不主动扩展** |
| 在 frontmatter tags 中用 `#` | 格式错误 | `tags: [tag]` 不是 `tags: [#tag]` |
| 文件名包含特殊字符 | 文件系统问题 | 使用连字符替代 |

---

## Quick Reference

### 初始化检查清单
- [ ] 运行"初始化我的笔记库"命令
- [ ] 确认创建了 `_metadata_/` 文件夹
- [ ] 检查生成的 4 个元数据文件:
  - [ ] `_metadata_/classification-rules.md`(轻量)
  - [ ] `_metadata_/tag-rules.md`(重量)
  - [ ] `_metadata_/naming-conventions.md`(中等)
  - [ ] `_metadata_/history.md`(初始为空,后续追加)
- [ ] 验证推断的分类规则是否正确

### 创建笔记检查清单
- [ ] **阶段1**:读取 `_metadata_/classification-rules.md` + `naming-conventions.md`(轻量)
- [ ] 搜索目标目录,检测相似文件(优先更新)
- [ ] 内容识别 + 置信度判断
- [ ] 高置信度 → 直接创建/更新
- [ ] 低置信度 → 智能预览:
  - [ ] 显示相似文件检测结果
  - [ ] 显示3个候选文件名
  - [ ] 提供"更新"或"创建"选项
- [ ] **阶段2**:用户确认后读取 `tag-rules.md`
- [ ] 智能标签生成(3-10个):
  - [ ] 优先匹配现有标签
  - [ ] 如无匹配,创建新标签
- [ ] 调用 `obsidian-markdown` 创建或更新
- [ ] **阶段3**:动态更新元数据(如果需要):
  - [ ] 创建新标签?→ 更新 `tag-rules.md`
  - [ ] 创建新目录?→ 更新 `classification-rules.md`
  - [ ] 发现新命名模式?→ 更新 `naming-conventions.md`
- [ ] **阶段4**:记录操作历史(每次都记录):
  - [ ] 追加到 `_metadata_/history.md`
  - [ ] 记录时间、操作类型、文件路径、概览
  - [ ] 记录新标签、新目录(如有)

### 查询操作速查
- 待办: `grep -r "^- \[ \]" --include="*.md"`
- 标签: `grep -r "tags:" --include="*.md" -A 3`
- 状态: `grep -r "status: in-progress" --include="*.md"`
- 最近3次操作: `head -30 _metadata_/history.md` (假设每条记录10行)
- 今天创建的: `grep "^## \[$(date +%Y-%m-%d)" _metadata_/history.md`
- 最近N小时: 解析时间戳后筛选

---

## Workflow Summary

### 初始化流程
```
用户: "初始化我的笔记库"
  ↓
扫描目录结构
  ↓
分析文件命名模式
  ↓
提取常用标签
  ↓
推断分类规则
  ↓
生成 _metadata_/ 元数据文件夹
  ├─ classification-rules.md(轻量)
  ├─ tag-rules.md(重量)
  ├─ naming-conventions.md(中等)
  └─ history.md(初始空文件,持续追加)
```

### 创建流程(快速模式 + 两阶段加载 + 动态维护 + 历史记录)
```
用户输入内容
  ↓
【阶段1】读取 classification-rules.md + naming-conventions.md(轻量)
  ↓
搜索相似文件(优先更新)
  ↓
内容识别 + 置信度判断
  ↓
┌─────────────┐
│ 高置信度?   │
└─────────────┘
  ↓ 是          ↓ 否
自动创建/更新    极简预览
  ↓             ↓
【阶段2】读取    用户确认
tag-rules.md     ↓
  ↓             ↓
生成3-10个标签  【阶段2】读取标签
  ↓             ↓
创建/更新笔记   生成标签
  ↓             ↓
【阶段3】动态    创建/更新
维护元数据      ↓
  ↓          【阶段3】动态
更新3个元数据    维护元数据
(如果需要)     (如果需要)
  ↓             ↓
【阶段4】记录    【阶段4】记录
操作历史        操作历史
  ↓             ↓
追加到          追加到
history.md      history.md
```

**关键设计原则**:
1. **快速优先**:确定的内容自动归类,不确定才预览
2. **预览极简**:只显示目录+理由+候选文件名
3. **优先更新**:检测相似文件,避免碎片化
4. **两阶段加载**:预览读轻量文件,确认后读重量文件
5. **智能标签**:优先匹配现有标签(3-10个)
6. **动态维护**:自动更新元数据文件(标签/目录/命名规则)
7. **历史追溯**:每次操作都记录,支持查询
8. **持续优化**:每次操作都改进后续分类准确性
9. **元数据分离**:分类、标签、命名规范、历史记录分开存储
10. **标准格式**:严格遵循 Obsidian 官方规范
11. **通用可复用**:适用于任何 Obsidian 笔记库