前言¶
在 DSH 开发流程里,会话内容常常只停留在进程内或持久化文件中。若要把它沉淀到本地知识库,常见做法是人工导出、整理 Markdown、再放进一个 vault 目录。
dsh-obsidian-export 是一个 DeepSeek Harness(DSH)插件。它把 vault 当作一个 Markdown 文件夹来处理,不依赖 Obsidian 应用本体,并提供一组模型可调用的工具:导出会话、读取笔记、搜索内容、列出目录、聚合标签、查找 backlinks。
下面介绍它的定位、功能、安装方式和典型用法。
这是什么¶
dsh-obsidian-export 由 xiaomiba0904 维护,仓库地址是:
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.jsonl或session.jsonl.zstd; - 支持不同导出模式,包括
create、skip、update、overwrite、dry-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。
obsidian_search¶
用于在 vault 中搜索。
资料中说明它可以按以下字段搜索:
filename:匹配路径;content:全文内容搜索。
同时支持按 tags 缩小范围。
obsidian_list¶
用于列出 vault 路径下的 Markdown 笔记和文件夹。
资料中说明:
- 递归列出;
- 支持可选
subpath。
obsidian_tags¶
用于聚合整个 vault 中出现的不同 #tags。
资料中说明它会给出每个 tag 的笔记数量。
obsidian_backlinks¶
用于查找链接到某个目标笔记的笔记。
资料中说明它面向 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 及其笔记数量。
查找 backlinks¶
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 查看关联。
仓库地址: