用 Vibe Coding 来快速解决 Obsidian 使用过程中的小痛点:obsidian-wikilink-preserver
目前,我的主力笔记软件是 Obsidian。除了全平台支持、目录式本地数据管理、Markdown 双向链接等优势之外,Obsidian 还拥有强大的插件生态。用户可以通过安装插件来扩展 Obsidian 的功能,甚至可以自己编写插件来实现一些自用的小功能。
在使用 Obsidian 的过程中,其内置的内部链接功能可以方便地将不同的本地笔记连接起来,从而实现知识图谱的建立和笔记的模块化解耦。
Obsidian 支持 Wiki 式链接([[note]]
)和 Markdown 式链接([note](note.md)
)两种格式的内部链接。其中,Wiki 式链接是 Obsidian 的特色功能,用户只需在笔记中输入 [[
,Obsidian 就会自动展示匹配的建议路径列表以供补全。
为了使用上述的路径自动补全功能,同时为了隔离标准 Markdown 语法和 Obsidian 的内链功能,以便于今后可能的数据迁移,我在所有笔记中都统一保持如下链接格式规范:所有的内链使用的都是 Wiki 式链接语法,而外部网页或图片的链接仍然保持标准的 Markdown 语法。
然而,Obsidian 似乎只希望用户在这两种链接语法中二选一。一旦在设置中开启“使用 Wiki 链接”选项,Obsidian 就会将所有的链接都转换为 Wiki 链接格式,即使拖动图片到笔记中时也会自动生成 Wiki 链接格式的图片链接;而一旦关闭这个选项,Obsidian 又会将所有的链接都转换为标准的 Markdown 链接格式,即使在笔记中手动输入 [[
并选择内链目标后,结果也会被自动转换为 Markdown 链接语法。
理论上,可以通过编写一个插件来解决此问题,即监听用户输入事件,在键入 [[
并完成补全后,禁止将其自动转换为 Markdown 链接格式。然而,我对 TypeScript 语言和 Obsidian 的 API 都了解甚少,手动开发插件需要花费大量时间阅读文档和调试代码。
趁着近来 LLM 的高速发展,我决定使用最近流行的 Vibe Coding 方式来编写这个插件。 我把上述痛点和需求描述给 Gemini 2.5 Pro,让它尝试帮我编写完整的项目代码,并给出安装调试的步骤。初次生成的结果在 build 时发生了一些错误,我又无脑把报错信息复制给 Gemini,让它尝试修复。仅仅经过两三次迭代,这个插件就可以被成功安装,且完美实现了预期功能。
我把插件的源码上传到了 jasongzy/obsidian-wikilink-preserver 这个 GitHub 仓库中,同时编写了 GitHub Actions 以自动化构建和发布插件。欢迎大家从 Release 下载使用和反馈。
这次经历让我体会到了 Vibe Coding 的乐趣和无限潜力,一个人几乎无需了解任何 API 细节就能快速实现定制化的软件功能。这大概也是开源或拥有插件系统的应用软件(诸如 Obsidian,Zotero,Blender,甚至 Chrome 浏览器)在 AI 时代的独特魅力所在。