Skip to content

[Feature] 改进 VFS 文档预览:修复 Markdown 链接并支持 PDF #56

Description

@kimbluerain

What do you want? (你想要什么?)

希望改进 Cebian VFS 中 AI 生成文档的打开与预览体验,并先完成一个可控的 MVP:

  1. 修复 Markdown 文档中的相对链接、父目录链接和文内锚点,使其能够以当前文档所在的 VFS 目录为基准正确打开;
  2. 支持直接预览存储在 VFS 中的 PDF,而不是只显示“二进制文件”并要求下载;
  3. 为可预览文档提供清晰的“预览 / 源码 / 下载”入口,并允许用户设置默认打开方式;
  4. 对未知二进制格式安全降级,不再默认按 UTF-8 文本读取。

首期范围聚焦 Markdown 与 PDF。DOCX、XLSX、EPUB 等格式建议后续通过独立 renderer adapter 分阶段接入。

Why? (为什么?)

当前 Agent 整理信息后通常会生成 Markdown 文档并返回 VFS 链接,但文档中的相对链接无法按当前文件目录解析,可能打开错误的扩展资源页面。PDF 在 VFS 中又被明确归类为 binary,只能下载,虽然项目已经包含 pdf.js 和 PDF 内容读取能力,却没有面向用户的页面预览。

这导致“Agent 生成文档 -> 点击链接 -> 阅读附件”的核心流程中断,也让侧边栏的文档体验依赖外部应用。

How? (怎么做? — 可选)

建议分层实现:

  1. 抽出纯函数 resolveMarkdownHref(href, currentVfsPath),统一处理文内锚点、相对路径、VFS 绝对路径、外部链接和危险协议;
  2. 将当前 Markdown 文件路径传给渲染器,并让图片引用复用相同的 VFS 路径解析逻辑;
  3. 将 PDF 从 binary 分类中拆出,在 VFS 页面复用现有 pdfjs-dist loader,首版提供单页按需渲染、翻页、缩放、适应宽度、错误状态和下载入口;
  4. 将未知扩展名归类为 unknown,仅对白名单文本格式执行 UTF-8 解码;
  5. 增加默认打开设置:“智能 / 优先预览 / 优先源码”。编辑和脚本执行不属于首期范围。

Acceptance criteria (验收标准)

  • VFS Markdown 中的相对文件链接、父目录链接和文内锚点可正确工作;
  • VFS 中的 PDF 可分页、缩放并适应侧边栏宽度;
  • 损坏、加密、过大或不支持的文件不会导致页面崩溃,始终保留下载入口;
  • 未知二进制文件不会被当作文本显示乱码;
  • 点击选择和后续拖放进入 VFS 的文件使用同一套预览能力;
  • 新增逻辑具备单元测试,并通过 pnpm run check。

Related issues (相关 issue)

如方案可行,请维护者回复 /ready,我可以提交实现 PR。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions