인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

dify-workflow

dify-workflow

设计、生成并部署 Dify 应用 DSL (workflow/advanced-chat)。当用户要求构建 Dify 工作流、生成/更新 DSL 文件或通过 Admin API 部署到 Dify 实例时使用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: dify-workflow description: 设计、生成并部署 Dify 应用 DSL (workflow/advanced-chat)。当用户要求构建 Dify 工作流、生成/更新 DSL 文件或通过 Admin API 部署到 Dify 实例时使用。

Dify Workflow DSL 生成器

交互原则与凭证隔离

  • 需求澄清:若用户描述不足以确定节点或输入/输出流程,优先澄清输入输出变量与核心节点,确认后开始生成。
  • 凭证隔离:严格隔离敏感凭证。最终回复与导出产物中仅包含 App ID、DSL 文件路径、节点统计与部署状态,禁止泄露 ADMIN_API_KEY。
  • 关联 Skill 约定:涉及 Console Admin API 操作时,先读取并遵守 dify-deploy。

版本锚定 (Version Anchoring)

每次生成前按顺序执行:

  1. 读取 references/config.yml,获取 dsl_version 与 reference_dsl。
  2. 若 reference_dsl 非空,读取 references/user-reference/<文件名> 作为基准 schema。
  3. 读取 references/version-deltas.md 查找版本差异。
  4. 约束:输出 YAML 的 version 必须匹配 dsl_version,且仅使用目标版本支持的节点与字段。

节点路由表

节点类型标识用途关键参数Schema 路径
Startstart入口节点;定义输入变量variablesreferences/nodes/start.md
EndendWorkflow 模式终端;声明输出outputsreferences/nodes/end.md
AnsweranswerChatflow 模式流式输出answer, variablesreferences/nodes/answer.md
LLMllm调用大语言模型model, prompt_template, context, visionreferences/nodes/llm.md
Knowledge Retrievalknowledge-retrieval知识库文档检索query_variable_selector, dataset_ids, retrieval_modereferences/nodes/knowledge-retrieval.md
Codecode执行 Python3/JS/JSONcode_language, code, variables, outputsreferences/nodes/code.md
HTTP Requesthttp-requestHTTP API 调用method, url, headers, body, authorizationreferences/nodes/http-request.md
If/Elseif-else条件分支 (IF/ELIF/ELSE)casesreferences/nodes/if-else.md
Variable Aggregatorvariable-aggregator合并多分支变量output_type, variablesreferences/nodes/variable-aggregator.md
Iterationiteration数组循环遍历iterator_selector, iterator_input_type, output_selectorreferences/nodes/iteration.md
Document Extractordocument-extractor文件文本提取 (PDF/DOCX)variable_selector, is_array_filereferences/nodes/document-extractor.md
Template Transformtemplate-transformJinja2 模板渲染template, variablesreferences/nodes/template-transform.md
Question Classifierquestion-classifierLLM 意图分类query_variable_selector, model, classesreferences/nodes/question-classifier.md
Parameter Extractorparameter-extractorLLM 结构化参数提取query, model, parameters, reasoning_modereferences/nodes/parameter-extractor.md
Tooltool调用外部工具provider_id, provider_type, tool_name, tool_parametersreferences/nodes/tool.md

任务执行路径与校验关卡

执行路径

  1. 解析与模式确定:批处理用 workflow 模式(Start -> End);对话交互用 advanced-chat 模式(Start -> Answer)。
  2. 节点选择与模板匹配:优先匹配 ## 模板匹配 中的预设模板;无匹配时依据路由表 schema 逐个组装。
  3. 构图与边连接:
    • 节点 ID 格式:13 位时间戳字符串(如 "1711536487001")。
    • 坐标规划:起始点 {x: 80, y: 282},X 轴增量 +300px,分支 Y 轴增量 +200px。
    • 边 ID 格式:{sourceId}-{sourceHandle}-{targetId}-{targetHandle},targetHandle 统一为 "target"。分支 sourceHandle 分别为 "true"/case_id/"false" 或类别 ID。
  4. 部署与更新(如适用):覆盖更新前先导出原 DSL 保存为备份文件。API 异常卡住时报告排查建议,未获明确授权禁止直连数据库。

校验关卡 (Validation Gate)

交付产物前必须完成以下 4 项校验:

  • 语法与命名:默认输出为当前目录的 <kebab-case-name>.dify.yml(按需输出 .dify.json)。所有字符串节点 ID 显式加引号。
  • 拓扑完整性:所有 Edge 的 source 和 target ID 在 Graph Nodes 中真实存在,边 type 为 "custom"。
  • 变量引用合法性:节点变量引用为 {{#nodeId.variableName#}},系统变量为 sys 前缀(workflow 模式严禁引用 sys.query)。
  • Provider 正确性:model.provider 遵循 "langgenius/<provider>/<provider>" 格式,且使用真实模型标识(如 gpt-4o-mini、deepseek-chat)。

DSL 结构快速参考

version: "<dsl_version from config.yml>"
kind: app
app:
  name: "工作流名称"
  mode: "advanced-chat"           # 或 "workflow"
  description: "..."
  icon: "\U0001F916"
  icon_background: "#FFEAD5"
  icon_type: emoji
  use_icon_as_answer_icon: false
dependencies: []
workflow:
  environment_variables: []
  conversation_variables: []
  features:
    file_upload:
      enabled: false
    opening_statement: ""         # 仅 chatflow
    retriever_resource:
      enabled: false
    sensitive_word_avoidance:
      enabled: false
    speech_to_text:
      enabled: false
    suggested_questions: []       # 仅 chatflow
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
  graph:
    nodes: []                     # 节点对象数组
    edges: []                     # 边对象数组
    viewport:
      x: 0
      y: 0
      zoom: 0.7

完整字段级规范参照 references/dsl-format.md。

常见 Schema 陷阱

  1. 变量形状差异:
    • code / llm / template-transform / parameter-extractor:[{ variable: "arg", value_selector: ["node_id", "field"], value_type: "string" }]
    • variable-aggregator:裸嵌套列表 [["node1_id", "output"], ["node2_id", "output"]]
    • document-extractor:扁平列表 variable_selector: ["upstream_id", "field"]
  2. Memory 作用域:memory 块仅存在于 advanced-chat 模式的 LLM 节点,workflow 模式及迭代内部节点必须省略。
  3. 迭代节点约束:内层节点须包含 parentId: <iteration_id>、data.isInIteration: true、zIndex: 1002,坐标为相对坐标(初始约 {x: 24, y: 68})。iterator_input_type 必须与真实元素匹配(如 "array[file]")。
  4. 特定节点输出形状:End 节点 outputs 为列表;Code 节点 outputs 为字典。
  5. Edge Data 字段:包含 sourceType、targetType、isInIteration、isInLoop。迭代内边补充 iteration_id 与 zIndex: 1002。

模板与参考示例

与已知模式高度匹配时优先使用预设模板,按需调整字段:

模板路径匹配条件
Chatbotreferences/templates/chatbot.yml简单对话:Start -> LLM -> Answer
RAGreferences/templates/rag.yml知识库问答:Start -> Knowledge Retrieval -> LLM -> Answer
Agentreferences/templates/agent.yml带分类/参数提取的工具 Agent
Translationreferences/templates/translation.yml文本转换/翻译

完整示例文件指针 (Progressive Disclosure)

  • Minimal Chatbot DSL:对应完整 DSL 见 examples/simple-chatbot.yml
  • RAG with Rerank DSL:对应完整 DSL 见 examples/rag-with-rerank.yml
저장한 Skills