Skip to content

abinggo/obsimind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

163 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ObsiMind

基于 Karpathy LLM Wiki 模式的个人知识库系统。Claude Code 做知识管家,Obsidian 做可视化前端。

两大场景

  • 📚 知识整理:喂文章/PDF/剪藏,AI 编译成 wiki 概念网络
  • 🧑‍🏫 代码仓库教学:给 AI 一个开源项目,它陪你从 L0 全景一路到 L5 踩坑,对话自动沉淀进对应章节

前置要求


工作模型:三方分工

在上手之前先记住三方谁干什么,后面所有操作都是这三者在配合。

┌─────────────────┐       ┌──────────────────┐       ┌─────────────────┐
│   你(用户)    │       │   Claude Code    │       │    Obsidian     │
│                 │       │   (AI 管家)      │       │   (可视化前端)  │
│ 1. 扔素材       │──────▶│ 读 raw/          │       │                 │
│ 2. 打字提问     │       │ 写 wiki/         │──────▶│ 展示 + 导航     │
│ 3. 用 Obsidian  │       │ 写 outputs/      │       │ (你在这里看)    │
│    阅读 wiki/   │◀──────┼─ 修 CLAUDE.md ──┘       │                 │
└─────────────────┘       │   为准绳         │       └─────────────────┘
                          └──────────────────┘
  • 你只动三种文件:往 raw/ 扔素材、在终端跟 Claude 对话、在 Obsidian 里阅读 wiki/
  • AI 只动两种文件:读 raw/、写 wiki/ + outputs/
  • raw/ 永远不变:AI 绝不修改你丢进来的原始文件

快速开始(4 步)

Step 1. 用 Obsidian 打开知识库

只需要做一次。打开 Obsidian → Open folder as vault → 选择 obsimind 文件夹。

建议固定打开下面三个文件在侧边栏,作为"导航入口":

  • wiki/index.md — 总索引(最新添加、统计、主题领域)
  • wiki/log.md — 操作日志(AI 每次都写,看这个就知道它动了什么)
  • wiki/QUESTIONS.md — 待探索问题(你说"先到这"时 AI 会把问题存进来)

Step 2. 启动 Claude Code

打开一个终端:

cd ~/Desktop/obsimind   # 或你放 obsimind 的路径
claude

关键claude 命令必须在 obsimind/ 目录下启动,它才会自动读取同目录的 CLAUDE.md(AI 的操作手册)。

启动后你会进入 Claude Code 的对话界面。

Step 3. 扔素材 / 说指令

根据你的场景二选一(或同时都做):

场景 怎么做
📄 整理一篇文章 .md / .pdf / .txt 文件复制到 raw/articles/(或 raw/pdfs/),然后在 Claude 对话里说"处理下 raw 里的新文章"
💻 分析一个代码仓库 在终端跑 ./scripts/init-codebase.sh /项目绝对路径(软链进来),然后在 Claude 对话里说"分析仓库 X"
直接问问题 不需要扔素材,直接在 Claude 对话里提问,AI 会查 wiki + 联网补充

Step 4. 在 Obsidian 里读 AI 整理出来的结果

AI 回答你之后,会在 Obsidian 侧的 wiki/ 下产生新文件。你在 Obsidian 里有几种阅读路径:

  1. 最新添加:看 wiki/index.md 的"最近添加"表格,从最新一行点进去
  2. 按类型
    • wiki/sources/ — 每篇文章的来源摘要(每篇一页)
    • wiki/concepts/ — 文章里抽出来的通识概念
    • wiki/codebases/<repo>/00-overview.md — 某个代码仓库的学习入口
    • wiki/topics/ — 按领域做的金字塔导航页(文章/代码攒多了之后 AI 会自动建)
  3. 跟着链接跳:任何一个 wiki 页都有 [[相关概念]] 双链,点开就能串着看
  4. 关系图:Obsidian 左下角的"图谱视图"(Graph view)能看到整个知识网络

Step 5. 继续、健康检查、暂停

你说的话 AI 做什么
继续 / 上次没看完的 列出所有进行中的章节 + QUESTIONS.md 里待探索问题
健康检查 scripts/lint.py,汇报断链、孤儿、缺 frontmatter、代码仓软链失效等
先到这 把没答完的问题存到 QUESTIONS.md,章节进度保存,下次接着来

两种场景:文章 vs 代码仓库

场景 A:整理文章(INGEST / EXPLORE)

适用:看到一篇好文章、下载了一份 PDF、用 Web Clipper 剪藏了一个博客页。

流程

1. 把文件放进 raw/articles/ 或 raw/pdfs/ 或 raw/clippings/
2. 终端里跟 Claude 说:"处理下 raw 里的新文章"
3. AI 做 INGEST:
     - 读原文
     - 在 wiki/sources/<文章名>.md 写来源摘要(含原文核心观点)
     - 从原文抽概念,每个概念写到 wiki/concepts/<concept>.md
     - 抽关键实体(人/公司/产品),写到 wiki/entities/
     - 建立 [[Wikilink]] 交叉引用
     - 更新 wiki/index.md 的"最近添加"
     - 在 wiki/log.md 记一笔
4. 在 Obsidian 里阅读:
     - 入口选 wiki/index.md,找到刚加的那条,点进去
     - 或直接打开 wiki/sources/<文章名>.md
     - 沿着 [[链接]] 往下跳看每个概念

场景 B:学代码仓库(CODEBASE_INIT / CODE_TUTOR)

适用:想吃透一个开源项目(vllm / langchain / 你同事的代码仓)。

类似 zread.ai 的"小白陪学"体验:给 AI 一个代码仓库,它分层 L0~L5 陪你吃透,对话自动沉淀到 wiki。

B-1. 软链代码仓库(准备原料)

cd ~/Desktop/obsimind
./scripts/init-codebase.sh /绝对路径/到/你的/项目
# 例:./scripts/init-codebase.sh ~/Desktop/vllm
# 可选指定别名:./scripts/init-codebase.sh ~/Desktop/vllm my-vllm

脚本会在 raw/codebases/<项目名>/ 创建软链不复制源码(节省空间,且源码更新自动同步)。

B-2. 初始化教学大纲

在 Claude 对话里说:

分析仓库 vllm

AI 会执行 CODEBASE_INIT,三轮扫描(结构/架构/流程)后生成:

  • wiki/codebases/vllm/00-overview.md — L0 全景入口(含金字塔图)
  • wiki/codebases/vllm/curriculum.md — 六章学习大纲(L0~L5)
  • wiki/codebases/vllm/glossary.md — 项目专有术语表
  • wiki/codebases/vllm/qa-log.md — 追问索引

B-3. 在 Obsidian 里打开学习入口

AI 初始化完成后,你要去 Obsidian 里打开两个文件作为学习起点

  1. wiki/codebases/<项目名>/00-overview.md — 先看全景,建立宏观印象
  2. wiki/codebases/<项目名>/curriculum.md — 再看大纲,知道整条学习路径

B-4. 逐章陪学(CODE_TUTOR)

看过大纲后回到 Claude Code,说:

开始学 vllm 第 1 章

AI 执行 CODE_TUTOR,每章按:

  1. 预读(列出本章要理解的 3 件事 + 对应源码文件)
  2. 讲解(类比 → 代码片段 → 原理拆解)
  3. 自测题(2~3 个)
  4. 推荐拓展方向(3~5 个)

结果写入对应章节页:

  • L1 架构 → 01-architecture.md
  • L2 核心模块 → 02-modules/<模块名>.md(每模块一页)
  • L3 关键流程 → 03-flows/<流程名>.md
  • L4 设计模式 → 04-patterns/<模式名>.md
  • L5 踩坑 → 05-pitfalls.md

在 Obsidian 里跟着节奏读:AI 每写完一个章节页,你就在 Obsidian 里打开它看,不懂的回到 Claude 追问即可。

B-5. 追问(CODE_DIVE)

学习中任何不懂的都可以直接问,例如:

这个 scheduler.schedule() 具体怎么做的?

AI 执行 CODE_DIVE

  • 给出 raw/codebases/vllm/vllm/core/scheduler.py:123 这种精确定位
  • 画出调用链(谁调它、它调谁)
  • 答案追加到当前章节页的 ## FAQ(不会散到其他地方)
  • 通识概念(如 PagedAttention)同时写到 wiki/concepts/,建立双向 Wikilink

B-6. 暂停 / 恢复

先到这

→ 当前章节进度保存到 curriculum.md(状态改为"进行中"),未答完的问题进 QUESTIONS.md

继续

→ 下次说这个,AI 会合并列出所有进行中的章节 + 待探索问题,供你选择从哪恢复

B-7. 跨仓库对比(CODE_REFLECT)

当你学完 2+ 个相关仓库后:

vllm 和 sglang 在调度策略上有什么区别?

AI 生成 wiki/synthesis/comparison-scheduling.md 对比分析页。

B-8. 主题金字塔入口(TOPIC_COMPILE)

当某个领域累积了 2+ 仓库 + 5+ 概念后:

整理一下 AI Infra 领域的入口

AI 在 wiki/topics/ai-infra.md 自动编排金字塔导航页,版式对齐你手写的分层知识入口(定义 → 为什么重要 → N 层金字塔 → 学习路径 A/B/C/D)。

这就是你最终的"有逻辑有层次感"的个人知识库入口页

目录结构

obsimind/
├── CLAUDE.md              # 系统配置(Claude Code 的操作手册)
├── README.md              # 本文件
├── raw/                   # 原始素材(不可变)
│   ├── articles/          # 文章
│   ├── clippings/         # Web Clipper 剪藏
│   ├── conversations/     # 对话提取的知识
│   ├── codebases/         # 代码仓库软链(由 init-codebase.sh 创建)
│   ├── images/            # 本地图片
│   ├── pdfs/              # PDF 文件
│   └── notes/             # 随手笔记
├── wiki/                  # LLM 编译层(自动维护)
│   ├── index.md           # 总索引
│   ├── log.md             # 操作日志
│   ├── QUESTIONS.md       # 待探索问题
│   ├── concepts/          # 通识概念页
│   ├── entities/          # 实体页
│   ├── sources/           # 来源摘要
│   ├── synthesis/         # 综合分析(含跨仓库对比)
│   ├── topics/            # 主题聚合金字塔入口
│   ├── codebases/         # 代码仓库教学子库(L0~L5 分层)
│   │   └── <repo>/
│   │       ├── 00-overview.md
│   │       ├── 01-architecture.md
│   │       ├── 02-modules/
│   │       ├── 03-flows/
│   │       ├── 04-patterns/
│   │       ├── 05-pitfalls.md
│   │       ├── curriculum.md
│   │       ├── glossary.md
│   │       └── qa-log.md
│   └── templates/         # 页面模板
├── outputs/               # 输出层
│   ├── qa/                # 问答记录
│   ├── reports/           # 研究报告
│   └── learning/          # 代码仓库陪学会话归档
└── scripts/
    ├── lint.py            # 健康检查脚本
    └── init-codebase.sh   # 代码仓库软链脚本

操作指令速查

通识知识整理

你说的话 Claude 做的事
"处理下 raw 里的新文章" 读取、分类、提取、编译到 wiki
"XX 是什么" / "XX 和 YY 的区别" 搜索 wiki + 联网搜索 + 知识拓扑拓展
"帮我查下 XX" 先查 wiki,不够再联网
"健康检查" / "lint" 运行检查脚本,汇报问题
"总结下 XX 领域" 跨来源综合分析
"上次没看完的" / "继续" 从 QUESTIONS.md + 进行中章节恢复
"1 3"(数字编号) 继续深挖推荐拓展方向
"先到这" 保存待探索列表与章节进度

代码仓库教学

你说的话 Claude 做的事
"分析仓库 vllm" / "吃透 vllm" CODEBASE_INIT:扫描 + 生成 curriculum + overview
"开始学 vllm 第 1 章" / "继续学" CODE_TUTOR:按预读/讲解/自测章节化推进
学习中追问具体函数、类、机制 CODE_DIVE:path:line 定位 + 调用链 + 通识概念双写
"vllm 和 sglang 在 X 上的区别" CODE_REFLECT:跨仓库对比分析
"整理 AI Infra 领域入口" TOPIC_COMPILE:生成金字塔主题入口页

配置 Web Clipper

安装 Obsidian Web Clipper 浏览器插件后,设置保存路径为:

obsimind/raw/clippings/

这样浏览器中看到好文章一键剪藏,然后让 Claude 处理即可。


实用案例 1:理解一篇技术文章(FlashAttention 论文解读)

场景:朋友发给你一篇讲 FlashAttention 原理的文章(.md.pdf),你想吃透它,并让它的知识点永久沉淀。

Step 1. 放素材(30 秒)

# 假设文章在 ~/Downloads/flashattention-explained.md
cp ~/Downloads/flashattention-explained.md ~/Desktop/obsimind/raw/articles/

或者用 Finder 直接拖拽到 raw/articles/ 也行。

Step 2. 启动 Claude

cd ~/Desktop/obsimind
claude

Step 3. 对话(完整示例)

你:处理下 raw/articles 里的新文章

Claude:我读完了 flashattention-explained.md,这是一篇讲 FlashAttention 原理的文章。
        我生成了以下内容:

        - 来源摘要:wiki/sources/flashattention-explained.md
        - 新概念:
          - wiki/concepts/flash-attention.md
          - wiki/concepts/tiling.md
          - wiki/concepts/online-softmax.md
          - wiki/concepts/io-aware-algorithm.md
        - 更新了 wiki/index.md 的最近添加列表

        建议你从 wiki/sources/flashattention-explained.md 开始看,
        那里有原文的核心观点摘要和到各概念页的链接。

Step 4. 在 Obsidian 里打开 AI 写的文件看

在 Obsidian 侧边栏导航:
obsimind/
└── wiki/
    ├── sources/flashattention-explained.md  ← 从这里开始读
    └── concepts/
        ├── flash-attention.md                ← 原文的核心概念
        ├── tiling.md                         ← 相关技术
        ├── online-softmax.md
        └── io-aware-algorithm.md

每个页面都有 [[双向链接]],点任何一个 [[xxx]] 都能跳到对应概念页继续读。

Step 5. 追问深挖

读 wiki 时遇到不懂的,回到 Claude 继续问:

你:tiling 这个概念我还是不太懂,它和传统的 attention 计算有什么区别?

Claude:[详细解释 + 画图 + 代码示例]
        我把这个解释补充到 wiki/concepts/tiling.md 的"详细说明"段了,
        并且在 wiki/concepts/flash-attention.md 里也加了一段对 tiling 的说明。

        📌 推荐继续探索:
        1. memory-hierarchy — 理解 GPU 显存层次(SRAM vs HBM)
        2. recomputation — FlashAttention 如何用重算换显存
        3. fused-kernel — 算子融合的工程价值
        4. flashattention-v2 — V2 做了什么优化
        5. flash-decoding — 推理阶段的 FlashAttention 变种

你:1 3

Claude:好,我继续深挖 memory-hierarchy 和 fused-kernel……

Step 6. 暂停,下次继续

你:先到这,晚上接着看

Claude:好的。已经把以下问题存到 wiki/QUESTIONS.md:
        - recomputation 在 FlashAttention 里的具体实现
        - flashattention-v2 的改进点
        - flash-decoding 与推理的关系
        晚上你回来说"继续"就行。

最终在 Obsidian 里呈现的样子

wiki/
├── sources/flashattention-explained.md       ← 原文摘要(入口)
├── concepts/
│   ├── flash-attention.md                    ← 主概念(含 tiling 细节)
│   ├── tiling.md                             ← 含你追问后补充的解释
│   ├── online-softmax.md
│   ├── io-aware-algorithm.md
│   ├── memory-hierarchy.md                   ← 追问 1 衍生
│   └── fused-kernel.md                       ← 追问 3 衍生
├── QUESTIONS.md                              ← 存着待探索问题
└── log.md                                    ← 每次操作都有记录

你此时 Obsidian 的 Graph View 会看到一张由 FlashAttention 串起来的概念网络,点任何一个节点都能追溯到原文和追问链路。


实用案例 2:吃透一个开源代码仓库(vLLM 推理引擎)

场景:你想从零理解 vLLM 这个项目,已经把它 clone 到本地 ~/Desktop/vllm

Step 1. 软链代码仓库(5 秒)

cd ~/Desktop/obsimind
./scripts/init-codebase.sh ~/Desktop/vllm

脚本输出:

✅ 软链已创建:
   /Users/you/Desktop/obsimind/raw/codebases/vllm
   → /Users/you/Desktop/vllm

下一步:在 Claude Code 里对 ObsiMind 说:
   分析仓库 vllm

Step 2. 启动 Claude 并初始化大纲(1~2 分钟)

cd ~/Desktop/obsimind
claude

对话:

你:分析仓库 vllm

Claude:我正在扫描 raw/codebases/vllm……

        【结构扫描】
        - 主语言:Python(96%)
        - 入口:vllm/entrypoints/api_server.py, vllm/engine/llm_engine.py
        - 依赖:torch, ray, xformers, pydantic, fastapi

        【架构扫描】识别出 5 层:
        - entrypoints/ — HTTP/CLI 接口
        - engine/ — 核心调度引擎
        - core/ — 调度器、块管理
        - worker/ — 执行器(GPU 上跑的进程)
        - model_executor/ — 模型加载与前向

        【流程扫描】识别出 4 条主线:
        - 请求生命周期(请求进入 → 返回 token 流)
        - 服务启动流程
        - 调度循环(scheduler 每步做什么)
        - KV Cache 块管理

        我生成了:
        - wiki/codebases/vllm/00-overview.md  — 全景入口(含金字塔图)
        - wiki/codebases/vllm/curriculum.md   — L0~L5 学习大纲
        - wiki/codebases/vllm/glossary.md     — 项目术语表
        - wiki/codebases/vllm/qa-log.md       — 追问索引

        建议你先去 Obsidian 里打开 00-overview 和 curriculum 看一遍,
        然后回来说"开始学 vllm 第 1 章"。

Step 3. 在 Obsidian 里读全景和大纲(5 分钟)

打开顺序:
1. wiki/codebases/vllm/00-overview.md    ← 看金字塔图,建立宏观印象
2. wiki/codebases/vllm/curriculum.md     ← 看学习路线

Step 4. 开始 L1 架构章节

你:开始学 vllm 第 1 章

Claude:好,进入 L1 架构章节。

        【预读】本章你要理解的 3 件事:
        1. vLLM 的分层结构:entrypoints → engine → core → worker
        2. engine 和 worker 如何协作(Ray 进程模型)
        3. 一次请求的数据流向

        【讲解】

        类比:想象一个餐厅……
        - entrypoints = 前台接待
        - engine = 大堂经理(负责排队、派菜)
        - core.scheduler = 菜单调度员(决定先做哪道菜)
        - worker = 厨师(真正做菜 = GPU 前向)

        代码片段(raw/codebases/vllm/vllm/engine/llm_engine.py:132):
        [贴 20 行关键代码]

        原理拆解:
        1. 请求进入 → entrypoints 的 FastAPI 路由
        2. engine.add_request() 把请求入队
        3. engine.step() 循环:scheduler.schedule() → worker.execute_model()
        4. 每个 step 吐一批 token 回给客户端

        【自测题】
        1. engine.step() 为什么是"每步吐一批"而不是"一次吐完整个回答"?
        2. 如果把 scheduler 换成 FIFO,会发生什么?
        3. worker 放在独立进程的价值是什么?

        📌 推荐继续探索:
        1. 调度器内部逻辑(L2 scheduler 模块)
        2. Ray 进程模型(L2 worker 模块)
        3. KV Cache 块分配(L3 kv-cache 流程)
        4. 请求生命周期(L3 request-lifecycle 流程)
        5. Continuous Batching(L3 batching 流程)

        已更新:
        - wiki/codebases/vllm/01-architecture.md(新建)
        - wiki/codebases/vllm/curriculum.md(L1 状态:进行中)

Step 5. 在 Obsidian 里看 AI 刚写的章节 + 追问

打开 wiki/codebases/vllm/01-architecture.md,读完后不懂的回到 Claude:

你:scheduler 内部到底是怎么选下一步处理哪些请求的?

Claude:[CODE_DIVE 模式]
        定位:raw/codebases/vllm/vllm/core/scheduler.py:234 的 _schedule() 方法

        调用链:
        engine.step()
          └─ scheduler.schedule()
               └─ scheduler._schedule()
                    ├─ _schedule_prefills()
                    └─ _schedule_running()

        核心逻辑:[详细讲解]

        这里涉及到的"连续批处理(Continuous Batching)"是一个通识概念,
        我已经把通识解释写到 wiki/concepts/continuous-batching.md,
        同时在 wiki/codebases/vllm/01-architecture.md 的 ## FAQ 段
        加了一条针对 vllm 的具体实现说明。

        对话归档到:outputs/learning/vllm/01-architecture-20260417-1530.md

Step 6. 暂停

你:先到这,明天接着学 L2

Claude:好的。curriculum.md 里 L1 状态已改为"进行中",
        明天你说"继续"就会看到恢复选项。

Step 7. 隔天恢复

你:继续

Claude:你当前有 1 个进行中的学习和 2 个待探索问题:

        进行中:
        - [vllm] L1 架构(已读完基础,待追问:scheduler 细节)

        待探索(QUESTIONS.md):
        - vLLM 和 SGLang 在 KV Cache 上有什么设计差异?
        - Ray 在 vLLM 里具体怎么用的?

        想从哪个继续?

学完 2 个仓库后的跨仓库对比

等你同样把 SGLang 吃透(重复 Step 1~6),就可以说:

你:vllm 和 sglang 在 KV Cache 管理上有什么区别?

Claude:[CODE_REFLECT] 我对比了:
        - wiki/codebases/vllm/03-flows/kv-cache.md
        - wiki/codebases/sglang/03-flows/kv-cache.md

        生成对比分析到:wiki/synthesis/comparison-kv-cache.md

        主要差异:
        | 维度 | vLLM | SGLang |
        |------|------|--------|
        | 核心机制 | PagedAttention | RadixAttention |
        | ...

最终在 Obsidian 里呈现的样子

wiki/
├── topics/
│   └── ai-infra.md                               ← 金字塔总入口(TOPIC_COMPILE 生成)
├── codebases/
│   ├── vllm/
│   │   ├── 00-overview.md                        ← 全景
│   │   ├── 01-architecture.md                    ← L1
│   │   ├── 02-modules/{scheduler,worker,engine}.md  ← L2
│   │   ├── 03-flows/{request-lifecycle,kv-cache,batching}.md  ← L3
│   │   ├── 04-patterns/{ray-actor-model,async-step}.md  ← L4
│   │   ├── 05-pitfalls.md                        ← L5
│   │   ├── curriculum.md                         ← 进度表
│   │   ├── glossary.md                           ← 术语
│   │   └── qa-log.md                             ← 追问索引
│   └── sglang/{...}
├── concepts/
│   ├── continuous-batching.md                    ← 从 vllm 学习中沉淀
│   ├── paged-attention.md
│   ├── radix-attention.md
│   └── ...
└── synthesis/
    └── comparison-kv-cache.md                    ← 两个仓库的对比

最终你点开 wiki/topics/ai-infra.md,能看到一张类似 AI 知识整理 那样的分层金字塔,入口页 → 概念 → 代码仓库全部串起来,每一项都可以追溯到它最初来自哪篇文章或哪段源码。


常见问题

Q: 我已经扔文章进 raw/articles/ 了,但 Claude 不知道?

A: 确认你是在 obsimind/ 目录下启动的 claude 命令。如果还不行,直接说:读 raw/articles/<文件名>.md 并处理它

Q: init-codebase.sh: permission denied

A: 加执行权限:chmod +x scripts/init-codebase.sh

Q: Obsidian 里看不到新文件?

A: Obsidian 默认会自动同步,如果没刷新按 Cmd+R(macOS)重新载入 vault。

Q: 我想换个不同的仓库分析,之前那个要删掉吗?

A: 不用。直接 ./scripts/init-codebase.sh <新仓库路径>,多个项目在 raw/codebases/wiki/codebases/ 下并存互不影响。要删只需 rm raw/codebases/<old-repo>(删软链)+ rm -rf wiki/codebases/<old-repo>(删教学子库)。

Q: 怎么知道 AI 到底改了哪些文件?

A: 打开 wiki/log.md,每次操作都有详细记录(操作类型 / 触发 / 变更清单 / 摘要)。

致谢

灵感来自 Andrej Karpathy 的 LLM Wiki 方案

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors