mcpField
F
framework-selection

framework-selection

github.com/langchain-aiAgent 工作流1.3k7.7k 次安装3 天前更新
代码仓库

关于 framework-selection

framework-selection 是用于在 LangChain、LangGraph 和 Deep Agents 之间做选择的决策指南,帮助开发者根据工作流复杂度匹配框架层级,并说明如何组合使用。

主要功能

  1. 01根据任务需求选择框架
  2. 02比较框架能力与取舍
  3. 03了解各选项的后续技能
  4. 04了解如何组合不同框架层级

适用场景

  1. 01在 Agent 项目开始前选择框架
  2. 02在简单 Agent 循环与自定义控制流间做选择
  3. 03判断是否需要规划、记忆或委派
  4. 04将 Deep Agents 编排与 LangGraph 工作流结合

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/langchain-ai/langchain-skills --skill framework-selection

安装后在 Claude Code 中输入/framework-selection确认已加载。

详细介绍

LangChain、LangGraph 和 Deep Agents 是**分层的**,而非相互竞争的选择。每一层都构建在下一层之上:
┌─────────────────────────────────────────┐
│              Deep Agents                │  ← highest level: batteries included
│   (planning, memory, skills, files)     │
├─────────────────────────────────────────┤
│               LangGraph                 │  ← orchestration: graphs, loops, state
│    (nodes, edges, state, persistence)   │
├─────────────────────────────────────────┤
│               LangChain                 │  ← foundation: models, tools, chains
│      (models, tools, prompts, RAG)      │
└─────────────────────────────────────────┘

选择更高层并不会让你无法使用较低层——你可以在 Deep Agents 中使用 LangGraph 图,也可以在两者中使用 LangChain 基元。

**在选择其他技能或编写 Agent 代码之前,应先在每个项目的顶部加载此技能。**你选择的框架决定接下来要调用哪些其他技能。


决策指南

请按顺序回答以下问题:

问题是 →否 →
任务是否需要将工作拆分为子任务、在较长的会话中管理文件、持久化记忆,或按需加载技能?Deep Agents↓
任务是否需要复杂的控制流——循环、动态分支、并行工作者、人机协作,或自定义状态?LangGraph↓
这是一个接收输入、运行工具并返回结果的单一用途 Agent 吗?LangChain(create_agent)↓
这是一个没有 Agent 循环的纯模型调用、链或检索管道吗?LangChain(链)—

框架简介

LangChain — 适用于专注且自成一体的任务

最适合:

  • 使用固定工具集的单一用途 Agent
  • RAG 管道和文档问答
  • 模型调用、提示词模板、输出解析
  • Agent 逻辑简单的快速原型

不太适合:

  • Agent 需要规划许多步骤
  • 状态需要跨多个会话持久保存
  • 控制流包含条件或迭代

接下来要调用的技能: langchain-models、langchain-rag、langchain-middleware

LangGraph — 适用于需要掌控控制流的场景

最适合:

  • 具有分支逻辑或循环的 Agent(例如,重试直到正确、反思)
  • 根据中间结果走不同路径的多步骤工作流
  • 在特定步骤进行人机协作审批
  • 并行分发/汇总(map-reduce 模式)
  • 在会话内的多次调用之间持久保存状态

不太适合:

  • 希望由框架代为处理规划、文件管理和子 Agent 委派(这种情况请使用 Deep Agents)
  • 工作流足够简单,使用简单 Agent 即可

接下来要调用的技能: langgraph-fundamentals、langgraph-human-in-the-loop、langgraph-persistence

### Deep Agents — 适用于开放式、多维度的任务

最适合:

  • 需要拆分为待办事项列表的长时间运行任务
  • 需要在一个会话中读取、写入和管理文件的 Agent
  • 将子任务委派给专用子 Agent
  • 按需加载特定领域技能
  • 能够跨多个会话持久保存的记忆

不适合:

  • 任务简单到可以由单一用途的 Agent 完成
  • 需要对每条图边进行精确、手动控制(请直接使用 LangGraph)

中间件 — 内置且可扩展:

Deep Agents 开箱即带有内置中间件层 — 你只需配置它,而不必实现它。以下中间件已预先接入;你也可以在此基础上添加自定义中间件:

中间件提供的功能始终启用?
TodoListMiddlewarewrite_todos 工具 — Agent 规划并跟踪多步骤任务✓
FilesystemMiddlewarels、read_file、write_file、edit_file、glob、grep 工具✓
SubAgentMiddlewaretask 工具 — 将工作委派给指定名称的子 Agent✓
SkillsMiddleware按需从技能目录加载 SKILL.md 文件选择启用
MemoryMiddleware通过 Store 实例跨会话保留长期记忆选择启用
HumanInTheLoopMiddleware在调用敏感工具前中断流程并请求人工批准选择启用

接下来要调用的技能: deep-agents-core、deep-agents-memory、deep-agents-orchestration


混合使用各层

由于这些框架采用分层设计,因此可以在同一个项目中组合使用。最常见的模式是将 Deep Agents 用作顶层协调器,同时针对专用子 Agent 使用 LangGraph。
何时混合使用
场景推荐模式
主 Agent 需要规划和记忆,但某个子任务需要精确控制图结构Deep Agents 协调器 → LangGraph 子 Agent
专用流水线(例如 RAG、反思循环)由更广泛的 Agent 调用将 LangGraph 图包装为工具或子 Agent
进行高级别协调,但针对特定领域使用底层图Deep Agents + 作为子 Agent 的 LangGraph 编译图
实际运作方式

可以将 LangGraph 编译图注册为 Deep Agents 中的子 Agent。这意味着你可以构建一个受严格控制的 LangGraph 工作流(例如检索与验证循环),然后将其交给 Deep Agents 的 task 工具,作为一个具名子 Agent — Deep Agents 协调器会将任务委派给它,而无需了解其内部图结构。

LangChain 工具、链和检索器可以在 LangGraph 节点和 Deep Agents 工具中自由使用 — 它们是各层共用的构建模块。


快速参考

LangChainLangGraphDeep Agents
控制流固定(工具循环)自定义(图)托管(中间件)
中间件层仅回调✗ 无✓ 显式、可配置
规划✗手动✓ TodoListMiddleware
文件管理✗手动✓ FilesystemMiddleware
持久记忆✗使用检查点保存器✓ MemoryMiddleware
子 Agent 委派✗手动✓ SubAgentMiddleware
按需加载技能✗✗✓ SkillsMiddleware
人在回路中✗手动中断✓ HumanInTheLoopMiddleware
自定义图边✗✓ 完全控制有限
设置复杂度低中低
灵活性中高中

中间件是 LangChain(回调)和 Deep Agents(显式中间件层)特有的概念。LangGraph 没有中间件 — 你需要将行为直接接入节点和边。

评论

支持 Markdown