EN·ES·DE·PT·FR
⌘K

Agent-Schleife & Fehlerbehebung

Die zentrale agentenbasierte Schleife: Nachricht empfangen, LLM aufrufen, Tools ausführen, iterieren, antworten.

Ablauf der Agent-Schleife

  1. Benutzernachricht speichern — wird mit Wichtigkeitsbewertung gespeichert
  2. Modell automatisch routen — Anfragekomplexität klassifizieren (falls nicht überschrieben)
  3. System-Prompt erstellen — Basis-Prompt + passende Skills + bekannte Fakten
  4. Kontext abrufen — Tri-Hybrid-Speicherabruf
  5. Iterieren (bis zu max_iterations):
    • Angeheftete alte Erinnerungen + aktuelle Nachrichten sammeln (dedupliziert)
    • OpenAI-Format-Nachrichtenliste erstellen
    • LLM mit fehlerklassifizierter Wiederherstellung aufrufen
    • Bei Tool-Aufrufen → jeden ausführen, Ergebnisse speichern, Schleife fortsetzen
    • Bei keinen Tool-Aufrufen ODER letzter Iteration → Textantwort zurückgeben
  6. Maximale Iterationen erreicht → Timeout-Nachricht zurückgeben

Dynamisches Iterationsbudget

Der Agent verfügt über ein eingebautes request_more_iterations-Tool, das das Schleifenbudget erweitert, wenn das aktuelle Limit nicht ausreicht:

  • Erweitert das Budget um 10 Iterationen pro Aufruf
  • Harte Obergrenze verhindert unbegrenzte Erweiterung (typischerweise 25 insgesamt)
  • Erfordert einen reason-Parameter, der erklärt, was noch zu tun ist
  • Wird verwendet, wenn der Agent einen klaren Plan hat, aber sonst mitten in der Aufgabe die Iterationen ausgehen würden

Strategie zur Fehlerbehebung

Die Methode call_llm_with_recovery klassifiziert Fehler und reagiert entsprechend:

FehlertypStrategie
Auth / BillingSofort an den Benutzer zurückgeben — kein Retry
Rate Limitretry_after_secs abwarten (max. 60s), einmal wiederholen
Timeout / Netzwerk / Serverfehler2s warten, einmal wiederholen; bei Fehlschlag auf vorheriges Modell zurückfallen
Not Found (falsches Modell)Sofort zum Fallback-Modell wechseln
UnbekanntAls Fehler weiterleiten
Last Known Good
Nach jedem erfolgreichen LLM-Aufruf wird die aktuelle Konfiguration als config.toml.lastgood gespeichert. Dies ermöglicht eine automatische Wiederherstellung nach fehlerhaften Konfigurationsänderungen.

Korrektur der Nachrichtenreihenfolge

Um Einschränkungen bei Gemini-, Anthropic- und OpenAI-Anbietern zu erfüllen, führt aidaemon vor jedem LLM-Aufruf eine dreistufige Korrektur der Nachrichtenhistorie durch:

  1. Durchlauf 1: Aufeinanderfolgende Nachrichten gleicher Rolle zusammenführen (tool_calls-Arrays kombinieren)
  2. Durchlauf 2: Verwaiste Tool-Ergebnisse entfernen (kein passender assistant tool_call) und verwaiste tool_calls bereinigen (kein passendes Tool-Ergebnis)
  3. Durchlauf 3: Erneut zusammenführen, da nach dem Entfernen verwaister Einträge neue aufeinanderfolgende Nachrichten gleicher Rolle entstehen können

Tool-Ausführung

Während der Schleife erhält jeder Tool-Aufruf:

  • _session_id — wird automatisch für die Sitzungsverfolgung injiziert
  • _untrusted_source — Flag, das für Trigger-basierte Sitzungen gesetzt wird

Stall- & Wiederholungserkennung

Die Agent-Schleife enthält Schutzmaßnahmen gegen Blockierungen:

  • Stall-Erkennung — wenn dasselbe Tool 3+ Mal hintereinander mit ähnlichen Argumenten aufgerufen wird, wird die Schleife abgebrochen
  • Wiederholungserkennung — erkennt wiederholten Antworttext und erzwingt einen Abbruch
  • Harte Iterationsgrenze — Standard 10, erweiterbar auf 25 über request_more_iterations

Sitzungstypen

SitzungstypFormatTrusted
Telegram-ChatChat-ID als StringJa
Slack-Kanalslack:{channel_id} oder slack:{channel_id}:{thread_ts}Ja
Discord-Kanaldiscord:{channel_id}Ja
E-Mail-Triggeremail_triggerNein
Event-Triggerevent_{uuid}Nein
Sub-Agentsub-{depth}-{uuid}Geerbt