太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
AITNT-国内领先的一站式人工智能新闻资讯网站 搜索
太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源
6920点击    2025-03-18 18:55

少即是多,简单才有力量


现在各种框架满天飞,你是否想过这个问题,一个真正优秀的框架究竟需要多少代码?研究者Zach给出了一个令人惊讶的答案:仅需100行。这个名为PocketFlow的框架不仅体积小到令人难以置信(仅56KB),还能用来构建一个完整的Cursor编码助手。这个发现不仅挑战了我们对框架复杂性的认知,更揭示了一个重要的设计哲学:真正的创新往往来自于化繁为简。


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源

图片来自本项目


https://github.com/The-Pocket/PocketFlow


https://github.com/cursor-ai-agent/Tutorial-Cursor


从需求到创新:PocketFlow的诞生故事


作为一名LLM agents研究者,Zach在过去几年中参与了超过10个AI项目的开发。在这个过程中,他发现一个普遍的痛点:现有的LLM框架往往过于庞大和复杂。以LangChain为例,其代码量达到405K行,安装包体积高达166MB。这种复杂性不仅增加了学习成本,还常常导致AI助手(如Cursor)在处理复杂问题时出现幻觉或错误。


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源


正是这种困境促使研究者开始思考:如果LLM agents真的那么强大,为什么不能让它们来帮助我们构建agents呢?这个想法最终催生了PocketFlow——一个仅有100行代码的极简框架。


核心设计:简约而不简单


PocketFlow的核心是一个基于图(Graph)的抽象,这个设计看似简单,却能支持各种复杂的应用场景。让我们来看看它的主要组件:


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源


1. 基础节点系统


class BaseNode:

def __init__(self):

self.params = {}

self.successors = {}

def prep(self, shared): pass

def exec(self, prep_res): pass

def post(self, shared, prep_res, exec_res): pass


这个看似简单的节点类实际上定义了一个强大的计算单元。每个节点都有三个关键步骤:


  • prep:从共享存储读取数据
  • exec:执行具体任务
  • post:将结果写回共享存储


2. 工作流管理


class Flow(BaseNode):

def __init__(self, start):

super().__init__()

self.start = start


Flow类通过简单的图结构连接各个节点,实现了复杂的工作流程控制。这种设计允许你轻松构建各种复杂的应用流程,从简单的串行处理到复杂的条件分支都能优雅地实现。


3. 上下文长度管理


在LLM应用中,上下文长度管理是一个关键挑战。即使是最先进的模型也有其上下文长度限制,而且随着上下文增长,处理质量往往会下降。LLM通常会只记住头尾的上下文,而丢失中间的部分。这一点在Cursor的设计上也能体现出来,每次只读250行,PocketFlow采用了这样的设计策略来解决这个问题:


分块处理策略


class ContextManager:

def __init__(self, max_chunk_size=250):

self.max_chunk_size = max_chunk_size

def split_content(self, content):

return [content[i:i+self.max_chunk_size]

for i in range(0, len(content), self.max_chunk_size)]


  • 自动将长文本分割成可管理的块
  • 保持语义完整性
  • 在块之间维护必要的重叠以保持连贯性


动态加载机制


  • 按需加载相关上下文
  • 使用滑动窗口维护活跃上下文
  • 智能卸载不再需要的内容


优先级管理


  • 最近操作优先
  • 相关性权重计算
  • 关键信息保留机制


4. 动作空间定义


动作空间定义决定了AI助手能做什么、不能做什么,这对于构建可靠且安全的系统至关重要。PocketFlow通过清晰的动作空间定义来规范AI助手的行为:


基础动作集


class ActionSpace:

def __init__(self):

self.actions = {

'read': FileReader(),

'edit': FileEditor(),

'search': CodeSearcher(),

'analyze': CodeAnalyzer()

}


  • 文件操作:读取、编辑、删除
  • 代码分析:语法检查、依赖分析
  • 搜索操作:代码搜索、符号查找
  • 工具调用:终端命令、外部API


安全约束


  • 文件访问限制
  • 命令执行控制
  • 资源使用限制
  • 操作频率限制


动作组合


  • 原子操作组合
  • 条件执行
  • 错误处理
  • 回滚机制


这种设计确保了AI助手在发挥强大功能的同时,始终在可控和安全的范围内运行。


猜测这个极简框架与强化学习的联系


PocketFlow的动作空间设计的理念可能与强化学习中的核心概念相关:


1. 马尔科夫决策过程(MDP)

class MDPAgent(BaseAgent):

def __init__(self, action_space):

self.states = CodeState() # 代码状态

self.actions = action_space # 可用动作

self.rewards = QualityMetrics() # 代码质量度量

def select_action(self, state):

# 基于当前状态选择最优动作

return self.policy.get_action(state)


  • 状态空间:代码库的当前状态
  • 动作空间:可执行的编辑操作
  • 状态转移:代码修改后的新状态
  • 奖励函数:代码质量改进度量


2. 蒙特卡洛树搜索(MCTS)

class MCTSPlanner:

def plan_edits(self, code_state):

root = Node(code_state)

for _ in range(SIMULATION_COUNT):

# 选择-扩展-模拟-回传

node = self.select(root)

child = self.expand(node)

reward = self.simulate(child)

self.backpropagate(child, reward)

return self.best_action(root)


  • 通过模拟不同的编辑序列
  • 评估每个动作的长期影响
  • 选择最优的编辑策略


这种结合让AI助手能够:


  • 预测动作的长期影响
  • 平衡探索与利用
  • 处理复杂的决策场景


工作流模式:灵活而强大


PocketFlow支持多种工作流模式,从简单到复杂,能够满足各种应用场景的需求。让我们通过具体的例子来理解这些模式:


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源


基础模式


1. Node(单步处理)

  • 最简单的工作单元,执行单一任务
  • 示例:邮件摘要生成器,一次处理一封邮件
  • 适用场景:简单的独立任务处理

2. Chain(多步链式)

  • 将多个节点按顺序连接
  • 示例:邮件处理流程(摘要生成 → 回复草拟)
  • 适用场景:需要按特定顺序执行的任务序列

3. Shared(共享通信)

  • 节点间通过共享存储交换数据
  • 示例:邮件处理系统,多个组件共享邮件内容
  • 适用场景:需要数据共享的复杂工作流

4. Nesting(嵌套复用)

  • 将一组相关节点封装为可重用单元
  • 示例:代码处理任务(测试编写 → 代码生成 → 复杂度分析 → 验证)
  • 适用场景:需要重复使用的复杂操作组合


高级模式


1. Batch(批量处理)

  • 同时处理多个相似任务
  • 示例:批量邮件摘要生成
  • 适用场景:需要并行处理多个相似项目

2. Async(异步处理)

  • 处理I/O密集型任务
  • 示例:定时检查收件箱并处理新邮件
  • 适用场景:涉及网络请求或文件操作的任务

3. Branch(条件分支)

  • 基于条件选择不同处理路径
  • 示例:邮件处理流程中的审核分支
  • 适用场景:需要根据中间结果做出决策的场景

4. Looping(循环处理)

  • 重复执行直到满足条件
  • 示例:问答系统中的持续对话
  • 适用场景:需要迭代或持续处理的任务


专业模式


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源


1. Workflow(定向路径)

  • 预定义的处理流程
  • 示例:邮件处理的标准流程
  • 适用场景:固定的业务流程

2. Map-Reduce(分治合并)

  • 将大任务分解后并行处理再合并
  • 示例:大文档的分块摘要生成
  • 适用场景:可并行化的大规模数据处理

3. Chat(对话系统)

  • 维护对话历史的循环处理
  • 示例:客服聊天机器人
  • 适用场景:需要上下文的交互式应用

4. RAG(检索增强生成)

  • 结合向量数据库的问答系统
  • 示例:基于文档库的智能问答
  • 适用场景:需要外部知识支持的生成任务

5. CoT(思维链)

  • 包含推理过程的处理模式
  • 示例:复杂问题的分步解决
  • 适用场景:需要清晰推理过程的任务


高级协作模式


1. Agent(智能代理)

  • 具有决策能力的自主处理单元
  • 示例:代码审查助手
  • 适用场景:需要智能决策的复杂任务

2. Multi-Agent(多智能体)

  • 多个代理协同工作
  • 示例:团队协作的代码开发系统
  • 适用场景:需要多角色协作的复杂项目

3. Supervisor(监督控制)

  • 对其他代理的工作进行监督和管理
  • 示例:质量控制系统
  • 适用场景:需要质量保证的关键任务


这些工作流模式不是孤立的,而是可以灵活组合的构建块。通过组合不同的模式,你可以构建出适应各种复杂场景的应用系统。例如,一个完整的代码开发助手可能同时使用:


  • Multi-Agent模式处理不同开发任务
  • RAG模式提供API文档支持
  • CoT模式进行代码设计推理
  • Supervisor模式确保代码质量


突破性创新:任务分解模式


PocketFlow最巧妙的设计之一是其任务分解模式。以代码编辑为例,它将复杂的编辑操作分解为两个步骤:


  1. 主agent生成高层代码修改方案
  2. 编辑agent处理具体的行级修改


这种设计大大提高了代码编辑的可靠性。就像一个经验丰富的程序员,先规划整体修改策略,再处理具体的代码细节。


简约但不简单


PocketFlow的成功告诉我们,真正的创新往往来自于对问题本质的深刻理解。100行代码,56KB大小,这个看似不可能的目标,通过精心的设计和巧妙的抽象,不仅变为现实,还开创了一种全新的开发范式。


正如研究者所说:"如果大语言模型真的那么强大,为什么不能让它们来帮助我们构建agents呢?"这个问题不仅推动了PocketFlow的诞生,也可能引领着AI开发工具的未来方向。


文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。


太疯狂了,仅100行56KB的LLM框架,用Cursor复刻一个一模一样的cursor | 已开源

关键词: AI , Cursor , PocketFlow , AI编程
AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
cursor

【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。

视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/

项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file


2
AI代理

【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。

项目地址:https://github.com/browser-use/browser-use


3
AI工作流

【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。

项目地址:https://github.com/n8n-io/n8n

在线使用:https://n8n.io/(付费)


【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。

项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file



【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。

项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file

在线使用:https://vectorvein.ai/(付费)

4
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

5
知识库

【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。

项目地址:https://github.com/labring/FastGPT

6
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI

7
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0