1449 lines
49 KiB
Markdown
1449 lines
49 KiB
Markdown
---
|
||
categories:
|
||
- "[[Tools]]"
|
||
- "[[Documentation]]"
|
||
tags:
|
||
- agents
|
||
- ai-assistant
|
||
- development-workflow
|
||
- obsidian-vault
|
||
- knowledge-management
|
||
created: 2026-01-23
|
||
rating: 7
|
||
type: schema
|
||
---
|
||
|
||
# AGENTS.md - Obsidian Vault 智能代理指南
|
||
|
||
## 概述
|
||
|
||
本指南为在这个 Obsidian 知识库中工作的智能代理(AI Coding Agents)提供详细的操作规范、代码风格指南和工作流指导。确保所有代理能够高效协作,遵循统一的编码标准,并在 PARA + LLM Wiki 双层架构中正确组织知识。
|
||
|
||
> **目标:** 让 AI 代理像真正的开发团队成员一样高效工作,遵循最佳实践,保持代码质量和一致性。
|
||
|
||
**IMPORTANT:** 处理 Obsidian 笔记时,必须优先使用以下官方 Skills(来源:kepano/obsidian-skills)。
|
||
|
||
> |Skill|用途|何时用|
|
||
> |---|---|---|
|
||
> |`obsidian-cli`|CLI 命令(搜索、读写、任务、属性、插件开发)|**首选**,几乎所有 vault 操作|
|
||
> |`obsidian-markdown`|`.md` 笔记编写(frontmatter、wikilink、callout、embed)|创建/编辑笔记内容时|
|
||
> |`obsidian-bases`|`.base` 数据库视图(filters、formulas、views)|创建/编辑 Bases 文件时|
|
||
> |`json-canvas`|`.canvas` 图表(nodes、edges、groups)|创建/编辑 Canvas 文件时|
|
||
> |`defuddle`|网页→干净 Markdown(去导航/广告/杂讯)|处理 URL 时优先于 WebFetch|
|
||
>
|
||
> 使用 `skill` 工具加载对应 skill 后再执行操作。
|
||
---
|
||
|
||
### Obsidian CLI (v1.12.7+)
|
||
|
||
新版 CLI 使用独立二进制文件,响应更快。常用命令:
|
||
|
||
```bash
|
||
# 版本检查
|
||
obsidian version
|
||
|
||
# 日常操作
|
||
obsidian daily:read # 读取今日日记
|
||
obsidian daily:append content="- [ ] 新任务" # 添加任务
|
||
obsidian tasks todo limit=10 # 查看待办
|
||
|
||
# 文件操作
|
||
obsidian files total # 文件总数
|
||
obsidian search query="关键词" limit=5 # 搜索
|
||
obsidian tags sort=count counts # 标签统计
|
||
## 1. 仓库架构总览
|
||
|
||
本项目采用**双层知识管理模式**,结合 PARA 方法论和 LLM Wiki 模式:
|
||
|
||
```mermaid
|
||
graph TD
|
||
subgraph PARA["PARA 层(个人知识)"]
|
||
C[Categories/]
|
||
R[References/]
|
||
N[Notes/]
|
||
D[Daily/]
|
||
Cl[Clippings/]
|
||
T[Tags/]
|
||
end
|
||
|
||
subgraph Wiki["LLM Wiki 层(编译知识)"]
|
||
Wiki[wiki/]
|
||
Raw[raw/]
|
||
end
|
||
|
||
subgraph Infrastructure["基础设施"]
|
||
Templates[Templates/]
|
||
Attach[Attachments/]
|
||
Schema[AGENTS.md]
|
||
end
|
||
|
||
Ingest[新来源] --> Raw
|
||
Raw -->|Ingest 操作| Wiki
|
||
Wiki -->|归档| PARA
|
||
|
||
Wiki --> Schema
|
||
Schema --> Wiki
|
||
```
|
||
|
||
### 1.1 文件夹组织
|
||
|
||
| 文件夹 | 用途 | 文件格式 | 维护者 |
|
||
|--------|------|----------|--------|
|
||
| **PARA 层** | | | |
|
||
| | | | |
|
||
| `Categories/` | PARA 类别索引页面 | `Books.md`, `Movies.md`, `读书笔记.md` (复数) | 人类 |
|
||
| `References/` | 实体参考文件 | `Kevin Kelly.md`, `Obsidian.md` | 人类 + LLM |
|
||
| `Notes/` | 个人反思和分析 | `Evergreen notes…md` | 人类 |
|
||
| `Daily/` | 日常日记 | `2026-01-23.md` | 人类 |
|
||
| `Clippings/` | 网页摘录 | `Article Title.md` | 人类 |
|
||
| `Tags/` | 标签定义和索引 | `主题-ai.md`, `卡片-金句.md` | 人类 |
|
||
| | | | |
|
||
| **LLM Wiki 层** | | | |
|
||
| | | | |
|
||
| `wiki/` | LLM 编译维护的知识库 | `Concept.md`, `Person.md` | LLM |
|
||
| `raw/` | 不可变的原始来源 | `source.md` | 人类 |
|
||
| | | | |
|
||
| **基础设施** | | | |
|
||
| | | | |
|
||
| `Templates/` | 笔记和演示模板 | `*.md`, `*.css`, `*.base` | 人类 |
|
||
| `Attachments/` | 媒体文件 | 图片、PDF、视频 | 人类 |
|
||
| `Presentations/` | Marp 演示文稿 | `*.md`, `*.css` | 人类 |
|
||
| `tools/` | 开发工具和脚本 | `.py`, `.ps1`, `.json`, `.md` | LLM |
|
||
| `markdown_output/` | 外部导入的内容(中转区) | `*.md` | 批量导入 |
|
||
| `AGENTS.md` | **Schema:代理操作规范** | 本文件 | 人类 + LLM |
|
||
|
||
### 1.2 PARA 方法论
|
||
|
||
PARA 层用于组织**个人项目、领域、资源和归档**:
|
||
|
||
| 类型 | 说明 | 示例 |
|
||
|------|------|----------|
|
||
| **Projects** | 有明确目标和时间线的活跃项目 | `项目-卡片笔记实践`, `项目-论文1` |
|
||
| **Areas** | 持续关注的领域和责任 | `领域-山西`, `领域-自组网` |
|
||
| **Resources** | 未来参考的主题和兴趣 | Obsidian 笔记、AI 工具、参考材料 |
|
||
| **Archive** | 已完成的项目和不活跃内容 | 过去项目、归档资料 |
|
||
|
||
**注意事项**:
|
||
- PARA 层主要由人类维护,LLM 辅助
|
||
- LLM Wiki 的编译结果可以归档到 PARA 层(如 References/)
|
||
|
||
### 1.3 LLM Wiki 模式
|
||
|
||
LLM Wiki 层是**由 LLM 增量编译和维护的结构化知识库**:
|
||
|
||
| 层级 | 位置 | 职责 | 维护者 |
|
||
|------|------|------|--------|
|
||
| **Raw Sources** | `raw/` | 不可变的原始文档、文章、论文、数据文件 | 人类 |
|
||
| **Wiki** | `wiki/` | 摘要、实体页、概念页、比较、综合 | **LLM** |
|
||
| **Schema** | `AGENTS.md` | Wiki 结构约定、工作流规范 | 人类 + LLM |
|
||
|
||
**三种核心操作**:
|
||
1. **Ingest(摄入)**:将新来源编译到 wiki,更新 index 和 log
|
||
2. **Query(查询)**:搜索 wiki 页面并综合回答
|
||
3. **Lint(健康检查)**:每周常规体检(矛盾/过时/孤岛/断链)+ 每月深度体检(随机抽样逐条比对原始文档)
|
||
|
||
**索引与日志**:
|
||
- `wiki/index.md` - 内容目录,按类别组织(每次 ingest 更新)
|
||
- `wiki/log.md` - 时间线日志(grep 可解析的格式)
|
||
|
||
### 1.4 Frontmatter 规范
|
||
|
||
#### PARA 层(Categories, References, Clippings, Notes)
|
||
|
||
所有 PARA 内容笔记必须包含 YAML frontmatter:
|
||
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[Books]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- books
|
||
- people
|
||
- reference
|
||
created: 2026-01-23
|
||
rating: 5
|
||
author: []
|
||
topics: []
|
||
para: []
|
||
---
|
||
|
||
<!-- Added: 2026-04-07 -->
|
||
## Obsidian Frontmatter 布尔值规范
|
||
|
||
在 Obsidian 笔记的 YAML frontmatter 中,布尔值 `true`/`false` 会被 Obsidian 识别为 checkbox 类型属性。为避免此问题,所有布尔值属性必须用引号包裹为字符串:
|
||
|
||
- ✅ `marp: "true"`
|
||
- ✅ `paginate: "true"`
|
||
- ❌ `marp: true`(Obsidian 会将其显示为 checkbox)
|
||
- ❌ `paginate: true`(同上)
|
||
|
||
此规范适用于所有通过 LLM 生成或修改的 Obsidian 笔记。HTML 注释中的指令(如 `<!-- paginate: true -->`)不受影响,保持原样。
|
||
|
||
## 内容开始
|
||
```
|
||
|
||
**Frontmatter 规则**:
|
||
- ✅ **Categories**:使用 wikilink 格式 `[[Category]]`,frontmatter 中用复数 `categories: [[Books]]`
|
||
- ✅ **Tags**:短横线连接、小写、无空格(例如:`#tag` 或 `ai/coding`)
|
||
- ✅ **Dates**:`YYYY-MM-DD` 格式
|
||
- ✅ **多值字段**:使用列表格式,即使单值也要加 `[]`(例如:`author: ["Kevin Kelly"]`)
|
||
- ✅ **空字段**:留空不写引号或 null(例如:`via: ""`)
|
||
- ✅ **分隔符**:YAML 后必须有空行 `---`,正文前也要有空行
|
||
|
||
#### LLM Wiki 层
|
||
|
||
Wiki 页面必须包含以下 frontmatter:
|
||
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]" # ✅ 必须包含
|
||
tags:
|
||
- wiki # ✅ 必须包含
|
||
- {tag1}
|
||
- {tag2}
|
||
created: {YYYY-MM-DD}
|
||
source: "[[{source-file}]]" # ✅ 必须指向 raw 来源
|
||
type: concept | entity | tool | reference | place | institution | method | knowledge-card | synthesis | index | log # ✅ 必须指定类型
|
||
aliases: # 可选
|
||
- {alias1}
|
||
- {alias2}
|
||
marp: "true" # Marp 演示文稿专用,必须用引号
|
||
confidence: 3 # 可选,1-5:1=推测 2=单源 3=已验证 4=多源一致 5=无可争议
|
||
status: active # 可选:active | superseded | deprecated | tentative | needs-review
|
||
superseded_by: "[[新页面]]" # 仅 status=superseded 时必填
|
||
last_reviewed: {YYYY-MM-DD} # 可选,最后审查日期
|
||
review_interval_days: 180 # 可选,审查周期(技术类建议 90 天)
|
||
relations: # 可选,类型化关系列表
|
||
# - type: depends_on | conflicts_with | supersedes | caused_by | supports | extends | part_of | example_of
|
||
# target: "[[页面]]"
|
||
# description: "关系说明"
|
||
# confidence: 3
|
||
---
|
||
```
|
||
|
||
**字段说明**:
|
||
|
||
| 字段 | 必填 | PARA 层 | Wiki 层 | 说明 |
|
||
|------|------|---------|---------|------|
|
||
| `categories` | ✅ | `[[Category]]` | `[[LLM Wiki]]` | 类别 |
|
||
| `tags` | ✅ | `{tag}` | `wiki`, `{tag}` | 标签 |
|
||
| `created` | ✅ | `YYYY-MM-DD` | `YYYY-MM-DD` | 创建日期 |
|
||
| `source` | ❌ | 可选 | ✅ 必填 | Wiki 层必须指向 raw 来源 |
|
||
| `type` | ❌ | 可选 | ✅ 必填 | Wiki 层必须指定页面类型(合法值见下方) |
|
||
| `aliases` | ❌ | 可选 | 可选 | 替代名称列表 |
|
||
| `marp` | ❌ | 可选 | 可选 | 演示文稿标识,必须用引号 |
|
||
| `confidence` | ❌ | 可选 | 可选 | 置信度 1-5,默认 3 |
|
||
| `status` | ❌ | 可选 | 可选 | 生命周期状态:active/superseded/deprecated/tentative/needs-review |
|
||
| `superseded_by` | ❌ | 可选 | 可选 | status=superseded 时指明替代页面 |
|
||
| `last_reviewed` | ❌ | 可选 | 可选 | 最后审查日期,用于时效检测 |
|
||
| `review_interval_days` | ❌ | 可选 | 可选 | 审查周期天数,默认 180 |
|
||
| `relations` | ❌ | 可选 | 可选 | 类型化关系列表(详见 Phase 1) |
|
||
|
||
---
|
||
|
||
## 2. Wiki 工作流
|
||
|
||
### 2.1 Ingest(摄入)操作
|
||
|
||
当收到新来源时,按以下流程处理:
|
||
|
||
```mermaid
|
||
graph LR
|
||
A[收到新来源] --> B[存入 raw/]
|
||
B --> C[读取并分析关键要点]
|
||
C --> D[创建/更新 Wiki 页面]
|
||
D --> E[更新 index.md]
|
||
E --> F[追加 log.md 条目]
|
||
F --> G[完成]
|
||
```
|
||
|
||
**详细步骤**:
|
||
|
||
1. **读取来源**
|
||
```bash
|
||
# 来源存入 raw/ 目录
|
||
raw/source-name.md
|
||
```
|
||
|
||
2. **创建 Wiki 页面**
|
||
- 根据内容类型创建相应页面:
|
||
- **概念页**:`wiki/概念名称.md` - 理论、方法论、模式
|
||
- **实体页**:`wiki/人物姓名.md` - 人物、公司、组织
|
||
- **工具页**:`wiki/工具名称.md` - 软件、框架、工具
|
||
- **参考页**:`wiki/主题-子主题.md` - 详细文档、教程
|
||
|
||
**⛓️ 来源溯源规则**(防漂移):
|
||
- 所有**数字、百分比、具体结论**必须原文引用,并在其后标注来源行号
|
||
- 格式:`{原文数据}[raw:{来源文件名}:{行号}]`
|
||
- 示例:`学习效率提升 40%[raw:ALEKS研究:45]`,而不是用 AI 的话重述数字
|
||
- 行号以原始 raw 文件为准,标注精确的行区间(如 `:42-45` 或 `:87`)
|
||
- 此规则适用于所有 Wiki 页面类型(概念、实体、工具、参考)
|
||
|
||
3. **更新 index.md**
|
||
```yaml
|
||
## 概览
|
||
|
||
| 指标 | 值 |
|
||
|------|-----|
|
||
| 来源数 | {更新数字} |
|
||
| Wiki 页面数 | {更新数字} |
|
||
|
||
```
|
||
|
||
4. **追加 log.md**
|
||
```markdown
|
||
## [YYYY-MM-DD] ingest | {来源标题}
|
||
|
||
**来源**: {来源链接或文件路径}
|
||
|
||
**操作**:
|
||
- 操作 1
|
||
- 操作 2
|
||
|
||
**涉及页面**: N 个新页面,M 个更新页面
|
||
|
||
**关键要点**:
|
||
- 要点 1
|
||
- 要点 2
|
||
```
|
||
|
||
**示例**:参考 `wiki/log.md` 中的历史记录
|
||
|
||
### 2.2 Query(查询)操作
|
||
|
||
当用户对 Wiki 提问时:
|
||
|
||
1. **搜索相关页面** — 优先使用 `qmd query`(MCP `mcp__qmd__query`),使用自然语言描述问题,获取语义最相关页面;
|
||
- 如果 qmd 返回空或不准确,fallback 到 `grep` 或 `mcp__qmd__search`(BM25 精确匹配)
|
||
- 复杂问题:`qmd query` 获取 top 5-8 结果→读取内容→综合回答
|
||
2. **综合多页面的信息**
|
||
3. 如果发现新的见解,**将回答归档为新 Wiki 页面**
|
||
4. 更新 index 和 log
|
||
|
||
> **原则**:好的回答应该成为 Wiki 的一部分,让探索像摄入一样持续积累。
|
||
|
||
### 2.3 Lint(健康检查)
|
||
|
||
Wiki 健康检查分为**常规体检**(每周)和**深度体检**(每月),两种体检完成后都必须追加 `log.md` 条目。
|
||
|
||
#### 常规体检(每周)
|
||
|
||
触发词:`体检`
|
||
|
||
检查五项内容:
|
||
|
||
1. **矛盾** — 搜索同一事实在不同页面上的冲突声明
|
||
2. **过时** — 检查 raw/ 中来源是否更新,对应的 wiki 页面是否过时
|
||
3. **孤岛** — 查找无任何入站链接的 wiki 页面
|
||
4. **断链** — 查找引用了不存在的 `[[页面]]` 的 wiki 页面
|
||
5. **index 准确性** — 验证 `wiki/index.md` 中的指标(页面数、来源数)与实际一致
|
||
|
||
```bash
|
||
# 孤岛检测:找出 wikilink 从未被其他页面引用的页面
|
||
grep -roh "\[\[[^]]*\]\]" wiki/ | sort -u | sed 's/\[\[\(.*\)\]\]/\1/' > /tmp/all_links.txt
|
||
ls wiki/*.md | xargs -n1 basename | sed 's/\.md$//' | grep -v -F -f /tmp/all_links.txt
|
||
|
||
# 断链检测:查找指向不存在文件的 [[wikilink]]
|
||
# 对每个 [[页面]] 检查 wiki/页面.md 是否存在
|
||
|
||
# index 准确率
|
||
Get-ChildItem wiki/*.md | Measure-Object
|
||
```
|
||
|
||
#### 深度体检(每月)
|
||
|
||
触发词:`深度体检`
|
||
|
||
1. 随机抽取 5 个 wiki 页面(优先选择摘要型页面)
|
||
2. 对每个页面,逐条对比其声明与原始 raw 来源
|
||
3. 记录每项偏差:
|
||
- **数据偏差**:数字、百分比不一致
|
||
- **语义偏差**:结论被 AI 过度概括或扭曲
|
||
- **遗漏偏差**:原始来源中的重要内容被遗漏
|
||
4. 自动修复偏差(更新 wiki 页面)
|
||
5. 报告修复摘要到 `log.md`
|
||
|
||
```bash
|
||
# 随机抽样(PowerShell)
|
||
Get-ChildItem wiki/*.md | Where-Object { $_.Name -notmatch '^(index|log)' } | Get-Random -Count 5 | Select-Object Name
|
||
```
|
||
|
||
#### 常见问题及处理
|
||
|
||
| 问题 | 处理方式 |
|
||
|------|----------|
|
||
| 质量标记误报 | 多数为文章内容的正常用词(如"矛盾性"),非真正冲突 |
|
||
| 错误文件 | 删除 `*_err.md` 文件 |
|
||
| type 字段格式不一致 | 单字符串 vs 列表格式均可工作,建议保持一致 |
|
||
| 缺失类别索引页 | 可创建 People.md、Places.md 等分类页面 |
|
||
|
||
#### 经验教训
|
||
|
||
- index.md 指标容易过期,需定期更新
|
||
- 日志文件(log.md)是追溯操作历史的重要来源
|
||
- 建议每次 lint 后更新 log.md 条目
|
||
|
||
### 2.4 Wiki 页面模板
|
||
|
||
参考 `Templates/Wiki Page Template.md`:
|
||
|
||
**概念页面**:
|
||
```markdown
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
tags:
|
||
- wiki
|
||
- {tag1}
|
||
- {tag2}
|
||
created: {YYYY-MM-DD}
|
||
source: "[[{source-file}]]"
|
||
type: concept
|
||
aliases:
|
||
- {alias1}
|
||
confidence: 3
|
||
status: active
|
||
last_reviewed: {YYYY-MM-DD}
|
||
review_interval_days: 180
|
||
relations:
|
||
# - type: depends_on | supersedes | part_of | example_of
|
||
# target: "[[页面]]"
|
||
---
|
||
|
||
# {概念名称}
|
||
|
||
> **一句话定义**:{核心定义}
|
||
|
||
## 定义
|
||
|
||
{概念的详细定义和解释}
|
||
|
||
## 关键要点
|
||
|
||
- 要点 1
|
||
- 要点 2
|
||
- 要点 3
|
||
|
||
## 与其他概念的关系
|
||
|
||
- [[相关概念1]] — {关系说明}
|
||
- [[相关概念2]] — {关系说明}
|
||
|
||
## 来源
|
||
|
||
> **溯源规则**:所有数字/百分比/具体结论必须标注 `[raw:{文件名}:{行号}]` 格式。
|
||
|
||
- [[source]] — 来源描述
|
||
```
|
||
```markdown
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
tags:
|
||
- wiki
|
||
- {tag1}
|
||
- {tag2}
|
||
created: {YYYY-MM-DD}
|
||
source: "[[{source-file}]]"
|
||
type: concept
|
||
aliases:
|
||
- {alias1}
|
||
---
|
||
|
||
# {概念名称}
|
||
|
||
> **一句话定义**:{核心定义}
|
||
|
||
## 定义
|
||
|
||
{概念的详细定义和解释}
|
||
|
||
## 关键要点
|
||
|
||
- 要点 1
|
||
- 要点 2
|
||
- 要点 3
|
||
|
||
## 与其他概念的关系
|
||
|
||
- [[相关概念1]] — {关系说明}
|
||
- [[相关概念2]] — {关系说明}
|
||
|
||
## 来源
|
||
|
||
> **溯源规则**:所有数字/百分比/具体结论必须标注 `[raw:{文件名}:{行号}]` 格式。
|
||
|
||
- [[source]] — 来源描述
|
||
```
|
||
|
||
**实体页面**:
|
||
```markdown
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- {domain}
|
||
created: {YYYY-MM-DD}
|
||
source: "[[{source-file}]]"
|
||
type: entity
|
||
aliases:
|
||
- {alias}
|
||
confidence: 3
|
||
status: active
|
||
last_reviewed: {YYYY-MM-DD}
|
||
relations:
|
||
# - type: supports | extends | example_of
|
||
# target: "[[相关概念]]"
|
||
---
|
||
|
||
# {人物姓名}
|
||
|
||
{一句话简介}
|
||
|
||
## 身份
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 领域 | {领域} |
|
||
| 知名身份 | {身份} |
|
||
|
||
## 主要贡献
|
||
|
||
- 贡献 1
|
||
- 贡献 2
|
||
|
||
## 与本 Wiki 相关
|
||
|
||
{此人与 wiki 内容的关联}
|
||
|
||
## 来源
|
||
|
||
> **溯源规则**:所有数字/百分比/具体结论必须标注 `[raw:{文件名}:{行号}]` 格式。
|
||
|
||
- [[source]] — 来源描述
|
||
```
|
||
|
||
**工具页面**:
|
||
```markdown
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
tags:
|
||
- wiki
|
||
- tool
|
||
- {category}
|
||
created: {YYYY-MM-DD}
|
||
source: "[[{source-file}]]"
|
||
type: tool
|
||
aliases:
|
||
- {alias}
|
||
confidence: 3
|
||
status: active
|
||
last_reviewed: {YYYY-MM-DD}
|
||
relations:
|
||
# - type: example_of | extends
|
||
# target: "[[相关概念]]"
|
||
---
|
||
|
||
# {工具名称}
|
||
|
||
> **一句话描述**
|
||
|
||
## 基本信息
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 仓库 | {URL} |
|
||
| 类型 | {类型} |
|
||
|
||
## 在 LLM Wiki 中的角色
|
||
|
||
{工具在 wiki 工作流中的作用}
|
||
|
||
## 来源
|
||
|
||
> **溯源规则**:所有数字/百分比/具体结论必须标注 `[raw:{文件名}:{行号}]` 格式。
|
||
|
||
- [[source]] — 来源描述
|
||
```
|
||
|
||
---
|
||
|
||
### 2.5 结晶机制(Crystallization)
|
||
|
||
每次 LLM 对话结束时,Agent 应检查本次对话是否产生了可复用的知识:
|
||
|
||
| 信号 | 动作 |
|
||
|------|------|
|
||
| 用户询问了全新的问题 | 若回答包含新知识,创建 wiki 页面 |
|
||
| 引用了外部来源 | 存入 `raw/`,创建对应 wiki 页面 |
|
||
| 发现了错误或过时信息 | 更新对应页面,设置 `status: superseded` |
|
||
| 创建了分析或比较 | 评估是否适合作为合成(synthesis)页面 |
|
||
|
||
**产出要求**:
|
||
- 新页面必须满足 `validate-frontmatter.py` 的所有校验
|
||
- 有 `source` 指向 raw 或权威来源
|
||
- 有 `type` 和 `confidence`
|
||
- 追加 `wiki/log.md` 条目
|
||
|
||
### 2.6 知识提级(Consolidation Tiers)
|
||
|
||
知识从原始观察到程序性知识的分层转化体系:
|
||
|
||
```
|
||
raw/ (Working → 不可变原始来源)
|
||
├── wiki/working/ (临时笔记、对话草稿、未整理洞察)
|
||
├── wiki/semantic/ (语义层 ← 当前 wiki/ 主目录)
|
||
├── wiki/procedural/ (程序性知识:操作指南、最佳实践、配方)
|
||
└── wiki/archive/ (归档:已过时/被替代的页面)
|
||
```
|
||
|
||
**提级条件**(`promote-knowledge.py`):
|
||
|
||
| 来源 → 目标 | 条件 | 自动程度 |
|
||
|------------|------|---------|
|
||
| working/ → semantic/ | 完整体 frontmatter + 正文 > 100 字 + 创建 > 7 天 | 脚本辅助 |
|
||
| active → archive/ | `status=deprecated` 或 `superseded` | Lint 时自动提示 |
|
||
|
||
## 3. Marp 演示文稿工作流
|
||
|
||
### 3.1 Marp 基础知识
|
||
|
||
Marp 是用 Markdown 编写演示文稿的生态系统。本知识库使用 Marp 创建幻灯片。
|
||
|
||
**核心概念**:
|
||
- **Marpit** - 框架层,定义指令解析和转换规则
|
||
- **Marp Core** - 引擎层,实现 Marpit 接口
|
||
- **Marp CLI** - 命令行工具,导出 HTML/PDF/PPTX
|
||
- **Obsidian Marp 插件** - 在 Obsidian 中预览和导出
|
||
|
||
### 3.2 Frontmatter 指令
|
||
|
||
Marp 演示文稿必须包含 Marp frontmatter:
|
||
|
||
```yaml
|
||
---
|
||
marp: "true" # ✅ 必须用引号包裹
|
||
theme: gaia # 主题:default, uncover, gaia
|
||
paginate: "true" # ✅ 必须用引号包裹
|
||
style: |
|
||
/* 自定义样式 */
|
||
section {
|
||
background: linear-gradient(to bottom, #1a1a2e, #16213e);
|
||
color: white;
|
||
}
|
||
---
|
||
|
||
<!-- _class: cover -->
|
||
# 标题页
|
||
|
||
<!-- _class: dark -->
|
||
# 深色页
|
||
```
|
||
|
||
**全局指令**(frontmatter 中):
|
||
- `marp: "true"` - 启用 Marp
|
||
- `theme: default/uncover/gaia` - 选择主题
|
||
- `paginate: "true"` - 显示页码
|
||
- `style: |` - 自定义 CSS
|
||
|
||
**局部指令**(注释中):
|
||
- `<!-- _class: cover -->` - 封面页样式
|
||
- `<!-- _class: dark -->` - 深色背景
|
||
- `<!-- _class: cols-2 -->` - 两栏布局
|
||
- `<!-- _paginate: false -->` - 当前页不显示页码
|
||
|
||
**自定义主题**:
|
||
- 主题文件存放在 `Templates/MarpTheme/`
|
||
- 格式:`theme-name.css`
|
||
- 使用后需重启 Obsidian
|
||
- 在 frontmatter 中引用:`theme: theme-name`
|
||
|
||
### 3.3 自定义主题示例
|
||
|
||
**University Blue 主题** (`Templates/MarpTheme/university-blue.css`):
|
||
|
||
```css
|
||
/* @theme university-blue */
|
||
|
||
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700&display=swap');
|
||
|
||
:root {
|
||
--primary-color: #1a365d; /* 学术蓝 */
|
||
--secondary-color: #2b6cb0;
|
||
--accent-color: #4299e1;
|
||
--text-color: #1a202c;
|
||
--bg-color: #ffffff;
|
||
}
|
||
|
||
section {
|
||
background: var(--bg-color);
|
||
color: var(--text-color);
|
||
font-family: 'Noto Sans SC', sans-serif;
|
||
}
|
||
|
||
h1, h2, h3 {
|
||
color: var(--primary-color);
|
||
}
|
||
|
||
/* 封面页 */
|
||
section.cover {
|
||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
||
color: white;
|
||
}
|
||
|
||
/* 两栏布局 */
|
||
.cols-2 {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 2rem;
|
||
}
|
||
```
|
||
|
||
**使用方式**:
|
||
```yaml
|
||
---
|
||
marp: "true"
|
||
theme: university-blue
|
||
paginate: "true"
|
||
---
|
||
```
|
||
|
||
### 3.4 Marp 页面类型
|
||
|
||
| 类型 | 指令 | 用途 | 示例 |
|
||
|------|------|------|------|
|
||
| **封面页** | `<!-- _class: cover -->` | 标题、作者、日期 | 论文首页、报告封面 |
|
||
| **过渡页** | `<!-- _class: trans -->` | 章节分隔 | 章节标题页 |
|
||
| **深色页** | `<!-- _class: dark -->` | 强调、对比 | 数据可视化、代码块 |
|
||
| **两栏页** | `<!-- _class: cols-2 -->` | 左右对比 | 对比分析、并列说明 |
|
||
| **结束页** | `<!-- _class: ending -->` | 致谢、Q&A | 演示结尾 |
|
||
|
||
**完整示例**:参考 `wiki/示例-学校定制Marp演示.md`
|
||
|
||
### 3.5 导出方式
|
||
|
||
**Obsidian 插件**:
|
||
1. 打开 Marp 文件
|
||
2. 点击预览按钮(👁️)
|
||
3. 点击导出按钮(📥)
|
||
4. 选择格式:HTML / PDF / PPTX
|
||
|
||
**CLI 命令**:
|
||
```bash
|
||
# 导出 PDF
|
||
marp --pdf presentation.md -o output.pdf
|
||
|
||
# 导出 HTML
|
||
marp --html presentation.md -o output.html
|
||
|
||
# 导出 PPTX
|
||
marp --pptx presentation.md -o output.pptx
|
||
```
|
||
|
||
### 3.6 Marp 相关 Wiki 页面
|
||
|
||
| 页面 | 内容 | 来源 |
|
||
|------|------|------|
|
||
| `[[Marp]]` | 概念总览 | marp-guide |
|
||
| `[[Marp 指令语法]]` | 指令系统完整参考 | marp-guide |
|
||
| `[[Marp 主题与样式]]` | 内置主题、CSS 自定义 | marp-guide |
|
||
| `[[Marp 导出]]` | HTML/PDF/PPTX 导出方式 | marp-guide |
|
||
| `[[Obsidian Marp 插件]]` | Obsidian 集成 | marp-guide |
|
||
| `[[Marp 主题推荐]]` | GitHub 社区主题合集 | marp-themes |
|
||
| `[[示例-学校定制Marp演示]]` | 学校定制蓝主题演示 | marp-themes |
|
||
|
||
---
|
||
|
||
## 4. Obsidian CLI 与工具链
|
||
|
||
### 4.1 Obsidian CLI (v1.12.7+)
|
||
|
||
新版 CLI 使用独立二进制文件,响应更快。常用命令:
|
||
|
||
```bash
|
||
# 版本检查
|
||
obsidian version
|
||
|
||
# 日常操作
|
||
obsidian daily:read # 读取今日日记
|
||
obsidian daily:append content="- [ ] 新任务" # 添加任务
|
||
obsidian tasks todo limit=10 # 查看待办
|
||
|
||
# 文件操作
|
||
obsidian files total # 文件总数
|
||
obsidian search query="关键词" limit=5 # 搜索
|
||
obsidian tags sort=count counts # 标签统计
|
||
```
|
||
|
||
### 4.2 EPUB 转换工具
|
||
|
||
位于 `tools/epub_converter/` 目录,用于将 EPUB 电子书转换为 Obsidian Markdown 笔记。
|
||
|
||
**命令行**:
|
||
```bash
|
||
python -m tools.epub_converter <input.epub> <output_dir> [--author "作者"] [--tags "标签1,标签2"]
|
||
```
|
||
|
||
**功能特性**:
|
||
- 从原始 EPUB 提取正确的 UTF-8 元数据(标题、作者、出版社、日期)
|
||
- Calibre 规范化处理复杂 EPUB 结构(OEBPS/锚点格式)
|
||
- TOC 章节结构解析
|
||
- 按章节拆分,生成 Obsidian 笔记
|
||
- 标准 YAML frontmatter
|
||
|
||
**输出结构**:
|
||
转换后的文件存放在 `raw/书名_作者/` 目录下:
|
||
- `书名_作者/` - 按"书名+作者"命名的目录
|
||
- `original.epub` - 原始 EPUB 文件
|
||
- `chapter1.md` - 章节笔记
|
||
- `chapter2.md` - 章节笔记
|
||
- …
|
||
|
||
**依赖**:
|
||
- Python 3.10+
|
||
- Calibre (ebook-convert) - 通过 scoop 安装
|
||
- html2text - 可选,增强 HTML 到 Markdown 的转换质量
|
||
|
||
---
|
||
|
||
### 4.3 home-wiki 跨库同步
|
||
|
||
`tools/scripts/sync_home_wiki.py` 定期将 `D:\TC_UP\home-wiki` 的知识页面同步到本仓库 `wiki/`,是跨库知识流通的唯一入口。
|
||
|
||
**同步范围**:`concepts/` + `entities/` + `syntheses/`(排除 index.md)。`Daily/`、`MyNotes/`、`reports/` 不在知识同步范围。
|
||
|
||
**转换规则**(home-wiki frontmatter → kepano Wiki 规范):
|
||
- `categories`:加 `[[LLM Wiki]]`;`entity/person` 额外加 `[[People]]`
|
||
- `tags`:前缀 `wiki` + 类型标签(`people`/`concept`);`concept` 的 `subtype` 转 `concept/{subtype}`;追加原 tags
|
||
- `title`/`name` → `aliases`;`sources[0]`(文件路径取 stem)→ `source` wikilink
|
||
- 正文保留,移除 home-wiki 特有的 openclaw 自动段落(`## Related`、注释标记行)
|
||
|
||
**用法**:
|
||
```bash
|
||
$env:PYTHONIOENCODING="utf-8"
|
||
python tools/scripts/sync_home_wiki.py --dry-run # 仅诊断差异
|
||
python tools/scripts/sync_home_wiki.py --index --log # 一站式:同步 + 更新 index + 记日志(推荐)
|
||
python tools/scripts/sync_home_wiki.py --lint # 体检(孤儿/断链/source空值/未入index)
|
||
```
|
||
|
||
**index 自动维护**(`--index`):用标记块 `<!-- BEGIN/END home-wiki-sync -->` 自动维护 `wiki/index.md` 的「概念页」「实体页」两个表。简介缓存 `tools/data/home-wiki-summaries.json` 是简介权威来源——首次从 index 现有表格种子化(保留人工简介),新页面自动提取(`description` → 顶部引用块 → 概述首句)。「综合报告」表因混合教育AI研究等其他来源,保持手动维护。
|
||
|
||
**健壮性**:幂等(按完整内容对比,frontmatter+正文);home-wiki frontmatter 常含 `related: [[wikilink]]`,`[[` 会触发 YAML flow sequence 解析异常,脚本先 `yaml.safe_load`,失败则正则逐字段回退。
|
||
|
||
**相关文件**:
|
||
- 脚本:`tools/scripts/sync_home_wiki.py`
|
||
- 简介缓存:`tools/data/home-wiki-summaries.json`
|
||
- 文件名映射:脚本内 `NAME_MAP`(home-wiki 完整标题 → kepano 简短名)
|
||
|
||
---
|
||
|
||
## 5. WorkBuddy 自动化工作流
|
||
|
||
### 5.1 WorkBuddy 集成
|
||
|
||
**WorkBuddy** 是用于 `/raw/教育AI研究/` 项目自动化工具,通过 TOML 配置文件定期执行任务。
|
||
|
||
**配置位置**:
|
||
- 任务定义:`raw/教育AI研究/.workbuddy/automations/*.toml`
|
||
- 工作日志:`raw/教育AI研究/.workbuddy/memory/*.md`
|
||
|
||
**每周研究计划**(`edu-ai-higher-ed-weekly-plan.toml`):
|
||
- 工作目录:`D:\Applications\app\kepano-obsidian-main\raw\教育AI研究`
|
||
- 记忆文件:`raw/教育AI研究/.workbuddy/memory/MEMORY.md`
|
||
- 调度:每周一 09:00
|
||
- 输出:每周研究计划保存到 `每周报告/YYYY-WXX-第N周研究计划.md`
|
||
|
||
**典型工作流**:
|
||
1. WorkBuddy 每周一生成研究计划(基于 MEMORY.md 中的周次和任务状态)
|
||
2. 计划包含 P0/P1/P2/P3 优先级任务
|
||
3. 每项任务指定产出路径和质量目标(≥85分)
|
||
4. 完成后更新 MEMORY.md 记录完成状态和成本
|
||
|
||
### 5.2 教育AI研究工作流
|
||
|
||
**研究周期**:W13-W21(2026年3月31日 - 5月18日)
|
||
|
||
**核心工作流步骤**:
|
||
|
||
| 步骤 | 说明 | 质量要求 |
|
||
|------|------|----------|
|
||
| **计划制定** | 基于 MEMORY.md 制定本周研究计划 | 明确优先级、可执行 |
|
||
| **机构研究** | 官网信息采集 → 档案建立 → 质量评分 | A级≥85分 |
|
||
| **技术深度分析** | 学术文献 + 实践案例 + 对比分析 | ≥80分/篇 |
|
||
| **真实性核查** | 五步核查法,每条信息须有来源 | 官方渠道占比≥70% |
|
||
| **周报生成** | 结构化总结,标注完成率和成本 | 完成率、成本统计 |
|
||
|
||
**自动化工具**:
|
||
|
||
文献管理:
|
||
|
||
```powershell
|
||
# 设置编码
|
||
$env:PYTHONIOENCODING="utf-8"
|
||
|
||
# 统计摘要
|
||
python 文献库\tools\文献库管理器.py --stats --db "文献库\文献索引数据库.json"
|
||
|
||
# 搜索文献
|
||
python 文献库\tools\文献库管理器.py --search ITS --db "文献库\文献索引数据库.json"
|
||
|
||
# 验证 DOI
|
||
python 文献库\tools\文献库管理器.py --verify --db "文献库\文献索引数据库.json"
|
||
```
|
||
|
||
质量保障工具:
|
||
|
||
```bash
|
||
python raw/教育AI研究/tools/check_note_properties.py
|
||
python raw/教育AI研究/tools/verify_auto_sync.py
|
||
python raw/教育AI研究/tools/fix_orphan_files.py
|
||
```
|
||
|
||
---
|
||
|
||
## 5.5 工具目录规范
|
||
|
||
**重要规则**:所有仓库根目录下的工具文件必须统一存放至 `/tools` 目录下。
|
||
|
||
### 目录结构
|
||
|
||
```
|
||
tools/
|
||
├── scripts/ # 脚本文件(.bat, .ps1, .sh)
|
||
│ ├── export-slides.bat
|
||
│ ├── fix-git-remote.ps1
|
||
│ └── stats.ps1
|
||
├── configs/ # 配置文件(.json, .yaml, .toml)
|
||
│ └── douban-book-clipper.json
|
||
├── data/ # 数据文件(词典、缓存等)
|
||
│ ├── cedict_ts.u8
|
||
│ └── douban_page.html
|
||
└── epub_converter/ # EPUB 转换工具
|
||
├── __init__.py
|
||
├── README.md
|
||
└── ...
|
||
```
|
||
|
||
### 工具分类说明
|
||
|
||
| 子目录 | 文件类型 | 示例 |
|
||
|--------|----------|------|
|
||
| `scripts/` | 执行脚本 | `.bat`, `.ps1`, `.sh` |
|
||
| `configs/` | 配置文件 | `.json`, `.yaml`, `.toml` |
|
||
| `data/` | 数据文件 | 词典、缓存、临时文件 |
|
||
| `epub_converter/` | Python 工具包 | EPUB 转换相关 |
|
||
|
||
### 使用规范
|
||
|
||
1. **新增工具**:按照工具类型存放到对应的子目录
|
||
2. **引用路径**:使用相对路径 `tools/scripts/xxx.py` 或绝对路径 `/tools/…`
|
||
3. **文档更新**:新增工具后更新本规范和相关文档
|
||
|
||
### 命名约定
|
||
|
||
- 文件名使用英文或中文,保持描述性
|
||
- 脚本文件使用清晰的前缀(如 `export-`, `fix-`, `stats-`)
|
||
- 配置文件使用功能名称(如 `douban-book-clipper.json`)
|
||
|
||
---
|
||
|
||
## 6. 代码风格与工具
|
||
|
||
> ⚠️ 本仓库是 Obsidian 知识库,非软件项目。TypeScript/JavaScript 规范不适用。
|
||
|
||
### 6.1 脚本规范(Python/PowerShell)
|
||
|
||
- 所有脚本必须有用途注释
|
||
- 关键数据必须有来源追溯
|
||
- 避免硬编码路径,使用相对路径
|
||
- Python 脚本需设置编码:`$env:PYTHONIOENCODING="utf-8"`
|
||
|
||
### 6.2 Lint 工具脚本
|
||
|
||
```powershell
|
||
# 位置: tools/scripts/
|
||
|
||
# 孤儿页面检测
|
||
wiki-lint-orphan.ps1
|
||
|
||
# 断链检测(优化版,排除 Obsidian 特殊引用)
|
||
wiki-lint-broken-v2.ps1
|
||
|
||
# 空 type 字段修复
|
||
wiki-lint-fix-type.ps1
|
||
```
|
||
|
||
### 6.3 qmd 本地搜索引擎
|
||
|
||
qmd (v2.1.0) 是已配置的本地 Markdown 搜索引擎,索引 wiki/ 和 raw/ 文件。
|
||
|
||
**运行方式**(不能直接运行 `qmd` 命令,脚本引用 /bin/sh):
|
||
```bash
|
||
node "C:\Users\hhhh2024\AppData\Roaming\npm\node_modules\@tobilu\qmd\dist\cli\qmd.js" <command>
|
||
```
|
||
|
||
或使用包装脚本:`tools\scripts\qmd.cmd <command>`
|
||
|
||
**搜索命令**:
|
||
- `qmd search "关键词" -c wiki` — BM25 全文搜索
|
||
- `qmd vsearch "语义查询" -c wiki` — 向量语义搜索
|
||
- `qmd query "综合查询" -c wiki` — 混合搜索(BM25+向量+LLM重排序)
|
||
|
||
**MCP 集成**(已配置 MCP server,在 opencode.json 中):
|
||
- `mcp__qmd__query` — 混合搜索
|
||
- `mcp__qmd__get` — 按路径/docid 获取文档
|
||
- `mcp__qmd__multi_get` — 批量获取
|
||
- `mcp__qmd__status` — 索引健康状态
|
||
|
||
**模型**:嵌入(embeddinggemma-300M-Q8_0/768维/Vulkan) + 重排序(Qwen3-Reranker-0.6B-Q8_0) + 查询扩展(qmd-query-expansion-1.7B)
|
||
|
||
**维护**:`qmd status` | `qmd update` | `qmd embed` | `qmd embed -f`
|
||
|
||
**Skill**: 已安装到 `.agents/skills/qmd/SKILL.md`
|
||
|
||
### 6.4 提交信息规范(Conventional Commits)
|
||
|
||
所有提交(手动与 obsidian-git 自动备份)统一采用 Conventional Commits + vault scope:
|
||
|
||
| Scope | 用途 | 示例 |
|
||
|-------|------|------|
|
||
| `feat(wiki)` | 新建/更新 Wiki 页面 | `feat(wiki): 添加 [[人物]] 实体页` |
|
||
| `docs(raw)` | 摄入新来源到 raw/ | `docs(raw): 摄入 ALEKS 研究` |
|
||
| `fix(tools)` | 修复脚本/工具 | `fix(tools): validate-frontmatter GBK 编码` |
|
||
| `chore(vault)` | obsidian-git 自动备份 | `chore(vault): backup 2026-07-01 10:00:00` |
|
||
| `refactor(schema)` | AGENTS.md/规范调整 | `refactor(schema): Phase 1 关系字段` |
|
||
| `style(vault)` | frontmatter/格式修正 | `style(vault): 统一 frontmatter 布尔值` |
|
||
|
||
**规则**:
|
||
- obsidian-git 自动备份提交信息已配置为 `chore(vault): backup {{date}}`
|
||
- 手动提交须语义化,避免 "update" / "修改" 等无信息标题
|
||
- 提交者身份:`hehaiguang1123 <hehaiguang1123@gmail.com>`(历史身份经 `.mailmap` 合并)
|
||
|
||
**Git 配置约定**:
|
||
- `.gitattributes`:文本统一 LF,Windows 脚本(`.ps1/.cmd/.bat`)CRLF,媒体文件标记 binary
|
||
- `.gitignore`:根目录白名单策略,仅跟踪 `raw/ wiki/ Templates/ tools/ .githooks/` + `.obsidian/` 配置
|
||
- `.githooks/`(`core.hooksPath=.githooks`):
|
||
- `pre-commit`:frontmatter 校验 + 10MB 大文件防护 + token 扫描
|
||
- `post-merge`:qmd 索引刷新 + `.obsidian` 变更重载提示
|
||
- 远程凭证不内嵌 token,使用 Windows Credential Manager
|
||
- **多端同步工具冲突警示**:obsidian-git 为本库唯一同步机制;`obsidian-livesync` 插件虽存在于 `plugins/` 但**未启用**,若多端启用会与 git 双写产生不可恢复冲突,禁止同时启用
|
||
|
||
---
|
||
|
||
## 7. Wiki 维护工作流
|
||
|
||
### 7.1 每周维护周期
|
||
|
||
**WorkBuddy 自动化**:
|
||
- 每周一 09:00 自动生成研究计划(基于 MEMORY.md)
|
||
- 计划包含 P0/P1/P2/P3 优先级任务
|
||
- 每项任务指定产出路径和质量目标(≥85分)
|
||
|
||
**手动触发维护**:
|
||
```bash
|
||
# 1. 运行 WorkBuddy 自动化
|
||
# 在周一 09:00 后,WorkBuddy 会自动执行
|
||
|
||
# 2. 手动刷新 index.md(如有新增页面)
|
||
# 更新 wiki/index.md 中的指标:来源数、Wiki 页面数
|
||
# 当前实际统计:247 个 Wiki 页面,39 个来源
|
||
|
||
# 3. 执行质量检查
|
||
# python raw/教育AI研究/tools/check_note_properties.py
|
||
# python raw/教育AI研究/tools/verify_auto_sync.py
|
||
# python raw/教育AI研究/tools/fix_orphan_files.py
|
||
|
||
# 4. 验证文献库
|
||
# python raw/教育AI研究/tools/文献库管理器.py --verify --db "文献库/文献索引数据库.json"
|
||
|
||
# 5. 生成周报(如需手动触发)
|
||
# 参考 raw/教育AI研究/templates/04-周报生成.md 模板
|
||
```
|
||
|
||
### 7.2 优先级维护原则
|
||
|
||
**Wiki 维护优先级**:
|
||
1. **P0 - 每周更新**:WorkBuddy 自动生成研究计划,更新 MEMORY.md
|
||
2. **P1 - 质量保障**:定期运行 lint 检查,修复孤立页面
|
||
3. **P2 - 结构优化**:检查并修复 frontmatter 一致性,更新 index.md
|
||
4. **P3 - 知识库扩展**:根据新研究内容创建新的 Wiki 页面
|
||
|
||
**Education AI Research 特有工作流**:
|
||
- **真实性核查**:每条信息必须追溯来源,五步核查法
|
||
- **质量评分**:A级≥85分,官方渠道占比≥70%
|
||
- **技术时效**:技术数据≤6个月,市场数据≤12个月
|
||
- **自动归档**:每周报告自动生成并存档到 `每周报告/` 目录
|
||
|
||
### 7.3 Frontmatter 一致性检查
|
||
|
||
**PARA 层 frontmatter**:
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[Category]]" # 单数形式,wikilink 格式
|
||
tags:
|
||
- tag1
|
||
- tag2
|
||
created: YYYY-MM-DD
|
||
rating: 5
|
||
author: []
|
||
---
|
||
```
|
||
|
||
**Wiki 层 frontmatter**(必须包含):
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]" # 必填
|
||
tags:
|
||
- wiki # 必填
|
||
- concept/entity/tool
|
||
created: YYYY-MM-DD
|
||
source: "[[{source-file}]]" # 必填,指向 raw/ 来源
|
||
type: concept # 必填(concept/entity/tool/reference/place/institution/method/knowledge-card/synthesis/index/log)
|
||
aliases: # 可选
|
||
---
|
||
```
|
||
|
||
**Type 合法值一览**:
|
||
|
||
| 类型 | 说明 | 使用量 |
|
||
|------|------|--------|
|
||
| `concept` | 概念、理论、方法论 | 209 页 |
|
||
| `entity` | 人物、组织 | 185 页 |
|
||
| `place` | 地理地点、区域、地标、历史遗迹 | 36 页 |
|
||
| `tool` | 软件工具、应用 | 26 页 |
|
||
| `reference` | 参考文档、指南、使用说明 | 15 页 |
|
||
| `institution` | 教育、研究机构 | 8 页 |
|
||
| `method` | 方法论、技术(呼吸法、修炼等) | 6 页 |
|
||
| `knowledge-card` | 知识卡片、数据快照 | 5 页 |
|
||
| `synthesis` | 综合研究报告 | 3 页 |
|
||
| `index` | 目录索引页 | 1 页 |
|
||
| `research-report` | 研究综述报告 | 1 页 |
|
||
| `lesson` | 经验教训总结 | 1 页 |
|
||
| `log` | 操作日志 | 1 页 |
|
||
|
||
---
|
||
|
||
**布尔值规范**:
|
||
```yaml
|
||
marp: "true" # ✅ 正确(用引号包裹)
|
||
paginate: "true" # ✅ 正确
|
||
marp: true # ❌ 错误(Obsidian 会显示为 checkbox)
|
||
paginate: true # ❌ 错误
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 常见任务清单
|
||
|
||
### 8.1 Education AI Research 项目维护
|
||
|
||
**每周维护任务**(WorkBuddy 自动触发):
|
||
- [ ] 检查 `raw/教育AI研究/.workbuddy/memory/MEMORY.md` 中的周次和任务状态
|
||
- [ ] 等待 WorkBuddy 自动生成本周研究计划(周一 09:00)
|
||
- [ ] 按计划执行 P0/P1/P2/P3 优先级任务
|
||
- [ ] 完成任务后更新 MEMORY.md 记录完成状态和成本
|
||
|
||
**手动维护任务**:
|
||
- [ ] 创建新的机构档案(官网采集 → 档案建立 → 质量评分 A级≥85分)
|
||
- [ ] 进行技术深度分析(学术文献 + 实践案例 + 对比分析,质量≥80分/篇)
|
||
- [ ] 执行真实性核查(五步核查法,每条信息须有来源)
|
||
- [ ] 生成结构化周报(遵循 `raw/教育AI研究/templates/04-周报生成.md` 模板)
|
||
|
||
**工具链命令**:
|
||
```bash
|
||
# 文献库管理(需设置编码)
|
||
$env:PYTHONIOENCODING="utf-8"
|
||
python raw/教育AI研究/tools/文献库管理器.py --stats --db "文献库/文献索引数据库.json"
|
||
python raw/教育AI研究/tools/文献库管理器.py --search ITS --db "文献库/文献索引数据库.json"
|
||
python raw/教育AI研究/tools/文献库管理器.py --verify --db "文献库/文献索引数据库.json"
|
||
|
||
# 质量保障工具
|
||
python raw/教育AI研究/tools/check_note_properties.py
|
||
python raw/教育AI研究/tools/verify_auto_sync.py
|
||
python raw/教育AI研究/tools/fix_orphan_files.py
|
||
|
||
# WorkBuddy 手动触发(如需)
|
||
# 查看任务定义
|
||
cat raw/教育AI研究/.workbuddy/automations/edu-ai-higher-ed-weekly-plan.toml
|
||
|
||
# 查看记忆状态
|
||
cat raw/教育AI研究/.workbuddy/memory/MEMORY.md
|
||
```
|
||
|
||
### 8.2 Wiki 摄入与维护
|
||
|
||
- [ ] 存放新来源到 `raw/{source-name}.md`
|
||
- [ ] 读取并分析关键要点
|
||
- [ ] 创建/更新 Wiki 页面(概念/实体/工具)
|
||
- [ ] 更新 `wiki/index.md`(来源数、页面数:当前为 247 页,39 来源)
|
||
- [ ] 追加 `wiki/log.md` 条目
|
||
|
||
### 8.3 Wiki 查询与回答
|
||
|
||
- [ ] 搜索相关 Wiki 页面(优先使用 `qmd query` MCP,fallback 到 grep)
|
||
- [ ] 综合多页面信息
|
||
- [ ] 检查是否有新见解
|
||
- [ ] 如有新见解,创建新 Wiki 页面并归档到 Wiki
|
||
- [ ] 更新 index 和 log
|
||
|
||
### 8.4 Wiki 健康检查
|
||
|
||
- [ ] 执行常规体检(每周):矛盾、过时、孤岛、断链、index 准确性
|
||
- [ ] 执行深度体检(每月):随机抽 5 页逐条比对原始文档
|
||
- [ ] 自动修复发现的偏差
|
||
- [ ] 更新 log 记录检查结果
|
||
|
||
### 8.5 EPUB 电子书转换
|
||
|
||
- [ ] 使用 EPUB 转换工具:`python -m tools.epub_converter <input.epub> <output_dir>`
|
||
- [ ] 指定作者:`[--author "作者"]`
|
||
- [ ] 添加自定义标签:`[--tags "标签1,标签2"]`
|
||
- [ ] 确保转换后的文件存放在 `raw/书名_作者/` 目录
|
||
|
||
---
|
||
|
||
## 9. 工具与资源
|
||
|
||
### 9.1 核心工具
|
||
|
||
| 工具 | 用途 | 优先级 | 维护者 |
|
||
|------|------|--------|--------|
|
||
| **Obsidian** | Wiki 的可视化 IDE | 高 | 人类 |
|
||
| **Obsidian CLI** | 命令行工具(v1.12.7+) | 高 | LLM Agent |
|
||
| **qmd** | 本地 Markdown 搜索引擎 | 中 | 人类 |
|
||
| **Marp** | 演示文稿工具(Markdown → PPT/PDF) | 高 | LLM Agent |
|
||
| **Obsidian Marp 插件** | Marp 预览和导出 | 中 | 人类 |
|
||
| **WorkBuddy** | 自动化工具(每周研究计划) | 高 | 人类 + WorkBuddy |
|
||
| **EPUB 转换工具** | `tools/epub_converter/` | 中 | LLM Agent |
|
||
| **文献库管理器** | `文献库/tools/文献库管理器.py` | 中 | LLM Agent |
|
||
| **质量保障脚本** | `raw/教育AI研究/tools/*.py` | 中 | LLM Agent |
|
||
| **frontmatter 验证** | `scripts/validate-frontmatter.py` | 高 | Git hooks |
|
||
| **关系管理** | `scripts/manage-relations.py` | 高 | LLM Agent |
|
||
| **图搜索** | `scripts/graph-search.py` | 中 | LLM Agent |
|
||
| **时效检测** | `scripts/check-staleness.py` | 中 | LLM Agent + Lint |
|
||
| **矛盾检测** | `scripts/detect-conflicts.py` | 中 | LLM Agent + Lint |
|
||
| **知识提级** | `scripts/promote-knowledge.py` | 中 | LLM Agent |
|
||
|
||
### 9.2 代理维护分工
|
||
|
||
| 责任领域 | opencode Agent | workbuddy Agent | 备注 |
|
||
|-----------|---------------|------------------|------|
|
||
| **Wiki 架构维护** | Wiki 层结构、Ingest/Query/Lint 操作 | - | - |
|
||
| **PARA 层维护** | Categories, References, Notes, Daily | - | - |
|
||
| **LLM Wiki 编译** | 新来源 → Wiki 页面创建 | - | - |
|
||
| **Wiki 索引与日志** | wiki/index.md, wiki/log.md 维护 | - | - |
|
||
| **Frontmatter 规范** | 检查与修复 frontmatter 一致性 | - | - |
|
||
| **Obsidian Skills 管理** | obsidian-skills 更新与集成 | - | - |
|
||
| **教育 AI 专项研究** | `/raw/教育AI研究/` 项目完整生命周期 | - | ✅ |
|
||
| **每周研究计划** | WorkBuddy 自动生成 | ✅ | ✅ |
|
||
| **真实性核查** | 五步核查法执行与工具链 | - | ✅ |
|
||
|
||
### 9.3 相关 Wiki 页面
|
||
|
||
**LLM Wiki 核心**:
|
||
- [[LLM Wiki]] - 核心模式定义
|
||
- [[RAG vs 持久化知识库]] - 模式对比
|
||
- [[知识库维护自动化]] - 维护负担解决方案
|
||
- [[Memex]] - 思想源头
|
||
|
||
**实践案例**:
|
||
- [[Farzapedia]] - Farza 的实践案例
|
||
- [[BYOAI]] - 四大优势
|
||
- [[Contamination Mitigation]] - Agent 工作区隔离
|
||
|
||
**人物**:
|
||
- [[Andrej Karpathy]] - 模式提出者
|
||
- [[Vannevar Bush]] - Memex 概念提出者
|
||
|
||
**工具与自动化**:
|
||
- [[Obsidian-skills]] - Obsidian 插件生态总览
|
||
- [[教育AI研究项目]] - 项目说明与结构
|
||
|
||
**Marp 生态**:
|
||
- [[Marp]] - 概念总览
|
||
- [[Marp 指令语法]] - 指令参考
|
||
- [[Marp 主题与样式]] - 主题和 CSS
|
||
- [[Marp 导出]] - 导出方式
|
||
- [[Obsidian Marp 插件]] - Obsidian 集成
|
||
- [[Marp 主题推荐]] - 社区主题合集
|
||
- [[示例-学校定制Marp演示]] - 演示示例
|
||
|
||
### 9.4 外部资源
|
||
|
||
- [[llm-wiki]] - Karpathy Gist 原文
|
||
- [[刚刚,Karpathy 开源个人 LLM Wiki]] - 第二来源(J0hn 中文解读)
|
||
- [[marp-guide]] - Marp 官方文档
|
||
- [[marp-themes]] - GitHub 主题合集
|
||
|
||
---
|
||
|
||
## 10. 附录
|
||
|
||
### 10.1 本文档特殊说明
|
||
|
||
AGENTS.md 是仓库的 **Schema 文件**,位于基础设施层:
|
||
|
||
| 属性 | 值 | 说明 |
|
||
|------|-----|------|
|
||
| **位置** | 仓库根目录 | 与 PARA、wiki、raw 同级 |
|
||
| **角色** | Wiki 结构约定、工作流规范 | 连接 PARA 层和 Wiki 层 |
|
||
| **维护者** | 人类 + LLM Agent | 共同演进 |
|
||
|
||
**Frontmatter 特殊性**:
|
||
- 继承 PARA 层的字段(categories, rating)
|
||
- 添加类型字段(type: schema)
|
||
- 不需要 source 字段(因为是规范本身,非编译产物)
|
||
|
||
### 10.2 文件命名约定
|
||
|
||
| 层级 | 类型 | 命名约定 | 示例 |
|
||
|------|------|----------|------|
|
||
| **raw/** | 来源 | `{source-name}.md` | `llm-wiki.md` |
|
||
| **wiki/** | 概念 | `{概念名称}.md` | `Memex.md` |
|
||
| **wiki/** | 实体 | `{人物姓名}.md` | `Andrej Karpathy.md` |
|
||
| **wiki/** | 工具 | `{工具名称}.md` | `qmd.md` |
|
||
| **wiki/** | 参考 | `{主题}-{子主题}.md` | `Marp-指令语法.md` |
|
||
| **Categories/** | 类别 | `{类别名}s.md` | `Books.md` |
|
||
| **References/** | 实体 | `{实体名称}.md` | `Obsidian.md` |
|
||
| **Notes/** | 笔记 | `{标题}.md` | `Evergreen notes…md` |
|
||
| **Daily/** | 日记 | `{YYYY-MM-DD}.md` | `2026-01-23.md` |
|
||
| **raw/教育AI研究/** | 项目文档 | `{类别}-{子类别}.{ext}` | `README.md`, `.toml`, `.json` |
|
||
|
||
### 10.3 更新日志
|
||
|
||
| 日期 | 版本 | 更新内容 |
|
||
|------|------|----------|
|
||
| 2026-01-23 | 1.0 | 初始版本(PARA 模式) |
|
||
| 2026-04-07 | 2.0 | 添加 LLM Wiki 模式、Marp 工作流、双层架构 |
|
||
| 2026-04-20 | 3.0 | **重大重构**:移除无关的软件开发内容,添加 Obsidian vault 维护工作流 |
|
||
| | | - 添加 WorkBuddy 自动化集成 |
|
||
| | | - 添加 Education AI Research 项目详细工作流 |
|
||
| | | - 更新实际工具链(Obsidian CLI, EPUB 转换, WorkBuddy) |
|
||
| | | - 阐明 opencode 和 workbuddy 的维护分工 |
|
||
| 2026-04-28 | 4.0 | 添加 Wiki Lint 工作流(孤儿页面检测、断链检测、空 type 修复) |
|
||
| | | - 添加 Lint 工具脚本(wiki-lint-orphan.ps1, wiki-lint-broken-v2.ps1) |
|
||
| | | - 创建 wiki/archive/ 目录用于归档大型报告页面 |
|
||
| | | - 更新 index.md 和 log.md 维护规范 |
|
||
| 2026-06-30 | 5.0 | home-wiki 跨库同步工作流完善 |
|
||
| | | - 新增 `tools/scripts/sync_home_wiki.py`(幂等同步 + frontmatter 转换 + index 自动维护 + lint 体检) |
|
||
| | | - 新增简介缓存 `tools/data/home-wiki-summaries.json`(JSON 权威来源,首次种子化) |
|
||
| | | - index.md 跨库章节标记块自动化(`<!-- BEGIN/END home-wiki-sync -->`,概念/实体表自动生成) |
|
||
| | | - 修复 home-wiki frontmatter `related: [[wikilink]]` 触发的 YAML 解析失败(正则回退逐字段提取) |
|
||
| 2026-06-30 | 5.1 | **根目录清理与结构优化** |
|
||
| | | - 5 篇根级"读"笔记移至 `wiki/`(添加 wiki frontmatter + source 引用 raw/) |
|
||
| | | - `PARA/` 目录合并至 `Notes/`(`PARA索引维护.md` → `Notes/`),删除冗余 `PARA/` |
|
||
| | | - 清理临时文件(`temp_lint_output.txt`, `today_raw_files.txt`) |
|
||
| | | - `sync-homewiki-workspace/` 移至 `tools/data/sync-homewiki/` |
|
||
| | | - `AGENTS.md` 文件夹组织表补充 `Presentations/` 和 `tools/` |
|
||
| 2026-07-01 | 6.0 | **Phase 1:Typed relationships + 内存生命周期** |
|
||
| | | - 新增 `relations` 字段(8 种边类型),`AGENTS.md` 模板全部更新 |
|
||
| | | - 新增 `confidence`/`status`/`superseded_by`/`last_reviewed`/`review_interval_days` 字段 |
|
||
| | | - 新增 `tools/scripts/manage-relations.py`(add/remove/list/graph/stats) |
|
||
| | | - 新增 `tools/scripts/graph-search.py`(qmd 语义搜索 → relations 扩展) |
|
||
| | | - 新增 `tools/scripts/check-staleness.py`(时效检测,支持 --json --overdue-only) |
|
||
| | | - 新增 `tools/scripts/detect-conflicts.py`(矛盾检测,支持 --auto-callout) |
|
||
| | | - 删除 AGENTS.md 重复概念页模板(×2 → ×1) |
|
||
| | | - 修复 AGENTS.md 编号冲突(第 5 节 ×2 → 第 6-10 节)、删除重复 quote、qmd 归位 |
|
||
| 2026-07-01 | 7.0 | **Phase 2:事件驱动自动化 + Consolidation tiers** |
|
||
| | | - 新增 `tools/scripts/validate-frontmatter.py`(pre-commit 校验) |
|
||
| | | - 新增 `tools/scripts/weekly-lint.ps1`(聚合 lint 报告) |
|
||
| | | - 新增 `tools/scripts/promote-knowledge.py`(层级提升检测) |
|
||
| | | - 新增 `.githooks/pre-commit` + `post-merge`(自动验证 + qmd 更新) |
|
||
| | | - 启用 `core.hooksPath .githooks` |
|
||
| | | - 新增 `### 2.5 结晶机制`(Crystallization) |
|
||
| | | - 新增 `### 2.6 知识提级`(Consolidation tiers) |
|
||
| | | - 工具表新增 5 行(frontmatter 验证/关系管理/图搜索/时效检测/矛盾检测/知识提级) |
|
||
|
||
### 10.4 人物 Wiki 生成规范(快速参考)
|
||
|
||
创建人物 Wiki 笔记时**必须**遵循以下规则,详细规范见 `wiki/人物Wiki文件生成规范.md`。
|
||
|
||
#### 模板与 Type 映射
|
||
|
||
| 模板 | type | tags | Base embed |
|
||
|------|------|------|------------|
|
||
| Author Template | `"People"`, `"Author"` | `person/author` | `![[Books.base#Author]]` |
|
||
| People Template | `"People"` | `person/historical` 等 | 按角色选择 |
|
||
| Actors Template | `"People"`, `"Actors"` | `person/actor` | `![[Movies.base#Actor]]` |
|
||
| Director Template | `"People"`, `"Director"` | `person/director` | `![[Movies.base#Director]]` |
|
||
|
||
#### Frontmatter 规则
|
||
|
||
```yaml
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- person/{type}
|
||
type:
|
||
- "People"
|
||
- "{Role}"
|
||
birthday: YYYY-MM-DD
|
||
nationality: 中国
|
||
origin: 省市区
|
||
aliases:
|
||
- 本名
|
||
- 英文名
|
||
source: "[[Wikipedia]]"
|
||
```
|
||
|
||
- `type` 使用双引号字符串列表,**禁止** wikilink 格式
|
||
- `aliases` 必须包含本名、英文名等变体(影响 Base 视图匹配)
|
||
- `source` 使用 wikilink 单行字符串格式
|
||
|
||
#### 信息来源与填充
|
||
|
||
1. **数据源**:通过 Exa 爬取 `https://zh.wikipedia.org/wiki/{人物名}`
|
||
2. **提取字段**:birthday → infobox"出生",origin → infobox"籍贯",aliases → infobox"本名"+"英文名"
|
||
3. **照片获取**:`python scripts/fetch_wikipedia_photo.py {人物名}`
|
||
4. **照片路径**:`Attachments/people/{人物名}.jpg`
|
||
|
||
#### Base 视图人物匹配
|
||
|
||
所有涉及人物匹配的 Base 视图(Author/Director/Actor)必须使用三重 `or` 条件:
|
||
|
||
```yaml
|
||
filters:
|
||
or:
|
||
- list({field}).contains(this) # 精确匹配(纯文本/列表)
|
||
- {field}.contains(this.file.name) # 子串匹配(扩展名称)
|
||
- file.hasLink(this.file) # Wikilink 匹配
|
||
```
|
||
|
||
已更新:`Books.base#Author`、`Movies.base#Director`、`Movies.base#Actor`
|
||
|
||
---
|
||
|
||
## 名言
|
||
|
||
> "Obsidian is IDE; LLM is programmer; wiki is codebase."
|
||
> — [[Andrej Karpathy]]
|
||
|
||
> "这种个性化方式把控制权完全交到你手上。数据是你的,格式是通用的,内容是可检查的。用哪个 AI 随你,让 AI 公司们卷起来吧。"
|
||
> — [[Andrej Karpathy]]
|
||
|
||
<!-- Added: 2026-04-20 -->
|
||
|
||
## opencode-mem 记忆汇报规则
|
||
|
||
每次对话结束时,必须简要汇报 opencode-mem 记忆更新情况(新增/修改/删除了哪些记忆)。如果本次对话未触发记忆变更,也需说明"本次无记忆变更"。
|
||
|
||
**2026-04-28 本次汇报**:
|
||
- 更新的 AGENTS.md 内容:添加 Wiki Lint 工作流(第9.3节更新日志)
|
||
- 更新的 wiki/index.md 内容:页面数更新(408→401),孤儿页面从28降到0,添加21个页面的入站链接
|
||
- 更新的 wiki/log.md 内容:追加孤儿页面归档记录(7页归档到archive/)
|
||
- 新建的 wiki/archive/ 目录:用于归档大型报告页面
|
||
- 无删除的记忆
|
||
|
||
<!-- Added: 2026-04-23 -->
|