知识库与 Slidev
VMark 可以把整个工作区作为可浏览、相互链接的知识库提供出来,也可以预览和导出 Slidev 演示文稿 —— 两者都由同一个本地内容服务器驱动,VMark 会在需要时启动它。
状态
此功能正在分阶段推出,目前任何平台的发行版都不包含它所依赖的内容服务器运行时 —— 参见 使用条件。因此它默认隐藏,只有开启开发者模式才会显示:视图菜单项、命令面板条目和 Ctrl + Shift + 4 快捷键,只有在你启用 设置 → 高级 → 开发者工具 之后才会出现。开启后打开 知识库 面板,即可查看你的计算机已具备什么、还缺少什么。
使用条件
知识库、关系图、搜索、实时重载和 Slidev 预览全部运行在同一个本地内容服务器上 —— 这是一个独立的 Node.js 程序,VMark 会在需要时启动它。启动之前必须具备两样东西:
- Node.js。 VMark 通过登录 Shell 的
PATH解析node,与终端的做法相同,因此只有项目本地工具才能 看到的 Node.js 不算数。请安装 Node.js,并确保node位于登录 Shell 的PATH中。 - 内容服务器本身(VMark 仓库中的
server/content,构建产物为cli.js)。目前还没有任何打包的 VMark 版本内置它 —— 在所有平台上都是如此。 这并不是 Linux 或 Windows 特有的缺失:macOS DMG 同样不附带内容服务器运行时,VMark 的发布检查在每次发布时都会确认这一点。在发布方案落地之前,此功能 需要开发环境 —— 一份已构建内容服务器的 VMark 源码检出,并通过VMARK_CONTENT_SERVER_CLI环境变量 提供给 VMark(或在 VMark 的应用数据中预置base-kb运行时)。
面板打开时会检查这两项。任一项缺失时,面板会说明缺少的是哪一项、可以通过什么来补齐,而不会尝试一次 注定失败的启动。
打开面板
知识库默认隐藏,因为发行版无法启动它。要显示它,请开启 设置 → 高级 → 开发者工具。 视图 → 切换知识库 菜单项、命令面板条目("切换知识库")和 Ctrl + Shift + 4 快捷键都会随之出现, 关闭该设置后又会一并消失。
开启开发者工具后,可以通过 视图 → 切换知识库、命令面板或 Ctrl + Shift + 4 打开面板。面板停靠在 右侧;再次切换即可隐藏。
重新关闭开发者工具会再次隐藏这些入口,并同时关闭面板:面板本身没有关闭按钮,如果让它继续开着,就会 留下一个无法关闭的停靠面板。已经在运行的服务器不会受影响 —— 重新开启开发者工具即可找到它的停止 按钮;而且无论如何,VMark 退出时都会停止它的内容服务器。
知识库
打开一个工作区并启动 知识库 面板。VMark 会启动一个绑定到 127.0.0.1(仅回环地址)的本地服务器, 并使用与编辑器相同的 Markdown 语义把每个 Markdown 文件渲染为 HTML —— 维基链接、提示块、数学公式、 表格、任务列表和折叠块的渲染效果完全一致。
功能:
- 维基链接导航 ——
[[Page]]、[[dir/Page]]、[[Page#Heading]]和[[Page|Alias]]可在整个 工作区内解析。无法解析的链接会显示为"缺失",让缺口一目了然。 - 关系图 —— 笔记、标签(
#tag和 frontmatter 中的tags:)以及带类型的 frontmatter 关系 (up、related、links……)构成一张带反向链接的交互式关系图。 - 全文搜索,覆盖整个工作区。
- 实时重载 —— 保存的修改会自动刷新已提供的页面。
你可以在 VMark 内(嵌入式面板)查看知识库,也可以在浏览器中打开 —— "在浏览器中打开"操作会执行 一次性的身份验证握手,使浏览器获得会话 Cookie。服务器仅监听回环地址并以 Cookie 把关;它绝不会把你的 工作区暴露到本机之外。
Slidev 演示文稿
当你打开一个 frontmatter 标明其为 Slidev 演示文稿的 Markdown 文件时(例如 theme:、layout: 加幻灯片, 或显式的 format: slidev),VMark 可以运行真正的 Slidev 工具链进行实时预览 —— 使用的正是 Slidev 自己的 渲染器,因此布局、点击动画和组件都完全忠实于原样。
打开演示文稿并运行知识库面板后,使用 预览幻灯片 在浏览器中打开实时演示,使用 导出幻灯片 进行渲染。 Slidev 会监视磁盘上的演示文稿,因此在 VMark 中保存修改会热重载已打开的预览。
导出
Slidev 演示文稿可导出为 PDF、PNG 或 PPTX。内容服务器运行 Slidev 自带的 slidev export 命令,它通过 playwright-chromium 包在 Chromium 中渲染幻灯片。VMark 不会为它下载或查找浏览器:如果 内容服务器的运行时中没有在 Slidev 旁边安装 playwright-chromium,导出就会失败,并显示 Slidev 的错误 信息。运行超过三分钟的导出会被停止。
隐私与安全
- 服务器只绑定
127.0.0.1,并要求每个会话的令牌(以 HttpOnly、SameSite=Strict 的 Cookie 下发)。 - 文件访问限制在工作区根目录内;路径穿越会被拒绝,符号链接不会被跟随。
- 渲染出的 HTML 经过净化,并在内容安全策略下提供。工作区信任在这里只改变一件事:是否渲染远程图片。 VMark 启动服务器时会把工作区的信任状态传给它;对于受信任的工作区,策略会放宽
img-src,允许加载https:图片;对于不受信任的工作区,只渲染本地图片和内联图片。信任状态并不决定工作区能否被提供 —— 任何已打开的工作区都可以。在知识库运行期间更改工作区的信任状态会重启服务器,使策略随之更新。