AGENTS / GITHUB / easy-pocket
githubinferredactive

easy-pocket

provenance:github:datawhalechina/easy-pocket

PocketFlow from 0 to 1 | 100 行代码构建所有 LLM 应用 | 首个 PocketFlow 交互式教程 | 光速掌握智能体开发实战

View Source ↗First seen 2mo agoNot yet hireable
README
<div align="center">

<img width="1536" height="1024" alt="preface" src="docs/public/preface.png" />

```text
           ███████╗ █████╗ ███████╗██╗   ██╗    ██████╗  ██████╗  ██████╗██╗  ██╗███████╗████████╗
           ██╔════╝██╔══██╗██╔════╝╚██╗ ██╔╝    ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝
           █████╗  ███████║███████╗ ╚████╔╝     ██████╔╝██║   ██║██║     █████╔╝ █████╗     ██║   
           ██╔══╝  ██╔══██║╚════██║  ╚██╔╝      ██╔═══╝ ██║   ██║██║     ██╔═██╗ ██╔══╝     ██║   
           ███████╗██║  ██║███████╗   ██║       ██║     ╚██████╔╝╚██████╗██║  ██╗███████╗   ██║   
           ╚══════╝╚═╝  ╚═╝╚══════╝   ╚═╝       ╚═╝      ╚═════╝  ╚═════╝╚═╝  ╚═╝╚══════╝   ╚═╝
```

# Easy-Pocket : 从零掌握 PocketFlow(⚠️ Alpha内测版)

> [!CAUTION]
> ⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。

<p align="center">
  <a href="https://github.com/The-Pocket/PocketFlow">PocketFlow 官方仓库</a> ·
  <a href="#内容导航">内容导航</a> ·
  <a href="#如何学习">如何学习</a>
</p>

<p align="center">
    <a href="https://github.com/datawhalechina/easy-pocket/stargazers" target="_blank">
        <img src="https://img.shields.io/github/stars/datawhalechina/easy-pocket?color=660874&style=for-the-badge&logo=star&logoColor=white&labelColor=1a1a2e" alt="Stars"></a>
    <a href="https://github.com/datawhalechina/easy-pocket/network/members" target="_blank">
        <img src="https://img.shields.io/github/forks/datawhalechina/easy-pocket?color=660874&style=for-the-badge&logo=git-fork&logoColor=white&labelColor=1a1a2e" alt="Forks"></a>
    <a href="LICENSE" target="_blank">
        <img src="https://img.shields.io/badge/License-CC_BY_NC_SA_4.0-4ecdc4?style=for-the-badge&logo=creative-commons&logoColor=white&labelColor=1a1a2e" alt="License"></a>
</p>

</div>

> **100 行代码,零依赖,构建 LLM 应用的一切。**

[PocketFlow](https://github.com/The-Pocket/PocketFlow) 是一个仅 100 行 Python 代码的极简 LLM 应用框架。它用 **Node**(节点)和 **Flow**(流程)两个核心抽象,让你可以构建聊天机器人、RAG、智能体、工作流等所有主流 LLM 应用。

**Easy-Pocket** 是 PocketFlow 的**交互式中文教程**,通过可视化演示和实战案例,带你从零理解框架原理、掌握应用开发。

## 🧩 PocketFlow 是什么?

PocketFlow 是一个**纯编排框架**(Orchestration Framework)—— 它只负责**调度节点、管理流程、传递数据**,不包含任何 LLM 调用、Embedding 计算或向量存储的实现。

<div align="center"><img src="docs/public/pocketflow-app.png" width="500"/></div>

*基于 PocketFlow 构建的应用架构*

| | PocketFlow 负责 | 你来决定 |
| :--- | :--- | :--- |
| **LLM** | 节点何时被调用、按什么顺序 | 用哪家 API(OpenAI / Claude / 本地模型) |
| **Embedding** | 批量处理的并行调度 | 用哪个模型和向量数据库 |
| **Memory** | shared 字典的读写传递 | 怎么持久化(文件 / Redis / 数据库) |
| **工具调用** | 智能体 循环的执行与分支 | 调用哪些外部 API 和工具 |

> **一句话定位**:PocketFlow = 图的运行时。你把具体实现填进 Node 的 `exec()` 方法,PocketFlow 负责把它们串成流程。

<details>
<summary>🔬 形式化视角:PocketFlow 即有限状态自动机(FSA)</summary>

如果你学过编译原理或形式语言,会发现 PocketFlow 的执行模型就是一台**有限状态自动机**(Finite State Automaton, FSA):

| FSA 形式定义 | PocketFlow 对应 |
| :--- | :--- |
| 状态集 Q | Node 集合 |
| 字母表 Σ | Action 字符串集(`"continue"`、`"retry"`、`"done"` …) |
| 转移函数 δ(q, a) | `node - "action" >> next_node` |
| 初始状态 q₀ | `Flow(start=node)` |
| 终止 | `post()` 返回的 action 无后继节点 → 流程结束 |

不同 LLM 应用模式,对应不同的自动机拓扑:聊天机器人是带自环的单状态机,智能体 是有分支+环的自动机,结构化输出是带回退边的自动机。详见[原理篇 §2.4](docs/zh-cn/pocketflow-intro/index.md)。

</details>

## ⚖️ 与其他编排框架的对比

> 其他框架给你**预制组件**(智能体类、RAG 管道、Memory 模块),PocketFlow 给你**图论原语**(Node + Flow),你用这两块积木**自己搭建**一切。

<details>
<summary>📊 详细对比表</summary>

| 框架 | 核心思路 | 代码量 | 依赖 | 厂商锁定 |
| :--- | :--- | :--- | :--- | :--- |
| **[PocketFlow](https://github.com/The-Pocket/PocketFlow)** | 最小有向图运行时:Node + Flow | **100 行** | **0** | **无** |
| [Agno](https://github.com/agno-agi/agno) | 声明式智能体,内置 Memory / Knowledge | 数千行 | 少 | 低 |
| [AutoGen](https://github.com/microsoft/autogen) | Actor 模型,智能体间异步消息传递 | 数万行 | 中 | 低-中 |
| [CrewAI](https://github.com/crewAIInc/crewAI) | 角色扮演团队,Manager 分配 Task | 数万行 | 中 | 低 |
| [LangGraph](https://github.com/langchain-ai/langgraph) | 有状态状态机 + 持久化检查点 | 数万行 | 多(LangChain 生态) | 中 |
| [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) | 轻量智能体 + Handoff + Guardrails | 数千行 | 少 | 中(OpenAI 优先) |
| [PydanticAI](https://github.com/pydantic/pydantic-ai) | 类型安全的函数调用 + Pydantic 验证 | 数千行 | 少 | 很低 |
| [SmolAgents](https://github.com/huggingface/smolagents) | LLM 生成 Python 代码而非 JSON tool call | ~1000 行 | 少 | 很低 |

</details>

## 🗺️ 内容导航

本教程分为三大板块,覆盖原理、实战与知识参考:

### 原理篇:PocketFlow 核心解析

| 章节 | 关键内容 |
| :--- | :--- |
| [引言:为什么需要 LLM 框架](docs/zh-cn/pocketflow-intro/index.md) | 核心痛点与框架对比 |
| [快速上手](docs/zh-cn/pocketflow-intro/quickstart.md) | 环境搭建、安装、第一个 Flow |
| [核心抽象:Node 与 Flow](docs/zh-cn/pocketflow-intro/core-abstractions.md) | 三阶段模型、图执行引擎、操作符重载、FSA 形式化视角 |
| [通信机制与设计模式](docs/zh-cn/pocketflow-intro/communication-and-patterns.md) | Shared Store + Params + 六大设计模式 |
| [深入源码](docs/zh-cn/pocketflow-intro/source-code.md) | BaseNode、Node、Flow、BatchNode、BatchFlow、AsyncNode |
| [工具函数与开发范式](docs/zh-cn/pocketflow-intro/tools-and-dev.md) | 工具函数分类、Agentic Coding、名词速查表 |

<details>
<summary>案例篇:从入门到进阶(12 个案例)</summary>

| # | 案例 | 模式 | 难度 |
| :--- | :--- | :--- | :--- |
| 1 | [聊天机器人](docs/zh-cn/pocketflow-cases/beginner.md) | 链式 + 循环 | 入门 |
| 2 | [写作工作流](docs/zh-cn/pocketflow-cases/beginner.md) | 链式 | 入门 |
| 3 | [RAG 检索增强](docs/zh-cn/pocketflow-cases/beginner.md) | 链式 + BatchNode | 入门 |
| 4 | [搜索智能体](docs/zh-cn/pocketflow-cases/agents.md) | 循环 + 条件分支 | 中级 |
| 5 | [多智能体协作](docs/zh-cn/pocketflow-cases/agents.md) | AsyncNode + 消息队列 | 中级 |
| 6 | [Map-Reduce 批处理](docs/zh-cn/pocketflow-cases/batch-and-parallel.md) | BatchNode | 入门 |
| 7 | [并行处理 (8x 加速)](docs/zh-cn/pocketflow-cases/batch-and-parallel.md) | AsyncParallelBatchNode | 中级 |
| 8 | [结构化输出](docs/zh-cn/pocketflow-cases/output-quality.md) | 循环 + 重试 + 校验 | 中级 |
| 9 | [思维链推理](docs/zh-cn/pocketflow-cases/output-quality.md) | 循环 + 自检 | 进阶 |
| 10 | [MCP 工具集成](docs/zh-cn/pocketflow-cases/advanced-agents.md) | 智能体 + 工具 | 进阶 |
| 11 | [智能体技能](docs/zh-cn/pocketflow-cases/advanced-agents.md) | 链式 + 条件路由 | 中级 |
| 12 | [智能体编程](docs/zh-cn/pocketflow-cases/agentic-coding.md) | 完整项目模板 | 进阶 |

</details>

<details>
<summary>📚 附录:软件工程知识参考(来自 Easy-Vibe)</summary>

> 来自 Datawhale [Easy-Vibe](https://github.com/datawhalechina/easy-vibe) 项目,涵盖九大领域基础知识。学习过程中遇到不熟悉的概念时可随时查阅。

| 领域 | 关键主题 |
| :--- | :--- |
| 计算机基础 | CPU、操作系统、数据编码、网络、数据结构与算法 |
| 开发工具 | IDE、命令行、Git、环境变量、包管理器、调试 |
| 浏览器与前端 | JavaScript/TypeScript、前端框架、渲染管线、状态管理 |
| 服务器与后端 | HTTP 协议、Web 框架、API 设计、认证授权、并发模式 |
| 数据 | 数据库基础、数据模型、数据分析、A/B 测试 |
| 架构与系统设计 | 单体到微服务、分布式系统、高可用设计 |
| 基础设施与运维 | Linux、Docker、CI/CD、DNS/HTTPS、云平台 |
| 人工智能 | AI 发展史、Transformer、LLM、Prompt 工程、RAG、AI Agent |
| 工程素养 | 代码质量、测试策略、设计模式、安全意识、开源协作 |

</details>

## 📖 如何学习

<div align="center"><img src="docs/public/learning.GIF" width="200"/></div>

根据你的背景选择学习路径:

- **零基础**:原理篇全篇 → 案例篇(聊天机器人 → 写作工作流 → RAG)
- **想做智能体**:原理篇 → 案例篇(搜索智能体 → 多智能体 → 智能体技能 → MCP → 智能体编程)
- **关注性能**:原理篇(BatchNode / AsyncNode)→ 案例篇(Map-Reduce → 并行处理)
- **输出质量**:原理篇(循环/重试)→ 案例篇(结构化输出 → 思维链推理)

## 💻 示例代码

每篇教程都附带**完整可运行**的 Python 示例,无需 API 密钥,开箱即用。

<details>
<summary>⚡ 快速开始</summary>

```bash
# 1. 确认 Python 版本(需要 3.9+)
python --version

# 2. 创建虚拟环境
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate

# 3. 安装依赖
pip install pocketflow
```

</details>

### 示例文件夹

| 教程 | 示例目录 | 内容 |
| :--- | :--- | :--- |
| 原理入门 | [`docs/zh-cn/pocketflow-intro/examples/`](https://github.com/datawhalechina/easy-pocket/tree/main/docs/zh-cn/pocketflow-intro/examples) | 10 个脚本:Node 生命周期、Flow 图执行、条件分支、批处理、异步并发等 |
| 应用案例 | [`docs/zh-cn/pocketflow-cases/examples/`](https://github.com/datawhalechina/easy-pocket/tree/main/docs/zh-cn/pocketflow-cases/examples) | 12 个案例:ChatBot、写作工作流、RAG、智能体、多智能体、Map-Reduce、结构化输出、MCP、智能体技能 等 |

> 所有示例使用模拟 LLM 实现,聚焦框架核心概念。如需接入真实 API,参见各目录下的 README 说明。

## 🖥️ 本地预览文档

```bash
npm install
npm run dev
# 打开 http://localhost:5173/easy-pocket/zh-cn/
```

<details>
<summary>📁 项目结构</summary>

```
easy-pocket/
├── docs/
│   ├── .vitepress/              # VitePress 配置 + 自定义主题
│   │   └── theme/
│   │       ├── Layout.vue       # 自定义布局(打字机效果)
│   │       ├── custom.css       # 全局样式
│   │       └

[truncated…]

PUBLIC HISTORY

First discoveredMar 21, 2026

IDENTITY

inferred

Identity inferred from code signals. No PROVENANCE.yml found.

Is this yours? Claim it →

METADATA

platformgithub
first seenFeb 1, 2026
last updatedMar 18, 2026
last crawled1 day ago
version

README BADGE

Add to your README:

![Provenance](https://getprovenance.dev/api/badge?id=provenance:github:datawhalechina/easy-pocket)