AI自动帮你补链接:LLM Wiki wikilink补全机制让知识网络越织越密
【免费下载链接】llm_wikiLLM Wiki is a cross-platform desktop application that turns your documents into an organized, interlinked knowledge base — automatically. Instead of traditional RAG (retrieve-and-answer from scratch every time), the LLM incrementally builds and maintains a persistent wiki from your sources。项目地址: https://gitcode.com/GitHub_Trending/ll/llm_wiki
LLM Wiki 是一款跨平台桌面知识库应用,它的wikilink 自动补全机制会调用大语言模型(LLM)扫描你保存的 Wiki 页面,自动找出应指向已有页面的术语,并安全地插入[[双链]],让你的知识网络越织越密——全程不改动你的一个正文字符。
写知识笔记最痛苦的事,莫过于手动补交叉引用:写完一页综述,要逐个回忆"Transformer"该链到哪篇概念页,"注意力机制"该用哪个别名。LLM Wiki 把这个脏活交给了 AI,同时用一套**"LLM 只报答案、代码负责落笔"** 的设计,保证了自动补链既聪明又可靠。
wikilink 为什么是知识库的"黏合剂"
LLM Wiki 的 Wiki 目录采用 Obsidian 风格的[[wikilink]]语法做页面交叉引用。这些双链不只是好看:
- 知识图谱:应用会解析每个页面里的
[[链接]],构建节点-边图结构,计算关联度、发现社区聚类(Louvain 算法) - Obsidian 兼容:整个 Wiki 目录可直接作为 Obsidian 仓库打开,双链无缝迁移
可以说,wikilink 补全质量直接决定了知识网络的密度。链接越多越准,图谱里的"惊奇连接"和"知识空白"检测就越有价值。
核心机制:AI 只给"替换清单",代码动手改文件
整个补链逻辑集中在 enrich-wikilinks.ts。设计注释里有一段很有启发:早期版本让 LLM 直接返回"插好链接的完整页面",结果不少模型把页面重写、扩写甚至翻译了一遍,用户内容被毁。于是团队改成了现在的 v2 方案——AI 只输出一张 JSON 替换清单,字符串替换全部由代码完成(见 enrich-wikilinks.ts#L8-L25)。
这个分工带来四个"硬保证":
| 保证 | 说明 |
|---|---|
| 内容零漂移 | 除了插入的[[ ]],页面其余字节完全不变 |
| frontmatter 安全 | YAML 头部被切出来单独处理,绝不触碰 |
| 长度可预测 | 页面长度恰好增长 4 × 链接数 |
| 坏输出无害 | LLM 就算"发疯"(重写、评论、乱码),也只会被解析器丢弃,不会写坏页面 |
一次补链的完整流程
- 并行读取三样东西:目标页面正文、
wiki/index.md(已有页面目录)、整个 wiki 目录树(见 enrich-wikilinks.ts#L33-L37) - LLM 返回 JSON 清单:提示词要求模型只输出
{"links": [{"term": "原文里的词", "target": "目录中的页面名"}]},并规定 term 必须是正文中逐字存在的子串、target 必须是目录中真实存在的页面(见 enrich-wikilinks.ts#L52-L77) - 代码做安全校验:模型说得天花乱坠也没用——每个 target 都会与磁盘上真实存在的
.md页面对账,对不上的链接直接丢弃;目录读取失败时宁可整轮跳过,也不引入死链(见 enrich-wikilinks.ts#L99-L104) - 精准替换:对每个词只在首次出现处替换,且跳过 frontmatter 和已处于
[[...]]中的文本;词面与目标名一致时写[[Transformer]],不一致时保留原文展示、写成[[目标页|原文]](见 applyLinks 实现)
为什么"JSON 清单 + 代码替换"比"整页重写"高明
这套设计本质上把判断权和修改权分离了:
- 模型最擅长判断——"Attention 这个词应该链到 attention 页"
- 代码最擅长修改——精确的字符串插入、跳过已有链接(
findUnlinkedOccurrence)、防止二次链接(linkedTargets去重)
容错解析器(parseLinkResponse)还能容忍模型多嘴:自动剥掉 ``` 围栏、从杂音中抠出第一个配平的{...},解析失败就返回空清单,宁可什么都不做,也不冒险。相关行为由场景化测试固化下来,例如"给综述页补上 Transformer/Attention 双链"、"frontmatter 永不被动"(见 enrich-scenarios.ts)。
补上的链接去哪了:从双链到知识图谱
自动补链不是终点,链接落盘后,LLM Wiki 的图谱引擎会接管:
- 建图:wiki-graph.ts 用正则提取每页全部
[[链接]],通过大小写/连字符归一化解析目标,去重边、统计链接数(见 extractWikilinks 与 buildWikiGraph) - 渲染:阅读视图中,wikilink-transform.ts 把
[[target|alias]]转成标准 markdown 链接显示,且不会误伤代码块里的示例语法 - 洞察:图谱之上跑 Louvain 社区检测,自动发现知识聚类、惊奇连接与知识空白
与此同时,Lint 检查还会反向督促网络密度——检测到某页面没有任何出站 wikilink时,会主动建议"添加与相关实体和概念的交叉引用"(见 zh.json#L431)。
这套机制给新手用户的 3 个实用提示
- 先攒页面,再谈密度:补链的 target 必须是
index.md里已存在的页面。Wiki 越丰富,可链目标越多,AI 能补出的网络越密 - 命名要稳定:页面文件名就是链接锚点,
transformer.md和Transformer.md这类同名页会让解析产生歧义而被跳过(见 collectWikiPageSlugs 的处理),保持命名风格统一即可 - 放心让 AI 补:最坏情况是"这轮没补上",不存在"补坏了"——JSON 清单 + 磁盘对账的双重防线,决定了这个机制可以默认开启、无需人盯
小结
LLM Wiki 的 wikilink 补全机制是一个典型的"AI 判断、代码执行"工程范本:LLM 负责发现哪些词该链到哪个页面,代码负责校验目标真实存在并做字节级安全的插入。你只管写笔记,交叉引用由 AI 悄悄织好;链接织密了,知识图谱、社区洞察和 Obsidian 互通的价值才真正兑现。核心实现都摆在 enrich-wikilinks.ts 里,值得想理解"如何安全地让 LLM 改用户文件"的开发者一读。
【免费下载链接】llm_wikiLLM Wiki is a cross-platform desktop application that turns your documents into an organized, interlinked knowledge base — automatically. Instead of traditional RAG (retrieve-and-answer from scratch every time), the LLM incrementally builds and maintains a persistent wiki from your sources。项目地址: https://gitcode.com/GitHub_Trending/ll/llm_wiki
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考