dsh-obsidian-export:把 DSH 对话导出到 Obsidian vault,并提供笔记读取与检索工具

前言

在 DSH 开发流程里,会话内容常常只停留在进程内或持久化文件中。若要把它沉淀到本地知识库,常见做法是人工导出、整理 Markdown、再放进一个 vault 目录。

dsh-obsidian-export 是一个 DeepSeek Harness(DSH)插件。它把 vault 当作一个 Markdown 文件夹来处理,不依赖 Obsidian 应用本体,并提供一组模型可调用的工具:导出会话、读取笔记、搜索内容、列出目录、聚合标签、查找 backlinks。

下面介绍它的定位、功能、安装方式和典型用法。

这是什么

dsh-obsidian-exportxiaomiba0904 维护,仓库地址是:

https://github.com/xiaomiba0904/dsh-obsidian-export

它定位为一个 DSH 插件,核心目标是:

  • 将 DSH 会话导出为 Obsidian vault 中的 Markdown 文件;
  • 在 vault 中提供读取、搜索、列目录、标签统计和 backlinks 查询等工具;
  • 不需要依赖 Obsidian 应用,vault 被视为一个存放 Markdown 文件的目录。

许可证为 MIT

核心功能

插件提供六个模型侧工具。

obsidian_export

用于把 DSH 会话导出到 vault 中,生成 Markdown 内容。

资料中提到的能力包括:

  • 默认导出当前会话;
  • 支持通过 sessionId 指定某个持久化会话;
  • 支持通过 path 导入 session.jsonlsession.jsonl.zstd
  • 支持不同导出模式,包括 createskipupdateoverwritedry-run

obsidian_export 的导出模式在资料中给出的行为如下:

mode 新会话 内容已变化 内容未变化
auto create update skip
update create update skip
overwrite create overwrite overwrite
skip create skip skip
dry-run dry-run dry-run dry-run

dry-run 只报告结果,不执行实际写入。

obsidian_read

用于读取一篇笔记。

返回内容包括:

  • 正文 body;
  • 解析后的 frontmatter;
  • 第一个 H1 标题;
  • [[wikilink]] 目标;
  • #tags

用于在 vault 中搜索。

资料中说明它可以按以下字段搜索:

  • filename:匹配路径;
  • content:全文内容搜索。

同时支持按 tags 缩小范围。

obsidian_list

用于列出 vault 路径下的 Markdown 笔记和文件夹。

资料中说明:

  • 递归列出;
  • 支持可选 subpath

obsidian_tags

用于聚合整个 vault 中出现的不同 #tags

资料中说明它会给出每个 tag 的笔记数量。

用于查找链接到某个目标笔记的笔记。

资料中说明它面向 graph traversal,可用于顺着链接关系查看相关内容。

另外,package.json 的描述中提到了 automatic vault discovery,但已抓取资料没有给出它的参数和行为细节,使用时应以仓库源码和运行时表现为准。

安装与启用

下面是已核实资料中给出的安装命令示例:

dsh plugin --profile web add /absolute/path/to/dsh-obsidian-export

这里的 --profile web 是资料中出现的示例 profile。资料没有说明是否必须使用 web profile,实际使用时按目标 profile 替换即可。

安装过程中,资料说明 dsh plugin 会:

  • 将包安装到 profile 的 node_modules
  • 检测 dsh.bundle.patch 声明;
  • 将 patch 追加到 ~/.dsh/profiles/<name>/package.json 中的 dsh.profile.bundles

启用工具需要注意:

Bundle layers only mount at process boot, so a full restart of the profile is required to activate the tool.

也就是说,插件挂载发生在 profile 进程启动阶段。安装后需要重启对应 profile,工具才会生效。

重启前可以先检查配置组成,资料给出的命令是:

dsh --profile web --dump-config

重启后可再启动:

dsh --profile web

插件依赖以下 peer packages 可解析:

{
  "peerDependencies": {
    "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
    "@deepseek-ai/schemastery": "^3.18.1",
    "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.6",
    "@deepseek-ai/dsh-fs": "^0.1.0-rc.6"
  }
}

资料同时提到,如果通过 pnpm file:link: 从目录安装,需要确保这些 @deepseek-ai/* peer packages 可解析,例如放在插件自己的 node_modules 中,或依赖 profile node_modules 的 hoisting。

典型用法

下面是资料中给出的模型调用示例。

导出当前会话

obsidian_export(vaultDir="/path/to/vault", mode="auto")

用于导出当前会话。

导出指定 jsonl 文件

obsidian_export(vaultDir="/path/to/vault", path="exported/session.jsonl")

用于导入已导出的 session.jsonl

读取笔记

obsidian_read(vaultDir="/path/to/vault", path="Inbox/My Note.md")

用于读取指定 Markdown 笔记。

列目录

obsidian_list(vaultDir="/path/to/vault", subpath="Inbox")

用于查看某个子路径下的笔记和文件夹。

搜索文件名

obsidian_search(vaultDir="/path/to/vault", query="rag")

资料中说明这是 filename match。

搜索正文内容

obsidian_search(vaultDir="/path/to/vault", query="embedding", field="content")

用于按内容搜索。

按标签搜索

obsidian_search(vaultDir="/path/to/vault", query="rag", tags="pkms#research")

用于在搜索结果中按 tags 缩小范围。

聚合标签

obsidian_tags(vaultDir="/path/to/vault")

用于查看 vault 中出现的不同 tags 及其笔记数量。

obsidian_backlinks(vaultDir="/path/to/vault", target="Welcome")

用于查找链接到 Welcome 的笔记。

资料中还给出一个常见工作流:

obsidian_list -> obsidian_read -> obsidian_search -> obsidian_backlinks -> obsidian_export

也就是说,可以先看 vault 里有什么,再读取具体笔记,然后搜索相关内容,顺着 backlinks 查看关联笔记,最后把会话导出到 vault。

如果担心导出会覆盖已有内容,可以先使用 dry-run

obsidian_export(vaultDir="/path/to/vault", sessionId="session-<id>", mode="dry-run")

用于预览目标会被创建、跳过、更新还是覆盖。

适用场景与注意

这个插件比较适合以下场景:

  • 你希望把 DSH 会话保存为 Markdown,而不是停留在临时输出或日志里;
  • 你的本地知识库是 Obsidian vault,且希望直接以文件夹和 Markdown 文件方式维护;
  • 你希望模型在会话过程中读取、搜索和关联已有笔记;
  • 你想在执行导出前先做 dry-run,确认是否会造成创建、更新或覆盖。

使用前建议注意以下几点:

  • 插件以当前 DSH 进程权限运行,安装前应检查源码;
  • 许可证为 MIT,但仍应确认依赖版本和本地环境是否匹配;
  • 安装后需要重启 profile,因为 bundle layers 只在进程启动时挂载;
  • 导出操作会写入 vault,正式写入前可先用 dry-run 查看动作;
  • 资料中未提供插件分类、星标数和目录页 URL,因此这里不做确认。

结尾

dsh-obsidian-export 的价值在于把 DSH 会话与 Markdown vault 连接起来:导出会话,读取笔记,搜索内容,统计标签,并沿 backlinks 查看关联。

仓库地址:

https://github.com/xiaomiba0904/dsh-obsidian-export

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

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

Xiaoye