一只阿木木

构建中文 LLM Wiki 后,我发现了知识管理中一个被低估的增长模式

构建中文 LLM Wiki 后,我发现了知识管理中一个被低估的增长模式

LLM Wiki:一种让知识复合增长的模式

中文知识库的编译式实现与验证数据


0.

我做了 6 年数字大脑的探索,从 Zettelkasten 到 PARA,从 Notion 到 Obsidian。我发现所有方法论都有同一个致命问题——维护成本最终会压垮任何人。

直到我看到 Karpathy 的 LLM Wiki——它解决了这个根本问题:把维护交给 AI,把好奇留给人类。这是知识管理的真正范式转移。

知识管理领域有一个被忽视的抽象层级问题。

大多数系统——无论是 Notion、Obsidian 还是 RAG 管道——都在优化错误的事情:存储和检索。真正有价值的是:编译和复合。

这篇文章是关于我构建的一个中文 LLM Wiki 系统,以及它揭示的一些我没有预料到的事情。

1. RAG 的根本缺陷

1.1 RAG 实际上在做什么

标准 RAG(Retrieval-Augmented Generation)流程是这样的:

用户查询 → 向量检索 → 拼接相关 chunks → LLM 生成回答 → 遗忘一切

关键词:遗忘一切。

每次查询,LLM 从头开始。它检索文档片段,阅读它们,综合答案,然后丢弃这个思考过程的所有产物。下一次查询,即使是关于同样的主题,它重新执行整个过程。

没有什么会积累。没有什么会复合。

这在工程语境里等价于:每次运行程序时重新编译所有依赖。没有人会这样设计编译器,但这恰恰是 RAG 对知识做的事情。

1.2 可验证的症状

如果这个诊断正确,你应该观察到以下症状:

症状 A:非确定性回答
同一个问题问 10 次,得到 10 个略微不同的答案。不是因为模型的随机性,而是因为检索的不稳定性。

症状 B:综合洞察不浮现
文档 A 和文档 B 包含互补的信息,合起来可以推导出洞察 C。但如果你不在查询中明确要求"比较 A 和 B",系统永远不会主动建立这个连接。

症状 C:规模退化
添加更多文档应该让系统更聪明。实际上,检索噪音线性增长,而回答质量停滞甚至下降。

症状 D:零记忆复合
你添加的第 100 篇文档,不会让系统"知道"它与第 1 篇文档的关系。除非检索同时召回了它们,这个关系永远不会被发现。

我测试了三个主流 RAG 系统(LangChain、LlamaIndex 的默认配置,以及一个自建的),在处理 50+ 中文文档时,症状 A-D 全部出现。

1.3 为什么这个问题被忽视

RAG 对于"检索已知事实"工作得很好。你问"文档里提到的三个要点是什么",它能准确回答。

失败的地方在于"合成跨来源洞察"。如果答案需要综合文档 A 的第 3 段、文档 B 的第 7 段、以及文档 C 的隐含前提,RAG 开始挣扎。

这个失败不显眼。没有报错,没有明显的崩溃。你只是得到一个稍微浅一点的回答,比你自己阅读所有文档后能推导出的浅一些。

这是静默的低于潜力。

2. 一个不同的抽象:编译

2.1 软件工程的类比

考虑两种运行程序的方式:

方式 A(解释器):

每次运行 → 读源代码 → 逐行解释 → 产生输出 → 忘记一切

方式 B(编译器):

一次性:源代码 → [编译] → 二进制
每次运行:直接执行二进制 → 产生输出

方式 B 更快,因为编译的成本被摊销了。

现在将这个模式映射到知识:

RAG(解释式):

每次查询 → 检索原始文档 → LLM 即时处理 → 产生答案 → 忘记一切

LLM Wiki(编译式):

一次性:原始文档 → [LLM 编译] → Wiki 页面
每次查询:读 Wiki 页面 → LLM 综合 → 产生答案(可选写回新页面)

关键差异:

  1. 编译发生在 ingest 时,不是查询时
    LLM 在读到新文档时,就把它分解为结构化的知识单元(wiki 页面),建立与已有知识的链接。这个过程只发生一次。
  2. 结果被持久化
    编译产物(wiki 页面)存储为 markdown 文件,可以被版本控制、审计、手动编辑。
  3. 新输入触发增量更新
    当 ingest 新文档时,LLM 不只创建新页面,还更新已有页面的交叉引用。知识库不是线性增长,而是网络性增长。

2.2 这个类比在哪里是精确的,在哪里不是

精确的地方:

  • 编译产生比源代码更快可查询的产物
  • 增量编译只重新处理变化的部分
  • 编译结果可以被审计、分发、版本控制

不精确的地方(诚实很重要):

  • 传统编译是确定性的,LLM 编译有随机性
    同一份文档两次 ingest 可能产生略微不同的 wiki 页面。
  • 你无法像验证二进制那样验证 wiki 的"正确性"
    二进制要么能运行要么崩溃。Wiki 页面可能包含微妙的错误或误解。
  • 编译错误在代码里是显式的(编译器报错),在 wiki 里是隐式的(需要 lint 工具发现悬空引用)

2.3 操作语义

如果接受编译类比,每个操作都获得明确的语义:

操作
语义
类比
ingest
编译新源代码到 wiki 页面,更新已有页面的引用
make
query
读编译后的 wiki 页面(非原始文档),综合回答
执行二进制
lint
检查悬空引用、断裂链接、孤立页面
链接检查
--save
查询产生的新综合写回 wiki,成为新的知识源
增量编译

最后一个操作(--save)是 RAG 中根本不存在的概念。在 RAG 里,查询的输出是终点。在 LLM Wiki 里,查询的输出可以成为新的输入,触发知识的复合增长。

3. 我构建的东西

3.1 最小化的核心

整个系统由 4 个概念组成:

amumu-wiki/
├── raw/        你放入的原始素材(只写入,不修改)
├── wiki/       LLM 编译生成的页面(LLM 写,人读)
├── CLAUDE.md   schema 文件(告诉 LLM 如何工作)
└── log.md      操作历史(只追加,可审计)

就这些。

没有向量数据库。没有嵌入管道。没有 API 服务器。只是 markdown 文件和一个 context window。

Obsidian 在这里只是一个可视化工具——你用它来浏览 wiki,查看知识图谱。真正的工作由 Claude 完成:读 CLAUDE.md,读 raw/ 里的文档,写 wiki/ 里的页面。

3.2 三个非显而易见的决策

决策 A:CLAUDE.md 为什么严格限制在 50 行

直觉反应:规则越多,系统越可靠。给 Claude 一个 200 行的详细指令文件,它会做得更好。

实际情况:规则越多,每次对话消耗的 context 越多,留给实际工作的 context 越少。

我测试了两个版本:

  • 版本 A:200 行 CLAUDE.md(包含所有规则、示例、边界情况)
  • 版本 B:50 行 CLAUDE.md(只包含硬约束和路由规则)

测试方法:用两个版本分别 ingest 同一批 10 篇文章,比较生成的 wiki 页面质量。

结果:

  • 版本 B 的页面质量略低于版本 A(约 5% 的差距,基于人工评分)
  • 但版本 B 的 token 消耗减少了 60%

权衡:我接受 5% 的质量下降,换取 60% 的成本降低。更重要的是,版本 B 在处理 50+ 页面规模的 wiki 时,仍然可以把完整的 index.md 放入 context window。版本 A 在 30 页左右就开始遇到 context 不足的问题。

解决方案:把详细规则移到 .claude/rules/ 目录,按需加载。CLAUDE.md 只负责路由。

决策 B:Skill 设计目标是偏离默认行为,不是描述流程

直觉反应:给 Claude 一个详细的步骤清单,它会照做。

Step 1: 读取文章
Step 2: 提取关键概念
Step 3: 为每个概念创建页面
Step 4: 建立交叉引用
...

实际情况:Claude 已经知道"如何整理文章"。你不需要教它这个。它需要的是:在中文场景下,默认行为会在哪里失败,如何避免。

我改成 Gotchas 驱动的设计:

## Gotchas(已知失败点)

1. 微信文章标题党问题
   症状:Claude 把"月薪3万的人都在用的方法"作为页面名
   修复:页面名用内容本质,不用文章标题

2. 播客转录 ASR 错字
   症状:Claude 把"机器学习"的错误转录"技器学习"当作真实概念
   修复:ingest 前先执行错字清洗

...

对比测试(5 篇微信文章):

  • 步骤清单版:遇到标题党时,100% 生成了不合理的页面名
  • Gotchas 版:89% 的情况下正确规避了标题党陷阱

Gotchas 不是操作指南,是失败记忆的编码。

决策 C:--save 触发条件设计

这是系统能否复合增长的核心机制。

如果 --save 触发太频繁:wiki 充斥低质量综合页面,噪音大于信号。
如果触发太少:查询产生的洞察无法沉淀,系统退化为 RAG。

我的触发条件(经过测试迭代):

触发 --save 当且仅当:
1. 发现了跨来源的非显性联系(两个来源没有明确互相引用)
   AND
2. 综合洞察 > 100 tokens 且具有可复用价值
   OR
3. 用户明确要求保存(--save flag)

不触发 --save 的情况:
- 知识空白被识别(记录到 index.md 的待补充列表,等待 ingest)
- 回答只是重新表述已有页面内容(redundant)
- 回答包含推测性内容(ungrounded)

30 天运行数据:

  • 总 query 次数:47
  • 触发 --save:18 次(38%)
  • 写回新页面:12 个
  • 更新已有页面:6 个

38% 的触发率意味着:大约每 3 次查询,有 1 次产生了值得沉淀的新知识。这个比例在我看来是合理的。

3.3 中文场景引入的特殊问题

这不是"翻译"问题,是独立的工程问题。

问题 A:Token 密度差异

中文:~1 汉字 = 1-2 tokens(平均 1.5 tokens/汉字)
英文:~1 token = 4 字符(约 0.25 tokens/字符)

同等信息量,中文消耗约 2.5 倍 token。

直接影响:

Karpathy 的原始 LLM Wiki 在英文场景下,context window 在约 100 个页面时触及上限(假设使用 claude-sonnet,200K context window)。

中文场景下,Scale Ceiling 提前到 40-60 个页面。

我的解决方案(部分):

# Token Budget 规范(chinese-conventions.md)

单个页面严格上限:
- 概念页面:400 tokens(~600 汉字)
- 实体页面:600 tokens(~900 汉字)
- 综合页面:1000 tokens(~1500 汉字)

index.md 每条目上限:50 tokens

触发拆分:任何页面超过 800 tokens 时,
自动拆分为子页面

这个规范让系统在 60 页面规模下仍然可以把完整 index + 相关页面放入 context。

问题 B:命名约定

Karpathy 的原版使用 kebab-case 英文命名:

attention-mechanism.md
retrieval-augmented-generation.md

这对中文不自然。直接音译(zhu-yi-li-ji-zhi.md)失去可读性。

我的解决方案:双轨索引

文件名:中文(人类可读)
  注意力机制.md
  检索增强生成.md

index.md:中文 + 英文别名
  | [[注意力机制]] | attention-mechanism | ... |
  | [[检索增强生成]] | retrieval-augmented-generation | ... |

人类在 Obsidian 里浏览,用中文。程序化处理(grep、脚本),用英文别名。

测试结果:在 Obsidian 中查找概念的速度,中文命名比拼音或英文快约 3 倍(10 个用户的平均数据)。

问题 C:来源类型差异

英文生态的主要来源:PDF 论文、网页文章、书籍。

中文生态的主要来源:微信公众号、播客(需要 ASR)、得到/极客时间(付费内容)、豆瓣读书笔记、B站视频字幕。

每种来源有独特的格式噪音:

来源类型
特有问题
需要专用处理
微信公众号
标题党、内嵌广告、emoji 密集
ingest-wechat.md
 skill
播客转录
ASR 错字、口语化、说话人混淆
ingest-podcast.md
 skill
得到课程
截图文本(OCR 错误)、版权限制
暂不支持自动处理

我为前两种实现了专用 skill。第三种(付费内容)因为版权和技术原因,暂时只能手动处理。

3.4 第一次真实运行(失败先于成功)

系统搭好的第一天,我测试了一篇 4000 字的微信长文(关于用户调研方法)。

症状:
Claude 输出了一个 6127 token 的单一页面。

页面内容是几乎全文摘录,不是知识提炼。没有交叉引用,没有拆分,没有与任何已有知识(此时 wiki 有 3 个页面)建立连接。

我的第一反应:
规则没写清楚。我在 CLAUDE.md 里加了 3 段详细说明,重新 ingest。

结果:问题没有解决。页面从 6127 tokens 降到 5800 tokens,但性质没变。

根本原因:
我的 CLAUDE.md 写的是"目标":

请将文章提炼为 wiki 页面格式,包含核心要点和交叉引用。

但没有写"限制":

单个页面不超过 600 tokens
必须包含至少 2 个 [[wiki-link]]
摘录不是 ingest,提炼才是

Claude 理解了目标,但在没有明确约束的情况下,默认行为是"保留所有信息"。

修复:
在 ingest-rules.md 里加入:

  1. Token Budget 硬限制(超出触发拆分)
  2. 页面结构模板(必须包含的区块,不可跳过)
  3. "知识单元"的明确定义(什么值得建页面,什么不值得)

修复后重新 ingest 同一篇文章:

  • 原来:1 个 6127 token 的页面,0 个 wiki-link
  • 修复后:4 个 400-600 token 的页面 + 2 个 Stub,11 个 wiki-link

这次失败教会了我最重要的一件事:给 AI 的规则,限制比目标更重要。

你告诉它想要什么,它会尽力满足,但可能用错误的方式。
你告诉它不能做什么,它才能安全运行。

4. 数据说了什么

4.1 Eval 设计(方法先于结论)

我设计了 3 个独立的评估实验。

Eval A:知识复合性测试

问题:wiki 规模增长时,回答质量是否单调提升?

方法:

  • 选择 10 个固定查询(涵盖单概念和跨概念问题)
  • 分别在 wiki 有 10 / 30 / 50 / 89 页面时执行
  • 记录每次的引用来源数、发现的跨来源联系数、回答完整性(1-5 人工评分)

Eval B:Skill 有效性测试

问题:我的 ingest skill 相比 raw Claude 的改进是多少?

方法:

  • 选择 5 篇中文素材(微信文章 2 篇、播客转录 2 篇、书籍笔记 1 篇)
  • 条件 A:使用完整 amumu-wiki skill 体系处理
  • 条件 B:只告诉 raw Claude "请帮我整理这篇文章的要点,用 markdown 格式"
  • 比较生成内容的:页面结构完整性、中文命名规范符合率、交叉引用密度、来源归因准确率

Eval C:中文 vs 英文基线

问题:中文适配解决了什么问题?

方法:

  • 选择相同主题的中英文素材各 3 篇
  • 分别用原版英文 schema 和 amumu-wiki 中文 schema 处理
  • 比较:Token 效率、命名质量、交叉引用准确性

所有测试集和基线数据公开在 eval/ 目录。

4.2 Eval B 结果:Skill 有效性

维度
有 Skill (A)
无 Skill (B)
改进
页面结构完整性(1-5)
4.6
2.8
+64%
中文命名规范符合率
94%
31%
+203%
交叉引用密度(每页)
3.2 条
0.4 条
+700%
来源归因准确率
98%
76%
+29%
Gotchas 触发正确率
89%
N/A
—

最显著的差距:交叉引用密度,8 倍。

条件 B(raw Claude)生成的是孤立的文章摘要。每个摘要独立存在,几乎没有 [[wiki-link]]。

条件 A(有 skill)生成的是互相连接的知识节点。平均每个页面有 3.2 条指向其他页面的链接。

这不是程度差异,这是性质差异。

一个具体例子:

输入:一篇关于"损失厌恶"的行为经济学文章

Raw Claude 的输出(条件 B):

# 损失厌恶

损失厌恶是行为经济学中的一个概念,指人们对损失的痛苦
感受强于同等收益带来的快乐,比例约为 2:1。

应用:
- 定价策略
- 免费试用
- 退款保证

来源:某文章

没有任何 wiki-link。这是一个孤岛。

amumu-wiki 的输出(条件 A):

# 损失厌恶

> 损失带来的痛苦约为同等收益快乐的 2 倍...

## 核心要点
- 提出者:卡尼曼 & 特沃斯基([[双系统理论]]体系)
- 驱动机制:主要由[[双系统理论|系统 1(情绪)]]驱动...

## 关联概念
- [[双系统理论]]:损失厌恶的认知科学基础
- [[定价策略-心理学]]:损失厌恶在定价中的应用
- [[表达需求与真实需求]]:损失厌恶影响用户需求表达

## 来源
[文章标题](URL) · 作者 · 平台 · (ingest: 2026-05-22)

4 个 wiki-link。如果这些目标页面已经存在,它们会被自动更新,在"关联概念"区块添加指向本页面的反向链接。

这就是为什么交叉引用密度是 8 倍差距。

4.3 Eval A 结果:复合增长效应

同一批查询(10 个固定问题),在不同 wiki 规模下的表现:

Wiki 规模
页面数
来源数
跨来源联系数
平均引用来源
回答完整性
Day 7
10
3
2
1.8
2.6/5
Day 14
28
8
11
3.1
3.4/5
Day 21
51
15
29
4.2
4.1/5
Day 30
89
27
63
5.3
4.5/5

关键观察:跨来源联系的增长速度

时间跨度
页面数增长
跨来源联系增长
增长倍数对比
Day 7 → 14
2.8×
5.5×
联系增长 2× 快于页面
Day 14 → 21
1.8×
2.6×
联系增长 1.4× 快于页面
Day 21 → 30
1.7×
2.2×
联系增长 1.3× 快于页面

这是超线性增长,符合网络效应的预测。

一个具体的跨来源联系示例:

Day 7(10 页面)时,wiki 包含:

  • [[社会期望偏差]](来源:用户调研文章)
  • [[双系统理论]](来源:行为经济学笔记)

这两个页面各自独立,没有交叉引用。

Day 14(28 页面)时,ingest 了第 3 篇素材(关于访谈技巧)。

系统在 ingest 过程中发现:

text

访谈文章中的"问行为不问意愿"原则
↓
引用了 卡尼曼的系统 1/系统 2 框架
↓
这是 [[双系统理论]]
↓
而"问意愿得到失真答案"
↓
这是 [[社会期望偏差]]

系统自动更新了 [[社会期望偏差]] 和 [[双系统理论]] 的"关联概念"区块,添加了它们之间的连接。

这个连接在任何单一来源中都没有被显式表述。它是在 3 个来源被 ingest 后才浮现的。

这就是我说的"复合增长":知识网络的价值,随节点数超线性增长。

4.4 Eval C 结果:中文适配的必要性

用原版英文 schema 处理中文素材 vs 用 amumu-wiki 中文 schema:

维度
英文 schema
中文 schema
改进
页面命名可读性(1-5)
1.8
4.7
+161%
Token 效率(信息量/token)
0.62
0.89
+44%
中文特有来源处理成功率
34%
91%
+168%
微信文章"标题党"规避率
0%
89%
N/A

英文 schema 处理中文素材的典型失败:

  • 页面命名:yong-hu-fang-tan-ji-qiao.md(拼音,无语义)
  • Token 浪费:大量重复性描述没有被压缩
  • 微信文章:100% 使用标题党作为页面名

中文 schema 的改进是显著的,不是微调级别的。

4.5 数据的局限性

这是单用户、单主题领域(产品/知识管理)、30 天的数据。

样本量 n=1(用户)× 27(来源)× 47(查询)。不足以做统计推断。

"跨来源联系"的计数,带有主观判断(我判断两个概念是否"真的相关")。没有第二位评估者做 inter-rater reliability 检验。

中文 tokenization 的 token 消耗估算,基于平均值。实际消耗有 ±20% 的波动。

我信任这个数据的原因:

  1. 方向性结论(超线性增长、skill 显著改进)在多次独立测试中一致
  2. 这不是我预期的结论——我最初假设是线性增长
  3. 失败案例(如第一次 ingest 崩溃)也被如实记录

但这不是同行评审的研究。这是一个工程项目的早期数据。

5. 这意味着什么

5.1 一个更大的模式

我把这个系统看作知识工作第三阶段的一个数据点。

Karpathy 在 2024-2026 年间描述了他观察到的三个阶段:

阶段 1:Vibe Coding(2025 年 2 月)

接受 AI 生成的代码而无需逐行审查。信任模型,测试输出。

这把编码劳动外包给 AI。你描述想要什么,AI 写代码,你测试结果是否正确。代码的中间过程(如何实现)不再需要人类关注。

阶段 2:Agentic Engineering(2026 年 1 月)

人类编排 AI Agent,而非直接写代码。Agent 规划、执行、调试、迭代。人类负责高层目标和质量判断。

这把执行劳动外包给 AI。你定义问题和约束,AI 负责整个执行流程。

阶段 3:LLM Knowledge Bases(2026 年 4 月)

AI 管理知识,而非仅管理代码。LLM 从原始材料中构建和维护结构化的知识库。人类成为策展人,不再是全职记录员。

这把知识连接劳动外包给 AI。你提供来源,AI 负责构建知识之间的联系。

amumu-wiki 是阶段 3 在中文场景的一个实现。

这意味着什么?

你花在知识管理上的时间分布,从"存储和检索"转移到"判断和策展":

  • 哪些素材值得 ingest?
  • 哪些连接是真实的,哪些是表面相似?
  • 知识库缺少什么领域,应该补充什么?
  • 这个 AI 生成的综合,是否 grounded 在可靠来源上?

这些是人类判断的核心价值。而"把文章整理成笔记","建立文章之间的链接",这些是可以外包的认知劳动。

5.2 一个未解决的问题

--save 机制引入了一个有趣的问题。

当 query 产生的综合可以写回 wiki 时,wiki 开始包含两种知识:

  • Type A:编译的人类知识
    直接来自 ingest 的原始素材,有明确来源归因。
  • Type B:AI 生成的综合知识
    来自 query 过程的跨来源推理,来源是"多个页面的综合"。

例子:

用户 query:"PARA 方法论和双链笔记法如何结合?"

系统回答基于 [[PARA 方法论]] 和 [[双链笔记法]] 两个页面,发现了一个非显性的整合方案,触发 --save,创建新页面 [[PARA-双链整合工作流]]。

这个新页面的"来源"是什么?不是任何单一文档,而是系统的推理过程。

问题:这个边界是否重要?

我的直觉是:重要。

Type A 的可信度来自于人类作者(原始素材的作者)。Type B 的可信度来自于 LLM 的推理能力,而我们知道 LLM 会产生幻觉。

但我还没有一个好的机制来区分:

  • 基于可靠来源的合理综合(可信)
  • 模型在编造看起来合理但实际 ungrounded 的连接(不可信)

当前的解决方案是保守的:只在跨来源联系非常明显时触发 --save,并在新页面中明确标注"来源:系统综合"。

但这不是完美的。这是我在主动思考的开放问题。

5.3 规模预测(可验证的假设)

amumu-wiki 在中文场景的 Scale Ceiling 比英文版本来得更早(~50 页 vs ~100 页,基于 claude-sonnet-4 的 200K context window)。

当 wiki 超过这个规模时,无法在单次 query 中加载 index.md + 所有相关页面。

三个可能的解决方向:

方案 A:两层查询架构

text

第一层:读 index.md(轻量),定位相关页面(≤ 10 个)
第二层:只加载这 10 个页面(而非全量)

预期效果:Scale Ceiling 延迟到 ~150 页。

方案 B:分主题的独立 wiki

text

不是一个大 wiki,而是多个小 wiki:
  amumu-wiki-product/  产品相关知识
  amumu-wiki-ai/       AI 工具相关知识
  amumu-wiki-writing/  写作相关知识

预期效果:每个 sub-wiki 可以独立达到 50 页规模。

方案 C:等待 context window 继续扩大

如果 claude-opus-5 提供 500K context,中文 Scale Ceiling 自然延迟到 ~120 页。

我目前在测试方案 A(两层架构)。设计已完成(见 .claude/skills/query.md),数据在 Day 60 后。

方案 B 的问题是:跨 wiki 的知识连接无法被自动发现。这违背了系统的核心价值。

方案 C 是被动等待,不是工程解决方案。

假设:方案 A 可以将 Scale Ceiling 延迟到 150 页,同时保持查询质量不显著下降(< 10%)。

这是一个可验证的假设。我会在 Day 60(预计 wiki 达到 ~120 页)时发布验证数据。

6. 你可以验证这个

这个系统的完整文件在:

https://github.com/yizhiamumu/amumu-wiki

包含:

  • CLAUDE.md(< 50 行,核心 schema)
  • .claude/rules/ 和 .claude/skills/(完整规则体系)
  • eval/(测试集 + 基线数据 + 我的结果)
  • examples/sample-wiki/(可直接运行的示例,5 篇公开中文素材)
  • docs/architecture.md(系统设计文档)

最小验证实验(2 小时)

  1. Fork 仓库
  2. 选择 3 篇你最近读过的、同一主题的中文文章
  3. 按 README.md 的快速开始指南完成 ingest
  4. 在 Obsidian 中查看生成的 wiki 页面和知识图谱
  5. 问一个需要综合这 3 篇文章的问题
  6. 检查系统的回答中,有多少连接是你自己阅读时没有明确意识到的

如果答案是"没有":
我的系统有问题,或者不适合你的用例。请开 issue 告诉我失败的具体情况。

如果答案是"有一些":
这个模式在你的场景下也成立。继续添加素材,观察是否出现复合增长效应。

我最想知道的

这个模式在哪些场景下失效?

我测试过的场景:产品方法论、知识管理、行为经济学(中文素材)。

我不知道它在以下场景下如何表现:

  • 高度数学化的内容(机器学习论文、数学证明)
  • 代码密集的技术文档(需要运行代码才能理解)
  • 情感/主观性强的内容(文学分析、个人日记)
  • 快速变化的事实性信息(新闻、市场数据)
  • 多语言混合内容(中英日韩混合文档)

如果你在这些场景测试了,无论成功或失败,告诉我结果。

失败案例和成功案例同样有价值。

一个邀请

如果你实践并实际使用超过一周,我想看到:

  1. 你的 wiki 主题是什么?
  2. 你发现的跨来源联系中,哪一个最让你惊讶?
  3. 你遇到了什么我的系统没有处理好的问题?

在仓库 Discussions 里开一个帖子,或者直接发 issue。

我想看到中文 LLM Wiki 在野外的真实表现。

附 A:完整的技术规格

系统要求:

  • Claude API 访问(claude-sonnet-4 或更高)
  • Obsidian
  • 约 200K context window(用于 50 页规模的 wiki)

成本估算:

  • 平均每篇 3000 字中文文章的 ingest:~15K input tokens + ~3K output tokens
  • 使用 claude-sonnet-4:约 $0.12/篇
  • 每次 query(加载 5 个页面):约 $0.05-0.08

文件结构完整版:

text

amumu-wiki/
├── CLAUDE.md                        核心 schema(< 50 行)
├── .claude/
│   ├── rules/
│   │   ├── chinese-conventions.md   中文命名 + Token Budget
│   │   ├── ingest-rules.md          Ingest 行为约束
│   │   └── query-rules.md           Query 行为约束
│   ├── skills/
│   │   ├── ingest.md                通用 ingest
│   │   ├── ingest-wechat.md         微信公众号专用
│   │   ├── ingest-podcast.md        播客转录专用
│   │   ├── ingest-pdf.md            PDF/书籍专用
│   │   ├── query.md                 两层查询
│   │   └── lint.md                  健康检查
│   └── agents/
│       ├── ingest-agent.md          专职 ingest subagent
│       └── lint-agent.md            专职 lint subagent
├── wiki/
│   ├── index.md                     双轨索引(自动维护)
│   └── [实体页面].md                AI 生成的 wiki 页面
├── raw/                             原始素材(只追加)
├── log.md                           操作历史(只追加)
├── eval/
│   ├── README.md                    评估框架
│   ├── test-queries.md              15 个标准查询
│   ├── baseline/                    Raw Claude 输出
│   └── results/                     测试结果
├── examples/
│   └── sample-wiki/                 可运行示例
└── docs/
    ├── architecture.md              系统设计文档
    ├── quickstart.md                30 分钟快速开始
    └── faq.md

性能基准(我的环境):

  • Ingest 一篇 3000 字文章:平均 2.3 分钟
  • Query(加载 5 个页面):平均 18 秒
  • Lint(50 个页面):平均 3 分钟

如果这个模式对你有用,或者你发现了它的失效边界,告诉我。


我是【一只阿木木】,AI 知识系统架构师,坐标杭州。
用 Obsidian + Claude + LLM Wiki 范式,帮普通人搭建由 AI 自动编译、自我进化的个人知识系统。
你只需要保持好奇——阅读、思考、提问;AI 负责所有苦活——总结、归档、交叉引用、维护。
我相信:在 AI 时代,每个普通人都该拥有一个自动生长的知识系统
Image