Obsidian Catalog:把 Obsidian 倉庫目錄搬進 DSH 會話視圖

前言

做知識庫問答或日常用 DSH 處理筆記時,一個常見阻礙是:模型不知道 vault 裏有哪些文件,用戶也記不住完整的 @ 引用路徑。手工在終端跑 find、ls 取目錄結構,再把路徑敲進輸入框,步驟重複且容易出錯。

Obsidian Catalog(dsh-plugin-obsidian-catalog)把這個流程收斂到一個會話視圖裏:宿主側直接讀盤上的 vault 目錄,面板按文件夾分組展示筆記,並帶一鍵複製 @絕對路徑。下面介紹它的定位、能力、安裝方式和使用注意點。

這是什麼

Obsidian Catalog 是一個 DeepSeek Harness bundle,由 scy88866-beep 維護,把 Obsidian vault 渲染成一個實時目錄面板,掛在會話視圖(conversation view)上。它解決的問題是兩件事:一是讓模型和用戶都能看到 vault 的內容結構,二是讓引用路徑從「手敲」變成「點一下」。

面板在宿主側直接讀取磁盤上的 vault 目錄,展示筆記標題、字數、相對修改日期、標籤,以及每篇筆記的標題大綱(前三級標題)。每個筆記行和文件夾行都帶一鍵 @絕對路徑 複製按鈕,vault 本身可以在面板內切換,不需要爲第二個 vault 再裝一次插件。

核心功能

下面按面板呈現的順序介紹。

  • 目錄樹:分組跟隨 vault 的目錄結構,每組顯示筆記數;組和筆記可獨立摺疊,面板頂部兩個按鈕可一次性全部摺疊或展開。
  • 搜索:按標題、完整路徑、標籤和標題文本過濾,搜索時自動展開所有命中項。
  • 筆記統計:CJK 字符加拉丁文單詞數、相對修改日期、以及從 frontmatter 讀取的標籤。
  • 標題大綱:展示每篇筆記的前三級標題,按層級縮進,去掉開頭的 #;與筆記標題完全相同的標題會跳過。
  • @ 路徑複製:筆記行上的「複製 @ 路徑」複製 @D:\Notes\MyVault\folder\note.md;文件夾行上的「@ 引用文件夾」複製 @D:\Notes\MyVault\folder(vault 根目錄複製 @D:\Notes\MyVault)。兩處都會在原位閃一下確認。
  • Vault 切換:「選擇倉庫」打開目錄瀏覽器,可以粘貼路徑後點 Go,用 .. 上級 逐級返回,或直接選盤符;看起來像 vault 的目錄(含 .obsidian 文件夾)會被標記,「使用此目錄」切換後會記住選擇。
  • 刷新:支持按需重掃,並每 15 秒輪詢一次;未變更的筆記走 mtime + size 緩存。

安裝與啓用

官方安裝命令如下:

dsh plugin --profile web add dsh-plugin-obsidian-catalog

如果插件沒有出現,重啓 DeepSeek Harness,然後打開一個會話,在會話視圖切換器裏選擇「知識庫目錄 / Obsidian Catalog」。

也可以不走 npm,直接從 checkout 安裝:

plugin_manager { action: "install_bundle", target: "<absolute path to this repository>" }

要求 DeepSeek Harness 0.2.x。

Vault 的選擇順序

面板按下面的順序決定讀哪個 vault:

  1. ~/.dsh/obsidian-catalog.json,由「使用此目錄」寫入,格式爲 { "vault": "D:\\Notes\\MyVault" }
  2. 環境變量 DSH_OBSIDIAN_VAULT
  3. 兜底目錄 <home>\obsidian

刪除配置文件會回到兜底目錄。

HTTP 路由

bundle 在宿主 webServer 服務上註冊了三條路由。除 vault 切換外都只讀,並且都限定在所選 vault 內的 markdown 文件:

Method and path Purpose
GET /api/obsidian-catalog Selected vault 的快照:筆記、標籤、標題、字數
GET /api/obsidian-catalog/dirs?path= 目錄瀏覽:path 爲空時列出盤符,否則列出子目錄及各目錄是否爲 vault
POST /api/obsidian-catalog/vault { "path": "D:\\Notes\\MyVault" } — 校驗目錄、掃描,然後持久化選擇

實現結構

File Purpose
index.js Host side:註冊三條路由、掃描 vault、按 mtime + size 緩存
client.js Client side:通過 window.__ModuleLoader__.load(...) 在 conversation.view 上註冊 obsidian-catalog 視圖
cordis.patch.yml - insert: [{ id: obsidian-catalog, name: dsh-plugin-obsidian-catalog }]
locale/*.json 中文和英文的標題與描述
screenshots.json Storefront 截圖,相對本文件

面板只使用 --dsw-alias-* 主題令牌,因此會跟隨當前淺色或深色主題。

適用場景與注意

適合自己維護 Obsidian vault、並且希望在 DSH 會話裏直接引用筆記的用戶;對需要在多個 vault 之間頻繁切換的場景,面板內的切換機制比重裝或改配置省事。

需要注意幾點。插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。面板對 vault 只讀,只做 stat 和讀取,不寫文件;字數口徑爲 CJK 字符加拉丁文單詞,正則 [A-Za-z][A-Za-z0-9'’\-]*;掃描限制爲每輪最多 12 層目錄、5000 個 markdown 文件。README 中每張截圖都來自一個合成的六篇筆記演示 vault,不含真實筆記、路徑或賬號名。

結尾

Obsidian Catalog 的價值在於把「看目錄」和「複製引用」這兩步併到一個會話視圖裏。需要試的可以直接裝,vault 路徑也可以先用環境變量指定。

目錄頁:https://www.skillhub.cn/plugins/scy88866-beep/dsh-plugin-obsidian-catalog

GitHub:https://github.com/scy88866-beep/dsh-plugin-obsidian-catalog

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

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

小夜