Problem beim Speichern des Workflows nach Umbenennung von Knoten mit dem n8n AI Assistant

Hallo zusammen,

Ich bin vor kurzem auf dieses Problem gestoßen und habe es manuell behoben. Ich poste meine Erkenntnisse hier, falls es nicht beabsichtigtes Verhalten ist — oder falls der KI-Assistent verbessert werden muss.

Das Problem

Ich habe den n8n KI-Assistenten gebeten, ein paar Knoten in einem meiner Workflows umzubenennen. Er hat die Änderung vorgenommen und alles sah auf der Canvas gut aus. Aber direkt danach wurde der Workflow völlig nicht mehr speicherbar — jede Änderung, die ich danach vornahm, schlug mit folgendem Fehler fehl:

Problem beim Speichern des Workflows
Automatisches Speichern fehlgeschlagen: Kann undefined oder null nicht in Objekt konvertieren

In der Browser-Konsole erschien derselbe Fehler wiederholt vom Canvas-Renderer und vom Speicherhandler:

Die Symptome (KI)

  • Das Umbenennen war das Einzige, das ich den KI-Assistenten gebeten habe zu tun, aber nach seiner Änderung kam der Workflow-JSON mit mehreren auf Knotenebene definierten Feldern zurück, die explizit auf null gesetzt waren — Dinge wie credentials, webhookId, notes, notesInFlow, executeOnce, retryOnFail, alwaysOutputData und onError.
  • Jeder Knoten, der diese Eigenschaften normalerweise nicht brauchte, lässt den Schlüssel einfach weg in einem standardmäßigen n8n-Export. Der Änderungsrundlauf des KI-Assistenten hat sie stattdessen als null geschrieben.
  • Sobald diese Struktur auf der Canvas ankam, stürzte jede weitere Aktion (einen Knoten verschieben, speichern, automatisches Speichern) mit demselben Object.keys-TypeError ab, weil nodeTransforms.ts versucht, diese Felder zu normalisieren, und nicht mit einem wörtlichen null rechnet.

Die Grundursache (KI)

nodeTransforms.ts (wird sowohl von der Canvas-Diff-Logik als auch von useWorkflowSaving.ts verwendet) ruft Object.keys(...) auf bestimmten Knoteneigenschaften (wie credentials) auf, wenn der zu speichernde Diff berechnet wird. Object.keys(null) wirft einen Fehler, daher bricht das Speichern/automatische Speichern des gesamten Workflows zusammen, sobald ein Knoten im Workflow null statt eines ausgelassenen Schlüssels hat — nicht nur dieser Knoten.

Es sieht so aus, als würde der Knoteneditierungspfad des KI-Assistenten das Knotenobjekt serialisieren, ohne Schlüssel zu löschen, die zu null aufgelöst wurden, was zu einem technisch gültigem JSON, aber nicht Frontend-sicheren Knotensatz führt.

Die Lösung (manuell)

Exportieren Sie die Workflow-JSON, entfernen Sie jeden Schlüssel auf jedem Knoten, dessen Wert null ist (anstatt ihn auf null zu setzen), und importieren Sie sie erneut. Zum Beispiel, entfernen Sie auf den betroffenen Knoten Schlüssel wie:

"credentials": null,
"webhookId": null,
"notes": null,
"notesInFlow": null,
"executeOnce": null,
"retryOnFail": null,
"alwaysOutputData": null,
"onError": null

sodass das Knotenobjekt einfach diese Schlüssel nicht hat, wenn es sie nicht verwendet. Nach dem Entfernen der null-Felder und dem Neuimportieren (Import aus Datei in einen neuen Workflow, nicht Paste in Canvas), speicherte und speicherte der Workflow automatisch normal.

Hoffentlich spart das jemandem ein paar Stunden Debugging!
Das sieht nach einem Fehler aus, wie der KI-Assistent Knoteneditierungen serialisiert — ich würde eine Bestätigung vom n8n-Team schätzen, da jeder, der Knoten damit massen-editiert, auf dieselbe Wand treffen könnte.

Großartiger Fund, @mohamed3nan !!!
Klingt tatsächlich nach einem Bug

Gute Dokumentation – die Meldung und Dokumentation der Grundursache ist wirklich hilfreich. Falls das nochmal vorkommt und du manuelle JSON-Bearbeitung vermeiden möchtest, kann ein kleiner Code-Node die Bereinigung automatisieren:

const workflow = JSON.parse($input.item.json.workflowJson);
workflow.nodes = workflow.nodes.map(node =>
  Object.fromEntries(Object.entries(node).filter(([_, v]) => v !== null))
);
return { workflowJson: JSON.stringify(workflow) };

Paste das exportierte Workflow-JSON in einen Set-Node, führe es durch diesen aus und importiere das Ergebnis – spart dir ein paar Minuten, wenn der Bug einen komplexen Workflow betrifft.

Eine Frage, @mohamed3nan.
Hast du deine KI-Sandbox selbst gehostet?

Hi @kjooleng, ich habe Self-Hosting noch nicht ausprobiert, da es mir etwas komplex erscheint,

Ich nutze derzeit die Daytona-Option, weil sie viel einfacher einzurichten ist..

@mohamed3nan Da die KI-Assistent-Funktion noch in der Vorschau ist und diesen Fehler hat, ist es bei einfachen Aufgaben besser, die Dinge normal oder manuell anzupassen.

Ich habe ADO-5601 als unser internes Ticket erstellt, um dies zu beheben.

Eine neue Version n8n@2.33.0 wurde veröffentlicht, die den GitHub PR 34668 enthält.