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

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

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

小夜