24 小时搭建个人知识管理系统:一份工程师的架构设计与落地拆解
传统的笔记 App 解决不了这个问题——它们没有知识关联,没有自动化,没有面试导向的复习机制。于是我花了一个周末,重新设计了整套个人知识管理架构。
为什么我要重新设计知识管理系统
我决定正式往 FDE(Forward Deployed Engineer)方向发力。这个角色需要同时覆盖四个知识域:扎实的系统架构底子、AI 工程化能力(RAG / LLM / Multi-Agent)、产品与商业判断、客户现场的咨询交付能力。
问题是,这四块知识之间联系非常紧密,但也各自有独立的深度。传统的做法是一边学一边记笔记,存进 Notion 或者 Bear,然后等到面试前再翻出来复习。我用这套方式做了两年,结论是:对于结构性知识积累,这套方式效率极低。具体体现在三个地方:
所以我的需求不是"记笔记",而是设计一套能自动关联知识、能提醒复习、能量化进度的系统。这是个工程问题,不是笔记 App 选型问题。
设计原则:工程师思维做知识管理
在动手之前,我先定了四条设计原则,这些原则后来直接决定了技术选型和目录结构:
整体架构:三层技术栈
整套系统分三层,每层职责清晰:
这个三层结构的关键决策是:Obsidian 只做界面,不做逻辑。它负责展示 Markdown 文件、维护双向链接,但复杂的逻辑全交给 Python。这样的好处是 Obsidian 挂掉或者换掉,数据和逻辑层完全不受影响。
目录结构:FDE 能力金字塔的物理映射
目录结构不是随手建的,它直接对应 FDE 的能力模型。我先画了一张能力金字塔,然后把它映射成文件系统:
每篇笔记放在对应层级的目录下,并且每篇笔记的头部都有统一的 YAML frontmatter,这是整套自动化能工作的基础:
implementation_status 这个字段是我自己加的,用来区分"只看懂了理论"和"真的在项目里用过"——面试时这个区别非常重要,Dataview 插件可以直接按这个字段筛出来复习。
自动化工具链:把重复劳动交给代码
整个自动化层是一个 Python CLI 工具,入口是 fde-cli,下面挂了四个核心子命令:
1. 知识摄取(ingest)
给定一个 PDF 或者 Markdown 文件,自动切块、生成向量嵌入、写入 Qdrant,同时在 Obsidian 目录里生成对应的结构化笔记草稿。核心代码大概长这样:
2. 学习路径生成(path)
读取所有笔记的 frontmatter,构建一张知识依赖图(prerequisites 字段就是有向边),然后做拓扑排序,输出"今天应该学什么、先学什么后学什么"的排好序的清单。这解决了一个很具体的问题:知识点之间有依赖关系,但大多数学习计划都假装这个依赖不存在。
3. 间隔重复(review)
基于 SM-2 算法,根据每次复习的质量评分(0–5)动态计算下次复习时间。所有复习记录存在 docs/review_data.json 里,运行 fde-cli review 就能看到今天有哪些笔记到期了。
4. 面试模拟(interview)
从题库里按类型权重抽题,每道题用 Claude API 评估你的回答,给出维度评分(技术准确性、业务关联、表达清晰度)和改进建议,结果写入 JSON 文件留档。面试报告有历史对比,能看到哪个维度在提升、哪个维度还在原地踏步。
24 小时落地清单
如果你想复刻这套系统,下面是我实际走过的时间线,每个阶段的目标和产出写得很具体,避免陷入"配置了半天什么都没做"的陷阱:
-
Hour 0–2目录设计 + Obsidian 初始化先画你自己的能力金字塔(不超过 4 层),把每一层映射成一个顶层目录。在 Obsidian 里打开这个文件夹,安装 4 个插件:Dataview(结构化查询)、Templater(模板)、Tasks(任务追踪)、Calendar(复习日历)。不要在这个阶段折腾主题和外观,这是最常见的时间黑洞。
-
Hour 2–6设计 frontmatter 规范 + 写第一批模板定义你自己的 frontmatter 字段,关键字段:
type、difficulty、implementation_status、prerequisites、tags。用 Templater 把这些字段固化成模板。写 3 种模板就够用:概念笔记、书籍笔记、面试题。模板写好后,用第一篇真实笔记测试一遍流程是否顺畅。 -
Hour 6–12搭 Python 环境 + 跑通间隔重复先只做间隔重复这一个功能:扫描所有 Markdown 文件读取 frontmatter,生成初始复习记录,实现 SM-2 算法,写一个 CLI 命令输出"今天该复习哪些"。这个功能独立、有即时反馈,是验证整套工具链能不能跑起来的最快路径。Qdrant 和 Claude API 的集成留到后面。
-
Hour 12–18迁移存量知识 + 测试 Dataview把原来零散的笔记迁移进来,重点是补上 frontmatter——这步比写内容重要,因为没有结构化元数据,后面所有自动化都失效。迁移完之后,用 Dataview 写几条查询测试:按 difficulty 筛、按 implementation_status 筛、找出所有 prerequisites 包含某个知识点的笔记。查询跑通说明结构是对的。
-
Hour 18–22接入 Claude API + 面试模拟跑通配置
.env文件,加入ANTHROPIC_API_KEY。实现面试模拟的最小版本:随机抽一道题,把你的回答发给 Claude,拿到评分和反馈,写入 JSON。第一版不需要漂亮的输出格式,能跑通闭环就行。 -
Hour 22–24建 Git 仓库 + 写 README初始化 Git,把
.env、__pycache__、大文件(PDF)加进.gitignore,提交第一版。README 里写清楚:这个项目是什么、目录结构是什么、怎么跑起来。这步容易被跳过,但两周后你自己都会忘记某些配置是干什么的。
踩过的几个坑
这套系统从零到可用大概花了一个周末,但期间踩了几个让我白白花掉 4–5 小时的坑,列在这里:
sys.stdout.reconfigure(encoding="utf-8") 就解决了,但找到这个原因花了将近一小时。现在这套系统能做什么
这套系统现在能做的事情:用自然语言检索跨层级的知识点,得到带上下文的结构化答案;按能力模型自动排出当日复习队列,不需要人工判断先看什么;跑完一次面试模拟后给出多维度评分和历史对比,清楚看到哪个维度在提升、哪个还在原地踏步。
更重要的是,知识之间的关联变得可见了。Obsidian 的图谱视图能清楚看到"RAG 架构"连着"LLM 工程化"连着"企业 AI 实施"——这张图比任何思维导图都能帮你理解你自己的知识结构。
如果你正在系统性地准备某一个方向的转型,我的建议是:别把时间花在选笔记 App 上,把时间花在设计你自己的知识分层结构上。结构设计好了,用什么工具都能跑起来。
这套系统的完整代码和目录结构在 GitHub 上公开,欢迎 fork 和提 issue。有问题也可以发邮件:shaoyanyan91@163.com