Communitygithub.com

SystemTce/dify-skills

Dify 工作流设计完整指南 - 节点类型、设计模式、模板和最佳实践

¿Qué es dify-skills?

dify-skills is a Claude Code agent skill that dify 工作流设计完整指南 - 节点类型、设计模式、模板和最佳实践.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SystemTce/dify-skills/tree/main/01-workflow

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Dify 工作流设计 SKILL

掌握 Dify 工作流设计的核心知识和最佳实践

快速导航


工作流概述

Dify 工作流是一个可视化的 AI 应用编排系统,通过节点和边的组合,实现复杂的业务逻辑。

核心概念

  • 节点 (Node): 工作流的基本执行单元,每个节点执行特定的功能
  • 边 (Edge): 连接节点,定义数据流和执行顺序
  • 变量 (Variable): 在节点间传递数据
  • DSL (Domain Specific Language): YAML 格式的工作流定义语言

工作流类型

  1. Workflow: 标准工作流,适合复杂的多步骤处理
  2. Advanced Chat: 高级对话应用,支持工作流编排
  3. Agent: 智能代理,自主决策和工具调用

执行模型

  • 队列驱动: 基于 Ready Queue 的节点调度
  • 事件驱动: 节点执行产生事件流
  • 并行执行: 支持 2-8 个工作线程并行处理
  • 流式响应: 支持实时流式输出

核心节点类型

1. Start 节点

功能: 工作流的入口,定义输入变量

配置示例:

- data:
    desc: ''
    selected: false
    title: 开始
    type: start
    variables:
    - label: 用户输入
      max_length: 1000
      required: true
      type: text-input
      variable: user_input
  id: start
  type: custom

详细文档: nodes/start.md


2. LLM 节点

功能: 调用大语言模型进行推理和生成

配置示例:

- data:
    type: llm
    model:
      provider: openai
      name: gpt-4
      completion_params:
        temperature: 0.7
        max_tokens: 2000
    prompt_template:
    - id: system
      role: system
      text: "你是一个专业的助手"
    - id: user
      role: user
      text: "{{#sys.query#}}"
    context:
      enabled: true
      variable_selector: ["knowledge", "result"]
  id: llm

关键参数:

  • model: 模型配置(提供商、名称、参数)
  • prompt_template: 提示词模板(支持系统消息和用户消息)
  • context: 上下文配置(启用知识库检索结果)
  • memory: 对话记忆配置
  • vision: 视觉能力配置(支持图像输入)

详细文档: nodes/llm.md


3. Agent 节点

功能: 智能代理,根据用户需求自主调用工具

配置示例:

- data:
    type: agent
    agent_parameters:
      instruction:
        type: constant
        value: "根据用户需求,调用合适的工具完成任务"
      model:
        type: constant
        value:
          provider: openai
          model: gpt-4
          completion_params:
            temperature: 0.7
      query:
        type: constant
        value: "{{#sys.query#}}"
      tools:
        type: constant
        value:
        - enabled: true
          provider_name: time
          tool_name: current_time
          type: builtin
        - enabled: true
          provider_name: duckduckgo
          tool_name: ddgo_search
          type: builtin
    agent_strategy_name: function_calling
  id: agent

支持的策略:

  • function_calling: 函数调用(推荐)
  • react: ReAct 推理模式

详细文档: nodes/agent.md


4. Knowledge Retrieval 节点

功能: 从知识库检索相关信息(RAG)

配置示例:

- data:
    type: knowledge-retrieval
    dataset_ids:
    - "dataset-uuid-1"
    - "dataset-uuid-2"
    query_variable_selector: ["start", "sys.query"]
    retrieval_mode: single
    single_retrieval_config:
      model:
        provider: openai
        name: text-embedding-3-small
      top_k: 3
      score_threshold: 0.7
      reranking_model:
        provider: cohere
        model: rerank-english-v2.0
  id: knowledge

检索模式:

  • single: 单次检索
  • multiple: 多次检索

详细文档: nodes/knowledge-retrieval.md


5. Code 节点

功能: 执行 Python 或 JavaScript 代码

配置示例:

- data:
    type: code
    code_language: python3
    code: |
      def main(input_text: str) -> dict:
          # 处理逻辑
          result = input_text.upper()
          return {
              "output": result,
              "length": len(result)
          }
    variables:
    - variable: input_text
      value_selector: ["start", "user_input"]
    outputs:
      output:
        type: string
      length:
        type: number
  id: code

支持的语言:

  • Python 3
  • JavaScript (Node.js)

详细文档: nodes/code.md


6. HTTP Request 节点

功能: 调用外部 HTTP API

配置示例:

- data:
    type: http-request
    method: POST
    url: "https://api.example.com/endpoint"
    headers:
      Content-Type: application/json
      Authorization: "Bearer {{#env.API_KEY#}}"
    body:
      type: json
      data:
        query: "{{#sys.query#}}"
        options:
          temperature: 0.7
    timeout: 30
  id: http

支持的方法:

  • GET, POST, PUT, DELETE, PATCH

详细文档: nodes/http-request.md


7. Tool 节点

功能: 调用内置或自定义工具

配置示例:

- data:
    type: tool
    provider_id: google_translate
    provider_type: builtin
    provider_name: google_translate
    tool_name: translate
    tool_parameters:
      content:
        type: mixed
        value: "{{#sys.query#}}"
      dest:
        type: mixed
        value: "zh-CN"
  id: tool

工具类型:

  • builtin: 内置工具
  • api: API 工具
  • workflow: 工作流工具

详细文档: nodes/tool.md


8. If-Else 节点

功能: 条件分支控制

配置示例:

- data:
    type: if-else
    conditions:
    - variable_selector: ["llm", "text"]
      comparison_operator: contains
      value: "关键词"
    logical_operator: and
  id: condition

支持的运算符:

  • contains, not contains
  • is, is not
  • empty, not empty
  • >, <, >=, <=, =, !=

详细文档: nodes/if-else.md


9. Iteration 节点

功能: 迭代处理数组数据

配置示例:

- data:
    type: iteration
    iterator_selector: ["start", "items"]
    output_selector: ["iteration_inner", "output"]
    parallel_nums: 3
    error_handle_mode: continue
  id: iteration

错误处理模式:

  • continue: 继续执行
  • stop: 停止迭代

详细文档: nodes/iteration.md


10. Answer 节点

功能: 输出工作流结果

配置示例:

- data:
    type: answer
    answer: "{{#llm.text#}}"
  id: answer

详细文档: nodes/answer.md


设计模式

1. 顺序管道模式

适用场景: 简单的线性处理流程

结构:

Start → LLM → Answer

示例: patterns/sequential.md


2. 条件分支模式

适用场景: 根据条件执行不同的处理逻辑

结构:

Start → LLM → If-Else → [分支A / 分支B] → Answer

示例: patterns/conditional.md


3. 迭代处理模式

适用场景: 批量处理数组数据

结构:

Start → Code → Iteration → LLM → Answer

示例: patterns/iterative.md


4. 知识检索模式 (RAG)

适用场景: 基于知识库的问答

结构:

Start → Knowledge Retrieval → LLM (with context) → Answer

示例: patterns/rag.md


5. 多源聚合模式

适用场景: 整合多个数据源的信息

结构:

Start → [Tool1, Tool2, HTTP] → Variable Aggregator → LLM → Answer

示例: patterns/aggregation.md


工作流模板

简单问答

文件: templates/simple-qa.yml

描述: 最基础的问答工作流

节点: Start → LLM → Answer


RAG 助手

文件: templates/rag-assistant.yml

描述: 基于知识库的智能助手

节点: Start → Knowledge Retrieval → LLM → Answer


Agent 工具调用

文件: templates/agent-tools.yml

描述: 智能代理自主调用工具

节点: Start → Agent → Answer


多步骤处理

文件: templates/multi-step.yml

描述: 复杂的多步骤处理流程

节点: Start → Code → HTTP → LLM → If-Else → Answer


变量系统

系统变量

{{#sys.query#}}              # 用户查询
{{#sys.files#}}              # 上传的文件
{{#sys.conversation_id#}}    # 会话 ID
{{#sys.user_id#}}            # 用户 ID

节点变量

{{#节点ID.输出字段#}}         # 引用节点输出
{{#llm.text#}}               # LLM 文本输出
{{#knowledge.result#}}       # 知识检索结果
{{#code.output#}}            # 代码节点输出

会话变量

{{#conversation.变量名#}}     # 会话级变量

环境变量

{{#env.API_KEY#}}            # 环境变量
{{#env.DATABASE_URL#}}       # 数据库连接

迭代变量

{{#item#}}                   # 当前迭代项
{{#index#}}                  # 当前索引

最佳实践

1. 模块化设计

  • 将复杂流程拆分为多个独立节点
  • 使用变量传递数据,避免硬编码
  • 合理使用条件分支和迭代节点

2. 变量命名规范

  • 使用有意义的变量名
  • 遵循统一的命名约定
  • 添加必要的描述信息

3. 错误处理

  • 在关键节点添加错误处理逻辑
  • 使用条件分支处理异常情况
  • 提供友好的错误提示

4. 性能优化

  • 避免不必要的节点调用
  • 合理使用缓存机制
  • 控制循环迭代次数
  • 使用并行分支提升性能

5. 可维护性

  • 添加节点描述和注释
  • 使用清晰的节点命名
  • 保持工作流结构简洁
  • 定期审查和优化

详细内容: best-practices.md


下一步


相关 SKILL


版本: v1.0.0 最后更新: 2026-03-04 返回: 总 SKILL

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Skills relacionados