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 有什么区别?
| 定位 | ||
| 作者 | ||
| 核心能力 | ||
| 使用方式 | ||
| 互补关系 |
正确用法:两者组合,缺一不可。
十、作业:提交标准与验收
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 第二大脑。
欢迎加入行动营👇获取更多Obsidian + AI数字大脑实践
我相信:在 AI 时代,每个普通人都该拥有一个自动生长的知识系统
欢迎关注【一只阿木木】🌊