Lernschleife und Gedächtnis
Verantwortung
Das ist der Kern, der Hermes von einem gewöhnlichen Agenten unterscheidet: eine «besser, je mehr man ihn nutzt»-Schleife. Jeder Dialog-Turn wird destilliert zu: (1) Skill-Evolution – aus Erfahrung werden Skills erzeugt/umgeschrieben (agent/learning_mutations.py); (2) Gedächtnis – FTS5-Volltext-Suche + LLM-Zusammenfassung vergangener Konversationen (memory_manager), kombiniert mit Honchos dialektischer Benutzermodellierung; (3) Lern-Graph – Skills und Gedächtnis werden als Knoten/Kanten organisiert (agent/learning_graph.py); (4) Hintergrund-Betrachtung – background_review verdaut in einem Thread Historie und erzeugt ausführbare Umschreib-Aktionen. Skill-Umschreibungen fließen letztlich ins Skill-System zurück und stehen in folgenden Turns zur Verfügung.
Schlüsseldateien
Skill-Knoten und Lern-Graph
@dataclass SkillNode:28-41— Skill-KnotenSkill-Laden:77-125—_iter_skill_files/build_skill_nodes(scanntskills/und baut Knoten)Kanten und Statistik:156-193—build_edges/density_stats(Beziehungen zwischen Skills)Memory-Skill-Kanten:193-227—_memory_cards/_memory_skill_edges(Beziehungen zwischen Gedächtnis und Skills)build_learning_graph:248-328— fasst den vollständigen Lern-Graphen zusammen_load_usage:84-97— Nutzungsstatistiken (lenkt, welche Skills häufig laufen)
Skill-/Memory-Umschreibung
node_detail:86-124— Detailansicht eines Knotensdelete_node:124-157— Skill oder Memory löschenedit_node:157-200— Skill- oder Memory-Inhalt editieren_clear_skill_cache:200— Cache nach Umschreibung leeren (wirkt ab nächstem Turn)Memory-Lokalisierung:30-65—_memories_dir/_parse_memory_id/_locate_memory
Memory-Verwaltung
class MemoryManager:354— der Memory-Managermemory-provider-tools Injektion:83-164—memory_provider_tools_enabled/inject_memory_provider_toolsbuild_memory_context_block:337-354— baut aus Memory einen Kontext-Block und injiziert ihn in den Promptsanitize_context:164-172— Kontext-Desensibilisierung (vor FTS5-Indexierung)StreamingContextScrubber:172-337— Desensibilisierung des Streaming-Outputs
Hintergrund-Betrachtung
spawn_background_review_thread:956— startet den Hintergrund-Betrachtungs-Thread_run_review_in_thread:617— Hauptschleife im Thread_digest_history:122-373— fasst die letzten 24 Historieneinträge zusammensummarize_background_review_actions:373-590— fasst Betrachtungs-Aktionen zusammenbuild_memory_write_metadata:590-617— Metadaten beim Memory-Schreiben
Datenfluss
- Nach Ende jedes Turns übergibt die Hauptschleife einen Nachrichten-Snapshot an den Hintergrund-Betrachtungs-Thread (
agent/background_review.py:956). _digest_history(agent/background_review.py:122) fasst die jüngste Historie zusammen und erzeugt Kandidaten-Aktionen (neue Skills anlegen/umschreiben, Memory schreiben).- Skill-Umschreibungen werden über
edit_node:157geschrieben, Löschungen überdelete_node:124; anschließend wird über_clear_skill_cache:200der Cache geleert. - Memory-Schreiben läuft über
MemoryManager:354: nach Desensibilisierung (agent/memory_manager.py:164) wird ein FTS5-Index aufgebaut und per LLM-Zusammenfassung komprimiert. - Zu Beginn des nächsten Turns baut
build_memory_context_block(agent/memory_manager.py:337) relevante Memories inbuild_turn_context:268ein; Skills werden überagent/skill_bundles.pyinjiziert. - Der vollständige Lern-Graph wird von
build_learning_graph:254zusammengefasst und dient UI/Debug zur Darstellung der Beziehungen zwischen Skills und Memory.
Zusammenfassung
Die Lernschleife macht «Dialog» zu «Asset»: Die Hintergrund-Betrachtung destilliert Erfahrung unauffällig in Skills und Memory, der nächste Turn injiziert sie automatisch. Vier Komponenten sind entscheidend – learning_graph (Graph), learning_mutations (Umschreibung), memory_manager (Suche + Desensibilisierung + Zusammenfassung), background_review (asynchrones Verdauen). Das ist das Fundament von Hermes' «mit dem Nutzer gemeinsam wachsen» und der grundlegende Unterschied zu «zustandslosen LLM-Aufrufen».