源码深度学习 · 零基础友好 · 20 天

Langflow 源码学习

用可视化画布构建、运行并部署 LLM 工作流、Agent 和 MCP 工具的平台。这不是 API 速查表,而是一条可以重复走的源码路线:每天用 30 分钟,从一个真实相对路径出发,先用类比建立直觉,再把它接回整条运行链路。

00

开篇 · 这是个什么项目

Langflow 可以先想成一间给 AI 搭乐高流水线的白板。它的代码不是一堆孤立文件:入口接到需求,核心对象做判断,工具或模型完成工作,状态把结果交给下一个环节。

💡 20 天的主线先找入口和地图,再跟一次真实任务穿过核心循环;随后研究状态、模型、工具与扩展;最后用复盘把全部概念连成一张可迁移的地图。不要背目录名,要不断问「谁创建它、它把什么交给谁」。
大白话读源码像参观工厂:第一天先看门牌和楼层,不急着拆机器。后面每节课只打开一个焦点路径,但始终知道它属于哪层、服务哪个业务动作。
01

架构全景(动起来看)

发光扫过的每一层都是一次任务可能经过的站点。不同仓库命名不同,但「接入 → 编排 → 核心能力 → 资源」的责任边界很相似。

L5 · 创作层
React本层职责
Canvas本层职责
CustomNodes本层职责
L4 · API 层
FastAPI本层职责
v1本层职责
v2本层职责
MCP本层职责
L3 · 编排层
Interface本层职责
FlowRunner本层职责
FlowBuilder本层职责
L2 · 执行层
Graph本层职责
Vertex本层职责
Components本层职责
L1 · 平台层
Services本层职责
DB本层职责
Tracing本层职责
输入用户任务组织对象 / 流程执行模型 / 工具沉淀状态 / 记忆
设计取舍分层会增加跳转文件的次数,却让每层只承担一种职责:入口容易替换,核心逻辑能测试,模型与外部工具可插拔。读代码时先沿箭头追「数据」而不是追每一个类。
02

怎么使用这份教程

⏱️

每天 30 分钟

6 讲,每讲先问问题,再给本质和大白话。

📍

真实相对路径

所有路径都从项目根目录算,不把你的机器路径写进源码引用。

🧪

先验证再推理

每页都有可复制 bash 命令;文件版本变化时以本地实际内容为准。

🧭

可迁移方法

学会从入口、数据结构、循环和扩展点读任何 AI 项目。

S1

阶段 1 · 全景与启动

D01-D03 · 认识 monorepo、前后端和 LFx
01

Monorepo 与启动入口

pyproject.toml:认识 backend、LFx、SDK、frontend 的工作区关系。

≈30 min · 6 讲开始学 →
02

后端 main 生命周期

src/backend/base/langflow/main.py:追踪应用配置、生命周期和服务器启动。

≈30 min · 6 讲开始学 →
03

前端 React 入口

src/frontend/src/index.tsx:理解浏览器端如何挂载整个编辑器。

≈30 min · 6 讲开始学 →
S2

阶段 2 · 画布数据模型

D04-D07 · 节点、边、流程 JSON 与组件
04

LFx 组件体系导览

src/lfx/src/lfx/components:按模型、工具、向量库等类别认识组件实现。

≈30 min · 6 讲开始学 →
05

流程构建器

src/lfx/src/lfx/graph/flow_builder/builder.py:学习 JSON 定义如何变成可执行流程。

≈30 min · 6 讲开始学 →
06

节点和端口模型

src/lfx/src/lfx/graph/vertex:理解节点参数、输入输出类型与校验。

≈30 min · 6 讲开始学 →
07

边与连线

src/lfx/src/lfx/graph/edge:掌握数据怎样在节点之间传递。

≈30 min · 6 讲开始学 →
S3

阶段 3 · 图执行

D08-D11 · 构建图、调度节点和流式结果
08

Graph 执行状态

src/lfx/src/lfx/graph/graph:阅读可运行节点管理和图状态模型。

≈30 min · 6 讲开始学 →
09

运行时默认值

src/lfx/src/lfx/run:理解运行请求怎样转换为执行配置。

≈30 min · 6 讲开始学 →
10

后端流程运行服务

src/backend/base/langflow/services/flow/flow_runner.py:跟踪一次 API 请求如何触发流程执行。

≈30 min · 6 讲开始学 →
11

运行接口适配

src/backend/base/langflow/interface/run.py:理解 UI/API 输入与 LFx 运行时之间的转换。

≈30 min · 6 讲开始学 →
S4

阶段 4 · 后端产品化

D12-D14 · API、服务容器与持久化
12

路由注册与版本化 API

src/backend/base/langflow/api/router.py:识别 v1、v2、健康检查等路由装配。

≈30 min · 6 讲开始学 →
13

流程 CRUD API

src/backend/base/langflow/api/v1/flows.py:学习流程定义的创建、查询、修改和删除。

≈30 min · 6 讲开始学 →
14

服务工厂与依赖管理

src/backend/base/langflow/services/factory.py:理解数据库、缓存、存储等服务如何被初始化。

≈30 min · 6 讲开始学 →
S5

阶段 5 · 前端交互

D15-D17 · 画布、状态和自定义节点
15

前端路由与页面

src/frontend/src/routes.tsx:认识编辑、设置和其他产品页面。

≈30 min · 6 讲开始学 →
16

自定义画布节点

src/frontend/src/CustomNodes:把后端组件字段映射成可编辑节点。

≈30 min · 6 讲开始学 →
17

前端状态与控制器

src/frontend/src/stores:学习流程图、选中状态和交互状态的管理。

≈30 min · 6 讲开始学 →
S6

阶段 6 · 部署扩展

D18-D20 · MCP、SDK、观测与自定义组件
18

MCP 工作流发布

src/backend/base/langflow/api/v2/mcp.py:理解如何把 flow 暴露给 MCP 客户端。

≈30 min · 6 讲开始学 →
19

自定义组件入口

src/backend/base/langflow/custom:阅读自定义 Python 组件的加载和兼容路径。

≈30 min · 6 讲开始学 →
20

追踪与扩展复盘

src/backend/base/langflow/services/tracing:梳理运行可观测性与新增组件的最小实现路径。

≈30 min · 6 讲开始学 →