mcpField
F
framework-selection

framework-selection

github.com/langchain-aiAgent 工作流11960 次安装10 周前更新
代码仓库

关于 framework-selection

framework-selection 是一份技能指南,根据任务与控制流需求帮助在 LangChain、LangGraph 和 Deep Agents 之间选择。它也介绍如何组合这些层,以及后续应选用哪些技能。

主要功能

  1. 01框架选择决策指南
  2. 02三种框架层级的简介
  3. 03组合框架的指导
  4. 04中间件能力对比

适用场景

  1. 01编写 Agent 前选择框架
  2. 02为项目选择后续技能
  3. 03将 Deep Agents 与 LangGraph 子 Agent 结合

安装

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

$npx skills add https://github.com/langchain-ai/skills-benchmarks --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-fundamentals、langchain-rag、langchain-middleware

LangGraph — 适用于需要自行控制流程的场景

最适合:

  • 带有分支逻辑或循环的 Agent(例如,反复重试直到正确、反思)
  • 不同路径取决于中间结果的多步骤工作流
  • 在特定步骤进行人类参与审批
  • 并行扇出 / 扇入(MapReduce 模式)
  • 会话内多次调用之间的持久状态

不太适合:

  • 希望由框架代为处理规划、文件管理和子 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