agentic_huge_data_base / wiki
页面 Dify · 2.3 应用类型与执行模式·DeepWiki 中文全文译文

2.3 · 应用类型与执行模式(Application Types and Execution Modes)

应用编排与外部知识接入 · 本章是 Dify DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Dify 章节2.3 状态全文译文 模块工作流与编排、智能体运行时、入库与解析、图谱与关系
源码线索
  • api/core/app/app_config/entities.py
  • api/core/app/apps/advanced_chat/app_config_manager.py
  • api/core/app/apps/advanced_chat/app_generator.py
  • api/core/app/apps/advanced_chat/app_runner.py
  • api/core/app/apps/advanced_chat/generate_task_pipeline.py
  • api/core/app/apps/agent_chat/app_generator.py
  • api/core/app/apps/base_app_generator.py
  • api/core/app/apps/chat/app_generator.py
  • api/core/app/apps/completion/app_generator.py
  • api/core/app/apps/message_based_app_generator.py
模块标签
  • 工作流与编排
  • 智能体运行时
  • 入库与解析
  • 图谱与关系
  • 系统架构

中文译文

应用类型与执行模式(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/langgenius/dify/2.3-application-types-and-execution-modes
翻译时间:2026-05-27T08:44:30.498Z
翻译模型:deepseek-chat
原文字符数:14937
项目:Dify (dify)

--- 好的,作为一名资深技术文档翻译专家,我将严格遵循您的要求,对这份 DeepWiki 技术文档进行全文翻译和润色。

---

应用类型与执行模式

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • api/core/app/app_config/entities.py
  • api/core/app/apps/advanced_chat/app_config_manager.py
  • api/core/app/apps/advanced_chat/app_generator.py
  • api/core/app/apps/advanced_chat/app_runner.py
  • api/core/app/apps/advanced_chat/generate_task_pipeline.py
  • api/core/app/apps/agent_chat/app_generator.py
  • api/core/app/apps/base_app_generator.py
  • api/core/app/apps/chat/app_generator.py
  • api/core/app/apps/completion/app_generator.py
  • api/core/app/apps/message_based_app_generator.py
  • api/core/app/apps/pipeline/pipeline_runner.py
  • api/core/app/apps/workflow/app_generator.py
  • api/core/app/apps/workflow/app_runner.py
  • api/core/app/apps/workflow/generate_task_pipeline.py
  • api/core/app/apps/workflow_app_runner.py
  • api/core/app/entities/queue_entities.py
  • api/core/app/entities/task_entities.py
  • api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py
  • api/core/app/task_pipeline/message_cycle_manager.py
  • api/core/app/workflow/layers/persistence.py
  • api/core/llm_generator/output_parser/structured_output.py
  • api/core/rag/entities/__init__.py
  • api/core/rag/entities/index_entities.py
  • api/core/rag/entities/metadata_entities.py
  • api/core/rag/entities/processing_entities.py
  • api/core/rag/entities/retrieval_settings.py
  • api/core/workflow/nodes/knowledge_index/entities.py
  • api/core/workflow/nodes/knowledge_retrieval/entities.py
  • api/libs/helper.py
  • api/models/account.py
  • api/models/api_based_extension.py
  • api/models/dataset.py
  • api/models/model.py
  • api/models/provider.py
  • api/models/source.py
  • api/models/task.py
  • api/models/tools.py
  • api/models/utils/file_input_compat.py
  • api/models/web.py
  • api/models/workflow.py
  • api/services/entities/knowledge_entities/rag_pipeline_entities.py
  • api/tests/unit_tests/core/app/apps/chat/test_base_app_runner_multimodal.py
  • api/tests/unit_tests/core/app/apps/test_advanced_chat_app_generator.py
  • api/tests/unit_tests/core/app/apps/test_base_app_generator.py
  • api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline.py
  • api/tests/unit_tests/core/app/task_pipeline/test_message_cycle_manager_optimization.py
  • api/tests/unit_tests/core/workflow/nodes/test_start_node_json_object.py
  • api/tests/unit_tests/libs/test_token_manager.py
  • web/app/components/base/chat/chat/utils.ts

本文档解释了 Dify 支持的不同应用类型及其执行模式。内容涵盖应用的配置方式、模式如何决定执行行为,以及应用模式、工作流和 Agent 配置之间的关系。

有关工作流执行细节,请参阅 工作流定义与执行模型。有关检索增强生成(RAG)的特定配置,请参阅 检索策略与元数据过滤

---

目的与范围

Dify 支持多种不同的应用类型,每种类型都针对不同的使用场景而设计。本文档描述了以下内容:

  • AppMode 枚举及其取值。
  • 每种模式如何决定应用的行为和执行流程。
  • 应用模式、AppModelConfigWorkflow 实体之间的关系。
  • “简易 UI”(基于提示词)应用与基于工作流应用之间的区别。
  • 用于处理流式响应和阻塞响应的任务管线架构。

---

应用模式枚举

所有 Dify 应用都有一个 mode 字段,用于确定其类型和执行行为。可用的模式在 AppMode 枚举中定义。

graph TB
    AppMode["AppMode (StrEnum)"]

    AppMode --> COMPLETION["COMPLETION<br/>'completion'"]
    AppMode --> CHAT["CHAT<br/>'chat'"]
    AppMode --> WORKFLOW["WORKFLOW<br/>'workflow'"]
    AppMode --> ADVANCED_CHAT["ADVANCED_CHAT<br/>'advanced-chat'"]
    AppMode --> AGENT_CHAT["AGENT_CHAT<br/>'agent-chat'"]

    COMPLETION --> EasyUI["简易 UI 应用<br/>(MessageBasedAppGenerator)"]
    CHAT --> EasyUI
    AGENT_CHAT --> EasyUI

    WORKFLOW --> WorkflowBased["基于工作流的应用<br/>(WorkflowAppGenerator)"]
    ADVANCED_CHAT --> WorkflowBased

来源:api/models/model.py:49-69, api/core/app/apps/message_based_app_generator.py:46-46, api/core/app/apps/workflow/app_generator.py:60-60

---

执行管线架构

Dify 使用标准化的管线架构来管理应用请求的生命周期,从输入验证到流式响应生成。

任务管线层次结构

BasedGenerateTaskPipeline 是所有应用执行逻辑的基础。管线负责消费来自 AppQueueManager 的事件,并将其转换为流式或阻塞响应。

classDiagram
    class BasedGenerateTaskPipeline {
        +process()
        +_to_stream_response()
        +_to_blocking_response()
    }
    class EasyUIBasedGenerateTaskPipeline {
        +process()
        -_task_state: EasyUITaskState
    }
    class WorkflowAppGenerateTaskPipeline {
        +process()
        -_graph_runtime_state: GraphRuntimeState
    }
    class AdvancedChatAppGenerateTaskPipeline {
        +process()
        -_task_state: WorkflowTaskState
    }

    BasedGenerateTaskPipeline <|-- EasyUIBasedGenerateTaskPipeline
    GraphRuntimeStateSupport <|-- WorkflowAppGenerateTaskPipeline
    GraphRuntimeStateSupport <|-- AdvancedChatAppGenerateTaskPipeline

来源:api/core/app/task_pipeline/based_generate_task_pipeline.py:1-50, api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:69-72, api/core/app/apps/workflow/generate_task_pipeline.py:75-75, api/core/app/apps/advanced_chat/generate_task_pipeline.py:141-141

---

简易 UI(基于提示词)模式

这些模式由 MessageBasedAppGenerator 管理,并使用 EasyUIBasedGenerateTaskPipeline。与完整的可视化工作流相比,它们的特点是配置更简单(系统提示词 + 大语言模型(LLM)设置)。

补全模式

模式值: "completion" 代表单轮文本补全。用户提供输入,应用生成单个响应。它不支持对话历史或对话名称生成 api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:123-128

对话与智能体对话模式

模式值: "chat", "agent-chat" 这些模式支持多轮对话。Agent Chat 通过自主工具调用能力扩展了标准对话。标准对话应用每轮只调用一次大语言模型(LLM),而 Agent 对话可能涉及多次“思考”和工具调用。

关键组件:

  • MessageCycleManager:处理辅助任务,如生成对话名称和管理标注 api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:109-112, api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:125-127
  • EasyUITaskState:跟踪 LLMResult,其中包含提示消息和使用情况 api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:100-107

来源:api/core/app/apps/message_based_app_generator.py:46-63, api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:69-85

---

基于工作流的模式

这些模式执行由 GraphEngine 管理的、由相互连接的节点组成的可视化图。

工作流模式

模式值: "workflow" 执行一个可视化图。它通常不保留对话历史状态。它使用 WorkflowAppGeneratorWorkflowAppRunner api/core/app/apps/workflow/app_generator.py:60-60, api/core/app/apps/workflow/app_runner.py:12-12

高级对话模式

模式值: "advanced-chat" 将可视化工作流执行与对话记忆相结合。它允许在保持对话界面的同时实现复杂的逻辑(循环、条件)。

高级对话的执行流程:

  1. 运行器初始化AdvancedChatAppRunner 准备 GraphRuntimeState api/core/app/apps/advanced_chat/app_generator.py:23-23
  2. 系统变量:通过 build_system_variables 将对话上下文(例如 dialogue_countconversation_iduser_id)注入到工作流中 api/core/app/apps/advanced_chat/generate_task_pipeline.py:175-184
  3. 状态管理:使用 WorkflowTaskState 来跟踪工作流运行的生命周期 api/core/app/apps/advanced_chat/generate_task_pipeline.py:191-192

来源:api/core/app/apps/advanced_chat/generate_task_pipeline.py:141-157, api/core/app/apps/workflow/generate_task_pipeline.py:75-88

---

技术数据流:代码实体空间

下图弥合了高层应用概念与处理执行的具体代码实体之间的差距。

graph TD
    subgraph "请求入口 (api/controllers/)"
        API["API 路由处理器"]
    end

    subgraph "生成器 (api/core/app/apps/)"
        MBAG["MessageBasedAppGenerator"]
        WAG["WorkflowAppGenerator"]
        ACAG["AdvancedChatAppGenerator"]
    end

    subgraph "管线 (api/core/app/task_pipeline/)"
        EUIP["EasyUIBasedGenerateTaskPipeline"]
        WFP["WorkflowAppGenerateTaskPipeline"]
        ACAP["AdvancedChatAppGenerateTaskPipeline"]
    end

    subgraph "运行器与状态 (api/core/workflow/)"
        ACAR["AdvancedChatAppRunner"]
        WFAR["WorkflowAppRunner"]
        GE["GraphEngineLayer"]
        GRS["GraphRuntimeState"]
    end

    API -->|Chat/Completion| MBAG
    API -->|Workflow| WAG
    API -->|Advanced Chat| ACAG

    MBAG --> EUIP
    WAG --> WFP
    ACAG --> ACAP

    WFP --> WFAR
    ACAP --> ACAR
    WFAR --> GE
    ACAR --> GE
    GE --> GRS

来源:api/core/app/apps/message_based_app_generator.py:75-81, api/core/app/apps/workflow/app_generator.py:23-26, api/core/app/apps/advanced_chat/app_generator.py:23-26, api/core/app/apps/workflow/app_generator.py:41-43

---

任务状态与事件流

执行进度通过专门的队列事件进行通信,这些事件被封装在 StreamResponse 对象中。

支持的流式事件
  • QueuePingEvent:心跳保活事件 api/core/app/entities/queue_entities.py:44-44
  • QueueTextChunkEvent:用于对话/补全的标准文本片段 api/core/app/entities/queue_entities.py:47-47
  • QueueAgentThoughtEvent:由 Agent 应用使用,用于展示推理过程和工具调用 api/core/app/entities/queue_entities.py:19-19
  • QueueWorkflowStartedEvent / QueueWorkflowSucceededEvent:工作流执行的生命周期事件 api/core/app/entities/queue_entities.py:51-52
  • QueueNodeStartedEvent / QueueNodeSucceededEvent:单个节点状态转换的事件 api/core/app/entities/queue_entities.py:42-43
  • QueueHumanInputFormFilledEvent:当工作流在用户交互后恢复时触发 api/core/app/entities/queue_entities.py:30-30
状态实体
用途来源
EasyUITaskState存储简单应用的 LLMResult 和元数据api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:100-107
WorkflowTaskState跟踪基于工作流应用的任务状态和响应数据api/core/app/entities/task_entities.py:68-68
GraphRuntimeState工作流引擎的核心状态,包含变量池api/core/app/apps/workflow/generate_task_pipeline.py:122-122

---

实现细节:响应处理

BasedGenerateTaskPipeline 实现了将内部队列事件转换为外部响应的过程。

阻塞模式与流式模式
  • 流式模式:管线生成 StreamResponse 对象,这些对象通常会被转换为服务器推送事件(SSE) api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:130-131
  • 阻塞模式:管线消费整个生成器,将结果累积在 TaskState 中,并返回一个单一的 BlockingResponse(例如 ChatbotAppBlockingResponseapi/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:135-163
# 来自 api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:142-146
for stream_response in generator:
    match stream_response:
        case ErrorStreamResponse():
            raise stream_response.err
        case MessageEndStreamResponse():
            # 累积使用情况和元数据,用于最终的阻塞响应

来源:api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:135-163, api/core/app/apps/workflow/generate_task_pipeline.py:139-170