Найти в Дзене
ИИнтеграция

Ошибка «terminated» в ноде AI Agent: причины и устранение

Работая с нодой "ИИ-агент" в n8n, вы можете столкнуться с неприятной ошибкой — terminated. Она появляется внезапно, не оставляет пояснений во вкладке Executions и полностью обрывает выполнение workflow. В этой статье разберём, почему эта ошибка такая «тихая», что её вызывает и как ее исправить. ❓ Что такое ошибка «terminated» и почему нет логов? Ошибка terminated означает, что процесс выполнения ноды был принудительно остановлен системой n8n. Ключевая особенность — отсутствие внятного сообщения в логах выполнения (Executions). Это происходит потому, что сбой происходит не на уровне логики вашего промпта или API, а на более низком, системном уровне внутри самого n8n. Система не успевает записать в логи выполнения (execution logs) внятную ошибку, потому что процесс завершается аварийно. Единственный намёк может быть в системных логах контейнера Docker. 🔍 Главные причины ошибки (от самой частой к редкой) Превышение лимита диагностических данных (Telemetry) — САМАЯ РАСПРОСТРАНЁННАЯ ПРИЧ
Оглавление

Работая с нодой "ИИ-агент" в n8n, вы можете столкнуться с неприятной ошибкой — terminated. Она появляется внезапно, не оставляет пояснений во вкладке Executions и полностью обрывает выполнение workflow. В этой статье разберём, почему эта ошибка такая «тихая», что её вызывает и как ее исправить.

❓ Что такое ошибка «terminated» и почему нет логов?

Ошибка terminated означает, что процесс выполнения ноды был принудительно остановлен системой n8n. Ключевая особенность — отсутствие внятного сообщения в логах выполнения (Executions). Это происходит потому, что сбой происходит не на уровне логики вашего промпта или API, а на более низком, системном уровне внутри самого n8n.

Система не успевает записать в логи выполнения (execution logs) внятную ошибку, потому что процесс завершается аварийно. Единственный намёк может быть в системных логах контейнера Docker.

🔍 Главные причины ошибки (от самой частой к редкой)

  1. Превышение лимита диагностических данных (Telemetry)САМАЯ РАСПРОСТРАНЁННАЯ ПРИЧИНА. Когда ИИ-агент (особенно в режиме chain-of-thought) генерирует очень большой объём данных (большой JSON, длинный текст), внутренний механизм телеметрии n8n пытается залогировать это событие. Если размер этих служебных данных превышает жёсткий лимит в 32 КБ (32768 байт), процесс аварийно завершается с безмолвным terminated.
  2. Превышение общего лимита размера данных (Payload). Даже если вы избежали первой ошибки, существует общий лимит на передачу данных между нодами в одном выполнении (по умолчанию — 16 МБ). Его превышение вызывает другую ошибку (413 Payload Too Large), но в сложных сценариях также может привести к terminated.
  3. Нехватка оперативной памяти (OOM Kill). Если ваш workflow или ИИ-агент потребляют слишком много RAM, система (или менеджер контейнеров) может принудительно завершить процесс. В логах Docker или системном журнале (dmesg) вы найдёте записи Killed или OOM.
  4. Таймаут внешнего запроса. Если нода AI Agent настроена на вызов внешнего API (например, OpenAI) с небольшим таймаутом, а ответ не приходит вовремя, запрос может быть прерван.

🛠️ Пошаговое решение: как мы лечили «terminated»

На примере реального случая разберём диагностику и исправление.

Шаг 1: Диагностика через логи Docker

Поскольку в интерфейсе n8n логов нет, смотрим логи контейнера:

bash

sudo docker logs --tail 50 n8n-n8n-1

В логах мы нашли ключевую запись:

text

Telemetry event "Manual node exec finished" payload size (36811 bytes) exceeds limit (32768 bytes). Skipping event.

Это подтвердило, что причина — превышение лимита телеметрии.

Шаг 2: Поиск конфигурации Docker Compose

Нужно найти файл развёртывания, чтобы внести изменения. Ищем docker-compose.yml:

bash

sudo find / -maxdepth 5 -name "*compose*.yml" | grep n8n

В нашем случае файл находился по пути /opt/beget/n8n/docker-compose.yml.

Шаг 3: Анализ структуры конфигурации

Открыв файл, мы увидели, что переменные окружения вынесены в отдельный файл .env:

yaml

services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
env_file: .env
# Переменные загружаются отсюда

Шаг 4: Внесение исправлений в .env файл

В файл .env в той же директории были добавлены две ключевые переменные:

env
# 1. Увеличиваем лимит для данных телеметрии в 4 раза (до 128 КБ)
N8N_DIAGNOSTICS_ENABLED_PAYLOAD_SIZE_MAX=131072
# 2. Резко увеличиваем общий лимит данных в workflow (до 256 МБ)
N8N_PAYLOAD_SIZE_MAX=268435456

Пояснение значений:

  • 131072 = 128 * 1024 байт. Этого достаточно, чтобы телеметрия обработала большой вывод ИИ-агента.
  • 268435456 = 256 * 1024 * 1024 байт. Создаёт огромный запас для данных workflow.

Шаг 5: Применение изменений

После сохранения файла контейнеры были перезапущены:

bash

cd /opt/beget/n8n
sudo docker-compose down
sudo docker-compose up -d

Шаг 6: Проверка результата

Убедились, что контейнеры запустились со статусом (healthy):

bash

sudo docker ps | grep n8n

После этого большой workflow с ИИ-агентом, генерирующим объёмную цепочку рассуждений (chain-of-thought), стал выполняться без ошибки terminated.

📝 Итог и памятка

Ошибка terminated в ноде AI Agent — это чаще всего системное ограничение, а не ошибка в вашем коде.

Алгоритм действий при встрече с ней:

  1. Проверьте логи Docker: sudo docker logs n8n-n8n-1.
  2. Найдите запись о превышении лимита телеметрии (exceeds limit (32768 bytes)).
  3. Найдите ваш docker-compose.yml и файл переменных .env.
  4. Добавьте в .env две строчки для увеличения лимитов (как показано выше).
  5. Перезапустите контейнеры (docker-compose down && docker-compose up -d).

Этих действий достаточно для решения проблемы в 95% случаев. Если ошибка повторяется, ищите следы OOM в системных логах (dmesg -T) или увеличьте таймауты в настройках ноды AI Agent.