dsh-obsidian-file-opener:在 Harness Web GUI 裏一鍵用 Obsidian 打開庫內筆記

前言

DeepSeek Harness(DSH)的 Web GUI 自帶文檔預覽,對話裏的 Markdown 鏈接、工具輸出路徑、@file 引用和文件樹裏的條目,默認都會在應用內打開。若你的筆記庫本身就是 Obsidian vault,預覽頁缺少反向鏈接、圖譜和插件環境,和日常寫作流程是兩套界面。

社區插件 dsh-obsidian-file-opener(維護者 Wang-Chuming,GitHub:Wang-Chuming/dsh-obsidian-file-opener)在「普通單擊」時把庫內文件路由到 Obsidian(或你在配置裏指定的其他應用),Cmd/Ctrl + 單擊 仍走 Harness 原有預覽,行爲與官方未改時一致。

這是什麼

一句話:面向 DSH Web GUI 的 vault 文件打開器——單擊庫內引用時在 Obsidian 中打開筆記,可按規則把例如 .tex 交給 VS Code 並帶上項目根目錄。

插件在 DSH 生態裏屬於 客戶端 類 bundle:Host 半部(index.js)註冊 HTTP 路由與模型工具,Client 半部(client.js)包裝 Web GUI 的統一導航入口 ctx.sidebarRight.openResource。許可證 MIT,運行時僅依賴 Node 內置模塊;開發測例要求 Node.js ≥ 20。作者在 macOS 上開發與測試,Windows、Linux 打開邏輯已實現但練習較少。

核心功能

下面表格概括手勢與結果(與 README 一致):

手勢 結果
對庫內文件引用的 普通單擊(對話 Markdown 鏈接、工具行路徑、行內 file mention、@file、文件樹中的 vault 文件) 經 obsidian://open 在 Obsidian 中打開,Obsidian 置前
命中 openers 規則的 vault 文件(例如 .tex) 在規則指定應用中打開;VS Code 規則會以 root 文件夾爲工作區
Cmd/Ctrl + 單擊 Harness 應用內文檔預覽(不變)
不在 vaultRoot 內、擴展名不在 extensions 內、程序化或恢復時打開 應用內預覽(不變)
模型側「幫我打開這個文件」 open_vault_file 工具,路由與普通單擊相同

Host 側對每次打開做 realpath containment:路徑必須在 vaultRoot 內,.. 與逃出 vault 的符號鏈接會被拒絕。三條路由均先走 ctx.connection.requestRejection(req)(Harness Host/Origin 防護與登錄 cookie);連接服務缺失時返回 503,不裸奔提供服務。任意環節失敗時 Client 回退到官方內置預覽。

Host 暴露的路由:

路由 方法 用途
/obsidian-file-opener/config GET 向 Client 提供 vault 配置
/obsidian-file-opener/open POST { path, source? } 打開單個 vault 文件
/obsidian-file-opener/diag POST 追加瀏覽器診斷行

配置在 Host 啓動時按順序解析:bundle 行內 config: → ~/.dsh/obsidian-file-opener.config.json → 內置默認。兩處都拿不到有效 vaultRoot 時插件加載但 不生效(config 路由 ok: false,界面仍全部走預覽)。

安裝與啓用

1. 加入 profile

dsh plugin --profile <profile> add github:Wang-Chuming/dsh-obsidian-file-opener

<profile> 爲 desktop、web 或 headless。命令會安裝包並因包聲明 dsh.bundle 自動寫入 dsh.profile.bundles。Desktop 也可在 Settings → Plugins(或插件市場上架後)安裝,由 Desktop profile 管理。

2. 指向你的 vault

推薦在用戶目錄寫入配置文件(僅 vaultRoot 必填;路徑中的 ~ 會展開,openers[].root 若爲相對路徑則相對 vaultRoot 解析):

cat > ~/.dsh/obsidian-file-opener.config.json <<'JSON'
{
  "vaultRoot": "/Users/you/Research/Research-Vault",
  "vaultName": "Research-Vault",
  "extensions": [".md", ".canvas", ".base"],
  "openers": [
    {
      "app": "vscode",
      "extensions": [".tex"],
      "root": "physics/lshape-pt-symmetry/paper/manuscript"
    }
  ]
}
JSON

文件缺失或格式錯誤視爲「無覆蓋項」,插件保持 inert,不會猜測路徑。

3. 重啓並確認

必須 重啓 Harness(僅刷新 Client 不夠:Host 在啓動時讀配置並註冊路由與工具)。首次加載頁面後,可查看 ~/.dsh/obsidian-file-opener.diag.jsonl,其中應出現 host-activate、client-activate、client-config、selftest-trigger、open 等事件行;README 給出了示例 JSON 結構。

環境要求:已安裝 Obsidian 及要對齊的 vault;DSH 需具備 Web GUI 與 plugin-bundle 支持。

典型用法

  1. 完成安裝與 vaultRoot 配置並重啓後,在對話裏 普通單擊 任意庫內筆記鏈接,應在 Obsidian 中打開該筆記。
  2. 對同一鏈接 Cmd/Ctrl + 單擊,應仍在 Harness 內預覽。
  3. 若配置了 openers,單擊 vault 內匹配擴展名的文件(如 .tex)應在 VS Code 中打開,且 LaTeX 等工作區以配置的 root 爲項目根。
  4. 需要模型代開文件時,Harness 側提供的 open_vault_file 與單擊走路由一致。

Client 在首次加載會跑一遍自測鏈並寫入上述 JSONL 日誌,便於確認 Host/Client 與打開通道是否正常。

適用場景與注意

適合誰: 日常把 DSH 工作區與 Obsidian vault 疊在同一份 Markdown 庫上的開發者或研究者;希望在 Harness 裏點鏈接就回到 Obsidian 編輯、圖譜與插件環境,而不是在 Web 預覽裏「第二份只讀副本」。

生態背景: DSH 強調「一切皆插件」;SkillHub 目錄頁 等社區站點獨立於 DeepSeek / 幻方,並非官方應用商店。

安全與權限: 插件以當前 DSH 進程權限在本地調用系統打開器(macOS open、Linux xdg-open、Windows cmd /c start),安裝前請自行審閱 源碼與 MIT 許可證。僅將 vaultRoot 指向你信任的路徑;Host 會拒絕逃出 vault 的路徑,但錯誤配置仍可能指向你不希望暴露給瀏覽器的目錄——配置責任在用戶側。

平臺: 非 macOS 用戶若遇打開異常,可向倉庫 Issues 反饋或提交補丁。

結尾

dsh-obsidian-file-opener 把 Web GUI 裏「點 vault 文件」的默認目的地從內置預覽改成 Obsidian(及可選的 VS Code 規則),同時保留修飾鍵預覽與非 vault 文件的原有行爲。需要詳情、中文 README 與 issue 入口見 GitHub 倉庫;插件索引見 SkillHub 目錄頁。

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

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

小夜