你有没有这种体验?
读了一堆技术文章,做了笔记,收藏了链接。一个月后,全忘了。
不是你记性差。是知识放在那里不会自己增值。
就像钱存在银行才有利息,知识也需要一个让它自动关联、自动演化、自动被使用的机制。

我给这个机制起了个名字:知识复利飞轮。
今天分享我是怎么用 Python + LLM + MCP 把这个飞轮搭起来的。不是 demo,是每天都在跑的生产系统。
先说一个反直觉的事实:
99% 的知识管理工具都在解决"怎么存",没人解决"怎么用"。
Notion、Obsidian、语雀——你可以建文件夹、打标签、做双向链接。然后呢?
问题的根源:知识管理缺少一个数据飞轮。
普通的知识管理:
学习 → 记笔记 → 吃灰 → 遗忘知识复利飞轮:
摄入新知识
→ 自动发现它与已有知识的隐藏关联
→ 知识图谱自动演化
→ 搜索排名因使用反馈而提升
→ AI 助手在工作时自动引用你的知识
→ 知识被用得越多,排名越高,越容易被发现
→ 飞轮转起来核心区别:不是你去找知识,是知识来找你。


存储层用 Markdown + frontmatter,不用数据库。因为知识应该人可读、git 可管理、不依赖任何平台。
普通摄入:把文章丢进文件夹。
ExoMind 的摄入:
raw笔记 → LLM 提取实体/概念/关系 → 写入知识图谱 → 自动发现跨域关联 → 更新搜索索引一条命令:
exo add "Redis的持久化方案RDB和AOF各有优劣..."LLM 会提取出:
这个"跨域关联"是飞轮的关键。你学 Redis 持久化的时候,系统自动提醒你:你之前学 Kafka 时也遇到类似的持久化问题。 两个领域的知识开始产生化学反应。
def ingest(source, wiki_mgr, llm, tags=None):
# 1. 三层去重:来源→原文→标题
dup = check_duplicate(wiki_path, title, content)
# 2. LLM 提取结构化知识
response = llm.chat(system="你是知识提取专家", user=prompt)
entities = parse_entities(response) # 实体
concepts = parse_concepts(response) # 概念
relationships = parse_relations(response) # 关系
# 3. 写入知识图谱
for entity in entities:
graph_manager.ingest_entity(**entity)
for rel in relationships:
graph_manager.ingest_relationship(**rel)
# 4. 跨域发现(飞轮关键)
discovery = AutoRelationDiscovery(wiki_path, graph)
discovery.discover_all_relations()
applied = discovery.apply_discovered_relations(graph_manager)
# 上面这一步让新知识和已有知识自动产生关联
# 5. 更新搜索索引
search_engine.build_index()知识不是一成不变的。今天学的 Redis 知识,明天看到新的最佳实践,应该自动更新。
class KnowledgeEvolution:
def apply_evolution(self, suggestion):
# 1. 保存版本快照(可回滚)
self._save_version(entity_id, content, metadata)
# 2. 智能合并冲突
# aliases/related → 取并集
# description → LLM 智能合并,不是简单覆盖
metadata, decisions = self._apply_update(metadata, changes)
# 3. 写入 + 记录演化日志
self._log_evolution(suggestion, hash_before, hash_after)演化有四种类型:
类型 | 触发条件 | 示例 |
|---|---|---|
expand | 内容过短(<100字) | "Redis"只有一句话,需要补充 |
update | 新信息补充旧知识 | 学到 Redis 7.0 的新特性 |
merge | 发现重复实体 | 两个 "Kafka" 实体需要合并 |
refresh | 30天未更新 | 知识可能过时,需要刷新 |
这是最有杀伤力的一环。
我给 Claude Code 写了一个 hook,每次你在对话中提到技术关键词,系统自动把相关知识注入到 AI 的上下文中。

你输入: "我遇到一个 Kafka 消费延迟的问题"
↓
Hook 检测到关键词: Kafka、消费延迟
↓
自动注入知识库中已有的 Kafka 相关知识到上下文
↓
Claude 回答时已经知道你之前学过的 Kafka 知识不需要你手动搜索,不需要你告诉 AI 你的背景。知识自动出现在它需要的地方。
Hook 的核心是一行 bash:
// ~/.claude/settings.json
{
"hooks": {
"UserPromptSubmit": [{
"type": "command",
"command": "~/.claude/scripts/exomind-context.sh"
}]
}
}脚本做的事:
# 1. 从用户消息提取关键词
# 2. 在知识库中匹配
# 3. 把匹配到的知识内容直接注入到上下文
# 4. 同时记录到使用日志(飞轮数据)关键词匹配支持中英文:
# 英文:精确匹配
en_words = set(re.findall(r'[A-Za-z][A-Za-z0-9_+-]{2,}', msg))
# 中文:滑动窗口 substring 匹配
cn_words = set(re.findall(r'[\u4e00-\u9fff]{2,6}', msg))知识被使用后,质量分会变化:
# 搜索排名公式
score = (
max(click_score, consumption_score) * 0.6 # 被使用或被消费
+ feedback_score * 0.4 # 被点赞或被踩
)这意味着:
MCP 协议让任何 AI Agent 都能给出反馈:
# MCP rate_feedback 工具
# Agent 查询知识后可以直接点赞或踩
mcp__exomind__rate_feedback(page="entities/Redis.md", rating="positive")怎么知道飞轮在转?一个命令:
exo flywheel输出:

系统跑了两个月:
指标 | 数值 |
|---|---|
知识页面 | 2,100+ |
知识图谱节点 | 760+ |
关系边 | 1,400+ |
Hook 自动注入 | 每次 Claude Code 对话 |
跨域关联自动发现 | 每次摄入触发 |
RSS 自动摄入 | 6 个源 |
代码行数 | ~6,000 行 Python |
我在 Claude Code 里开发一个微信发布服务,遇到 access_token 过期问题。我输入:
"微信 access_token 过期怎么处理?"
Hook 自动注入了我之前学过的:
Claude 的回答直接引用了我自己的经验,不是泛泛而谈。
这就是知识复利:过去学的东西,在你需要的时候自动出现。
你可能看过我之前的文章《从零搭建个人 Wiki RAG》。那个系统解决的是"存储+检索"。
ExoMind 解决的是更深层的问题:
Wiki-RAG | ExoMind |
|---|---|
存储知识 | 让知识自动增值 |
你去找知识 | 知识来找你 |
静态的 | 自动脉化、自动关联 |
单人用 | AI Agent 也能用 |
没有反馈 | 质量分驱动排名 |
# 安装
pip install exomind-manager
# 初始化
exo init ~/my-wiki
# 摄入第一条知识
exo add "你学到的任何知识..."
# 配置 Claude Code hook(自动注入)
# 在 ~/.claude/settings.json 加一行
# 查看飞轮状态
exo flywheelKarpathy 说知识管理是 AI 工作流的核心成本。
我说:知识管理的核心不是存储,是让知识自己产生利息。
搭建一个飞轮,让知识在你睡觉的时候也在增值。
飞轮:https://www.processon.com/view/6586e37ed0c8d4555f9d9599