Documentation

n8n Companion Nodes

Dieses Paket stellt n8n-Nodes für PostgreSQL Conversation Memory Management und weitere Quality-of-Life Funktionen bereit.

Die Memory Nodes ermöglichen es, Chat-Verläufe strukturiert in PostgreSQL zu speichern und abzurufen - ideal für KI-Assistenten und Chatbots.

Installation

In n8n Settings → Community Nodes:

@marcmeese/n8n-nodes-companions

Konfiguration

PostgreSQL-Credentials einrichten

  1. Gehe zu n8n → Credentials → New
  2. Wähle "Postgres"
  3. Gib deine PostgreSQL-Verbindungsdaten ein:
    • Host
    • Port
    • Database
    • User
    • Password
    • SSL (optional)
  4. Teste die Verbindung

Verfügbare Nodes

📊 Memory Management

Create Memory Table

Erstellt eine neue PostgreSQL-Tabelle für Conversation Memory.

Parameter:

  • Memory Bucket ID (string): Eindeutige ID des Memory Speichers (wird Teil des Tabellennamens)

Output: Erfolgsbestätigung mit Tabellennamen

Hinweis: Erstellt automatisch Indizes für optimale Performance


Delete Memory Table

Löscht eine komplette Memory-Tabelle inklusive aller Einträge.

Parameter:

  • Memory Bucket ID (string): ID des zu löschenden Memory Speichers
  • Confirm Deletion (boolean): Sicherheitsbestätigung (muss auf true gesetzt werden)

Output: Erfolgsbestätigung

⚠️ Warnung: Dieser Vorgang ist nicht umkehrbar!


Insert Memory Row

Fügt eine neue Nachricht in die Memory-Tabelle ein.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Chat ID (string): Chat-Identifikator (nicht unique)
  • User ID (string): Benutzer-Identifikator (nicht unique)
  • Message (string): Nachrichteninhalt
  • Role (dropdown): Rolle des Senders
    • User
    • Assistant
    • System

Output: Eingefügte Row mit ID und Zeitstempel


Fetch Memory Rows

Holt Einträge aus der Memory-Tabelle als strukturierte Daten.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Limit (number): Anzahl der zu holenden Einträge (Standard: 10)
  • Max Age (Hours) (number): Maximales Alter in Stunden (0 = unbegrenzt, Standard: 24)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle (All/User/Assistant/System)

Output: Array von Memory-Rows mit allen Feldern (id, chat_id, user_id, message, role, created_at)

Hinweis: Gibt die ältesten passenden Einträge zurück (aufsteigend sortiert)


Fetch Memory Text

Holt Einträge aus der Memory-Tabelle und formatiert sie als lesbaren Text.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Limit (number): Anzahl der zu holenden Einträge (Standard: 10)
  • Max Age (Hours) (number): Maximales Alter in Stunden (0 = unbegrenzt, Standard: 24)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle

Formatierungs-Optionen:

  • Include Row ID (boolean): Zeigt Row ID als (#ID)
  • Include Chat ID (boolean): Zeigt Chat ID als [Chat: CHAT_ID]
  • Include User ID (boolean): Zeigt User ID als [User: USER_ID]
  • Include Time (boolean): Zeigt Zeitstempel (DD.MM.YYYY HH:MM)
  • Include Role (boolean): Zeigt Rolle (User/Assistant/System) - Standard: true
  • Include Message (boolean): Zeigt Nachrichteninhalt - Standard: true

Output: Formatierter Text mit einem Eintrag pro Zeile

Beispiel-Output:

User: Hallo, wie geht es dir?
Assistant: Mir geht es gut, danke! Wie kann ich dir helfen?
User: Ich brauche Hilfe bei Python.

Delete Memory Rows

Löscht Einträge aus der Memory-Tabelle.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Delete Strategy (dropdown): Lösch-Strategie
    • Delete Oldest X Rows: Löscht die X ältesten Einträge
    • Delete by Criteria: Löscht alle Einträge nach Kriterien
  • Confirm Deletion (boolean): Sicherheitsbestätigung

Bei "Delete Oldest X Rows":

  • Limit (number): Anzahl der zu löschenden Einträge (Standard: 5)

Bei "Delete by Criteria":

  • Max Age (Hours) (number): Lösche Einträge älter als X Stunden (Standard: 168 = 1 Woche)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle

Output: Anzahl gelöschter Rows


Typische Workflows

Chat-Verlauf speichern und abrufen

  1. Create Memory Table - Erstelle Tabelle beim ersten Start
  2. Insert Memory Row - Speichere jede User- und Assistant-Nachricht
  3. Fetch Memory Text - Hole die letzten 20 Nachrichten für Context
  4. Delete Memory Rows - Lösche alte Nachrichten (>7 Tage) regelmäßig

Multi-User Chat-System

  • Nutze verschiedene Chat IDs für verschiedene Conversations
  • Nutze User ID um Nachrichten pro Benutzer zu filtern
  • Ein Memory Bucket kann mehrere Chats/User verwalten

Datenbank-Schema

Jede Memory-Tabelle hat folgende Struktur:

CREATE TABLE conversation_{bucket_id} (
  id SERIAL PRIMARY KEY,
  chat_id VARCHAR(255) NOT NULL,
  user_id VARCHAR(255) NOT NULL,
  message TEXT NOT NULL,
  role VARCHAR(50) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Indizes für Performance:

  • idx_{bucket_id}_chat_user auf (chat_id, user_id)
  • idx_{bucket_id}_created_at auf (created_at DESC)

Discussion