☰
Hermes Agent + Obsidian 打造第二大脑(五):Templater、Dataview、QuickAdd 插件配置与效率提升完整指南
2026/10/4 16:27:49 网站建设 项目流程

1. 为什么你的 Obsidian 笔记库需要这三个插件

Obsidian 本体只是一个本地 Markdown 编辑器,它把文件读写、双链、图谱这些基础能力做得很扎实,但真正让它从「记笔记的软件」变成「第二大脑」的,是插件生态。我见过太多人装了一堆插件,结果每天打开库还是手动敲 frontmatter、手动翻文件夹找项目、手动复制粘贴会议模板,效率没提升反而更乱。问题不在插件本身,而在于没有把「捕获—组织—检索」这条链路串起来。

这一篇聚焦三个核心插件:Templater 负责模板自动化,解决「每次新建笔记都要重复写元数据」的问题;Dataview 负责数据查询,解决「笔记存进去就找不回来」的问题;QuickAdd 负责快速捕获,解决「灵感来了要切三次窗口才能记下来」的问题。三者配合 Hermes Agent 的本地 API 能力,才能让笔记库真正跑起来。适合已经建好 Obsidian 库、装过几个插件但没形成工作流的人,也适合刚接触第二大脑概念、想一次性把基础打牢的读者。

我试过只装 Dataview 不装 Templater 的阶段,结果是查询语句写得再漂亮,源数据格式不统一,查出来的表格全是空列。后来才明白,模板是数据质量的入口,查询是数据价值的出口,捕获是数据流入的闸门,缺一个都转不动。下面按「先配环境、再写配置、后验证、最后排障」的顺序展开,每一步都给可复制的片段。

2. TaoToken 与 Hermes Agent 的前置准备

Hermes Agent 要读写 Obsidian 库,走的是 Local REST API 这条本地通道,而 Agent 本身在调用模型做摘要、分类、生成模板建议时,需要一个稳定的模型接入点。这里用 TaoToken 作为统一入口,它的 API 地址是 https://taotoken.net/api ,兼容 OpenAI 风格的请求格式,配置起来不用改代码结构。

先说清楚它是什么、能做什么。TaoToken 是一个模型调用聚合服务,你拿到一个 Key 之后,可以用同一套 Base URL 和鉴权方式调用不同厂商的模型,适合在 Hermes Agent 这种需要频繁切换模型做不同任务的场景里减少配置成本。适合谁?适合已经在用 Obsidian 做知识管理、想让 Agent 自动整理笔记但不想为每个模型单独维护一套环境变量的人。

前置准备分三步。第一步,在 TaoToken 控制台创建一个 API Key,地址是 https://taotoken.net/api-keys ,创建后复制保存,后面配置里要用。第二步,确认你的 Obsidian 库已经装好 Local REST API 插件并启用了 1973 端口,这个在下一节会详细写。第三步,确认 Hermes Agent 的配置文件位置,通常在用户目录下的.hermes/config.toml或项目根目录的hermes.toml,具体看你安装方式。

这里要提醒一个容易踩的坑:很多人把模型 Key 和 Obsidian 的 API Token 搞混。前者是给 Hermes Agent 调模型用的,走 https://taotoken.net/api ;后者是给 Agent 读写 Obsidian 用的,走http://localhost:1973。两者完全独立,配置时不要写进同一个字段。我见过有人把 TaoToken 的 Key 填到 Obsidian 的 api.token 里,结果请求一直 401,排查了半天才发现是两套鉴权。

如果你还没决定用哪个模型,可以先在模型对话页面试一下不同模型对中文笔记摘要的效果,地址是 https://taotoken.net/models ,选一个响应速度和摘要质量都合适的,再写进 Hermes Agent 配置。长期做编码和 Agent 任务的话,Coding Plan 页面 https://taotoken.net/coding-plan 有更详细的套餐说明,按自己的调用量选就行。

3. 可复制的插件配置与模板片段

这一节是全文的核心,所有片段都可以直接复制到你的库里。先给目录结构,再给每个插件的配置项,最后给模板文件内容。路径统一用templates/作为模板文件夹,0_临时、1_日记/每日、2_项目、3_知识作为主要分区,你可以按自己的习惯改名,但改完要同步改配置里的路径。

3.1 Templater 配置与模板

Templater 装好后,进入设置,把「Template folder location」设为templates,打开「Trigger Templater on new file creation」,这样用 Templater 新建文件时才会自动渲染。核心语法是<% %>包裹表达式,<%* %>包裹 JavaScript 代码块。

每日日记模板templates/daily.md:

--- title: <% tp.date.now("YYYY-MM-DD") %> date: <% tp.date.now("YYYY-MM-DD") %> day: <% tp.date.now("dddd") %> tags: [日记, 每日] 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") %>*

项目模板templates/project.md,用 suggester 让用户选优先级:

--- title: <% await tp.system.prompt("项目名称") %> date: <% tp.date.now("YYYY-MM-DD") %> status: 进行中 importance: <% await tp.system.suggester(["高", "中", "低"], ["high", "medium", "low"]) %> tags: [项目] created: <% tp.date.now("YYYY-MM-DD HH:mm") %> --- # <% await tp.system.prompt("项目名称") %> ## 目标 1. ## 里程碑 - [ ] 阶段一 - [ ] 阶段二 ## 经验教训 ---

会议模板templates/meeting.md:

--- title: "<% await tp.system.prompt("会议名称") %>" date: <% tp.date.now("YYYY-MM-DD") %> time: <% tp.date.now("HH:mm") %> tags: [会议] type: meeting --- # <% await tp.system.prompt("会议名称") %> **时间**:<% tp.date.now("YYYY-MM-DD HH:mm") %> **参会人**:<% await tp.system.prompt("参会人,逗号分隔") %> ## 议程 1. ## 讨论 ## 决策 1. ## 待办 - [ ] ---

3.2 Dataview 配置与查询

Dataview 装好后,在设置里打开「Enable JavaScript Queries」和「Enable Inline Queries」,缓存间隔保持默认即可。查询写在代码块里,语言标记为dataview。

项目看板查询,放在2_项目/看板.md:

TABLE status AS 状态, importance AS 优先级, file.mtime AS 最后更新 FROM "2_项目" WHERE status = "进行中" SORT importance DESC

本周新增笔记查询:

TABLE file.ctime AS 创建时间, tags AS 标签 WHERE file.ctime >= date(today) - dur(7 days) SORT file.ctime DESC LIMIT 20

待办任务汇总:

TASK WHERE !completed AND file.folder = "2_项目" SORT file.mtime DESC

3.3 QuickAdd 配置

QuickAdd 装好后,添加一个 Template 类型的 Choice,命名为「快速捕获」,模板路径选templates/inbox.md,目标文件夹设为0_临时,打开「Create in same folder as active file」关闭。再添加一个 Capture 类型的 Choice,命名为「追加到今日日记」,目标文件设为1_日记/每日/{{date:YYYY-MM-DD}}.md,捕获格式选「Append to bottom」。

templates/inbox.md内容:

--- 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("内容") %> ## 待处理 - [ ] --- *由 QuickAdd 捕获于 <% tp.date.now("YYYY-MM-DD HH:mm") %>*

3.4 Hermes Agent 接入配置

Hermes Agent 的配置文件里,模型部分指向 TaoToken,Obsidian 部分指向本地 API。以 TOML 为例:

[model] base_url = "https://taotoken.net/api" api_key = "你的_TaoToken_Key" model_id = "你选的模型ID" [obsidian] enabled = true api_url = "http://localhost:1973" api_token = "你的_Obsidian_API_Token" vault_path = "/你的库绝对路径" [obsidian.folders] inbox = "0_临时" daily = "1_日记/每日" projects = "2_项目" knowledge = "3_知识"

三件套对照:Base URL 填https://taotoken.net/api,Key 填 TaoToken 控制台创建的 Key,Model ID 填你在模型对话页面选定的模型标识。这三个字段缺一不可,写错任何一个都会在验证阶段报错。

4. 验证请求与成功结果

配置写完不算完,要跑一遍验证。先验证 Obsidian 本地 API 通不通,再验证 Hermes Agent 能不能通过 TaoToken 调模型并读写笔记。

第一步,确认 Local REST API 插件已启用,端口 1973 监听正常。在终端执行:

curl http://localhost:1973/api/notes

如果返回一个 JSON 数组,里面是你库里的笔记路径列表,说明本地 API 通了。如果返回Connection refused,说明插件没启用或端口被占,去插件设置里检查。

第二步,验证写入。执行:

curl -X POST http://localhost:1973/api/notes \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 你的_Obsidian_API_Token" \ -d '{"path": "0_临时/验证.md", "content": "# 验证\n\n写入成功"}'

返回{"success": true}或类似结构,去 Obsidian 里看0_临时/验证.md是否出现,内容是否正确。

第三步,验证 Hermes Agent 调模型。在 Agent 里发一条指令,让它读取0_临时/验证.md并生成一句摘要。如果 Agent 返回了摘要内容,说明模型调用和 Obsidian 读写两条链路都通了。这一步如果报 401,检查 TaoToken Key 是否填对;如果报local proxy failed,检查api_url是不是写成了https而不是http,本地 API 默认不走 TLS。

第四步,验证 Dataview 查询。在任意笔记里插入一段dataview代码块,查询0_临时文件夹下的文件:

LIST FROM "0_临时"

切到阅读视图,如果能看到刚才写入的验证.md,说明 Dataview 索引正常。如果显示「No results」,检查文件夹路径拼写,以及 Dataview 设置里的「Enable JavaScript Queries」是否打开。

第五步,验证 QuickAdd 快捷键。按你设置的快捷键,看是否弹出模板选择或直接创建笔记。如果没反应,去设置里的快捷键面板搜索 QuickAdd,确认没有冲突。

全部通过后,你的链路就是:QuickAdd 捕获 → Templater 渲染元数据 → Dataview 检索 → Hermes Agent 通过 TaoToken 调模型做摘要和分类。这条链路跑通一次,后面就是重复使用。

5. 本篇常见错误排查

这一节按真实报错来写,遇到对应错误直接对照处理。

401 Unauthorized。两种可能:一是 TaoToken Key 填错或过期,去控制台重新创建;二是 Obsidian API Token 没填或填错,去 Local REST API 插件设置里复制正确的 Token。注意两个 Token 不要混用,模型请求走 TaoToken,笔记读写走本地 API。

local proxy failed / connection refused。Hermes Agent 连不上 Obsidian,先确认 Local REST API 插件已启用,再确认端口是 1973 且没有被其他程序占用。macOS 上可以用lsof -i :1973查看占用情况。另外确认api_url写的是http://localhost:1973,不要写成https。

reading choices / 模型返回空。Agent 调模型时返回结构里没有 choices 字段,通常是 Base URL 写错。确认填的是https://taotoken.net/api,不要多加/v1或漏掉/api。如果用的是兼容模式,检查请求体里的 model 字段是否和你在模型对话页面选的 ID 一致。

OAuth / 鉴权失败。如果你用的是 Claude Code 或类似工具接入,鉴权方式可能不是简单的 Bearer Token。这种情况下确认你用的是 API Key 模式而不是 OAuth 模式,TaoToken 的接入文档里有详细说明,地址是 https://taotoken.net/doc 。

Dataview 查询无结果。先确认源笔记的 frontmatter 格式正确,YAML 里冒号后面要有空格,标签用数组或逗号分隔。再确认查询的文件夹路径和实际路径一致,大小写敏感。最后确认 Dataview 设置里「Enable JavaScript Queries」已打开,否则部分查询语法不生效。

Templater 模板不渲染。必须用 Templater 的「新建文件」功能创建笔记,普通方式新建不会触发模板。另外确认模板文件夹路径设置正确,模板文件确实在templates/下。语法上<%* %>是代码块,<% %>是表达式,不要写反。

QuickAdd 快捷键冲突。去设置里的快捷键面板搜索 QuickAdd,看是否有红色冲突提示。有冲突就换一个组合键,推荐Cmd+Shift+D给日记,Cmd+Shift+N给捕获,Cmd+Shift+P给项目。

插件装多了卡顿。核心插件保持 5 个以内:Templater、Dataview、QuickAdd、Local REST API、Git。界面类插件按需装,资源密集型插件如 Graph Analysis 在大库上要限制计算范围。超过 20 个插件基本会明显卡顿。

6. 把链路用起来:从捕获到检索的日常动作

配置跑通之后,日常使用其实就三个动作。灵感来了按 QuickAdd 快捷键,选「快速捕获」,填标题和内容,笔记落到0_临时。每天固定时间打开日记模板,Templater 自动填好日期和元数据,你只管写内容。每周打开项目看板,Dataview 自动列出进行中的项目和高优先级任务,不用手动翻文件夹。

Hermes Agent 在这里的角色是自动整理。你可以让它每天定时读取0_临时里的笔记,通过 TaoToken 调模型做摘要和分类,然后写回3_知识对应主题下。这一步的配置在 Agent 的定时任务里,模型部分复用前面写的[model]配置,Obsidian 部分复用[obsidian]配置。

如果你还没拿到 TaoToken 的 Key,先去 https://taotoken.net/api-keys 创建一个,再按第三节的配置填进 Hermes Agent。接入文档在 https://taotoken.net/doc ,里面有不同工具的完整配置示例。长期做编码和 Agent 任务的话,Coding Plan 页面 https://taotoken.net/coding-plan 可以看套餐详情。

最后给一个实用技巧:模板文件本身也用 Git 管理,这样换电脑或者重装 Obsidian 时,templates/和.obsidian/plugins/一起同步,配置不会丢。.gitignore里排除workspace.json和缓存文件,只保留插件配置和模板,库体积小、同步快。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询