一、为什么要做双向链接
MDMS 的元定位是「面向搜索引擎和 AI 引擎出版的智能体协作内容引擎」。这意味着内容之间的关联不是装饰,是知识本身的一部分——和 Karpathy LLM Wiki 的 wiki 范式同源,和 Wikipedia / Tolkien Gateway 的内链密度同源,也和 PageRank 的核心信号同源。
v2.0.3 起,MDMS 支持在 Markdown 中直接写 [[文章标题]],生成站点时自动转为超链接,并在被引用的文章底部生成反向索引面板。
二、最简单的用法
在 Markdown 文章里直接写:
本文讨论的话题在 [[搜索引擎优化指南]] 中有更详细的展开。
另见 [[内容运营策略]] 和 [[流量分析方法论]]。
生成后效果:
[[搜索引擎优化指南]]自动变成超链接,跳转到该文章- 「搜索引擎优化指南」这篇文章的底部会自动出现「被以下文章引用」面板,列出本文标题
- 鼠标悬停时显示虚线下划线变实线 + 浅蓝背景
三、匹配规则
generator 在解析 [[xxx]] 时按以下顺序查找匹配文章:
- 先按 H1(一级标题)匹配——这是最常见的情况
- 再按 frontmatter 里的 title 字段匹配
- 都找不到则保持原文不变(不会报错、不会破坏文章)
大小写敏感。[[搜索引擎优化指南]] 不会匹配「搜索引擎优化指南 - 完整版」。
四、自动保护规则
generator 自带保护机制,以下情况里的 [[xxx]] 不会被替换:
<pre>代码块内<code>行内代码内
所以你可以在文档里安全地写「Markdown 里写 `[[文章标题]]` 表示双向链接」而不会被错误转换。
五、反向索引面板
当文章 A 用 [[B]] 引用了文章 B,B 的底部会自动出现:
被引用(1 篇文章提到了本文)
┌──────────────────────────────────┐
│ 文章 A 的标题 │
│ ...原文中 [[B]] 前后各 30 字的上下文... │
└──────────────────────────────────┘
这个面板由 generator 在每次构建时实时生成,不需要任何手动维护。引用关系变化时,反向面板自动更新。
六、SEO 价值
双向链接对搜索引擎友好度有三个直接贡献:
- 内链密度提升:每个
[[xxx]]都是一条精准内链,比 InternalLink 关键词替换规则更准确(基于显式作者意图,不是字符串匹配) - 反向索引面板=自动内链生成器:被引用越多的文章,底部内链越多,搜索引擎得到的「这页很重要」的信号越强
- 结构化关联可被知识图谱抓取:未来 3D 知识图谱和 PageRank 算法启用时,所有
[[xxx]]关系直接复用
七、和智能体协作的关系
[[ ]] 是 LLM Wiki 范式的标准引用语法(Karpathy 2026-04 Gist)。智能体在写新文章时引用其他文章统一用这个格式,对人和对智能体都是同一份语法、同一个语义。
未来 Markdown 编辑器(v2.0.4 CodeMirror)上线后,输入 [[ 会触发自动补全弹窗,列出所有现有文章供选择。后端 API(GET /api/articles/list)已就绪,等编辑器接入。
八、不会做的事
为了保持 MD 第一公民原则,以下扩展暂不计划:
- 不支持
[[标题|显示文字]]别名语法——因为这会让 MD 不再是 LLM 的可读真相,智能体读到[[A|B]]会困惑「这到底链到哪里」 - 不支持
[[#锚点]]——MDMS 文章是完整页面单位,不需要段落级深链 - 不自动创建占位页——找不到匹配文章时保持原文,由作者决定是否创建对应文章
九、技术实现位置
- 解析逻辑:
generator/generator.go的resolveWikiLinks()函数 - 反向索引:
Generator.BackLinks字段(内存 map,构建时生成) - 模板渲染:
templates/site/article.html第 56 行的{{if .BackLinks}}块 - 样式:
static/css/article.css末尾的.wiki-link块 - API(供未来编辑器使用):
GET /api/articles/list
设计原则:generator 内存索引,不入库,不持久化。每次构建实时重算。这符合 MDMS「MD 文件是数据真相,数据库只存元数据」的第七正交原则。