Dify Developer — это готовый набор инструментов (CLI-утилита, шаблоны и база знаний) для автоматизации разработки, тестирования, отладки и деплоя Dify-приложений (workflows/chatflows) v1.14.2 через Dify Console API.
Проект создан для того, чтобы избавить разработчиков от рутинного ручного кликания в UI Dify и позволить управлять жизненным циклом сценариев прямо из терминала или через ИИ-ассистентов.
- Dify Workflow CLI (
dify_dev_cli.py):- Автоматический импорт сценариев из YAML DSL.
- Запуск и интерактивное тестирование draft-версий сценариев с чтением логов (SSE-потока) в реальном времени.
- Прохождение шагов с подтверждением человеком (Human-in-the-Loop) прямо из CLI.
- Управление жизненным циклом (публикация, удаление приложений).
- База знаний и спецификации (Reference):
- Подробные спецификации схем данных для всех типов нод Dify (в каталоге
references/nodes/). - Руководства по сложным темам: обработка выводов LLM, интеграция MCP-серверов, отслеживание состояний между запусками и организация связей/переходов между узлами графа.
- Подробные спецификации схем данных для всех типов нод Dify (в каталоге
- Готовые шаблоны сценариев (Examples):
- Практические кейсы (например, периодический сборщик дайджеста вакансий с дедупликацией).
- Шаблоны конфигураций для разных типов нод.
Склонируйте репозиторий в удобное место:
git clone https://github.com/imdeniil/dify-developer.git
cd dify-developerСоздайте файл .env в корневом каталоге вашего основного проекта (или скопируйте значения) со следующими переменными:
DIFY_BASE_URL=http://localhost:3006
DIFY_CONSOLE_TOKEN=dify-admin-ваш-токен
DIFY_WORKSPACE_ID=ваш-workspace-idПодробнее про авторизацию см. в references/09-auth-and-access.md.
Запустите команду начальной настройки:
python3 scripts/dify_dev_cli.py setupЧто сделает эта команда:
- Склонирует официальную документацию Dify в
~/dify-docs/(сdepth=1для экономии места). - Настроит субагент для Claude Code в
~/.claude/agents/dify-docs.md, чтобы ИИ мог быстро искать информацию по докам.
Все взаимодействия с Dify Console API осуществляются через скрипт scripts/dify_dev_cli.py. Авторизация (DIFY_CONSOLE_TOKEN, DIFY_WORKSPACE_ID, DIFY_BASE_URL) автоматически подгружается из файла .env в корне проекта.
- Импорт приложения из DSL (YAML):
Импортирует новый workflow или обновляет существующий (если передан
python3 scripts/dify_dev_cli.py import --file <path_to_yaml> [--name <name>] [--app-id <app_id>] [--description <desc>] [--icon <emoji>] [--icon-background <bg>]
--app-id). - Экспорт YAML DSL приложения:
Сохраняет текущую опубликованную конфигурацию в файл YAML DSL.
python3 scripts/dify_dev_cli.py export --app-id <app_id> [--output <path_to_file>]
- Список приложений в workspace:
Выводит таблицу со всеми приложениями (ID, имя, режим, статус публикации, иконка, дата обновления).
python3 scripts/dify_dev_cli.py list-apps [--page <page>] [--limit <limit>] [--name <name>] [--mode <mode>]
- Показать подробные метаданные приложения:
Выводит детальную информацию о конкретном workflow в формате JSON.
python3 scripts/dify_dev_cli.py show-app --app-id <app_id>
- Публикация (Deploy):
Опубликовать текущую draft-версию workflow.
python3 scripts/dify_dev_cli.py publish --app-id <app_id>
- Удаление приложения:
Полностью удаляет приложение из Dify.
python3 scripts/dify_dev_cli.py delete --app-id <app_id>
- Интерактивный запуск черновика (Draft Run):
Запуск draft-версии с чтением SSE-потока событий. Поддерживает передачу файлов для мультимодальных моделей (передаются в
python3 scripts/dify_dev_cli.py test --app-id <app_id> [--inputs '<json_string>'] [--files '<json_string>']
--filesв формате JSON-массива объектов с полямиtype,transfer_method,url/upload_file_id). - Прохождение Human-in-the-Loop (HITL):
Приостановленное выполнение на ноде
Human Inputвыведетform_token. Отправьте ответ формы:python3 scripts/dify_dev_cli.py submit-form --token <form_token> --action <action_id> [--inputs '<json_string>']
- Получение лога событий:
Позволяет дочитать поток событий после продолжения HITL или других прерываний.
python3 scripts/dify_dev_cli.py get-events --run-id <run_id>
- Список истории запусков:
Отображает список всех запусков workflow и их статусы.
python3 scripts/dify_dev_cli.py list-runs --app-id <app_id> [--limit <limit>] [--page <page>] [--status <status>]
- Принудительная остановка выполнения:
Останавливает выполняющийся запуск workflow.
python3 scripts/dify_dev_cli.py stop-run --app-id <app_id> --run-id <run_id>
- Проверка зависимостей приложения:
Проверяет используемые в графе модели, плагины и MCP-серверы на доступность в вашем workspace.
python3 scripts/dify_dev_cli.py check-deps --app-id <app_id>
- Экспорт/импорт сырого JSON-графа (Draft JSON):
# Получить текущий JSON графа python3 scripts/dify_dev_cli.py get-draft-json --app-id <app_id> [--output <path_to_file>] # Импортировать JSON графа напрямую python3 scripts/dify_dev_cli.py update-draft-json --app-id <app_id> --file <path_to_json_file>
- Список ключей:
python3 scripts/dify_dev_cli.py list-keys --app-id <app_id>
- Создание нового ключа:
python3 scripts/dify_dev_cli.py create-key --app-id <app_id>
- Удаление ключа:
python3 scripts/dify_dev_cli.py delete-key --app-id <app_id> --key-id <key_id>
- Список MCP-серверов:
python3 scripts/dify_dev_cli.py list-mcp
- Добавление нового MCP-сервера:
python3 scripts/dify_dev_cli.py add-mcp --name <name> --url <url> --identifier <id> [--icon <emoji>] [--headers <json_or_pairs>] [--timeout <timeout>] [--sse-timeout <sse_timeout>]
- Обновление параметров MCP-сервера:
python3 scripts/dify_dev_cli.py update-mcp --provider-id <id_name_or_uuid> [--name <name>] [--url <url>] [--identifier <id>] [--icon <emoji>] [--headers <json_or_pairs>] [--timeout <timeout>] [--sse-timeout <sse_timeout>]
- Удаление MCP-сервера:
MCP-сервер можно удалять или обновлять, указывая его UUID, название (
python3 scripts/dify_dev_cli.py delete-mcp --provider-id <id_name_or_uuid>
name) или идентификатор (identifier).
- Список активных провайдеров и моделей:
python3 scripts/dify_dev_cli.py list-models
- Модели по умолчанию для workspace:
# Получить модель по умолчанию для типа (например, llm, text-embedding) python3 scripts/dify_dev_cli.py get-default-model --model-type <type> # Установить модель по умолчанию python3 scripts/dify_dev_cli.py set-default-model --model-type <type> --model <model> --provider <provider>
- Настройка ключей доступа к провайдерам ИИ (API Credentials):
# Посмотреть текущую конфигурацию провайдера python3 scripts/dify_dev_cli.py get-model-credentials --provider <provider> # Сохранить/создать API-ключи провайдера python3 scripts/dify_dev_cli.py set-model-credentials --provider <provider> --credentials <json_string> [--name <name>] # Проверить подключение с указанными ключами python3 scripts/dify_dev_cli.py validate-model-credentials --provider <provider> --credentials <json_string>
Для работы с этой группой команд вам понадобится API-ключ конкретного опубликованного приложения (app-xxxxxxxx). Его можно сгенерировать в UI Dify или получить программно через команду create-key. Ключ можно передавать через аргумент --app-key или задать в .env как переменную DIFY_APP_KEY. Если указан аргумент --app-id, CLI автоматически получит или создаст API-ключ для этого приложения.
- Запуск опубликованного workflow (App Run):
По умолчанию запускает выполнение в интерактивном режиме SSE-стриминга логов.
python3 scripts/dify_dev_cli.py app-run [--app-key <key>] [--app-id <app_id>] [--inputs '<json_string>'] [--files '<json_string>'] [--no-streaming] [--user <user>]
- Принудительная остановка таска (App Stop):
python3 scripts/dify_dev_cli.py app-stop [--app-key <key>] --task-id <id> [--user <user>]
- Получить детальный статус и результат запуска (App Run Detail):
python3 scripts/dify_dev_cli.py app-run-detail [--app-key <key>] --run-id <run_id>
- Получить входные параметры приложения (App Parameters):
Возвращает схему ожидаемых переменных и настройки лимитов загрузки файлов.
python3 scripts/dify_dev_cli.py app-parameters [--app-key <key>]
- Загрузка файла на сервер Dify (App File Upload):
Возвращает JSON с
python3 scripts/dify_dev_cli.py app-upload [--app-key <key>] --file <path_to_local_file> [--user <user>]
idзагруженного файла, который затем можно передать в качестве значения для файловой переменной на шагеapp-run. - Запуск и тестирование Chatflow (test-chatflow):
Использует Service API
python3 scripts/dify_dev_cli.py test-chatflow [--app-key <key>] [--app-id <app_id>] --query <query> [--inputs '<json_string>'] [--files '<json_string>'] [--conversation-id <id>] [--no-streaming] [--user <user>]
/v1/chat-messagesдля взаимодействия с Chatflow-приложениями. Поддерживает SSE-стриминг ответа ассистента.
Позволяет полностью автоматизировать управление коллекциями документов и проверку качества RAG.
- Список баз знаний:
python3 scripts/dify_dev_cli.py list-datasets [--page <page>] [--limit <limit>]
- Создание базы знаний:
python3 scripts/dify_dev_cli.py create-dataset --name <name> [--description <desc>] [--indexing-technique high_quality|economy] [--permission only_me|all_team_members|partial_members]
- Обновление настроек (Patch):
python3 scripts/dify_dev_cli.py patch-dataset --dataset-id <id> [--name <name>] [--description <desc>] [--permission <permission>] [--indexing-technique <technique>] [--embedding <provider/model>] [--threshold <float>]
- Список документов базы знаний:
python3 scripts/dify_dev_cli.py list-documents --dataset-id <dataset_id> [--page <page>] [--limit <limit>]
- Загрузка и индексация локального документа:
Автоматически загружает файл во временное хранилище Dify Console, после чего запускает индексацию с правилами разметки (автоматический режим или кастомное разбиение по токенам/разделителям).
python3 scripts/dify_dev_cli.py upload-document --dataset-id <dataset_id> --file <path_to_file> [--doc-form text_model|qa_model] [--separator <sep>] [--max-tokens <int>] [--chunk-overlap <int>]
- Удаление документа:
python3 scripts/dify_dev_cli.py delete-document --dataset-id <dataset_id> --document-id <document_id>
- Тестирование извлечения / Hit Testing:
Выполняет тестовый запрос поиска по базе знаний с выводом скора релевантности и отрывков найденных сегментов.
python3 scripts/dify_dev_cli.py retrieve --dataset-id <dataset_id> --query <query_text> [--top-k <int>] [--threshold <float>]
Для проверки работоспособности клиента выполните:
python3 -m unittest scripts/test_cli.pydify-developer/
├── README.md # Описание проекта
├── SKILL.md # Системные инструкции для подключения как ИИ-скилла
├── scripts/
│ └── dify_dev_cli.py # CLI-утилита для работы с API Dify
├── examples/ # Практические примеры и шаблоны
│ ├── jobs-digest-case-... # Разбор сложного кейса (дайджест вакансий)
│ ├── external-state-pat... # Шаблон организации state между запусками
│ ├── healthcheck-pattern.md# Шаблон проверки работоспособности
│ └── *.json, *.yml # Минимальные DSL-шаблоны нод
└── references/ # База знаний по разработке
├── nodes/ # Спецификации всех 21 нод (llm, code, loop и т.д.)
├── 01-console-api-e... # Справочник API Dify
├── 05-mcp-tool-node.md # Нюансы работы с MCP-серверами
├── 08-gotchas-and-l... # Важные баги Dify и обходы (12 пунктов)
├── 10-llm-output-pi... # Решение проблем с парсингом и качеством ответов LLM
└── 15-transitions-a... # Правила связей (Edges) и ветвления в графе
Этот репозиторий спроектирован так, чтобы его можно было использовать в качестве Skill для агентов ИИ.
Для интеграции с Claude Code скрипт setup автоматически создает агента, к которому можно обращаться для быстрого поиска по документации:
dify-docs — осуществляет семантический и текстовый поиск по официальным докам Dify в ~/dify-docs/en/.
Инструкции для ИИ-разработчика по генерации DSL и работе с этим репозиторием описаны в файле SKILL.md.
- Dify v1.14.2 (self-hosted)
- Python 3.10+
- Доступ к сети с инстанса Dify до вызываемых API/MCP.