feat: 新增 obsidian 插件族(9 个技能)
- 新增 plugins/obsidian 插件目录,含 9 个 obsidian-* 技能 - 核心技能重构:去除 README.md 分散路由,合并 vault 自动检测 SOP(.obsidian/ 目录置信度表 + 标准进入动作)到 SKILL.md - 所有技能 description 精简重写:触发信号 + 边界 + .obsidian/ 联动激活信号,字数从 300+ 压缩至 220-250 - 更新 marketplace.json 追加 obsidian 插件条目 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
f13bd26f59
commit
1e35ee4d9f
@@ -0,0 +1,236 @@
|
||||
---
|
||||
name: obsidian-history
|
||||
description: Obsidian 版本历史与同步管理:查看/恢复/对比 File Recovery 本地快照(`history:*`)、管理 Obsidian Sync 的暂停与恢复(`sync:*`)、从云端回收站恢复误删文件。触发词:误删、恢复笔记、文件历史、版本恢复、版本对比、diff 笔记、Obsidian Sync、同步暂停。不用于 git 版本控制(直接 Bash git 命令)。Sync 相关命令需付费 Obsidian Sync 订阅。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
---
|
||||
|
||||
# Obsidian History · 版本历史与同步
|
||||
|
||||
> Obsidian 的**时间旅行层**:File Recovery(本地版本快照)+ Obsidian Sync(云端版本历史)。AI agent 的大规模写入操作需要这一层作为"后悔药"。
|
||||
|
||||
---
|
||||
|
||||
## 何时使用
|
||||
|
||||
- 查看某文件的**历史版本列表**
|
||||
- **恢复**某文件的某个版本(误删/误改的救命稻草)
|
||||
- **对比**两个版本的差异(diff)
|
||||
- 查看 **Obsidian Sync 状态**(是否同步完成、积压多少)
|
||||
- **暂停/恢复** Obsidian Sync(批量操作前关掉,避免抖动)
|
||||
- 查看**已删除**的文件(云端回收站)
|
||||
|
||||
## 不用于
|
||||
|
||||
- Git 版本控制 → 普通 Bash git 命令
|
||||
- Obsidian 自带回收站(已删除文件) → `obsidian delete` + 手动恢复
|
||||
- 云盘历史版本(iCloud / Dropbox) → 云盘客户端
|
||||
|
||||
---
|
||||
|
||||
## 命令速查
|
||||
|
||||
### File Recovery(本地快照,核心插件)
|
||||
|
||||
> Obsidian 内置 "File Recovery" 核心插件自动快照本地版本(默认每 5 分钟,保留 7 天)。
|
||||
|
||||
```bash
|
||||
obsidian history file="重要笔记" # 列出文件的历史版本
|
||||
obsidian history path="10-Projects/alpha/README.md"
|
||||
obsidian history:list # 列出所有有历史的文件
|
||||
|
||||
obsidian history:open file="重要笔记" # 在 Obsidian UI 中打开恢复界面
|
||||
obsidian history:read file="重要笔记" version=1 # 读取第 1 个历史版本
|
||||
obsidian history:read file="重要笔记" version=5 # 读取更早的版本
|
||||
obsidian history:restore file="重要笔记" version=3 # ⚠ 恢复到第 3 个版本(覆盖当前)
|
||||
```
|
||||
|
||||
### Diff 对比
|
||||
|
||||
```bash
|
||||
obsidian diff file="重要笔记" # 列出所有可 diff 的版本
|
||||
obsidian diff file="重要笔记" from=3 to=1 # 版本 3 到版本 1 的差异
|
||||
obsidian diff file="重要笔记" filter=local # 只看本地版本
|
||||
obsidian diff file="重要笔记" filter=sync # 只看 Sync 版本
|
||||
```
|
||||
|
||||
### Obsidian Sync(付费功能)
|
||||
|
||||
```bash
|
||||
obsidian sync:status # 当前同步状态
|
||||
obsidian sync on # 恢复同步
|
||||
obsidian sync off # 暂停同步(批量操作前)
|
||||
|
||||
obsidian sync:deleted # 列出已删除的文件(云端回收站)
|
||||
obsidian sync:deleted total # 数量
|
||||
|
||||
obsidian sync:history file=<name> # 某文件的 Sync 版本历史
|
||||
obsidian sync:history file=<name> total # 版本数
|
||||
obsidian sync:open file=<name> # 在 Obsidian 中打开同步历史界面
|
||||
obsidian sync:read file=<name> version=3 # 读取某 Sync 版本的内容
|
||||
obsidian sync:restore file=<name> version=3 # ⚠ 恢复到某 Sync 版本
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI Agent 最佳实践
|
||||
|
||||
### 场景 1 · 危险操作的"后悔药"流程
|
||||
|
||||
AI agent 做批量写入前,先做快照检查点:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 批量操作前的保险
|
||||
|
||||
OP_NAME="refactor-project-alpha"
|
||||
BEFORE=$(date +%Y%m%d-%H%M%S)
|
||||
|
||||
# 1. 暂停 Sync(如果启用),避免抖动
|
||||
obsidian sync off 2>/dev/null
|
||||
|
||||
# 2. 记录受影响的文件列表
|
||||
obsidian files folder="10-Projects/alpha" format=json > /tmp/${OP_NAME}-${BEFORE}.json
|
||||
|
||||
# 3. 提交一个 git 检查点(vault 是 git 仓库的话)
|
||||
cd "$(obsidian vault info=path)"
|
||||
git add -A && git commit -m "checkpoint before ${OP_NAME}"
|
||||
|
||||
# 4. 执行批量操作
|
||||
# ... obsidian move / property:set / delete ...
|
||||
|
||||
# 5. 恢复 Sync
|
||||
obsidian sync on
|
||||
|
||||
# 6. 如果出错,用 history 或 git 回退
|
||||
```
|
||||
|
||||
### 场景 2 · 恢复误删的笔记
|
||||
|
||||
```bash
|
||||
# 1. 列出所有有历史的文件
|
||||
obsidian history:list
|
||||
|
||||
# 2. 如果误删了"项目 Alpha",先查是否还能找到历史
|
||||
obsidian history file="项目Alpha"
|
||||
|
||||
# 3. 读取最近的版本内容
|
||||
obsidian history:read file="项目Alpha" version=1
|
||||
|
||||
# 4. 确认无误后恢复
|
||||
obsidian history:restore file="项目Alpha" version=1
|
||||
```
|
||||
|
||||
### 场景 3 · AI 改写对比
|
||||
|
||||
AI agent 改完文章后,和上一版对比看变化:
|
||||
|
||||
```bash
|
||||
# AI 修改完一篇文章
|
||||
obsidian create path="drafts/article.md" content="新版本..."
|
||||
|
||||
# 对比与上一版的差异
|
||||
obsidian diff file="article" from=2 to=1
|
||||
```
|
||||
|
||||
### 场景 4 · Sync 状态监控
|
||||
|
||||
```bash
|
||||
# 在脚本中检查同步是否完成再继续
|
||||
while true; do
|
||||
STATUS=$(obsidian sync:status)
|
||||
if echo "$STATUS" | grep -q "synced"; then
|
||||
echo "Sync 完成"
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
```
|
||||
|
||||
### 场景 5 · 从云端回收站恢复
|
||||
|
||||
```bash
|
||||
# 查看云端已删除文件
|
||||
obsidian sync:deleted
|
||||
|
||||
# 对某个误删的文件恢复到某版本
|
||||
obsidian sync:history file="重要笔记"
|
||||
obsidian sync:read file="重要笔记" version=1 # 先确认内容
|
||||
obsidian sync:restore file="重要笔记" version=1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## File Recovery vs Obsidian Sync 版本历史
|
||||
|
||||
| 特性 | File Recovery(本地) | Obsidian Sync(云端) |
|
||||
|-----|---------------------|---------------------|
|
||||
| 成本 | 免费(核心插件) | 付费订阅 |
|
||||
| 触发 | 每 5 分钟自动(可配置) | 每次修改实时 |
|
||||
| 保留 | 默认 7 天 | 默认 1 年 |
|
||||
| 位置 | 本地 `.obsidian/` 内 | 云端服务器 |
|
||||
| 跨设备 | ❌ | ✅ |
|
||||
| 命令前缀 | `history:*` / `diff filter=local` | `sync:*` / `diff filter=sync` |
|
||||
| 已删除文件恢复 | ❌ | ✅ `sync:deleted` |
|
||||
|
||||
**策略建议**:
|
||||
- 个人单设备 → File Recovery 已够用
|
||||
- 多设备 / 重度 AI 写入 → 强烈推荐 Sync(订阅值回票价)
|
||||
- 强烈推荐同时把 vault 纳入 **git 仓库**,作为第三道保险
|
||||
|
||||
---
|
||||
|
||||
## 与 Git 协作的混合策略
|
||||
|
||||
Obsidian 的 history/sync 对**误操作**友好(分钟级粒度),git 对**语义变更**友好(按 commit message 回溯)。
|
||||
|
||||
```bash
|
||||
# .gitignore(放在 vault 根目录)
|
||||
.obsidian/workspace*
|
||||
.obsidian/cache
|
||||
.trash/
|
||||
.DS_Store
|
||||
```
|
||||
|
||||
```bash
|
||||
# 批量 AI 操作的 git 惯例
|
||||
cd $(obsidian vault info=path)
|
||||
|
||||
# 操作前:干净状态
|
||||
git status --porcelain # 应为空
|
||||
git commit --allow-empty -m "checkpoint: before AI refactor"
|
||||
|
||||
# 操作:agent 执行
|
||||
# ...
|
||||
|
||||
# 操作后:按语义提交
|
||||
git add -A
|
||||
git commit -m "ai: refactor zettel links in 50-Zettel/
|
||||
|
||||
- 更新了 42 篇笔记的反链
|
||||
- 重命名了 3 个文件
|
||||
- 自动添加 created 字段到 15 篇旧笔记"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 与其他技能的协作
|
||||
|
||||
| 场景 | 链路 |
|
||||
|-----|------|
|
||||
| 大批量写入前 | **obsidian-history**(checkpoint)→ 其他写入技能 |
|
||||
| Agent 审计回溯 | **obsidian-daily**(审计日志)+ obsidian-history(版本对比) |
|
||||
| 项目归档前 | obsidian-history(sync:status 确认)→ **obsidian**(move) |
|
||||
| 回滚 AI 改写 | **obsidian-search** 找出受影响文件 → obsidian-history:restore |
|
||||
|
||||
---
|
||||
|
||||
## 常见陷阱
|
||||
|
||||
| 现象 | 原因 | 对策 |
|
||||
|------|------|------|
|
||||
| `history` 命令返回空 | File Recovery 未启用 | `plugin:enable id=file-recovery` |
|
||||
| `sync:*` 命令全部失败 | 未订阅 Obsidian Sync | 用 File Recovery + git 替代 |
|
||||
| `history:restore` 后新改动丢失 | restore 是覆盖 | restore 前先 `read` 保存当前 |
|
||||
| Sync 卡住不同步 | 网络或冲突 | `sync:status` 查看;必要时 `sync off; sync on` |
|
||||
| 批量操作中途失败 | 没做检查点 | 永远先 git commit 或 sync off |
|
||||
| version 编号混乱 | 不同来源混用 | 用 `diff filter=local` 或 `filter=sync` 区分 |
|
||||
| AI 反复 restore 导致循环 | 无终止条件 | agent 写入前记录 baseline,只允许恢复一次 |
|
||||
Reference in New Issue
Block a user