下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-fxke3vsg--obsidian-vault-organizer.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-fxke3vsg/obsidian-vault-organizer。跨 Agent 共享 Obsidian 知识库的深度整理、日常归档与定期审计技能。当知识库笔记混乱、需要分类归档、清理孤儿/死链/重复笔记、重建导航索引时使用。核心:文件名唯一、目录分类前缀、vault 内归档地图、安全移动防断链、三层导航。触发词:整理知识库 / 笔记太乱 / 归档一下 / Obsidian 整理 / 清理重复笔记 / 笔记库体检。
阅读全文 (展开查看完整说明)
概述
面向多 Agent 共享的 Obsidian 库(Agent 通过
obs.py无头 CLI 读写),做深度整理 + 日常归档 + 定期审计。触发:用户说「整理知识库 / 笔记太乱 / 归档一下 / 清理重复 / 笔记库体检」。
设计来源(已做技能商店对比)
| 来源技能 | 安装量 | 结论 |
|---|---|---|
| mattpocock/obsidian-vault | 20万 | ❌ 抛弃:主张「不建文件夹纯链接」,与本项目「文件名=身份证+目录分类」铁律冲突,obs.py 靠文件名解析无文件夹会乱 |
| agents365-ai/obsidian-organizer | 1.1K | ✅ 吸收:① 归档地图放 vault 内 ② 审计模式(孤儿/死链/重复) ③ 先提案后执行 —— 已适配 obs.py 无头环境 |
| kepano/obsidian-cli | 7万 | ⚠️ 部分吸收:命令集与 obs.py 重复且需桌面端,但其「状态判定+自动打开」模式吸收为通用前置步骤;仅插件/主题开发调试场景(dev:*)值得用 obsidian CLI,本项目不适用 |
| 某办公套件仓库的 obsidian-automation | 4K | ❌ 抛弃:日记模板,与本需求无关 |
⚠️ 前置步骤(每次操作必做):Obsidian 状态判定 + 自动打开
用户提到「Obsidian 没开 / 帮我打开 / 状态判定」或需要桌面端能力(插件操作、URI、Dataview 渲染)时,先执行本步骤。
状态判定(PowerShell):
$proc = Get-Process -Name "Obsidian" -ErrorAction SilentlyContinue
if ($proc) { Write-Output "RUNNING: $($proc.Count) 进程" } else { Write-Output "NOT_RUNNING" }未运行则自动打开(并等待就绪):
# Obsidian 安装路径(本机)
$obsidianExe = "C:Program FilesObsidianObsidian.exe"
if (-not (Get-Process -Name "Obsidian" -ErrorAction SilentlyContinue)) {
Start-Process $obsidianExe -ArgumentList '"D:daimaobsidian-vault"' # 直接指定 vault 打开
# 等待进程出现(最多 15 秒)
$deadline = (Get-Date).AddSeconds(15)
while ((Get-Date) -lt $deadline -and -not (Get-Process -Name "Obsidian" -ErrorAction SilentlyContinue)) {
Start-Sleep -Milliseconds 500
}
Start-Sleep -Seconds 3 # 等窗口完全加载
Write-Output "Obsidian 已自动打开"
} else {
Write-Output "Obsidian 已在运行,直接使用"
}规则:
- 只读操作(obs.py read/search/list)不需要桌面端,跳过本步骤直接做
- 需要桌面端能力(插件启用/禁用、URI 协议、Dataview 渲染、obsidian CLI)时必须先做本步骤
- 打开后建议最小化窗口,避免打扰用户(
[Win32]::ShowWindow($h, 6)最小化) - 操作完不自动关闭 Obsidian(用户可能正在用),保持打开即可
四条铁律(骨架,不可破)
- 文件名 = 唯一身份证:绝不动已有文件名(obs.py 按文件名模糊解析,移动不破坏调用)。整理靠「移动目录 + frontmatter 标签 + 导航页」,不是改名。
- 目录分类前缀驱动:
03a-短视频创作这种「数字+字母+中文」前缀,排序自然、语义清晰。 - 机器区不动:自动脚本依赖的目录(如
05-agent-archive的YYYY-MM--UUID.md命名)绝不可改,只加索引/导读。 - 三层导航:总导航(README) + 分类 MOC 索引 + 标签体系(frontmatter)。
精华①:归档地图放 vault 内(单一事实源)
- README.md 即归档决策地图:每个分类「放什么」写在 README 目录树注释里,新笔记放哪先看 README,不靠 Agent 私存目录树(会过期漂移)。
- 新建分类时:先加 README 一行 + 建
0Xx-子类目录,再归档,保证下次决策记得。 - 若 README 缺失(全新库):从
obs.py list重建真实结构,不要用技能里打包的旧副本(会漂移)。
精华②:安全移动红线(防断链)
- vault 内用
[[纯文件名]]wikilink。Obsidian 和 obs.py 都能按文件名解析,与路径无关 → 移动文件不断链(这是本项目不用桌面 CLI、用 Move-Item 也能安全的原因)。 - 红线:
- 移动/改名 → 允许
Move-Item(因[[文件名]]链接免疫路径变化) - 禁止 raw
Remove-Item删除笔记(除非用户明确要删);删除前先查是否有链接指向它 - 索引 MOC 里的
[[文件名]]链接移动后依然有效,无需改
- 移动/改名 → 允许
精华③:审计模式(定期维护)
触发「清理/体检/查重复」时执行,先提案列计划等用户确认,再动:
- 孤儿笔记:
obs.py list全库,检查哪些从不被任何 MOC/笔记[[链接]]指向 → 建议归档或补链接 - 死链:MOC 里
[[链接]]指向不存在的文件 → 修正或删除链接 - 疑似重复:文件名相近(如「稿 v1」「稿 最终版」)→
obs.py search比内容,提案合并 - BOM/编码:扫描带
ufeff的文件(PowerShell Set-Content UTF8 遗留),用 .NETWriteAllText(UTF8)重存去 BOM
日常归档模式(新笔记进来)
obs.py search "关键词"先查重- 看 README 目录树定分类 → 放对应
0Xx-子类/ - 补 frontmatter:
tags: [分类标签, 项目记录]+category+date+source - 若是新分类,更新 README + 在 MOC 加一行
[[文件名]]
深度整理八步(一次性大整理)
- 摸底:
Get-ChildItem -Recurse -Filter *.md | Measure-Object+ 找混乱点 - 完整备份:
Copy-Item vault vault-backup-<日期> -Recurse(必须) - 拆分类子目录(人工校正明显误判)
- 重建索引 MOC(链接用
[[纯文件名]],数 = 实际文件数) - 日记归位 + 索引(孤儿→年-月/,删「未归档」)
- 加导读页(01-长期记忆、05-agent-archive 等)
- 批量补 frontmatter 标签(utf-8-sig 解码防 BOM;main() 加 stdout errors=replace 防 emoji 崩)
- 升级 README(目录树 + Agent 接入 + 写入规范)
- 同步
D:daimashared-memoryAgent接入提示词.md+ 沉淀方法论
obsidian CLI 进阶路径(可选,磁盘端专用能力)
仅当你需要 kepano obsidian-cli 独有能力时使用(obs.py 没覆盖的):
插件/主题开发调试(dev:reload / dev:errors / dev:screenshot / dev:dom / eval)
其他操作(read/create/append/search/backlinks/property/tasks/tags)obs.py 全都能做,优先用 obs.py。
安装 obsidian CLI(需 Obsidian 桌面端 1.9+ 版本):
npx skills add https://github.com/kepano/obsidian-skills --skill obsidian-cli调用前必须先走「前置步骤」确认 Obsidian 已打开(见上方),否则报错 connection/vault error。
典型调用(vault 必须第一个参数):
obsidian vault="obsidian-vault" search query="关键词"
obsidian vault="obsidian-vault" read file="笔记名"
obsidian vault="obsidian-vault" property:set name="status" value="done" file="笔记名"红线:obsidian CLI 的命令会走 Obsidian API,自动修复内部链接 —— 用它的 move/rename 比 raw mv 更安全;但本项目已用 [[文件名]] 链接免疫路径变化,常规移动用 obs.py + Move-Item 即可。
obs.py 调用(本环境标准 CLI,主力)
$py = "C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe"
& $py D:/daima/shared-memory/obs.py list # 列全库
& $py D:/daima/shared-memory/obs.py search "关键词" # 搜内容/文件名
& $py D:/daima/shared-memory/obs.py read "文件名" # 读(模糊匹配跨目录)- VAULT 硬编码
D:/daima/obsidian-vault;编码回退 utf-8-sig/utf-8/gbk - 已修复:BOM 泄漏 + emoji 输出崩溃(详见下方坑位)
关键坑位(实测)
- Obsidian 安全模式清空 community-plugins.json:手动写
["dataview"]启动时被重置[]。启用状态在%APPDATA%obsidianLocal Storage(leveldb),必须用户在设置里点开关。 - Dataview 装法:手动下 manifest/main.js/styles.css 到
.obsidian/plugins/dataview/(GitHub 直连超时用 ghfast.top/gh-proxy.com 镜像),但启用走 GUI。 - PowerShell 陷阱:
$_在字符串里被当驱动器;AppendLine重载用-join "n"“ 代替。 - obs.py 编码 bug(已修):原解码 utf-8→gbk→utf-8-sig,带 BOM 文件泄漏
ufeff;GBK 控制台输出 emoji(⭐) 崩溃。修复:① 解码顺序 utf-8-sig 最前 ② main()sys.stdout.reconfigure(errors="replace")。 - 文件编码:PS5.1
Set-Content -Encoding UTF8带 BOM;用 .NETWriteAllText(path, content, UTF8)无 BOM。写中文一律用 .NET 法。
验收清单
- [ ] 备份存在可恢复
- [ ] 各分类文件数总和 = 原总数
- [ ] 索引 MOC 链接数 = 实际文件数(无死链)
- [ ] obs.py read 含 emoji 文件不崩
- [ ] README 目录树与实际一致
- [ ] Agent 接入提示词已同步