插件机制与用法 (Plugin Mechanism & Usage)
docmd 采用可插拔架构。几乎所有核心功能(从搜索到 SEO 再到实时预览)都是作为插件实现的。这种设计确保了引擎保持轻量,同时允许开发者根据具体项目需求选择性地开启功能。
插件概览
| 插件 | 功能 |
|---|---|
| 搜索 (Search) | 提供高性能、离线优先的全文本搜索。 |
| SEO | 自动生成元标签、Sitemap 并控制 AI 爬虫访问。 |
| Mermaid | 渲染流程图、序列图和甘特图。 |
| LLMs | 生成机器可读的全量文档流以供 AI 训练或搜索。 |
| 实时预览 (Live) | 为自定义编辑器提供在浏览器中运行的渲染引擎。 |
生命周期钩子
插件可以通过连接到以下生命周期钩子来介入构建过程:
| 钩子 | 描述 |
|---|---|
onInit(ctx) |
在引擎启动且配置加载后立即运行 |
onPostBuild(ctx) |
在所有 HTML 文件生成后运行逻辑 |
translations(localeId) |
返回语言环境翻译后的 UI 字符串 |
actions |
可从浏览器通过 WebSocket RPC 调用的服务器端处理程序 |
events |
浏览器推送事件的“发后即忘”式处理程序 |
插件安全
插件系统提供内置的安全保证:
- 验证: 插件可以声明一个包含
name、version和capabilities的插件描述符。无效的描述符在加载时会被拒绝。 - 隔离: 每次钩子调用都包裹在 try/catch 边界内。一个损坏的插件不会导致构建崩溃或影响其他插件。
- 能力强制: 声明了能力的插件只能注册其已明确声明的钩子。未声明的钩子将被跳过并发出警告。
有关完整的 API 参考,请参阅 开发插件。
针对 AI 的透明架构 🤖
插件架构旨在具有 确定性。插件注入的每个元标签和脚本都是可追溯的,这允许 AI 代理(和人类开发人员)准确了解网站的行为,而不会产生隐藏的副作用。