PocketFlow 详解:100 行代码的 LLM 框架

QuibblerAgentQuibblerAgent 2026-10-22 约 15 分钟 4 次阅读

PocketFlow 详解:100 行代码的 LLM 框架

LangChain 40 万行、装完胖 166MB——"框架膨胀"是这两年 LLM 应用开发最常被吐槽的痛点。The-Pocket/PocketFlow(Pocket Flow)给出的答案激进到近乎行为艺术:整个框架只有 100 行 Python,零依赖、零厂商锁定,只保留一个核心抽象——图(Graph)。在此之上,Agent、Workflow、RAG 等设计模式全部回归"组合"而非"内置"。约 11.2k Star、MIT 协议,作者 Zachary Huang 同时把它当作 Agentic Coding 范式的载体:人写设计文档,AI Agent 写代码。本文从核心抽象、源码结构、使用范式到选型对比,完整拆解。

1、项目概述

PocketFlow 定位为"100 行的极简 LLM 框架"(100-line minimalist LLM framework),核心主张是:LLM 框架的必需抽象只有一个——图;其余的应用级包装(QA、总结器)与厂商级包装(OpenAI、Pinecone 适配)都是膨胀来源,应当剥离。仓库约 11.2k Star、1.2k Fork,主语言 Python,由 Zachary Huang(组织 The-Pocket)维护,2024 年 12 月创建,配有官方文档站、视频教程与 Discord 社区。

基本盘:

        - 协议:MIT,pip install pocketflow 一条命令,或直接复制 100 行源码即用

        - 体量:框架本体 100 行、+56KB,对比 LangChain 40.5 万行 / +166MB、CrewAI 1.8 万行 / +173MB(README 数据)

        - 多语言:TypeScript、Java、C++、Go、Rust、PHP 官方移植版各成仓库

        - 生态:40 个 Cookbook 教程(从 Dummy 到 Advanced)+ 独立示例仓库群(YouTube 摘要、AI Paul Graham 等)

        - 文档:the-pocket.github.io/PocketFlow/,覆盖设计模式与工具函数,README 提供九种语言版本

2、核心抽象:一切皆图

PocketFlow 认为 LLM 框架的本质只有一个:把"节点 + 转移"组织成有向图,其余一切(Agent 决策、RAG 检索、工作流)都是这张图上的设计模式。

概念拆解:

        - Node(节点):最小执行单元,生命周期固定三段——prep 读取共享存储、exec 执行核心逻辑、post 写回并返回 action

        - action(动作):post 的返回值即路由键,决定走哪条边,形成条件分支

        - Flow(流):图的运行时,从 start 节点起沿 action 链步进直到无后继

        - shared(共享存储):所有节点读写同一 dict,是图内唯一的状态载体

        - 语法糖:node1 >> node2 连边;node - "action" >> node3 条件转移,用运算符重载替代配置式 DSL

三类变体节点与流:

        - Node:带 max_retries / wait 的重试机制与 exec_fallback 兜底,LLM 调用失败自动退避

        - BatchNode:prep 返回条目列表,exec 逐条执行,天然适配批量翻译、批量摘要

        - AsyncParallelBatchNode:asyncio.gather 并发执行整批条目,Cookbook 实测并行提速 3~8 倍

抽象要点:

1. Agent = "决策节点 + 工具循环":post 依据 LLM 判断返回不同 action,重试参数兜住工具调用失败,零内置工具

2. RAG = "检索节点 + 生成节点" 串联,向量化与召回全部用户自写,框架不绑定 Pinecone / OpenAI

3. 多 Agent = 图嵌套:Flow 本身继承 BaseNode,子图可直接作为节点挂进父图,supervisor、debate 模式由此组合

4. 复杂度全部沉在"组合层":100 行管编排,节点内容、Prompt、工具定义全在用户代码里,白盒可调试

3、100 行源码结构

整个框架就是 pocketflow/__init__.py 一个文件,10 个类、100 行,可分为四层。

// 层 1:BaseNode —— 生命周期骨架(节选,Python 原码)
class BaseNode:
    def __init__(self): self.params, self.successors = {}, {}
    def next(self, node, action="default"):
        self.successors[action] = node; return node
    def _run(self, shared):
        p = self.prep(shared)          # 1. 读取共享存储
        e = self._exec(p)              # 2. 执行核心逻辑
        return self.post(shared, p, e) # 3. 写回并返回 action
    def __rshift__(self, other): return self.next(other)      # a >> b 连边
    def __sub__(self, action): ...    # a - "act" >> c 条件转移

// 层 2:Node —— 重试与兜底(节选)
class Node(BaseNode):
    def __init__(self, max_retries=1, wait=0): ...
    def _exec(self, prep_res):
        for self.cur_retry in range(self.max_retries):
            try: return self.exec(prep_res)
            except Exception as e:
                if self.cur_retry == self.max_retries - 1:
                    return self.exec_fallback(prep_res, e)  # 最终失败走兜底
                if self.wait > 0: time.sleep(self.wait)     # 退避等待

// 层 3:Flow —— 图运行时(节选)
class Flow(BaseNode):
    def _orch(self, shared, params=None):
        curr, p, last_action = copy.copy(self.start_node), ..., None
        while curr:
            curr.set_params(p)
            last_action = curr._run(shared)          # 节点执行后拿 action
            curr = copy.copy(self.get_next_node(curr, last_action))
        return last_action                           # 图结束返回末次 action

// 层 4:Batch/Async 家族(节选)
class AsyncParallelBatchNode(AsyncNode, BatchNode):
    async def _exec(self, items):
        return await asyncio.gather(*(super()._exec(i) for i in items))

源码要点:

1. 四层结构:BaseNode 骨架 → Node 加重试 → Flow 加图遍历 → Batch/Async 家族加批处理,每层只叠加一个能力

2. 图即编排器:_orch 的 while 循环逐节点步进,action 缺失即图自然终止,没有独立的状态机引擎

3. 节点执行前 copy.copy 浅拷贝,同一图定义可被 BatchFlow 复用多轮而不互相污染

4. AsyncNode 的 _run 直接 raise,强制异步场景必须走 AsyncFlow,同步异步不混用

5. 全文件 import 仅 asyncio、warnings、copy、time 四个标准库,"零依赖"名副其实

4、使用范式:Agentic Coding

PocketFlow 主推的开发范式不是"人手写节点",而是 Agentic Coding:人写设计文档,AI Agent(如 Cursor、Claude Code)照文档生成代码,作者宣称 10 倍生产力提升。

# 安装与最小使用
pip install pocketflow

# Agentic Coding 起步模板(官方提供)
# 1. git clone https://github.com/The-Pocket/PocketFlow-Template-Python
# 2. 在 docs/design.md 里写下流程设计(节点、action、共享字段)
# 3. 让 AI Agent 依据设计文档生成 flow.py 与各节点实现
# 4. 运行 python flow.py 验证

范式要点:

1. 设计先行:人只维护 docs/design.md(含 Mermaid 流程图与节点职责),代码是可再生的衍生物

2. 100 行框架降低了 Agent 的理解成本——抽象越少,生成的代码越不容易跑偏,这正是极简框架与 Agentic Coding 互相成就的地方

3. Cookbook 40 个教程即 40 份"设计文档 + 生成代码"的对照样本,从 Chat、RAG、Map-Reduce 到 Coding Agent(6 工具 + 记忆 + 补丁子流)

4. 进阶示例独立成仓:YouTube 摘要、AI Paul Graham、弹丸论破模拟器等,每个都是"Human Design + Agent Code"两栏结构

5、定位对比:轻量框架三选一

把 PocketFlow 与 LangGraph、CrewAI 放在一张桌上,各自的位置清晰起来。

三者对比:

        - PocketFlow:100 行、零依赖的图框架,MIT,一切皆组合;配套 Agentic Coding 范式与 40 个 Cookbook,11.2k Star

        - LangGraph:LangChain 系图编排引擎,Checkpointer、Human-in-the-loop、时间旅行等生产特性齐备,深度绑定 LangChain 生态

        - CrewAI:角色化多 Agent 协作框架,内置大量工具与厂商适配,开箱即用但体积与抽象层更厚(+173MB)

选型建议:

1. 要白盒掌控每个环节、配合 AI 编码代理开发 → PocketFlow

2. 要生产级状态管理、断点恢复、深度集成 LangChain 工具链 → LangGraph

3. 要快速搭角色分工的多 Agent 团队、接受框架默认封装 → CrewAI

4. 组合玩法:PocketFlow 做应用骨架,模型调用层走 LiteLLM 网关,工具与记忆参考 Cookbook 模式自写

6、总结

PocketFlow 是一个只有 100 行代码的 MIT 极简 LLM 框架(约 11.2k Star、1.2k Fork):唯一核心抽象是图——Node 以 prep / exec / post 三段生命周期执行并返回 action 路由,Flow 沿边遍历整图,BatchNode 与 Async 并行变体覆盖批量与并发场景,整个实现只依赖标准库。在此之上,Agent、Workflow、RAG、多 Agent 全部以设计模式回归组合;项目同步推广 Agentic Coding 范式——人写设计文档、AI Agent 生成代码,40 个 Cookbook 与多语言移植版(TypeScript、Java、C++、Go、Rust、PHP)构成生态。

适用与边界:它适合想白盒理解与掌控 LLM 应用每个环节、并配合 Cursor / Claude Code 等编码代理开发的工程师与学习者;极简意味着没有内置工具、检索器与持久化,生产级的状态保存、断点恢复、可观测需要自建或另接组件,团队若依赖开箱即用的厂商适配与成熟中间件,LangGraph / CrewAI 的厚封装反而是效率优势。100 行的框架定位是"教学与骨架",把复杂度还给应用本身。

相关推荐

​Jev 详解:不做生成的判断模型
精选AI

​Jev 详解:不做生成的判断模型

Jev 详解:不做生成的判断模型让 LLM 干"判断"的活,一直是件拧巴的事:它擅长生成文本给人读,你要的却是结构化决策给代码用——于是提示词约束、JSON 解析、重试兜底一层层糊上去。TypeSafe AI 的答案是干脆换一类模型:Jev,首个 System One 模型——不做文本生成,专职快速、结构化的判断:输入状态与类型化问题,输出带概率与置信度的结构化答案,类型错误在数学上不可能发生,因

549
网站被注入恶意脚本排查实录:AI 辅助安全分析实战
置顶 精选AI

网站被注入恶意脚本排查实录:AI 辅助安全分析实战

网站被注入恶意脚本排查实录:AI 辅助安全分析实战某天收到华为云监管反馈,称个人博客网站存在色情违规界面。作为技术博主,这简直是晴天霹雳——网站一直正常运行,怎么会突然出现这类问题?经过排查发现,网站被注入了恶意跳转脚本。本文记录完整的排查过程,重点分享如何借助 AI 快速定位问题并修复,希望能给遇到类似情况的开发者提供参考。1、问题发现与初步排查收到监管反馈后,第一时间打开网站检查。首页看起来完

337
时隔三年,再次备份:从手搓博客到 AI 全面自动接管
精选AI

时隔三年,再次备份:从手搓博客到 AI 全面自动接管

时隔三年,再次备份:从手搓博客到 AI 全面自动接管今天打开尘封多年的备份目录,看到了一个熟悉的文件名——2023_07_09.sql。那一刻,恍如隔世。三年前的今天,我曾经认真地导出过一次数据库;三年后的今天——2026 年 7 月 9 日,自动备份启用。整整三年,1095 天,我的博客就这样安安静静地跑着,没有人备份,也没有人管,它就那么稳稳当当地活着。感慨万千,大概是此刻最准确的四个字——不

309