前言¶
做知识库问答或日常用 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:
~/.dsh/obsidian-catalog.json,由「使用此目录」写入,格式为{ "vault": "D:\\Notes\\MyVault" }- 环境变量
DSH_OBSIDIAN_VAULT - 兜底目录
<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