Obsidian 笔记:让 DeepSeek Harness 直接搜索、读取和写入 Obsidian 笔记

前言

DeepSeek Harness(DSH)采用「一切皆插件」的架构,将插件视为与模型对话的工具集。在构建智能体时,让模型直接操作笔记系统是一个常见需求。通常需要自己写脚本、维护索引或依赖外部 API,既增加维护成本,又容易引入依赖与配置。

下面介绍 dsh-plugin-obsidian,这是一个为 DeepSeek Harness 提供的 Obsidian 仓库桥接插件。它让 DSH 里的模型可以直接查询本地笔记,也能写入(新建/覆盖/追加/按标题插入/合并 frontmatter),同时支持离线模式与在线联动。

插件概述

该插件由 Yaemikoreal 维护,分类为「记忆」。它将 Obsidian vault 作为 DSH 的工具集,提供 7 个工具函数:仓库管理、搜索、读取、列表、链接分析、写入以及与正在运行的 Obsidian 应用联动。

核心价值在于零依赖、零配置:只用 Node 内置模块,自动从 Obsidian 的 obsidian.json 发现仓库,直接读文件系统 + 内存索引,无需构建步骤。如果仓库安装了社区插件 Local REST API,还能操作正在运行的 Obsidian。

安装

插件安装后 7 个工具会直接出现在模型可调用列表里,可用 obsidian_vaults 确认状态。

方式一:插件市场(推荐)

打开 DSH 的「设置 → 插件市场」,搜索 obsidian,点「安装」即可。

方式二:命令行安装

从 GitHub Release 安装预构建 tarball:

dsh plugin --profile <你的profile> add https://github.com/Yaemikoreal/dsh-plugin-obsidian/releases/latest/download/dsh-plugin-obsidian.tgz

或直接从 GitHub 源码安装:

dsh plugin --profile <你的profile> add https://github.com/Yaemikoreal/dsh-plugin-obsidian

卸载:

dsh plugin --profile <你的profile> remove dsh-plugin-obsidian

方式三:本地开发

把本仓库克隆到本地,以 link: 方式装进 profile:

dsh plugin --profile <你的profile> add "E:\path\to\dsh-plugin-obsidian"

修改插件源码后必须重启 DSH 才会加载新代码。

工具一览

工具 作用
obsidian_vaults 列出 / 添加 / 切换仓库,查看索引与在线桥接状态
obsidian_search 全文、标签、路径、frontmatter、标题、正则搜索
obsidian_read 读取笔记(行窗口 + frontmatter + 标签 + 标题 + 链接 + 反向链接)
obsidian_list 目录树 / 平铺列表 / 标签云 / 文件夹统计
obsidian_links 出链、反向链接、指向不存在笔记的链接
obsidian_write 新建 / 覆盖 / 追加 / 前置 / 按标题插入,支持 frontmatter 合并
obsidian_app 操作正在运行的 Obsidian(状态、打开、当前笔记、实时搜索、日记、命令、标签)

查询

obsidian_search 支持多种搜索模式,默认为 all(全部词命中),也支持 any / phrase / regex / tag / path / frontmatter / title。

示例:

obsidian_search(query="部署", mode="all", context=1, limit=10)
obsidian_search(query="project", mode="tag")
obsidian_search(query="status:done", mode="frontmatter")
obsidian_search(query="Projects/*.md", mode="path")
obsidian_search(query="(?i)api[_ ]key", mode="regex")
obsidian_search(query="周报", source="app")

首次扫描会建立「路径 → mtime/size」元数据索引,默认 3 秒 TTL,已解析笔记按字节预算(默认 48MB)做 LRU 缓存。内容变化(mtime/size 变了)会自动失效。重复查询通常几十毫秒。

读取

obsidian_read 支持文件名 / 路径 / [[wikilink]] / 别名。

示例:

obsidian_read(note="Projects/Alpha")
obsidian_read(note="Home", offset=10, limit=30, backlinks=true)

写入

obsidian_write 支持多种写入模式:

obsidian_write(note="Inbox/想法", content="# 想法\n\n正文\n")                 # create(默认)
obsidian_write(note="Inbox/想法", mode="append", content="追加一段")
obsidian_write(note="Inbox/想法", mode="prepend", content="> 摘要")
obsidian_write(note="Inbox/想法", mode="insert", heading="待办", content="- [ ] 新任务")
obsidian_write(note="Inbox/想法", mode="overwrite", content="# 全新内容\n")
obsidian_write(note="Inbox/想法", frontmatter={status: "done", owner: null})  # 只改 frontmatter
obsidian_write(note="Inbox/想法", mode="append", content="预览", dryRun=true) # 只预览 diff

目标定位规则:note 里含 /(或 \)时按精确路径处理,不存在就新建;不含分隔符的裸名字才会按文件名 / wikilink / 别名模糊匹配到已有笔记。

在线联动

如果仓库装了社区插件 Local REST API,可用 obsidian_app 操作正在运行的 Obsidian:

obsidian_app(action="status")
obsidian_app(action="open", note="Projects/Alpha")
obsidian_app(action="active")
obsidian_app(action="search", query="部署", contextLength=120)
obsidian_app(action="daily", date="2026-10-10")
obsidian_app(action="command", query="template")
obsidian_app(action="command", command="editor:save-file")
obsidian_app(action="tags")

桥接不可用时插件会给出可执行的提示,文件系统类工具不受影响。

配置(可选)

不配置也能用:自动发现 Obsidian 注册表里最近打开的仓库。

需要指定仓库或调整行为时,在 profile 的 patch 文件(%USERPROFILE%\.dsh\profiles\<profile>\cordis.patch.yml)里加:

- id: obsidian
  name: dsh-plugin-obsidian
  config:
    vault: 'C:\Users\you\Documents\My Vault'
    vaults:
      - 'D:\Notes\Work'
    excludes:
      - 'templates/**'
    indexTtlMs: 3000
    maxCacheBytes: 50331648
    readOnly: false
    dailyFolder: Daily
    dailyFormat: YYYY-MM-DD

配置会在挂载时校验,写错会明确报错。切换/新增仓库后会把选择持久化到 %USERPROFILE%\.dsh\obsidian-plugin.json。

故障排查

现象 处理
提示找不到仓库 先在 Obsidian 里打开一次该仓库;或用 obsidian_vaults(action="add", path="...")
搜索不到刚写的内容 索引默认 3 秒 TTL;obsidian_vaults(action="status", refresh=true) 可强制刷新
obsidian_app 说桥接不可用 确认 Obsidian 正在运行,且「设置 → 第三方插件」启用了 Local REST API
改了源码没生效 重启 DSH 桌面端
写入报 not writable 该扩展名不在 writableExtensions 内,或仓库被设为 readOnly

开发与测试

本地开发时可以运行:

cd dsh-plugin-obsidian
node --test

测试覆盖 YAML/frontmatter 往返、标签/链接/标题解析、索引与缓存失效、8 种搜索模式、写入的 5 种模式与 ifExists、路径安全、工具参数校验,以及针对本机真实 Obsidian 仓库的在线测试。

限制与不提供的能力

  • 不提供删除 / 重命名工具(避免模型误删笔记)。
  • 不修改 .obsidian/ 下的配置。
  • 不跟随仓库内指向外部的符号链接(路径检查基于字符串解析)。

适用场景

适合需要让模型直接操作本地笔记系统的 DSH 用户,尤其是需要离线可用、零依赖的智能体场景。使用前应检查源码与许可证。

结语

dsh-plugin-obsidian 将 Obsidian vault 作为 DSH 的工具集,提供了从查询、读取到写入的完整能力,同时支持离线模式与在线联动。通过 7 个工具函数,模型可以像操作本地文件系统一样操作笔记,无需额外脚本或配置。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜