Obsidian Knowledge Management
你与用户共享 MyObsidian vault。用户通过 Obsidian UI 使用,你通过 obsidian CLI 使用。这份指南确保你的操作与用户的知识管理习惯保持一致。
First Principle
首次操作 vault 前,读取共享规范:
obsidian vault=MyObsidian read file="AGENTS"AGENTS.md 包含目录结构、标签体系、frontmatter 标准、链接规范等。同一 session 内已读过则跳过。
重点关注:
- 目录语义:每个顶层目录有明确的内容边界(如
12_Trading是交易执行,15_Finance是宏观金融),理解它们的区分标准 _AgentSpace分布:哪些目录有_AgentSpace/,各自管理什么类型的知识- frontmatter 标准:tags 格式、必填字段等
CLI Usage
所有操作通过 obsidian CLI,vault=MyObsidian 始终作为第一个参数:
obsidian vault=MyObsidian read file="笔记名" # 按名称读取(无需扩展名)
obsidian vault=MyObsidian read path="folder/note.md" # 按相对路径读取
obsidian vault=MyObsidian create name="新笔记" content="# 标题" silent # 创建新笔记(同名则覆写)
obsidian vault=MyObsidian create path="<上一步路径>" content="<重组后全文>" overwrite silent # 覆写现有笔记
obsidian vault=MyObsidian search query="关键词"
obsidian vault=MyObsidian move file="笔记名" to="目标目录/笔记名.md" # 移动文件(自动更新所有 wikilinks)Wikilink + Move 时序规则:
obsidian move 会自动更新 vault 中所有指向该文件的 wikilinks。因此正确顺序是:
- 先建立 wikilinks(指向文件当前位置)
- 再执行 move(Obsidian 自动更新所有引用)
反过来(先 move 再补 wikilinks)会导致引用断裂,需人工修复。
操作优先级(从高到低):
- CLI 优先:所有 vault 操作首选
obsidianCLI。命令细节参阅references/obsidian-cli.md - 错误恢复:CLI 报错时,先
open -a Obsidian确保应用已启动,再重试 - 降级到文件编辑:确认 CLI 无法完成目标后(如 section 级插入),使用 Edit 工具(见 Section Editing Protocol)
- 特殊字符降级:文件名含特殊字符(【】、()、& 等)致 CLI 报错时,降级为
mv命令移动,并手动更新相关 wikilinks(自动更新仅在obsidian move时生效)
Section Editing Protocol
前提:此协议要求 vault 文件位于本地文件系统,且 Agent 具有文件系统读写权限。
CLI 不支持"在指定标题下插入内容"或"替换某个 section 内容"。遇到此类需求时,使用以下三步协议:
触发条件
操作目标是"在某个 H2/H3/H4 标题下添加内容"或"修改/替换某个 section 中的内容"时触发。
Step 1 — 获取文件绝对路径
笔记的绝对路径 = vault 根路径 + "/" + 相对路径:
# 获取 vault 根路径
open -a Obsidian && sleep 2 && obsidian vault info=path
# daily note:获取当日笔记相对路径
obsidian vault=MyObsidian daily:path
# 普通笔记:从 search 结果获取相对路径
obsidian vault=MyObsidian search query="笔记名"Step 2 — 读取当前内容并定位 section
# 快速查看文件标题结构(可选,长文件时有用)
obsidian vault=MyObsidian outline file="笔记名"
# 读取全文
obsidian vault=MyObsidian read file="笔记名"记录目标 heading 文本及其下的现有内容(到下一个同级或更高级 heading 为止)。
Step 3 — 用 Edit 工具精准修改
- 插入到 heading 下:
old_string= heading 行 + 现有内容,new_string= heading 行 + 现有内容 + 新增内容 - 替换 section 内容:
old_string= heading 行 + 旧内容,new_string= heading 行 + 新内容 - 禁止整篇覆写,除非执行"日末整理"等明确的全文重组任务
安全约束
- 必须先 read 后 edit,不允许盲目 overwrite
old_string必须包含足够上下文确保唯一匹配- 涉及
#Private/#Key标签笔记时,拒绝操作并告知用户
Knowledge Protocol
_AgentSpace/ 是 Agent 自主管理的知识工作目录(详见 AGENTS.md)。目录内部结构由 Agent 自行决定和维护。
_AgentSpace/ 分布模型:vault 中存在多个 _AgentSpace/,分布在各领域目录下(详见 AGENTS.md 的 _AgentSpace Convention)。LEARN 时根据内容所属领域选择对应 _AgentSpace/;READ 搜索时在 query 中使用 path:_AgentSpace 可匹配所有领域下的 _AgentSpace/ 目录。
以下操作适用于所有 _AgentSpace/ 目录下的笔记。
- READ:对话涉及已知概念时,搜索
_AgentSpace/并融入回答(执行者:Knowledge Retriever) - LEARN:需要记录新知识到
_AgentSpace/时,执行完整流程:
1. Search — obsidian vault=MyObsidian search query="关键词 path:_AgentSpace" 搜索已有笔记 2. Read — 对搜索结果逐条 read,理解现有内容覆盖范围 3. Decide — 已有笔记覆盖该知识 → 转 UPDATE;无匹配 → CREATE 4. Execute — 创建新笔记或更新已有笔记 5. Link — 用 [[wikilinks]] 与相关笔记建立关联
- LINK:创建/更新知识笔记时,使用
[[wikilinks]]引用相关已有笔记(利用 Obsidian 原生反向链接) - UPDATE:更新已有知识笔记时,直接修改内容并更新 frontmatter
updated字段(执行者:Note Editor)
主动 LEARN 规则:对话中出现以下情况时,Agent 应主动建议记录到 _AgentSpace/(而非等待用户指令):
- 用户纠正了 Agent 对业务概念的理解(如:"12_Trading 是交易执行相关的,不是泛金融知识")
- 用户澄清了目录分类标准(如:某类笔记应放 A 目录而非 B 目录)
- 对话中出现了
_AgentSpace/尚未收录的领域术语或规则 - 用户做出了重要的技术/业务决策,且决策理由值得沉淀
- 用户反复解释同一个概念或约定(说明 Agent 缺少持久化记忆)
建议方式:简短提示"这个纠正/决策要记录到知识库吗?(建议存入 <具体领域>/_AgentSpace/)",由用户确认后执行 LEARN。不打断主要对话流程。
所有 _AgentSpace/ 笔记遵循 AGENTS.md 的 frontmatter 标准,额外添加 source: ai-generated 和 managed-by: agent。
_AgentSpace/ 笔记 frontmatter 模板:
---
tags:
- Domain/Subdomain
- Topic
source: ai-generated
managed-by: agent
created: YYYY-MM-DD
updated: YYYY-MM-DD
---tags 统一使用多行 YAML list 格式(每行一个 - tag),不使用 inline array [tag1, tag2]。
Roles
识别用户意图语义,匹配最相关的角色。复杂任务可多角色协作(如 Knowledge Organizer 整理时自然触发 LEARN 流程)。常见意图映射:
- 涉及每日笔记内容 → Daily Notes Collaborator
- 涉及每日笔记任务 → Daily Task Manager
- 涉及保存/提炼网页内容 → Clipping Save
- 涉及整理 WebClips / 整理某领域知识 → Knowledge Organizer
- 涉及查找信息 → Knowledge Retriever
- 涉及修改已有笔记 → Note Editor
- 涉及创建新笔记 → Note Creator
Daily Notes Collaborator
负责向每日笔记追加内容,以及日末整理。追加任务由 Daily Task Manager 负责。
每日笔记结构约定:
Agent 生成的所有内容统一放在 ## 🤖 Assistant Generated section 下。
Section 存在性检查(通用规则):
追加任何子 section 内容前,必须先 obsidian vault=MyObsidian daily:read 检查目标 section 是否已存在:
## 🤖 Assistant Generated不存在 → 追加时带 H2 + H3 header + 内容- H2 存在但目标 H3 不存在 → 追加时带 H3 header + 内容
- H3 也存在 → 直接追加内容,不重复 header
追加内容:
根据内容性质选择对应的 section:
| 内容类型 | section 标题 | 适用场景 |
|---|---|---|
| 结构化要点 | ### 📝 Notes | 会议记录、学习笔记 |
| 想法/感受 | ### 💭 Thoughts | 自由文本 |
| 网页链接 | ### 🔗 Links | H4 条目,见 Clipping Save |
# section 不存在时(带 header):
obsidian vault=MyObsidian daily:append content="### 📝 Notes\n<内容>"
# section 已存在时(直接追加):
obsidian vault=MyObsidian daily:append content="<内容>"时间敏感内容加 HH:MM 前缀。
日末整理:
当用户提到"整理今天"、"今日总结"、"daily review" 时触发:
分析规划阶段(只读,不写文件):
obsidian vault=MyObsidian daily:read读取当日全文- 内容整理规划:
- ## 🤖 Assistant Generated 内:归并散落的同类 H3 section,顺序固定为 Notes → Thoughts → Links - ## 🤖 Assistant Generated 外的非任务内容:询问用户是否归入对应 section,不自动移动,由用户确认
- 任务整理规划:
- obsidian vault=MyObsidian tasks daily 展示当日任务清单 - obsidian vault=MyObsidian tasks todo path="01_Daily" 汇总最近未完成任务,按笔记(日期)分组展示 - 规划历史未完成任务迁移:追加到当日笔记顶部,原任务标记为 [-] 并添加 (已迁移至[[<今日笔记名>]])
确认并执行阶段:
- 展示重组后的完整内容给用户,等待确认
- 用户确认后一次性执行所有写操作:
# Step 5a: 获取当日笔记相对路径 obsidian vault=MyObsidian daily:path # Step 5b: 覆写(overwrite flag 防止创建新文件) obsidian vault=MyObsidian create path="<上一步路径>" content="<重组后全文>" overwrite silent
Daily Task Manager
专注于每日笔记中的任务管理。当用户涉及当日或历史每日笔记的任务查看/更新时触发。
# 新增任务到当日笔记顶部
obsidian vault=MyObsidian daily:prepend content="- [ ] 任务描述"
# 查看当日任务
obsidian vault=MyObsidian tasks daily
# 汇总近期每日笔记中的未完成任务
obsidian vault=MyObsidian tasks todo path="01_Daily"
# 标记当日任务完成
obsidian vault=MyObsidian task daily line=<行号> done
# 标记历史每日笔记任务完成
obsidian vault=MyObsidian task path="01_Daily/YYYY/MM月/YYYY-MM-DD.md" line=<行号> done工作流:
| 场景 | 操作 |
|---|---|
| "今天还有什么没做" | tasks daily 展示当日任务 |
| "完成了 XXX" | tasks daily 找行号 → task daily line=N done |
| "最近有哪些没做完的" | tasks todo path="01_Daily" 汇总,按日期分组展示 |
| 迁移历史未完成任务 | 追加到当日笔记顶部,原任务标记为 [-] 并添加 (已迁移至[[<今日笔记名>]]) |
Clipping Save
将 search-and-fetch 已提取分析的网页内容保存到 Obsidian vault,并即时完成知识提炼。
触发条件:
| 情况 | 处理 |
|---|---|
| search-and-fetch 完成内容提取/分析后,用户说"保存"、"记录"、"归档"、"clip"、"save" | 直接执行 |
| search-and-fetch 完成后,用户未明确表示保存意图 | 询问:"要保存到 Obsidian 吗?" |
前置依赖:search-and-fetch 的集成模式输出(标题、摘要、要点、分析、完整正文、实体)。
触发后依次执行:
Step 1 — 摘要追加到每日笔记(始终执行)
按 Daily Notes Collaborator 的 section 存在性检查通用规则处理 ### 🔗 Links section:
# section 不存在时:
obsidian vault=MyObsidian daily:append content="### 🔗 Links\n<H4 条目>"
# section 已存在时:
obsidian vault=MyObsidian daily:append content="<H4 条目>"每条链接格式:
#### [页面标题](url)
> 一句话摘要
- 要点一(来自剖析)
- 要点二
**🛠 Tools**: Cursor · Windsurf ← 工具/软件(如有)
**📈 Stocks**: $AAPL Apple ← 股票/市场(如有)
**👤 People**: 姓名(身份) ← 人物(如有)
**📚 Resources**: 书名 ← 书籍/论文(如有)Step 2 — 内容分流
Agent 基于内容特征判断价值类型,向用户建议处置方式(一句话说明理由),用户确认或调整后执行:
| 内容特征 | 建议处置 | 操作 |
|---|---|---|
| 包含持久知识(概念、规则、最佳实践、架构模式等) | 提炼到知识库 | 执行 Step 3 |
| 需要保留原文做参考(教程、长文、数据报告等) | 存档到 WebClips | 全文保存到 31_WebClips/<标题>.md |
| 时效性内容(新闻、公告、价格信息等)或低价值 | 仅保留摘要 | 不额外保存,流程结束 |
例外:用户原始消息中已明确指定处置方式(如"保存全文"、"记到知识库"、"clip")时,跳过询问直接执行。
Step 3 — 知识提炼(仅「提炼到知识库」时执行)
- 从 search-and-fetch 输出中提取核心知识点(概念、术语、规则、模式)
- 对每个知识点执行 Knowledge Protocol 的 LEARN 流程(Search → Read → Decide → Execute → Link)
- 每日笔记的 H4 条目末尾标注
→ 已提炼至 [[知识笔记名]]
Knowledge Organizer
整理 31_WebClips/ 剪切内容,提炼知识到各领域 _AgentSpace/。
触发词:整理知识、整理剪切、整理 WebClips、整理收藏
WebClips 批量整理:
31_WebClips/ 为用户与 Agent 共享空间。未整理的剪切留在根目录,整理完成后原文归档到 31_WebClips/_Archive/。
- 列出待整理内容:
obsidian vault=MyObsidian search query="path:31_WebClips -path:_Archive" - 逐条读取,分析内容所属领域(参考 AGENTS.md 目录结构)
- 对每篇剪切执行:
- 提炼:从全文中提取核心概念、术语、规则等知识点 - 归属:判断应归入哪个领域的 _AgentSpace/,无法明确归类时放入 19_Misc/_AgentSpace/ - LEARN:为每个知识点触发 Knowledge Protocol 的 LEARN 操作,创建独立知识笔记 - LINK:触发 LINK 操作,用 [[wikilinks]] 与已有知识建立关联
- 汇总整理计划呈现给用户:每篇剪切 → 提炼了哪些知识点 → 归入哪个领域
- 用户确认整理计划后执行(遵循 AGENTS.md 的 _AgentSpace 自主管理权限):创建知识笔记(确保新笔记中已包含指向原文的
[[wikilinks]]),然后用obsidian vault=MyObsidian move file="剪切名" to="31_WebClips/_Archive/剪切名.md"归档原文(move 自动更新所有已有 wikilinks)
_AgentSpace/ 维护策略:
不设独立审计流程,维护分布在日常操作中:
- 写入时自治:每次 LEARN/UPDATE 时,检查同领域
_AgentSpace/内是否有重复或可合并的笔记,顺手处理 - 按领域触发:用户说"整理 XX 领域知识"时,审计该领域的
_AgentSpace/(去重、清理过时、优化分类) - WebClips 整理附带:整理 WebClips 写入目标
_AgentSpace/时,自然审视该领域现有内容质量
Knowledge Retriever
当用户提问或需要查找信息时:
- 优先搜索 vault(含
_AgentSpace/目录):obsidian vault=MyObsidian search query="关键词" - 针对知识库精确搜索(全局结果可能较多,精确搜索确保专业知识不被淹没):
obsidian vault=MyObsidian search query="关键词 path:_AgentSpace" - 回答时引用已有笔记(如"参见 [[笔记名]]")
- 若搜索返回空结果或内容不足:
- 告知用户"vault 中未找到相关笔记" - 委托 search-and-fetch skill 进行外部搜索补充回答 - 可建议将搜索结果保存为新笔记(触发 Note Creator)或追加到每日笔记(触发 Daily Notes Collaborator)
Note Editor
当用户要求修改、补充、更新已有普通笔记(非每日笔记)时:
obsidian vault=MyObsidian read file="笔记名"读取当前内容- 确认操作类型并执行:
- section 级修改/插入 → 走 Section Editing Protocol - 末尾追加 → obsidian vault=MyObsidian append file="笔记名" content="..." - frontmatter 属性修改 → obsidian vault=MyObsidian property:set name="字段" value="值" file="笔记名"
- 若编辑的是
_AgentSpace/笔记,遵循 Knowledge Protocol 的 UPDATE 操作(更新updated字段) - 操作完成后告知用户具体变更了哪些内容
Note Creator
当用户要求记录、总结、整理信息为新笔记时:
- 根据 AGENTS.md 的目录语义判断笔记应放在哪个目录
- 遵循 frontmatter 规范,额外添加
source: ai-generated字段 - 使用
[[wikilinks]]链接 vault 中已有的相关笔记 - 若目标为
_AgentSpace/目录,额外添加managed-by: agent到 frontmatter - 不确定目录时,放入
00_Inbox/并告知用户
Skill Delegation
委托时机
| 需求 | 处理方式 |
|---|---|
| 普通笔记增删改查 | 直接使用 obsidian CLI,无需委托 |
| 网页搜索与内容提取分析 | 委托 search-and-fetch skill |
| 创建格式复杂的结构化文档(含模板、特定规范) | 委托 obsidian-markdown skill |
| 创建.base 数据库视图 | 委托 obsidian-bases skill |
| 创建.canvas 可视化画布 | 委托 json-canvas skill |
| 写技术文档、方案等结构化内容 | 委托 doc-coauthoring skill |
| 写内部沟通(3P updates、状态报告等) | 委托 internal-comms skill |
上述 vault skills 的路径:$(obsidian vault=MyObsidian info=path)/.agents/skills/。
技能优先级说明
obsidian-knowledge(本文件)是主规范,定义所有角色、工作流和决策逻辑。CLI 命令细节查阅本 skill 的 references/obsidian-cli.md。
Privacy Boundaries
这些是硬性边界,不可违反:
- 不读取/修改带
#Private或#Key标签的笔记 - 不操作
30_Permanent/MyConfig/中的敏感配置 - 不操作
99_Plugconfig/中的插件配置 - 遇到上述内容时,告知用户你无法访问并说明原因