一只阿木木

Skills + Codex + Wiki —— 一套让 Obsidian 从碎片自动生长为知识网络的复盘实录

3大神器驱动,零干预生长:如何用 Obsidian-Skills + Codex + Obsidian-Wiki 实现知识库自动生长

一只阿木木 ——公开建造我的 AI 第二大脑

普通人如何用 AI 搭建自己的知识操作系统?一个程序员出身的知识工作者,公开记录自己如何用 AI 工具搭建个人知识系统、把读过的书和做过的项目变成可复用资产的全过程。

写在前面:你的知识库为什么是「死的」?

先做一个诊断。

打开你的 Obsidian Vault,诚实回答以下三个问题:

1. 你的 Inbox 文件夹,现在有多少笔记积压在里面没有处理?
2. 你上一次从 Vault 里检索到一条笔记,并把它用在实际决策上,是什么时候?
3. 你的 Vault 里有多少孤立笔记——没有 wikilink、没有标签、没有被任何其他笔记引用?

大多数人的答案是:Inbox 里有几十条,上次检索是上个月,孤立笔记超过 60%。

这不是你不勤奋,这是系统设计问题。

一个靠「人工维护」的知识库,有三个结构性缺陷:

text

缺陷 1:输入速度 > 处理速度
       → Inbox 永远积压

缺陷 2:笔记之间没有自动建立连接
       → 孤立笔记越来越多,知识图谱是假的

缺陷 3:没有定期整理机制
       → 旧笔记沉底,永远不会被再次看到

我们要做的,是给你的知识库装上一台「自动运转的引擎」。

核心理念是:LLM 成为维护者,Obsidian 成为查看器,知识库保持为相互连接的 markdown 文件,而不是被困在聊天记录里。

一、理解 的三层架构

AI 深度阅读实验室的自动化体系,分三个层次:

text

第一层:理解层(obsidian-skills)
       → 让 AI Agent 真正「读懂」Obsidian 的格式
       → 解决:AI 生成的内容破坏 wikilink、frontmatter、canvas 格式

第二层:操作层(obsidian-cli)
       → 让 AI Agent 直接读写 Vault
       → 解决:Agent 和 Vault 之间的操作通道

第三层:维护层(Codex + obsidian-wiki)
       → 自动化 Inbox 清理、链接建立、索引重建
       → 解决:人工维护的时间成本和遗忘问题

三层缺一不可。 只有第一层,Agent 能读但格式乱;只有第二层,Agent 能写但不理解 Obsidian 逻辑;只有第三层,有自动化但写出来的内容不符合 Obsidian 规范。

二、五大 Obsidian Skills 深度解析

kepano/obsidian-skills 仓库提供五个 skill,每个 skill 针对一种特定的 Obsidian 文件格式或能力,每个 skill 是一个包含 SKILL.md 文件的独立文件夹。 

因为遵循开放的 Agent Skills 规范,这些 skills 可以与 Claude Code、Codex CLI、Gemini CLI 以及任何其他兼容 Agent 配合使用——不局限于 Anthropic 的工具链。

在进入操作之前,必须深度理解每个 skill 的边界和触发时机。

Skill 1:obsidian-markdown — AI 写 Obsidian 笔记的「语法老师」

obsidian-markdown skill 帮助 Agent 创建和编辑带有 wikilinks、embeds、callouts、properties 以及其他 Obsidian 特有语法的 Obsidian Flavored Markdown。它在处理 Obsidian 的 .md 文件时触发,当用户提到 wikilinks、callouts、frontmatter、tags、embeds 或 Obsidian 笔记时使用。

为什么这个 skill 是基础?

Claude Code 默认不了解 Obsidian 的专有文件格式。当它创建笔记时,可能会破坏 wikilink 语法;当它编辑 .base 文件时,会生成无效的 JSON;当它写 .canvas 文件时,输出的内容根本无法在 Obsidian 中打开。 如果没有这个 skill,Claude 可能会写出标准 Markdown 链接格式([Note Name](note-name.md)),这会破坏 Obsidian 的图谱视图和反向链接。

obsidian-markdown 覆盖的核心语法:

Markdown

# Obsidian Flavored Markdown 关键规则

## Wikilinks(内部链接)
正确:[[笔记名称]]
错误:[笔记名称](笔记名称.md)

## 带别名的 Wikilink
[[笔记名称|显示文字]]

## Embeds(嵌入)
![[笔记名称]]           # 嵌入整个笔记
![[笔记名称#章节标题]]  # 嵌入某个章节
![[图片.png]]           # 嵌入图片

## Callouts(标注块)
> [!info] 信息标注
> 这里是内容

> [!warning] 警告
> 注意这件事

> [!tip] 技巧
> 实用提示

## Properties / Frontmatter
---
type: atom
date: 2026-06-13
tags: [concept, business]
status: active
---

## 标签规则
#单个标签
#嵌套/标签/结构

激活方式:

Bash

# 在 Claude Code / Codex 会话中
/obsidian-markdown

# 之后所有生成的 .md 内容都会遵循 OFM 规范

Skill 2:obsidian-cli — AI 操作 Vault 的「双手」

obsidian-cli skill 让 Agent 可以通过 Obsidian CLI 读取、创建、搜索和管理笔记、任务、属性等,还支持插件和主题开发,包括重载插件、运行 JavaScript、捕获错误、截图和检查 DOM 等操作。 

使用时需要通过 CLI 与正在运行的 Obsidian 实例交互,要求 Obsidian 处于打开状态。

完整命令分类速查表:

Bash

# ─── 文件操作 ───────────────────────────────
obsidian read file="路径/文件名.md"        # 读取文件内容
obsidian create name="路径/文件名"          # 创建新笔记
  content="内容"
  template="模板名"
obsidian append file="文件名" content="追加内容"  # 追加内容
obsidian delete file="文件名"              # 删除文件

# ─── 搜索 ────────────────────────────────────
obsidian search query="关键词"            # 全文搜索
obsidian search tag="标签名"              # 按标签搜索
obsidian search property="status" value="active"  # 按属性搜索

# ─── 属性管理 ────────────────────────────────
obsidian property:set file="文件名"       # 设置属性
  name="status" value="done"
obsidian property:get file="文件名"       # 读取属性
  name="status"

# ─── 链接与图谱 ──────────────────────────────
obsidian backlinks file="文件名"          # 查看反向链接
obsidian tags                             # 列出所有标签
obsidian links file="文件名"             # 查看出链

# ─── 任务管理 ────────────────────────────────
obsidian tasks:list file="文件名"        # 列出任务
obsidian tasks:complete file="文件名"    # 标记任务完成
  line=3

# ─── 每日笔记 ────────────────────────────────
obsidian daily:read                       # 读取今日笔记
obsidian daily:append content="内容"     # 追加到今日笔记

# ─── 插件开发(进阶)────────────────────────
obsidian plugin:reload name="插件名"     # 重载插件
obsidian js:run code="..."               # 运行 JS
obsidian dom:inspect selector=".class"   # 检查 DOM

Skill 3:obsidian-bases — 把 Vault 变成数据库

obsidian-bases skill 帮助 Agent 创建和编辑带有视图、过滤器、公式和摘要的 Obsidian Bases(.base 文件),在处理 .base 文件、创建笔记的类数据库视图时触发,或当用户提到 Bases、表格视图、卡片视图、过滤器或公式时使用。 

Obsidian Bases 在 2025 年发布,将每个 Vault 变成了轻量级数据库——允许用户创建表格视图、过滤查询,以及跨笔记的关联记录。

.base 文件的核心结构:

JSON

{
  "filters": {
    "and": [
      {"field": "tags", "operator": "contains", "value": "atom"},
      {"field": "status", "operator": "!=", "value": "archived"}
    ]
  },
  "columns": [
    {"field": "title", "width": 300},
    {"field": "topics", "width": 200},
    {"field": "atom-type", "width": 120},
    {"field": "confidence", "width": 100},
    {"field": "date", "width": 120}
  ],
  "sort": [
    {"field": "date", "direction": "desc"}
  ]
}

激活 + 创建读书数据库:

Bash

/obsidian-bases

# 创建读书追踪数据库
obsidian create name="System/Bases/读书追踪.base" \
  content='{
    "filters": {
      "and": [
        {"field": "type", "operator": "=", "value": "book-note"},
        {"field": "status", "operator": "!=", "value": "archived"}
      ]
    },
    "columns": [
      {"field": "title", "width": 250},
      {"field": "author", "width": 150},
      {"field": "status", "width": 100},
      {"field": "atoms-count", "width": 80},
      {"field": "date-started", "width": 120}
    ],
    "sort": [{"field": "date-started", "direction": "desc"}]
  }'

这个 .base 文件一旦创建,Obsidian 会自动扫描 Vault 里所有 type: book-note 的笔记,实时渲染成动态表格。 你不需要手动更新,它永远是最新的。

Skill 4:json-canvas — 把知识图谱变成可视化画布

json-canvas skill 帮助 Agent 创建和编辑带有节点、边、组和连接的 JSON Canvas 文件(.canvas),在处理 .canvas 文件、创建可视化画布、思维导图、流程图时触发。

.canvas 文件的核心结构:

JSON

{
  "nodes": [
    {
      "id": "node001",
      "type": "text",
      "x": 0,
      "y": 0,
      "width": 300,
      "height": 150,
      "text": "# 核心概念\n这是一个文本节点"
    },
    {
      "id": "node002",
      "type": "file",
      "x": 400,
      "y": 0,
      "width": 300,
      "height": 200,
      "file": "02-Skills/atoms/原子-旁观者视角.md"
    },
    {
      "id": "group001",
      "type": "group",
      "x": -50,
      "y": -50,
      "width": 800,
      "height": 400,
      "label": "决策框架集群"
    }
  ],
  "edges": [
    {
      "id": "edge001",
      "fromNode": "node001",
      "toNode": "node002",
      "label": "延伸到"
    }
  ]
}

关键规则:

在 JSON 字符串中换行必须用 \n,不要用字面上的 \\n——Obsidian 会把后者渲染成字符 \ 和 n。

实战:用 Agent 生成模块知识图谱

Bash

/json-canvas

# 生成本课程的 Skill Stack 知识图谱
obsidian create \
  name="System/Canvas/Skill-Stack-全景图.canvas" \
  content='{
    "nodes": [
      {"id":"n1","type":"text","x":0,"y":0,"width":200,"height":100,
       "text":"# book-to-skill\n书籍→Agent知识"},
      {"id":"n2","type":"text","x":300,"y":0,"width":200,"height":100,
       "text":"# dbs-deconstruct\n概念拆解"},
      {"id":"n3","type":"text","x":150,"y":200,"width":200,"height":100,
       "text":"# dbs-diagnosis\n商业诊断"},
      {"id":"n4","type":"text","x":0,"y":400,"width":200,"height":100,
       "text":"# dbs-content\n内容生产"},
      {"id":"n5","type":"text","x":300,"y":400,"width":200,"height":100,
       "text":"# dbs-action\n执行力"},
      {"id":"n6","type":"text","x":150,"y":600,"width":200,"height":100,
       "text":"# Obsidian Vault\n永久沉淀"}
    ],
    "edges": [
      {"id":"e1","fromNode":"n1","toNode":"n3","label":"输入"},
      {"id":"e2","fromNode":"n2","toNode":"n3","label":"澄清"},
      {"id":"e3","fromNode":"n3","toNode":"n4","label":"驱动"},
      {"id":"e4","fromNode":"n3","toNode":"n5","label":"驱动"},
      {"id":"e5","fromNode":"n4","toNode":"n6","label":"沉淀"},
      {"id":"e6","fromNode":"n5","toNode":"n6","label":"沉淀"}
    ]
  }'

Skill 5:defuddle — 网页内容自动清洗入库

defuddle skill 使用 Defuddle CLI 从网页提取干净的 markdown 内容,去除杂乱信息和导航元素以节省 token 消耗。在用户提供 URL 进行阅读或分析时使用,适用于在线文档、文章、博客文章或任何标准网页。对于以 .md 结尾的 URL 不要使用,因为那些已经是 markdown,直接用 WebFetch。 

给 Defuddle 一个 URL,它会清除广告、侧边栏、推荐块和其他杂乱内容,提取干净的正文和结构化元数据。它就像一个净化器,把杂乱的网页变成标准 Markdown。

激活 + 使用:

Bash

/defuddle

# 把一篇文章清洗后存入 Inbox
obsidian create \
  name="00-Inbox/文章-$(date +%Y%m%d)-某篇文章" \
  content="$(defuddle --md https://example.com/article)"

# 更完整的网页剪藏工作流
defuddle --md https://某个URL \
  -o ~/.tmp/clipped.md

obsidian create \
  name="00-Inbox/剪藏-$(date +%Y%m%d)" \
  content="$(cat ~/.tmp/clipped.md)"

obsidian property:set \
  file="00-Inbox/剪藏-$(date +%Y%m%d)" \
  name="source" value="https://某个URL"

Claude 获取页面后,使用 defuddle 的处理逻辑剥离非内容元素,并以正确的 OFM frontmatter 保存干净的 Markdown 笔记。这和 Obsidian 的网页剪藏浏览器扩展能力相同——但是自动化的、可脚本化的。

三、课节 6-1:让 Agent 深度理解你的 Vault

Step 1:激活顺序的正确理解

这些 skills 不会自动加载。在处理特定文件类型之前,需要运行相关的斜杠命令:/obsidian-markdown、/obsidian-bases 或 /json-canvas。这会将格式规则加载到 Claude 的当前会话上下文中。

正确的会话开启顺序:

Bash

# 会话开始时,根据本次任务类型,加载对应 skill
/obsidian-markdown    # 如果要写/编辑 .md 笔记
/obsidian-bases       # 如果要创建/修改 .base 数据库
/json-canvas          # 如果要创建/修改 .canvas 图谱
/defuddle             # 如果要处理网页 URL

# 可以同时加载多个(本次任务涉及多种文件类型)
/obsidian-markdown
/json-canvas

Step 2:让 Agent 做 Vault 全面体检

第一次深度使用时,先让 Agent 读懂你的整个 Vault:

Bash

# 激活 obsidian-markdown + obsidian-cli
/obsidian-markdown

# 让 Agent 读取 Vault 结构
obsidian tags          # 看现有标签体系是否规范
obsidian search query="type: atom"   # 看有多少原子笔记
obsidian search tag="book"           # 看书籍笔记分布

# 让 Agent 给出 Vault 健康诊断
「请帮我诊断这个 Vault 的健康状态:
  1. 有多少笔记没有 type 属性?
  2. 有多少笔记没有 wikilink 到其他笔记?(孤立笔记)
  3. 有多少笔记在 00-Inbox 里超过3天未处理?
  4. 标签体系是否混乱?(有没有大量相似标签)
  给我一个优先级排序的修复建议」

Step 3:修复 Vault 里最常见的格式问题

问题 A:历史笔记用了错误的链接格式

Bash

/obsidian-markdown

「请帮我找到 Vault 里所有使用了
 [文字](路径.md) 格式的链接,
 并把它们改成 [[文字]] 的 wikilink 格式。
 改之前先列出哪些文件需要修改,
 确认后再执行。」

问题 B:frontmatter 缺少必要属性

Bash

「请帮我检查 02-Skills/atoms/ 目录下的所有笔记,
  找出缺少以下属性的:type、source、topics、atom-type。
  列出清单,然后帮我逐一补充(需要我确认每一个)。」

问题 C:标签规范化

Bash

obsidian tags
# 看到混乱标签后

「我的 Vault 里有这些标签:
  [列出混乱标签]
  请帮我设计一个规范的标签体系,
  并把旧标签批量替换成新标签。
  规则:层级不超过三级,每个笔记标签不超过5个。」

四、课节 6-2:Bases 数据库视图实战

目标: 用 obsidian-bases 建立三个核心数据库视图,让你的知识库从「堆笔记」升级为「可查询的知识系统」。

数据库 A:知识原子追踪库

Bash

/obsidian-bases

obsidian create name="System/Bases/知识原子库.base" \
  content='{
    "filters": {
      "and": [
        {"field": "type", "operator": "=", "value": "atom"},
        {"field": "status", "operator": "!=", "value": "archived"}
      ]
    },
    "columns": [
      {"field": "title", "width": 280},
      {"field": "source", "width": 180},
      {"field": "topics", "width": 200},
      {"field": "atom-type", "width": 120},
      {"field": "confidence", "width": 100},
      {"field": "date", "width": 110}
    ],
    "sort": [{"field": "date", "direction": "desc"}],
    "groupBy": "atom-type"
  }'

这个视图会自动显示:

  • 所有知识原子,按 insight / anti-pattern / framework / case 分组
  • 按日期倒序,最新的永远在最上面
  • 点击任意行,直接打开对应笔记

数据库 B:读书追踪与进度管理

Bash

obsidian create name="System/Bases/读书追踪.base" \
  content='{
    "filters": {
      "and": [
        {"field": "type", "operator": "=", "value": "book-note"}
      ]
    },
    "columns": [
      {"field": "title", "width": 250},
      {"field": "author", "width": 150},
      {"field": "status", "width": 100},
      {"field": "atoms-count", "width": 90},
      {"field": "skill-path", "width": 200},
      {"field": "date-started", "width": 120},
      {"field": "date-finished", "width": 120}
    ],
    "sort": [
      {"field": "status", "direction": "asc"},
      {"field": "date-started", "direction": "desc"}
    ]
  }'

数据库 C:项目诊断状态看板

Bash

obsidian create name="System/Bases/项目看板.base" \
  content='{
    "filters": {
      "and": [
        {"field": "type", "operator": "=", "value": "diagnosis-report"},
        {"field": "status", "operator": "!=", "value": "archived"}
      ]
    },
    "columns": [
      {"field": "title", "width": 250},
      {"field": "project", "width": 150},
      {"field": "status", "width": 100},
      {"field": "layer", "width": 80},
      {"field": "date", "width": 120},
      {"field": "skills-used", "width": 200}
    ],
    "sort": [{"field": "date", "direction": "desc"}]
  }'

三个数据库建立后的「主控面板」

Bash

# 创建 Skill Stack 主控面板笔记
/obsidian-markdown

obsidian create name="System/主控面板" \
  content="---
type: dashboard
updated: $(date +%Y-%m-%d)
tags: [system, dashboard]
---

# Skill Stack 主控面板

## 核心数据库视图
![[知识原子库]]
![[读书追踪]]
![[项目看板]]

## 本周待处理
\`\`\`dataview
LIST
FROM '00-Inbox'
WHERE date(file.ctime) > date(today) - dur(7 days)
SORT file.ctime DESC
\`\`\`

## 最近活跃的原子
\`\`\`dataview
LIST source
FROM '02-Skills/atoms'
SORT date DESC
LIMIT 10
\`\`\`

## 快速命令速查
| 命令 | 功能 |
|------|------|
| /dbs | 启动商业诊断路由 |
| /obsidian-markdown | 激活 OFM 格式规范 |
| /obsidian-bases | 激活数据库编辑 |
| /json-canvas | 激活 Canvas 编辑 |
| /defuddle | 网页清洗入库 |
| /dbs-save | 存档当前诊断 |
"

五、课节 6-3:用 Codex + obsidian-wiki 实现 Vault 自动维护

核心思路: 让 Codex 作为一个「无界面的 Agent」,定期自动运行,完成那些「人知道该做但永远不会去做」的整理工作。

这不需要聊天界面。Codex 无头运行,读取 Vault 文件树,执行规则,然后退出。核心分工是:Claude 负责推理(写作、综合、分析),Codex 负责机械操作。

Step 1:安装 obsidian-wiki

obsidian-wiki 可以免克隆安装:pip install obsidian-wiki,运行 obsidian-wiki setup --vault /path/to/your/vault,setup 命令会写入 ~/.obsidian-wiki/config,并把所有 37 个 skill 安装进每个支持的 Agent(Claude Code、Cursor、Codex、Gemini、Hermes、Pi、Copilot、Trae、Kiro 等)。

Bash

# 安装
pip install obsidian-wiki

# 初始化(指向你的 Vault 路径)
obsidian-wiki setup --vault ~/Documents/My-Vault

# 验证安装
obsidian-wiki list      # 列出所有已安装的 37 个 skill
obsidian-wiki info      # 查看配置信息

Skills 以软链接的方式安装,运行 pip install -U obsidian-wiki 即可在所有支持的 Agent 中同步升级。

Step 2:理解 obsidian-wiki 的工作模式

obsidian-llm-wiki 把团队的原始研究文件夹变成经过审查、可查询、自我改进的 Obsidian wiki。它的设计原则是 headless-first(无界面优先)——引用来源,不猜测。

obsidian-wiki 的核心工作流:

text

原始素材(00-Inbox/raw/ 目录)
        ↓ obsidian-wiki ingest
Wiki 页面(wiki/ 目录)
  - 摘要页
  - 概念页
  - 反向链接
  - 矛盾报告
        ↓ 人工审查
已审查知识(decisions/、architecture/、runbooks/)
        ↓
持续迭代

把原始素材放入 raw/ 目录,编译成 wiki/ 里的摘要、概念页、反向链接和矛盾报告,向 Agent 提问时获得有引用的答案,把有用的答案归档到 00-Inbox/AI-Output/。只有经过审查的知识才晋升到 decisions、architecture 和 runbooks。

Step 3:建立 Codex 自动维护任务

任务 A:每日 Inbox 清理(每天自动运行)

创建 System/Scripts/daily-inbox.md 任务文件:

Markdown

# Codex 每日任务:Inbox 清理

## 任务目标
扫描 00-Inbox/ 目录,处理所有超过24小时未归档的笔记

## 执行规则

### 规则 1:自动归类
- 如果笔记有 `type: atom` → 移动到 02-Skills/atoms/
- 如果笔记有 `type: book-note` → 移动到 01-Books/
- 如果笔记有 `type: content-output` → 移动到 04-Outputs/
- 如果笔记没有 type 属性 → 打上 `needs-review` 标签,留在 Inbox

### 规则 2:frontmatter 检查
- 检查每个笔记的 frontmatter 是否完整
- 缺少 date 属性 → 用文件创建时间填入
- 缺少 tags 属性 → 根据内容自动打1-2个标签

### 规则 3:孤立笔记检测
- 检查移动后的笔记是否有任何 wikilink
- 如果没有 → 打上 `orphan` 标签
- 搜索 Vault 中可能与之相关的笔记,建议添加链接

## 完成后
git add . && git commit -m "auto: 每日 Inbox 清理 $(date +%Y%m%d)"

Codex 无头执行命令:

Bash

# 在终端执行(无需打开聊天界面)
codex --headless \
  --task "执行 System/Scripts/daily-inbox.md 里的任务" \
  --vault ~/Documents/My-Vault \
  --quiet

# 或者通过 obsidian-wiki 执行
obsidian-wiki ingest --source "00-Inbox/*.md"

任务 B:每周知识图谱重建(每周一自动运行)

创建 System/Scripts/weekly-graph.md:

Markdown

# Codex 每周任务:知识图谱维护

## 任务 1:反向链接审计
扫描所有 02-Skills/atoms/ 的笔记
找出「关联原子」字段列出的笔记
检查对方笔记有没有反向引用回来
如果没有 → 在对方笔记的「关联原子」字段补充链接

## 任务 2:标签清理
运行 obsidian tags,找出:
- 只有1个笔记使用的标签 → 考虑合并
- 名称相似的标签(如 business 和 business-model)→ 统一

## 任务 3:更新 Canvas 图谱
读取 System/Canvas/Skill-Stack-全景图.canvas
检查是否有新增的 atoms 或 concept-cards 没有出现在图谱中
如果有 → 添加到对应的集群节点

## 任务 4:生成本周知识摘要
扫描本周新增的所有笔记(date 属性在本周内)
生成一份「本周知识增量报告」
存入 System/WeeklyReview/$(date +%Y-W%V).md

## 完成后
git add . && git commit -m "auto: 每周图谱维护 $(date +%Y-W%V)"

任务 C:每月 Vault 健康报告(每月1日运行)

Markdown

# Codex 每月任务:Vault 健康报告

## 统计指标
- 总笔记数(按 type 分类)
- 本月新增原子数
- 孤立笔记比例(无 wikilink 的笔记 / 总笔记数)
- Inbox 平均清理时间(笔记从创建到归档的天数)
- 最活跃的标签 Top 10
- 最多被引用的笔记 Top 10(最高价值知识节点)

## 输出格式
生成 System/MonthlyReport/$(date +%Y-%m).md
包含上述指标 + 与上月对比的变化

## 行动建议
基于健康报告,给出3条具体的优化建议
(不是「整理一下」这种废话,是「第X个孤立笔记
  与第Y个原子高度相关,建议添加双向链接」)

## 完成后
git add . && git commit -m "auto: 每月健康报告 $(date +%Y-%m)"

Step 4:设置 cron 自动化(让 Codex 定时无头运行)

对于第一次使用 Codex CLI 的开发者,初始设置(任务定义编写和测试)实际需要 2-3 小时,cron 配置另需 30 分钟。但这是一次性成本,设置完成后 Vault 维护的持续时间成本接近零。这笔账算下来明显值得投入:两小时一次,vs 永久手动整理。

Bash

# 编辑 cron 任务
crontab -e

# 添加以下三行
# 每天早上 7:00 运行 Inbox 清理
0 7 * * * codex --headless \
  --task "执行 ~/Documents/My-Vault/System/Scripts/daily-inbox.md 的任务" \
  --quiet >> ~/.obsidian-wiki/logs/daily.log 2>&1

# 每周一早上 8:00 运行图谱维护
0 8 * * 1 obsidian-wiki rebuild-index \
  --vault ~/Documents/My-Vault \
  >> ~/.obsidian-wiki/logs/weekly.log 2>&1

# 每月1日早上 9:00 运行健康报告
0 9 1 * * codex --headless \
  --task "执行 ~/Documents/My-Vault/System/Scripts/monthly-report.md 的任务" \
  --quiet >> ~/.obsidian-wiki/logs/monthly.log 2>&1

验证 cron 是否正常工作:

Bash

# 查看运行日志
tail -f ~/.obsidian-wiki/logs/daily.log

# 手动触发一次测试
codex --headless \
  --task "读取 ~/Documents/My-Vault/00-Inbox/ 的内容,
          列出所有笔记及其 type 属性" \
  --quiet

六、进阶工作流:defuddle + Obsidian = 全自动研究助手

你可以直接提示 Claude:「把本周所有会议笔记汇总成一份每周摘要,保存到 Weekly Reviews/2026-W10.md」——Claude 会(在你许可下)读取笔记,用正确的 OFM 格式撰写摘要,并保存到你指定的位置。

把这个模式扩展成「研究论文自动入库」流水线:

Bash

/defuddle
/obsidian-markdown

# 完整的研究论文剪藏 + 整理流水线
「帮我处理以下 URL 的内容:
  [粘贴你想阅读的文章 URL]

  请:
  1. 用 defuddle 提取干净的 markdown
  2. 生成符合 OFM 规范的笔记,
     frontmatter 包含:type: clipping, source, date, topics
  3. 把关键观点提炼成 3 个候选原子
  4. 存入 00-Inbox/,等待我处理
  5. 在 daily 笔记里追加一条「今日剪藏」记录」

完整输出路径:

text

URL 输入
  ↓ defuddle 清洗
干净 Markdown
  ↓ obsidian-markdown 规范格式
规范 OFM 笔记
  ↓ 原子提炼(3个候选)
  ↓ obsidian create
00-Inbox/剪藏-YYYYMMDD.md
  ↓ obsidian daily:append
今日笔记追加剪藏记录
  ↓ Codex daily-inbox(次日自动归类)
02-Skills/atoms/ 或 01-Books/

七、建立「知识晋升机制」——不是所有笔记都平等

这是 obsidian-wiki 最重要的设计哲学之一:

只有经过审查的知识才晋升到 decisions、architecture 和 runbooks。

在 Skill Stack 工作流中,我们把这个原则落地为「知识晋升四级制」:

text

第0级:00-Inbox/(原始输入,未处理)
  ↓ 24小时内处理(Codex 自动催促)

第1级:01-Books/ 或 02-Skills/atoms/(已归类,待深化)
  ↓ 被引用3次以上 → 晋升候选

第2级:02-Skills/frameworks/(经过验证的框架卡)
  要求:有3个以上真实案例支撑,有失效条件描述
  ↓ 被用于实际决策,且结果可追踪

第3级:System/Principles/(个人第一性原理)
  要求:影响了你的重大判断,有记录的案例
  这是你真正内化的知识,不需要查就能调用的认知工具

用 Agent 管理晋升机制:

Bash

/obsidian-bases

# 创建晋升候选追踪库
obsidian create name="System/Bases/知识晋升追踪.base" \
  content='{
    "filters": {
      "and": [
        {"field": "type", "operator": "=", "value": "atom"},
        {"field": "confidence", "operator": "=", "value": "high"}
      ]
    },
    "columns": [
      {"field": "title", "width": 250},
      {"field": "atom-type", "width": 120},
      {"field": "source", "width": 180},
      {"field": "date", "width": 110}
    ],
    "sort": [{"field": "date", "direction": "desc"}]
  }'

Bash

# 每月让 Agent 做晋升审计
「请帮我检查 02-Skills/atoms/ 里所有 confidence: high 的原子:
  1. 哪些在过去30天内被至少2篇其他笔记引用?
  2. 哪些原子,我在 dbs-action/goal/diagnosis 的存档中用到过?
  3. 给出「建议晋升到 frameworks 级别」的原子列表
  4. 对每个候选,说明晋升理由」

八、完整的 Vault 自动化架构总图

text

═══════════════════════════════════════════════════════
            Skill Stack 知识库自动化架构
═══════════════════════════════════════════════════════

外部输入
┌─────────────────────────────────────────┐
│ 书籍 PDF    → book-to-skill → 01-Books/ │
│ 网页 URL    → defuddle      → 00-Inbox/ │
│ 手动笔记   → obsidian-cli  → 00-Inbox/ │
│ dbs 诊断   → dbs-save      → 03-Projects/ │
│ 内容产出   → obsidian create→ 04-Outputs/ │
└──────────────────┬──────────────────────┘
                   ↓
            00-Inbox(暂存区)
                   ↓ Codex daily(每天 07:00)
          ┌────────┴────────┐
          ↓                  ↓
    自动归类              标记待审
   正确格式              needs-review
          ↓
    正式知识区
┌──────────────────────────────────┐
│ 01-Books/    (书籍 + Skill)    │
│ 02-Skills/   (原子 + 框架)    │
│  └ atoms/                       │
│  └ frameworks/(晋升后)        │
│  └ concepts/(概念卡)          │
│ 03-Projects/ (诊断 + 执行)    │
│ 04-Outputs/  (发布内容)       │
└──────────────┬───────────────────┘
               ↓ Codex weekly(每周一 08:00)
         图谱维护 + 反向链接补充
               ↓
         知识图谱(Canvas)
               ↓ Codex monthly(每月1日 09:00)
         健康报告 + 晋升审计
               ↓
    System/Principles/(第一性原理库)

═══════════════════════════════════════════════════════
所有操作均有 git commit 记录,可随时回溯任何状态
═══════════════════════════════════════════════════════

九、常见问题深度解析

Q1:obsidian-cli 报错「无法连接到 Obsidian」

Bash

# 原因:Obsidian 没有打开
# 解决:先打开 Obsidian 桌面 App,再运行命令

# 验证连接
obsidian help   # 如果返回命令列表,说明连接正常

# 如果连接还是失败
# 检查 Obsidian 的 CLI 插件是否已启用
# 设置 → 社区插件 → 搜索「CLI」→ 确认已启用

Q2:Codex 无头模式运行后,发现格式混乱

Bash

# 原因:Codex 不了解 Obsidian 格式规范
# 解决:在 Codex 任务文件里加入格式说明

# 在任务 .md 文件的开头加入:
「执行本任务时,严格遵守以下 Obsidian 格式规范:
  - 内部链接使用 [[文件名]] 格式,不使用 [文字](路径.md)
  - 所有笔记必须有 frontmatter(YAML 块)
  - 标签使用 #标签 格式,frontmatter 里用 tags: [标签1, 标签2]
  - 换行在 JSON 字符串里用 \n,不用字面换行」

Q3:自动化运行后,怎么验证没有错误?

Bash

# 查看 git 提交历史,验证每次自动提交的内容
git log --oneline | head -20

# 查看具体某次提交改了什么
git show HEAD~1

# 如果发现错误,回滚
git revert HEAD~1   # 撤销上一次自动提交

Q4:obsidian-wiki 和 obsidian-skills 有什么区别?

obsidian-skills
obsidian-wiki
定位
教 Agent 理解 Obsidian 格式
自动维护 Vault 的工作流框架
作者
kepano(Obsidian CEO)
Ar9av / 社区
核心能力
格式规范 + CLI 操作
自动 ingest + 知识晋升
使用方式
每次会话手动激活
后台定时自动运行
互补关系
保证格式正确
保证内容被维护

正确用法:两者组合,缺一不可。

十、作业:提交标准与验收

Markdown

═══════════════════════════════════════════
📋 作业清单
═══════════════════════════════════════════

【必交作业】

□ 1. 激活并验证五大 obsidian-skills
     要求:每个 skill 激活后,执行一个命令,
           截图证明格式输出正确
     重点:obsidian-markdown 生成的笔记,
           wikilink 格式必须正确

□ 2. 完成 Vault 健康体检
     让 Agent 诊断你的 Vault,记录:
     - 孤立笔记数量和比例
     - 格式不规范的笔记数量
     - Inbox 积压情况
     提交:体检报告截图

□ 3. 创建三个 Bases 数据库视图
     - 知识原子库(按 atom-type 分组)
     - 读书追踪(按 status 排序)
     - 项目看板(按 date 排序)
     提交:三个数据库在 Obsidian 中的截图

□ 4. 创建一个 Canvas 知识图谱
     内容:把你的核心概念卡可视化
     要求:至少有10个节点、5条连线
     提交:Canvas 截图

□ 5. 用 defuddle 完成一次网页剪藏入库
     找一篇你觉得有价值的文章
     完整运行:defuddle → 规范格式 → Inbox → 提炼3个原子
     提交:原始 URL + 最终存入的原子笔记截图

□ 6. 建立一个 Codex 自动化任务
     创建 System/Scripts/daily-inbox.md
     手动执行一次,验证结果正确
     提交:任务文件截图 + 执行结果截图

□ 7. git commit 记录
     格式:「vault: Obsidian 自动化架构搭建完成 YYYYMMDD」

【选交作业(加分)】

○ 8. 设置 cron 定时任务
     让 daily-inbox 自动每天运行
     一周后截图 git log,展示自动提交记录

○ 9. 完整实现「知识晋升机制」
     创建晋升追踪库(Bases)
     找到3个值得晋升的原子,执行晋升操作
     提交:晋升前后的对比截图

○ 10. 建立「Vault 主控面板」
      整合三个数据库视图 + 本周统计 + 快速命令速查
      提交:主控面板在 Obsidian 中的截图

═══════════════════════════════════════════
【作业提交格式】
1. Bases 数据库截图(3张)
2. Canvas 图谱截图(1张)
3. git log 截图(显示自动化提交记录)
4. 一段文字:
   「搭建自动化之前,我的 Vault 最大的问题是___,
    现在解决了___,
    下一步我想自动化的是___」
文件命名:作业-[你的名字]-vault.pdf
═══════════════════════════════════════════

十一、结语:知识库不是「存档」,是「活的系统」

大多数人的知识库,是一个「数字坟场」——东西放进去,就再也不见天日。

这不是 Obsidian 的问题,不是你懒的问题,是没有维护机制的问题。

obsidian-skills 的发布标志着个人知识管理工具与自主 AI Agent 之间的重要桥接,允许对 Obsidian Vault 和数据结构进行更结构化、程序化的操作。

这句话背后的含义是:Obsidian 第一次从「被动的笔记容器」变成了「可以被 Agent 主动操作的知识基础设施」。

知识图谱会自动生长。Codex CLI 作为索引和链接 Agent 运行——当新笔记被添加时,它扫描 Vault 寻找引用相似概念、方法或作者的笔记,在两个方向都添加交叉链接:新笔记链接到相关的已有笔记,已有笔记也更新「另见」部分来引用新笔记。这种双向链接正是知识图谱的核心价值。

这就是我们的真正目标:让你的知识库从「需要你维护」,变成「会自己生长」。

你往里面放书、放原子、放诊断报告——Codex 帮你整理、建链接、生成报告、提交存档。你的工作是「输入高质量的内容」,维护的工作交给系统。

当这套系统跑起来之后,你会发现:三个月前你读的书里的一个原子,出现在了今天的商业诊断报告里。 这不是偶然,是自动建立的双向链接把它们连起来了。

这才是「活的知识库」的感觉。

下一个模块,我们进入知识原子的深度挖矿——用 atoms.jsonl + RAG 技术,把 dbskill 的 4,176 个知识原子和你自己的原子库打通,构建一个真正属于你的「可查询商业判断引擎」。

💡 「一个需要你维护的知识库,最终一定会被你抛弃;一个会自动维护自己的知识库,才是你真正的第二大脑。」** 用这套系统,让你的知识从「存进去」变成「长出来」。


普通人如何用 AI 搭建自己的知识操作系统?

一个程序员出身的知识工作者,公开记录自己如何用 AI 工具搭建个人知识系统、把读过的书和做过的项目变成可复用资产的全过程。

我是【一只阿木木】——公开建造我的 AI 第二大脑。

我们的方向是——AI + Obsidian 的结合。但请记住:Obsidian 的灵魂不是效率,是自由。不是自动化,是代理力。不是工具帮你想,而是你借工具想得更好。
在一个许多工具承诺代替用户思考的市场中,Obsidian 赌的是我们仍然想要一个可以自己思考的地方。

欢迎加入行动营👇获取更多Obsidian + AI数字大脑实践

Image

我相信:在 AI 时代,每个普通人都该拥有一个自动生长的知识系统

欢迎关注【一只阿木木】🌊