Problèmes de flux de travail secondaire N8N HITL (appelé par un agent IA)

Décrivez le problème/l’erreur/la question

Dans la version 2.23.4, j’avais un workflow principal qui utilisait un AI Agent pour appeler un sous-workflow dans lequel le sous-workflow appelait un AI Agent connecté à une étape de révision (Slack) et à des outils (Google Calendar). Le sous-workflow appelait un outil et envoyait à l’utilisateur un message de confirmation avant d’exécuter une action. L’utilisateur confirmait ou refusait les détails de l’action, ce qui était une réponse donnée au sous-workflow, et le sous-workflow l’envoyait au workflow principal. Cependant, dans les versions 2.33.4 et 2.34.5, le workflow principal échoue toujours quand le sous-workflow atteint l’étape de révision. Le sous-workflow dit toujours « pas de réponse » malgré le fait qu’il s’exécute correctement après l’étape de confirmation.
Je suis curieux de savoir pourquoi cela fonctionnait dans une version antérieure de N8N, mais une fois mise à jour vers la nouvelle version, cela commence à échouer. J’espère obtenir des informations sur le fait que c’est une limitation de N8N ou un problème de configuration de ma part. Je suis également ouvert à des suggestions sur la façon d’améliorer l’architecture de mon workflow. Tous les commentaires sont appréciés.

Quel est le message d’erreur (le cas échéant) ? Problème dans le nœud [Sub Workflow]

Il y a eu une erreur : « The workflow did not return a response »

Veuillez partager votre workflow

Main Workflow:Slack Trigger -> AI Agent { Calls Sub workflow } -> Slack Response

Sub Workflow: Triggered by other workflow -> AI Agent {Calls Slack Review Step-> If confirmed continue to execute tools (google calendar) If declined output: Action was canceled.} -> Set Field (response: AI output)

Partagez la sortie renvoyée par le dernier nœud

Dans le workflow principal, aucune sortie n’est donnée. Il arrête le workflow principal et génère une erreur en disant qu’aucune sortie n’est donnée. Il s’arrête prématurément avant que le sous-workflow ne soit terminé.

Informations sur votre configuration n8n

  • version n8n : 2.33.4 et 2.34.5
  • Base de données (par défaut : SQLite) :
  • paramètre n8n EXECUTIONS_PROCESS (par défaut : own, main) : par défaut
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) : Docker
  • Système d’exploitation : Ubuntu 26.04 LTS

@Ethan0034

Cela ressemble à une régression. Tu pourrais peut-être signaler un bug ?

@kjooleng @Ethan0034 C’est un bug sur github et il a été corrigé donc je pense que c’est une rechute

et

Bonjour @Ethan0034 Bienvenue !
La sous-exécution entre dans un état d’attente au nœud d’examen Slack, et l’appel d’outil du parent se résout là au lieu de la fin du sous-flux, ce qui produit la réponse vide. Depuis la version 2.6, l’examen peut se trouver sur la connexion d’outil dans le flux de travail principal à la place, donc rien à l’intérieur du sous-flux n’attend jamais.
Sur la connexion de l’Agent IA à l’outil que vous voulez confirmer, cliquez sur l’icône + et choisissez « Ajouter une étape d’examen humain », puis sélectionnez Slack et définissez l’approbateur et le message. Mettez ceci dans le message pour que l’utilisateur voie les détails de l’action avant d’approuver :

L'IA veut utiliser {{ $tool.name }} avec :
{{ JSON.stringify($tool.parameters, null, 2) }}

Ensuite, supprimez le nœud sendAndWait du sous-flux. L’approbation exécute l’outil avec les paramètres de l’IA, le refus l’annule et signale le rejet à l’agent. Listez les outils contrôlés et ce qu’un refus signifie dans votre système prompt afin que l’agent gère un rejet correctement.

@Ethan0034
Il est recommandé d’utiliser la version stable 2.31.4

Je +1 cette architecture.

Le petit détail que j’ajouterais serait de faire en sorte que l’étape avant l’examen retourne une simple charge utile d’examen au lieu de laisser le sous-flux se sentir comme une mini-conversation en soi.

Quelque chose comme :

```

status: needs_review

tool_name: create_calendar_event

summary: plain language summary for Slack

proposed_payload: the exact data that will be sent

on_approve: run calendar action

on_deny: stop and return a clean denial message

```

Cela donne à l’examinateur humain quelque chose de concret à approuver, et cela donne au flux parent un objet propre pour enregistrer/déboguer. D’après mon expérience, les flux HITL deviennent fragiles rapidement lorsque l’étape d’approbation, l’exécution de l’action et la réponse finale de l’agent sont tous cachés dans le même appel d’outil imbriqué.

La nouvelle version n8n@2.39.0 a été publiée, qui inclut la PR GitHub 37087.

La nouvelle version n8n@2.39.8 a été publiée, qui inclut la PR GitHub 38949.