Hermes Agent + Obsidian 打造第二大脑(五):插件配置与效率提升——Templater、Dataview、QuickAdd 的完整指南!

🎯 博主简介

CSDN 「新星创作者」 人工智能技术领域博主,码龄5年 ,累计发布 180+篇原创 文章,博客总访问量 24万+浏览!

🚀 持续更新AI前沿实战知识,专注于 AI 技术实战,多个专栏详细解析,包括:

📱: 安逸Ai--- 每天一点AI:资料、笔记、工具、趋势,一起进步。


📑 目录

  • [1. 插件配置的价值](#1. 插件配置的价值)
    • [1.1 Obsidian 插件系统概述](#1.1 Obsidian 插件系统概述)
    • [1.2 我的插件配置原则](#1.2 我的插件配置原则)
  • [2. 必备插件详解](#2. 必备插件详解)
    • [2.1 Templater 模板系统](#2.1 Templater 模板系统)
    • [2.2 Dataview 数据查询](#2.2 Dataview 数据查询)
    • [2.3 QuickAdd 快速创建](#2.3 QuickAdd 快速创建)
    • [2.4 Local REST API](#2.4 Local REST API)
  • [3. 推荐插件](#3. 推荐插件)
    • [3.1 Minimal Theme](#3.1 Minimal Theme)
    • [3.2 Style Settings](#3.2 Style Settings)
    • [3.3 Auto Link Title](#3.3 Auto Link Title)
    • [3.4 Tag Wrangler](#3.4 Tag Wrangler)
    • [3.5 Better Word Count](#3.5 Better Word Count)
    • [3.6 Git](#3.6 Git)
  • [4. 插件性能优化](#4. 插件性能优化)
    • [4.1 插件数量控制](#4.1 插件数量控制)
    • [4.2 资源密集型插件](#4.2 资源密集型插件)
    • [4.3 我的插件列表](#4.3 我的插件列表)
  • [5. 完整配置示例](#5. 完整配置示例)
    • [5.1 模板文件夹结构](#5.1 模板文件夹结构)
    • [5.2 仪表盘模板](#5.2 仪表盘模板)
    • [5.3 每日日志模板](#5.3 每日日志模板)
    • [5.4 项目模板](#5.4 项目模板)
  • [6. Local REST API 高级用法](#6. Local REST API 高级用法)
    • [6.1 API 认证配置](#6.1 API 认证配置)
    • [6.2 Hermes Agent 集成](#6.2 Hermes Agent 集成)
    • [6.3 Python 调用示例](#6.3 Python 调用示例)
  • [7. 插件安全建议](#7. 插件安全建议)
  • [8. 常见问题 FAQ](#8. 常见问题 FAQ)

1. 插件配置的价值

1.1 Obsidian 插件系统概述

Obsidian 本身只是一个 Markdown 编辑器,加上插件才能成为知识管理系统。

复制代码
┌────────────────────────────────────────────────────────────────────────────┐
│                        Obsidian 插件系统架构                                 │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│                        Obsidian 核心功能                                     │
│    ┌──────────────────────────────────────────────────────────────────┐  │
│    │  文件管理  │  编辑器  │  搜索  │  图谱  │  同步              │  │
│    └──────────────────────────────────────────────────────────────────┘  │
│                                    │                                        │
│                                    ▼                                        │
│                        插件生态扩展                                         │
│    ┌──────────────────────────────────────────────────────────────────┐  │
│    │                                                                   │  │
│    │  Templater  ────▶ 模板自动化                                      │  │
│    │  Dataview   ────▶ 数据查询                                        │  │
│    │  QuickAdd   ────▶ 快速捕捉                                        │  │
│    │  Local REST API ────▶ Hermes 集成                                 │  │
│    │                                                                   │  │
│    └──────────────────────────────────────────────────────────────────┘  │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

插件类型

类型 说明 示例
核心插件 Obsidian 内置 快速切换、模板等
社区插件 第三方开发 Templater、Dataview 等
内部插件 自行开发 可通过 Local REST API 调用

1.2 我的插件配置原则

复制代码
┌────────────────────────────────────────────────────────────────────────────┐
│                          插件配置三原则                                      │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  原则一:只安装真正需要的插件                                               │
│  └── 每次安装前问自己:这个插件每天都会用到吗?                             │
│                                                                            │
│  原则二:定期清理不用的插件                                                 │
│  └── 超过 1 个月没用的插件,删                                             │
│                                                                            │
│  原则三:插件越多,性能越差                                                 │
│  └── 保持插件数量在可控范围内                                              │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

2. 必备插件详解

2.1 Templater 模板系统

为什么需要:每次创建笔记都要写 frontmatter、标题格式,太繁琐。Templater 让这一切自动化。

安装和配置
  1. 社区插件市场搜索 "Templater"
  2. 安装并启用
  3. 配置模板文件夹路径(建议 templates/
核心语法
javascript 复制代码
<%* 
// JavaScript 代码块,可选
const today = tp.date.now();
%>

<% tp.date.now() %>              // 当前日期时间
<% tp.date.now("YYYY-MM-DD") %> // 格式化日期
<% tp.file.title %>              // 文件标题
<% tp.file.folder() %>          // 文件夹路径
<% tp.file.path %>               // 完整路径
<% tp.date.now("dddd") %>        // 星期几
完整函数列表
类别 函数 说明 示例
日期 tp.date.now() 当前日期时间 2026-04-26 17:30
日期 tp.date.now("YYYY-MM-DD") 格式化日期 2026-04-26
日期 tp.date.now("dddd") 星期几 Sunday
日期 tp.date.tomorrow() 明天 -
日期 tp.date.yesterday() 昨天 -
日期 tp.date.weekday() 周几 1 (周一)
文件 tp.file.title 文件标题 -
文件 tp.file.folder() 文件夹 工作/
文件 tp.file.path 完整路径 -
文件 tp.file.cursor() 光标位置 -
系统 tp.system.prompt() 用户输入 -
系统 tp.system.suggester() 下拉选择 -
我的每日日志模板
markdown 复制代码
---
title: <% tp.date.now("YYYY-MM-DD") %>
date: <% tp.date.now("YYYY-MM-DD") %>
day: <% tp.date.now("dddd") %>
tags: [日志, 每日]
weather: 
mood: 
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
---

# <% tp.date.now("YYYY-MM-DD") %> <% tp.date.now("dddd") %>

## 🎯 今日重点
1. 

## 📝 今日记录

### 工作会议
- 

### 学习内容
- 

### 随手记
- 

## 💡 灵感/想法
- 

## 📌 明日计划
- [ ] 

## 📊 复盘
- 完成:
- 未完成:
- 原因分析:

---

*由 Templater 自动创建于 <% tp.date.now("YYYY-MM-DD HH:mm") %>*
我的项目模板
markdown 复制代码
---
title: <% await tp.system.prompt("项目名称") %>
date: <% tp.date.now("YYYY-MM-DD") %>
status: 进行中
tags: [项目]
project_type: 
importance: medium
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
---

# <% await tp.system.prompt("项目名称") %>

## 📋 项目概述


## 🎯 目标
1. 

## 📅 里程碑
- [ ] 阶段一:
- [ ] 阶段二:
- [ ] 阶段三:

## 👥 团队成员
- 负责人:
- 成员:

## 📊 进度


## 📝 会议记录
- [[会议记录/<% tp.date.now("YYYY-MM-DD") %>]]

## 💡 经验教训


## 📎 资源
- 
我的会议记录模板
markdown 复制代码
---
title: "<% await tp.system.prompt("会议名称") %>"
date: <% tp.date.now("YYYY-MM-DD") %>
time: <% tp.date.now("HH:mm") %>
participants: []
tags: [会议]
type: meeting
project: 
---

# 📋 <% await tp.system.prompt("会议名称") %>

**时间**:<% tp.date.now("YYYY-MM-DD HH:mm") %>
**参会人**:<% await tp.system.prompt("参会人,多人以逗号分隔") %>
**记录人**:<% await tp.system.prompt("记录人") %>

---

## 📋 议程
1. 

## 💬 讨论

## ✅ 决策
1. 

## 📌 待办
| 任务 | 负责人 | 截止日期 | 状态 |
|------|--------|----------|------|
|      |        |          | [ ] |

## ❓ 待解决问题

---
高级用法:动态文件夹创建
javascript 复制代码
<%*
// 每天首次打开时创建日志
const today = tp.date.now("YYYY-MM-DD");
const dailyPath = `1_日志/每日/${today}.md`;

if (!app.vault.getAbstractFileByPath(dailyPath)) {
  await app.vault.create(dailyPath, `---
title: ${today}
date: ${today}
tags: [日志, 每日]
created: ${tp.date.now("YYYY-MM-DD HH:mm")}
---

# ${today}

## 🎯 今日重点


## 📝 记录


`);
}
%>
高级用法:用户交互
javascript 复制代码
<%*
// 让用户选择项目
const projects = ["项目A", "项目B", "项目C"];
const selected = await tp.system.suggester(projects, projects);
%>

项目:<% selected %>

<%*
// 让用户输入多行文本
const notes = await tp.system.prompt("输入笔记内容", "", true);
%>

<% notes %>

2.2 Dataview 数据查询

为什么需要:普通搜索只能搜标题,Dataview 可以搜 frontmatter、标签、日期范围。

基础语法
复制代码
┌────────────────────────────────────────────────────────────────────────────┐
│                          Dataview 查询原理                                  │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  Obsidian 笔记(Markdown + Frontmatter)                                   │
│       │                                                                    │
│       ▼                                                                    │
│  Dataview 解析 frontmatter                                                │
│       │                                                                    │
│       ▼                                                                    │
│  构建虚拟数据库(内存)                                                    │
│       │                                                                    │
│       ▼                                                                    │
│  SQL-like 查询                                                            │
│       │                                                                    │
│       ▼                                                                    │
│  渲染结果(TABLE / LIST / TASK)                                          │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

基础查询

markdown 复制代码
```dataview
TABLE file.ctime, tags
FROM ""
WHERE file.folder = "工作"
SORT file.ctime DESC
LIMIT 10
```
查询类型详解
类型 语法 效果
TABLE TABLE col1, col2 表格显示,可排序列
LIST LIST title 简单列表
TASK TASK WHERE !completed 只显示任务

TABLE 示例

markdown 复制代码
```dataview
TABLE 
  title as 标题,
  date as 日期,
  tags as 标签
FROM "2_项目"
WHERE status = "进行中"
SORT date DESC
```

LIST 示例

markdown 复制代码
```dataview
LIST title
FROM "3_知识"
WHERE contains(tags, "方法论")
```

TASK 示例

markdown 复制代码
```dataview
TASK
FROM ""
WHERE !completed AND date <= 2026-04-26
SORT date
```
常用字段速查
字段 说明 示例
file.name 文件名 Python-装饰器
file.path 完整路径 3_知识/Python-装饰器.md
file.folder 文件夹 3_知识/
file.ctime 创建时间 2026-04-26
file.mtime 修改时间 2026-04-26
file.cday 创建日期 2026-04-26
file.tags 标签数组 ["工作", "Python"]
file.lists 任务列表 -
常用查询模板

仪表盘(Dashboard)

markdown 复制代码
# 📊 工作台

## 📅 今日任务
```dataview
TASK
FROM ""
WHERE date = 2026-04-26 AND !completed
```

## 📝 近期笔记
```dataview
TABLE file.ctime as 创建时间
FROM "2_项目"
SORT file.ctime DESC
LIMIT 5
```

## ⚠️ 进行中的高优先级
```dataview
TABLE status, importance
FROM ""
WHERE status = "进行中" AND importance = "high"
```

## 📌 本周待办
```dataview
TASK
WHERE file.ctime >= 2026-04-20 AND !completed
LIMIT 10
```

我的索引页面

markdown 复制代码
# 📚 知识索引

## 📅 今日
```dataview
TABLE file.ctime as 创建时间
WHERE file.cday = date(today)
LIMIT 10
```

## 📊 本周新增
```dataview
TABLE file.ctime as 创建时间, tags
WHERE file.ctime >= date(today) - dur(7 days)
SORT file.ctime DESC
LIMIT 20
```

## ⚠️ 进行中项目
```dataview
TABLE status, importance, modified as 最后更新
WHERE status = "进行中"
SORT importance DESC
```

## 📈 统计数据
```dataview
TABLE WITHOUT ID
  length(filter(row.file.tasks, (t) => !t.completed)) AS 待完成,
  length(filter(row.file.tasks, (t) => t.completed)) AS 已完成
FROM ""
FLATTEN file.tasks AS row
WHERE file.folder = this.file.folder
GROUP BY file.link AS 文件
```

2.3 QuickAdd 快速创建

为什么需要:快捷键创建笔记,不用鼠标操作。

配置步骤
  1. 安装 QuickAdd 插件
  2. 创建捕捉命令(Capture)
  3. 设置快捷键
命令类型
类型 说明 触发方式
Template 用模板创建笔记 快捷键
Macro 执行宏命令 快捷键
Capture 捕获内容到指定位置 快捷键
我的配置
命令 快捷键 模板
新每日日志 Cmd+Shift+D daily.md
新临时想法 Cmd+Shift+N inbox.md
新项目笔记 Cmd+Shift+P project.md
新会议记录 Cmd+Shift+M meeting.md
QuickAdd 模板

inbox.md

markdown 复制代码
---
title: "<% await tp.system.prompt("标题") %>"
date: <% tp.date.now("YYYY-MM-DD HH:mm") %>
tags: [临时, 收集]
type: inbox
---

# <% await tp.system.prompt("标题") %>

## 内容

<% await tp.system.prompt("内容") %>

## 来源
- URL: <% await tp.system.prompt("URL(可选)") %>

## 待处理
- [ ] 

---

*由 QuickAdd 收集于 <% tp.date.now("YYYY-MM-DD HH:mm") %>*

meeting.md

markdown 复制代码
---
title: "<% await tp.system.prompt("会议名称") %>"
date: <% tp.date.now("YYYY-MM-DD") %>
time: <% tp.date.now("HH:mm") %>
participants: []
tags: [会议]
type: meeting
---

# 📋 <% await tp.system.prompt("会议名称") %>

**时间**:<% tp.date.now("YYYY-MM-DD HH:mm") %>
**参会人**:
**记录人**:

---

## 📋 议程
1. 

## 💬 讨论

## ✅ 决策
1. 

## 📌 待办
- [ ] 

## ❓ 待解决问题

---

2.4 Local REST API

为什么需要:让 Hermes Agent 可以操作 Obsidian。

安装
  1. 社区插件市场搜索 "obsidian-local-rest-api"
  2. 安装并启用
  3. 配置端口(默认 1973)
API 端点
bash 复制代码
# 获取所有笔记列表
curl http://localhost:1973/api/notes

# 创建笔记
curl -X POST http://localhost:1973/api/notes \
  -H "Content-Type: application/json" \
  -d '{
    "path": "test.md",
    "content": "# Test\n\nHello world"
  }'

# 读取笔记
curl http://localhost:1973/api/notes/test.md

# 更新笔记
curl -X PUT http://localhost:1973/api/notes/test.md \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Updated\n\nNew content"
  }'

# 删除笔记
curl -X DELETE http://localhost:1973/api/notes/test.md

# 搜索笔记
curl "http://localhost:1973/api/search?query=test"

# 获取文件夹列表
curl http://localhost:1973/api/folders

3. 推荐插件

3.1 Minimal Theme

为什么需要:默认主题太花哨,分散注意力。

我的配置

json 复制代码
{
  "Minimal Theme": {
    "font": "system-ui",
    "font size": 16,
    "line height": 1.5,
    "hide app ribbon": true,
    "collapse sidebars": false,
    "status bar": true,
    "focus mode": false
  }
}

3.2 Style Settings

配合 Minimal Theme 微调细节。

常用配置

json 复制代码
{
  "Style Settings": {
    " Accent color": "#7c3aed",
    "Border radius": "4px",
    "Text spacing": "0.5em"
  }
}

为什么需要 :手动输入 [[链接]] 时,自动补全标题。

3.4 Tag Wrangler

为什么需要:批量管理标签,查看标签统计。

功能

  • 重命名标签(批量更新所有笔记)
  • 查看标签使用频率
  • 折叠/展开标签

3.5 Better Word Count

为什么需要:在状态栏显示字数统计。

功能

  • 字数统计
  • 字符数
  • 阅读时间估算
  • 选中区域字数

3.6 Git

为什么需要:笔记版本控制。

使用场景

  • 多人协作
  • 需要版本历史
  • 备份笔记变更
bash 复制代码
# .gitignore 配置
"""
.obsidian/
# 保留插件配置
!.obsidian/community-plugins.json
!.obsidian/plugins.json
resources/
*.pdf
*.mp4
"""

4. 插件性能优化

4.1 插件数量控制

场景 推荐数量 说明
基础使用 5-8 个 只装最核心的
进阶使用 10-15 个 常用的效率插件
重度使用 15-20 个 需要的功能插件

⚠️ 超过 20 个插件会明显卡顿

4.2 资源密集型插件

插件 问题 建议
Dataview 频繁扫描全文 设置缓存
Graph Analysis 大图谱计算 控制笔记数量
Various Complements 自动补全耗 CPU 关闭不需要的补全
Style Settings 频繁重绘 避免过度自定义

4.3 我的插件列表

复制代码
核心插件(5个):
├── Templater           # 模板系统
├── Dataview            # 数据查询
├── QuickAdd            # 快速创建
└── Local REST API      # Hermes 集成

界面插件(3个):
├── Minimal Theme       # 简洁主题
└── Style Settings      # 样式微调

效率插件(5个):
├── Auto Link Title     # 自动补全标题
├── Tag Wrangler        # 标签管理
├── Better Word Count   # 字数统计
└── Git                 # 版本控制

可选插件(按需启用):
├── Calendar            # 日历视图
├── Projects            # 项目管理
└── Templater (已列为核心)

5. 完整配置示例

5.1 模板文件夹结构

复制代码
templates/
├── daily.md            # 每日日志
├── project.md          # 项目笔记
├── meeting.md          # 会议记录
├── inbox.md            # 收集箱
├── paper.md            # 论文阅读
├── weekly-report.md    # 周报
└── startup.md         # 启动模板

5.2 仪表盘模板

markdown 复制代码
---
title: Dashboard
tags: [系统, 索引]
created: 2026-01-01
---

# 📊 工作台 Dashboard

> 最后更新: <% tp.date.now("YYYY-MM-DD HH:mm") %>

---

## 📅 今日概览

### 日期
<% tp.date.now("YYYY年MM月DD日 dddd") %>

### 天气
> 待填写

### 心情
> 待填写

---

## ⚠️ 紧急事项

```dataview
TASK
WHERE contains(tags, "紧急") AND !completed
LIMIT 5

📅 今日任务

dataview 复制代码
TASK
WHERE file.cday = date(today) AND !completed

📊 本周进度

项目进度

dataview 复制代码
TABLE 
  title as 项目,
  status as 状态,
  importance as 优先级
FROM "2_项目"
WHERE status = "进行中"
SORT importance DESC
LIMIT 10

本周新增笔记

dataview 复制代码
TABLE 
  file.link as 笔记,
  file.ctime as 创建时间
WHERE file.ctime >= date(today) - dur(7 days)
SORT file.ctime DESC
LIMIT 10

📚 快速链接

  • \[0_临时/inbox\|收集箱\]

  • \[1_日志/每日/\<% tp.date.now("YYYY-MM-DD") %\>\|今日日志\]

  • \[2_项目\|项目\]

  • \[3_知识\|知识库\]


由 Templater 自动更新于 <% tp.date.now("YYYY-MM-DD HH:mm") %>

复制代码
### 5.3 每日日志模板

```markdown
---
title: <% tp.date.now("YYYY-MM-DD") %>
date: <% tp.date.now("YYYY-MM-DD") %>
day: <% tp.date.now("dddd") %>
tags: [日志, 每日]
weather: 
mood: 
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
---

# <% tp.date.now("YYYY-MM-DD") %> <% tp.date.now("dddd") %>

## 🎯 今日重点
1. 

## ⏰ 时间日志

### 上午 (9:00-12:00)
- 9:00 
- 10:00 
- 11:00 

### 下午 (14:00-18:00)
- 14:00 
- 15:00 
- 16:00 
- 17:00 

### 晚上 (19:00-22:00)
- 19:00 
- 20:00 
- 21:00 

---

## 📝 今日记录

### 工作会议
- 

### 学习内容
- 

### 代码/项目
- 

### 随手记
- 

---

## 💡 灵感/想法
- 

---

## 📌 明日计划
- [ ] 

---

## 📊 复盘

### 完成
- ✅ 

### 未完成
- ❌ 

### 原因分析
- 

### 改进措施
- 

---

## 📎 今日数据

| 指标 | 数值 |
|------|------|
| 工作时长 | 小时 |
| 完成任务 | 个 |
| 新增笔记 | 篇 |
| 深度工作 | 小时 |

---

*由 Templater 自动创建*

5.4 项目模板

markdown 复制代码
---
title: <% await tp.system.prompt("项目名称") %>
date: <% tp.date.now("YYYY-MM-DD") %>
status: 进行中
tags: [项目]
project_type: <% await tp.system.suggester(["个人", "工作", "开源"], ["个人", "工作", "开源"]) %>
importance: <% await tp.system.suggester(["高", "中", "低"], ["high", "medium", "low"]) %>
start_date: <% tp.date.now("YYYY-MM-DD") %>
end_date: 
members: []
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
---

# <% await tp.system.prompt("项目名称") %>

> 项目状态:<% await tp.system.suggester(["🟢 进行中", "🟡 暂停", "🔴 已终止", "✅ 已完成"], ["进行中", "暂停", "已终止", "已完成"]) %>

## 📋 项目概述

**项目类型**:<% await tp.system.prompt("简要描述项目类型") %>

**核心价值**:
> 

**关键成果**:
1. 

---

## 🎯 目标

### 主要目标
1. **目标 1**:
   - 衡量标准:
   - 截止日期:

2. **目标 2**:
   - 衡量标准:
   - 截止日期:

### 次要目标
- [ ] 

---

## 📅 里程碑

```dataview
TASK
FROM ""
WHERE project = "<% await tp.system.prompt("项目名称") %>"
SORT date
阶段 目标 截止日期 状态
启动 完成项目立项 [ ]
规划 完成详细设计 [ ]
执行 完成核心功能 [ ]
收尾 完成测试上线 [ ]

👥 团队成员

角色 姓名 职责
负责人
成员
成员

📊 进度

当前阶段

完成度

  • 20%
  • 40%
  • 60%
  • 80%
  • 100%

关键指标

指标 目标 当前 进度

📝 会议记录

  • \[会议记录/\<% tp.date.now("YYYY-MM-DD") %\>\]


💡 经验教训

做得好的

需要改进


📎 资源

文档

链接

附件


📌 后续计划

下一步

风险识别

风险 影响 概率 应对措施

复制代码
---

## 6. Local REST API 高级用法

### 6.1 API 认证配置

```json
// 在 Obsidian 设置中启用 Token 认证
{
  "api.token": "your-secure-token-here",
  "api.enabled": true
}

6.2 Hermes Agent 集成

yaml 复制代码
# hermes 配置
obsidian:
  enabled: true
  api_url: "http://localhost:1973"
  api_token: "your-token"
  
  # 自动同步
  sync:
    enabled: true
    interval: 30  # 秒
  
  # 默认文件夹
  folders:
    inbox: "0_临时"
    daily: "1_日志/每日"
    projects: "2_项目"
    knowledge: "3_知识"

6.3 Python 调用示例

python 复制代码
import requests
import json

class ObsidianAPI:
    """Obsidian Local REST API 封装"""
    
    def __init__(self, base_url="http://localhost:1973", token=None):
        self.base_url = base_url
        self.headers = {"Content-Type": "application/json"}
        if token:
            self.headers["Authorization"] = f"Bearer {token}"
    
    def get_notes(self):
        """获取所有笔记列表"""
        response = requests.get(
            f"{self.base_url}/api/notes",
            headers=self.headers
        )
        return response.json()
    
    def create_note(self, path: str, content: str) -> dict:
        """创建或更新笔记"""
        response = requests.post(
            f"{self.base_url}/api/notes",
            headers=self.headers,
            json={"path": path, "content": content}
        )
        return response.json()
    
    def read_note(self, path: str) -> str:
        """读取笔记内容"""
        response = requests.get(
            f"{self.base_url}/api/notes/{path}",
            headers=self.headers
        )
        return response.text
    
    def delete_note(self, path: str) -> dict:
        """删除笔记"""
        response = requests.delete(
            f"{self.base_url}/api/notes/{path}",
            headers=self.headers
        )
        return response.json()
    
    def search(self, query: str) -> list:
        """搜索笔记"""
        response = requests.get(
            f"{self.base_url}/api/search",
            params={"query": query},
            headers=self.headers
        )
        return response.json()


# 使用示例
if __name__ == "__main__":
    obsidian = ObsidianAPI()
    
    # 创建笔记
    obsidian.create_note(
        path="测试笔记.md",
        content="""---
title: 测试笔记
date: 2026-04-26
tags: [测试]
---

# 测试笔记

这是一个测试。
"""
    )
    
    # 搜索笔记
    results = obsidian.search("测试")
    print(f"找到 {len(results)} 条结果")
    
    # 读取笔记
    content = obsidian.read_note("测试笔记.md")
    print(content)

7. 插件安全建议

复制代码
┌────────────────────────────────────────────────────────────────────────────┐
│                          插件安全 Checklist                                 │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  ✅ 只安装社区验证插件(经过安全审查)                                      │
│  ✅ 定期更新插件(修复安全漏洞)                                            │
│  ✅ 备份插件列表(方便迁移)                                                │
│  ✅ 谨慎授予插件权限(最小权限原则)                                        │
│  ❌ 不要安装来源不明的插件                                                  │
│  ❌ 不要在插件中输入敏感信息                                                │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘
bash 复制代码
# 备份插件列表
ls .obsidian/plugins/ > plugins_backup.txt

# 备份插件配置
cp -r .obsidian/plugins/ ~/backup/plugins/

# 恢复插件配置
cp -r ~/backup/plugins/* .obsidian/plugins/

8. 常见问题 FAQ

Q1: 插件装了十几个,冲突得一塌糊涂?

markdown 复制代码
# 解决方案:
1. 先禁用所有插件
2. 逐个启用,每次启用一个
3. 测试是否正常
4. 找到冲突的插件,保留一个

# 推荐的最小插件集:
- Templater
- Dataview
- QuickAdd
- Local REST API

Q2: Dataview 查询很慢?

yaml 复制代码
# 优化方案:

1. 设置 Dataview 缓存
# 设置 → 插件选项 → Dataview → 启用缓存

2. 限制查询范围
```dataview
TABLE title
FROM "2_项目"  # 只查询特定文件夹
WHERE status = "进行中"
  1. 减少查询频率

设置 → 插件选项 → Dataview → 索引间隔调大

复制代码
**Q3: 如何迁移插件配置?**

```bash
# 方案一:备份整个 .obsidian 目录
cp -r .obsidian ~/backup/.obsidian-$(date +%Y%m%d)

# 方案二:只备份插件配置
cp .obsidian/plugins.json ~/backup/plugins.json
cp .obsidian/community-plugins.json ~/backup/community-plugins.json

# 方案三:用 Git 同步
cd your-vault
git init
git add .obsidian/plugins/
git commit -m "Update plugins config"

Q4: Templater 模板不生效?

markdown 复制代码
# 检查清单:

1. 模板文件夹是否设置正确?
   设置 → 插件选项 → Templater → 模板文件夹

2. 模板文件是否在模板文件夹内?

3. 文件是否用 Templater 创建的?
   # 必须用 Templater 的 "新建文件" 功能
   # 普通方式创建的文件不会触发模板

4. 语法是否正确?
   # <%* %> 包裹 JavaScript
   # <% %> 包裹表达式

Q5: QuickAdd 快捷键冲突?

markdown 复制代码
# 解决方案:

1. 查看冲突
# 设置 → 快捷键 → 搜索 "QuickAdd"

2. 修改快捷键
# 选择冲突的命令 → 设置新的快捷键

3. 推荐快捷键
- Cmd+Shift+D:每日日志
- Cmd+Shift+N:新建笔记
- Cmd+Shift+P:项目笔记
- Cmd+Shift+M:会议记录

Q6: Local REST API 无法连接?

markdown 复制代码
# 排查步骤:

1. 确认插件已启用
   # 设置 → 第三方插件 → Local REST API

2. 确认端口配置
   # 默认是 1973,可在插件设置中修改

3. 检查防火墙
   # macOS:系统偏好设置 → 安全性与隐私 → 防火墙

4. 测试连接
   curl http://localhost:1973/api/notes

📚 扩展阅读


下一篇预告第六篇 - 分层记忆系统
系列目录《Hermes Agent + Obsidian 打造第二大脑》总目录

相关推荐
算法与双吉汉堡2 小时前
【Nanobot项目笔记】项目架构
python·ai·agent·智能体
名不经传的养虾人3 小时前
从0到1:企业级AI项目迭代日记 Vol.17|让 AI 做代码重构,要盯着它的策略,不只是看结果
人工智能·agent·ai编程·ai创业·企业ai
knight_9___3 小时前
LLM工具调用面试篇6
人工智能·python·面试·职场和发展·llm·agent
YBAdvanceFu3 小时前
拆解 MusicGen:Meta 开源音乐大模型,到底是怎么跑起来的?
人工智能·深度学习·机器学习·数据挖掘·transformer·agent·智能体
人道领域4 小时前
从零构建高可用Agent:后端架构实战与避坑指南
架构·langchain·agent
1104.北光c°4 小时前
【AI核心概念讲解】一口气搞懂 Agent:干翻传统后端!自主循环决策的秘密,ReAct 与 Plan-and-Execute 范式
java·人工智能·程序人生·ai·agent·react·智能体
大侠区块链4 小时前
Hermes Agent 安全架构深度拆解:47 条危险命令规则 + 半个月新增的 14 条
人工智能·ai·claude·hermes
深海鱼在掘金5 小时前
深入浅出 LangChain —— 第八章:RAG 检索增强生成
人工智能·langchain·agent
深海鱼在掘金5 小时前
深入浅出 LangChain —— 第九章:多 Agent 系统
人工智能·langchain·agent