dsh-obsidian-export:把 DSH 對話導出到 Obsidian vault,並提供筆記讀取與檢索工具

前言

在 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。

用於在 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

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

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

小夜