横向对比

以下是 docmd 与同类工具的对比,测量数据取自基于相同硬件构建的 50 页文档站点。

3 秒开始编写,而不是 30 分钟

docmd
Docusaurus
VitePress
MkDocs
npx @docmd/core dev

完成。你的文档已实时就绪。无需配置文件,无需项目初始化,无依赖臃肿。

npx create-docusaurus@latest my-site classic
cd my-site
npm install
npm start

四个命令,生成的项目在 node_modules 中占用约 250 MB,且在渲染任何有用内容前需要修改配置文件。

npx vitepress init

提示回答 5 个交互式问题,生成配置文件,然后执行 vitepress dev。干净,但仍需要项目脚手架。

pip install mkdocs-material
mkdocs new my-site && cd my-site
mkdocs serve

Python 生态依赖。在渲染第一页前需要 pip、虚拟环境和 mkdocs.yml。

载荷差距真实存在

读者不应下载数兆字节的 JavaScript 框架包来阅读技术文本。以下是 50 页站点上的实际浏览器网络载荷:

生成器 初始加载总量 JS 载荷 CSS 载荷
docmd ~18 KB ~12 KB ~6 KB
MkDocs Material ~40 KB ~25 KB ~15 KB
VitePress ~50 KB ~35 KB ~15 KB
Mintlify ~120 KB ~80 KB ~40 KB
Docusaurus ~250 KB ~200 KB ~50 KB
为什么载荷大小很重要

在中端移动处理器上,每 100 KB 的 JavaScript 会消耗约 50ms 的解析和执行时间。docmd 的 12 KB JavaScript 体积即使在受限的移动连接上也能确保即时页面渲染。Docusaurus 为相同内容传输了 16 倍的 JavaScript。

构建性能

在 M1 MacBook Air 上针对 50 页站点的冷构建和热重构基准测试:

生成器 冷构建 热重构 (Dev)
docmd ~1.2s ~80ms
VitePress ~2.5s ~150ms
MkDocs Material ~3.0s ~500ms
Docusaurus ~15s ~2s

docmd 的重构即时发生,在窗口焦点切换之前就更新了浏览器。

优雅处理缺失翻译的 i18n

当用户切换到特定页面缺少翻译的语言时,大多数文档生成器都会报错。docmd 在构建时自动将回退解析为默认语言。

功能 docmd VitePress Docusaurus Starlight
单页回退至默认语言 ✅ ❌ (404) ❌ (404) ✅
本地化“未翻译”提示 ✅ ❌ ❌ ✅
切换器中自动隐藏缺失语言 ✅ ❌ ❌ ❌
即时页面存在性检查(无网络) ✅ ❌ ❌ ❌
版本控制 + i18n 组合 ✅ ❌ ❌ ❌
零配置(无需自定义 React/Vue) ✅ 部分 ❌ ✅
VitePress 和 Docusaurus 中的 404 错误

如果读者切换到特定页面尚未翻译的语言,VitePress 和 Docusaurus 会触发 404 错误。防止这种情况需要自定义服务器重定向或自定义框架组件。docmd 在构建时处理缺失的翻译:未翻译的页面会平滑回退并带有本地化通知提示框。

多项目工作区支持

在单个域名下维护多个产品(例如平台核心、SDK 和 CLI 工具)的团队需要独立的导航、不同的配置和单独的发布周期。

功能 docmd Docusaurus VitePress MkDocs Starlight
原生工作区支持 ✅ 插件 ❌ 插件 ❌
每个项目单行配置 ✅ ❌ ❌ ❌ ❌
每个项目独立版本控制 ✅ ✅ ❌ ❌ ❌
每个项目独立 i18n ✅ ❌ ❌ ❌ ❌
跨项目共享资源 ✅ ❌ ❌ ❌ ❌
单个 site/ 输出(无需代理) ✅ ❌ ❌ ❌ ❌
零配置检测 ✅ ❌ ❌ ❌ ❌
原生工作区配置
docmd.config.json
{
  "workspace": {
    "projects": [
      { "prefix": "/", "src": "main-docs", "title": "Docs" },
      { "prefix": "/sdk", "src": "sdk-docs", "title": "SDK" }
    ]
  }
}

工作区中的每个项目文件夹都保留其自己的 docmd.config.json 用于项目级覆盖。运行 npx @docmd/core build 可编译统一、整合的发布目录,无需反向代理或多阶段 CI 管道。

Docusaurus 需要具有重复配置文件的高复杂度多实例插件设置。MkDocs 依赖 mkdocs-monorepo-plugin。VitePress、Starlight 和 Mintlify 不提供原生工作区支持。

原生 AI 助手与 BYOK 架构

不同于依赖昂贵专有 SaaS 插件或第三方云端组件的传统文档工具,docmd 在开源引擎中直接内置了 RAG 驱动的交互式 AI 助手(@docmd/plugin-ai)。

AI 与知识库能力 docmd Docusaurus VitePress MkDocs Material Mintlify
交互式 AI 小部件 ✅ (内置) ❌ (第三方) ❌ (第三方) ❌ ✅ (云端)
BYOK (自带 API 密钥) ✅ ❌ ❌ ❌ ❌
本地模型支持 (Ollama / LocalAI) ✅ ❌ ❌ ❌ ❌
零配置云中继 ✅ ❌ ❌ ❌ ✅ (仅限 SaaS)
域名来源安全防护 ✅ ❌ ❌ ❌ ❌
Open Knowledge Format (OKF) ✅ ❌ ❌ ❌ ❌
原生 MCP 服务 (docmd mcp) ✅ ❌ ❌ ❌ ✅
上下文文件 (llms.txt) ✅ ❌ ❌ ❌ ✅
为什么 BYOK 对文档团队至关重要

云端文档 SaaS 供应商会将团队绑定在按查询付费的订阅模式和专有 AI 模型上。docmd 通过 BYOK (自带 API 密钥) 赋予团队完全的自由度:可连接 OpenAI、Anthropic、Gemini、DeepSeek、Groq 或本地私有化部署的 Ollama 模型,同时保持对 API 预算与数据隐私的绝对掌控。

综合功能矩阵

功能 docmd Docusaurus VitePress MkDocs Material Starlight Mintlify
零配置启动 ✅ ❌ ❌ ❌ ❌ ❌
需要配置文件 无 docusaurus.config.js config.mts mkdocs.yml astro.config.mjs mint.json
工作区 Monorepo ✅ 插件 ❌ 插件 ❌ ❌
SPA 导航 ✅ ✅ ✅ ❌ ✅ ✅
原生版本控制 ✅ ✅ ❌ 插件 ❌ ✅
原生 i18n ✅ ✅ 手动 插件 ✅ ✅
内置搜索 ✅ ❌ (Algolia) ✅ ✅ ✅ 云端
交互式 AI 助手 ✅ (BYOK) ❌ ❌ ❌ ❌ ✅ (云端)
BYOK (自带 API 密钥) ✅ ❌ ❌ ❌ ❌ ❌
llms.txt 支持 ✅ ❌ ❌ ❌ ❌ ✅
OKF 包 (知识库) ✅ ❌ ❌ ❌ ❌ ❌
原生 MCP 服务 ✅ ❌ ❌ ❌ ❌ ✅
Agent Skills ✅ ❌ ❌ ❌ ❌ ❌
Docker 镜像 ✅ ❌ ✅ ❌ ❌ N/A
行内讨论 ✅ ❌ ❌ ❌ ❌ ❌
PWA 支持 ✅ 社区 ❌ ❌ ❌ ❌
自托管 ✅ ✅ ✅ ✅ ✅ ❌
部署配置生成器 ✅ ❌ ❌ ❌ ❌ N/A

配置开销

为具有版本控制、i18n、搜索和 sitemap 生成的站点所需的配置行数:

生成器 配置行数 所需文件
docmd ~15 行 1 (docmd.config.json)
MkDocs Material ~50 行 1 + 插件
VitePress ~80 行 1 + 主题目录
Docusaurus ~120 行 3+ 配置文件

自动化质量保证

docmd 随附全面的集成测试套件,在 85 个断言 中验证 25 个不同场景:, 孤立和组合地覆盖每个核心功能和插件。每个版本在发布前必须通过所有 85 个断言和 13 个内部安全检查。

在本地运行测试套件
git clone https://github.com/docmd-io/docmd.git
cd docmd && node scripts/brute-test.js