Hermes Agent Skills erklärt: So lernt der KI-Agent aus Erfahrung
Hermes Agent Skills sind die prozedurale Memory-Ebene des KI-Agenten von Nous Research. Sie können wiederkehrende, komplexe Abläufe mit mehreren Tool-Aufrufen in dauerhaft gespeicherte Anweisungen, Konfigurationen, Skripte und Referenzdateien überführen. Dadurch kann Hermes bekannte Arbeitswege später gezielt laden, statt sie bei jeder Aufgabe vollständig neu herzuleiten.
Was sind Hermes Agent Skills?
Ein Skill ist eine lokal gespeicherte Anleitung für eine bestimmte Aufgabe. Er beschreibt beispielsweise, wie der Hermes Agent eine Anwendung bereitstellt, Daten aus einer Schnittstelle abruft, einen Kubernetes-Cluster überprüft oder einen wiederkehrenden Entwicklungsprozess ausführt.
Im Mittelpunkt steht jeweils eine Datei namens SKILL.md. Sie enthält eine kurze Beschreibung, die Einsatzbedingungen, die einzelnen Arbeitsschritte, bekannte Fehlerquellen und eine Methode zur abschließenden Kontrolle. Zusätzlich kann ein Skill Skripte, Konfigurationsvorlagen, Beispiele und technische Referenzen enthalten. Alle lokal installierten und vom Agenten erstellten Skills liegen standardmäßig im Verzeichnis ~/.hermes/skills/.
Ein Skill ist dabei nicht mit einem klassischen Programm gleichzusetzen. Er ist zunächst eine strukturierte Arbeitsanweisung für das Sprachmodell. Enthaltene Skripte oder Kommandozeilenbefehle können jedoch vom Agenten mithilfe seiner Tools ausgeführt werden. Hermes bezeichnet Skills deshalb als prozedurales Gedächtnis: Das normale Memory speichert, was der Agent weiß, während ein Skill festhält, wie eine Aufgabe ausgeführt werden soll.
- Hermes-ready: Root-Zugriff, SSH-optimiert, in Minuten einsatzbereit
- Dauerhaft schnell: NVMe-SSD und 1 Gbit/s, ohne Drosselung
- Sicher: Individuelle API-Anbindungen und Docker-Unterstützung
Die 4-Layer-Speicherarchitektur von Hermes Agent
Für das Verständnis lässt sich das Zusammenspiel der verschiedenen Speicherarten des Hermes Agent in vier praktische Ebenen gliedern.
| Speicherebene | Funktion | Persistenztyp |
|---|---|---|
| L1: Session Context | Enthält die aktuelle Unterhaltung, die laufende Aufgabenplanung und die Ergebnisse der zuletzt verwendeten Tools. | Temporär; grundsätzlich an die aktuelle Sitzung gebunden |
| L2: Persisted Facts | Speichert kompakte Fakten über die Nutzer, ihre Projekte, Präferenzen und die technische Umgebung in MEMORY.md und USER.md.
|
Dauerhaft und sitzungsübergreifend |
| L3: Local File Search | Ermöglicht die bedarfsgesteuerte Suche in lokalen Dateien sowie in früheren Unterhaltungen. Vergangene Sitzungen werden in einer lokalen SQLite-Datenbank gespeichert und über FTS5 durchsucht. | Daten bleiben lokal gespeichert, werden aber nur bei Bedarf geladen |
| L4: Procedural Skills | Speichert wiederverwendbare Vorgehensweisen, Tool-Abfolgen, Konfigurationen und Skripte in Skill-Verzeichnissen mit einer SKILL.md.
|
Dauerhaft und sitzungsübergreifend |
L1: Session Context
Der Session Context ist das kurzfristige Arbeitsgedächtnis des Agenten. Er enthält die aktuelle Anfrage, bisherige Antworten, Zwischenergebnisse und Tool-Ausgaben. Endet die Sitzung, steht dieser vollständige Verlauf in einer späteren Sitzung nicht automatisch wieder als aktiver Kontext zur Verfügung. Hermes speichert Unterhaltungen allerdings lokal. Der Agent kann sie später mit dem Tool session_search erneut durchsuchen.
L2: Persisted Facts
Besonders wichtige Informationen werden in MEMORY.md und USER.md abgelegt. Dazu gehören beispielsweise bevorzugte Programmiersprachen, Projektkonventionen, Verzeichnisstrukturen oder wiederholt benötigte Informationen über die Arbeitsumgebung. Diese Dateien werden zu Beginn einer neuen Sitzung in den Systemkontext geladen. Damit dieser Bereich nicht unnötig viele Tokens verbraucht, ist er bewusst auf 2.200 Zeichen für MEMORY.md und 1.375 Zeichen für USER.md begrenzt.
L3: Lokale Dateien und frühere Sitzungen
Umfangreiche Dokumentationen, Quellcodedateien oder frühere Unterhaltungen müssen nicht dauerhaft im aktiven Kontext liegen. Hermes kann sie bei Bedarf gezielt durchsuchen. Für vergangene Sitzungen verwendet Hermes eine lokale SQLite-Datenbank unter ~/.hermes/state.db. Die darin integrierte FTS5-Volltextsuche arbeitet schlagwortbasiert und liefert die tatsächlich gespeicherten Nachrichten zurück.
L4: Procedural Skills
Skills bilden die oberste Ebene dieser Architektur. Sie speichern nicht nur einzelne Fakten, sondern vollständige Vorgehensweisen. Ein Skill kann zum Beispiel festlegen:
- welche Voraussetzungen zuerst geprüft werden,
- welche Tools oder Befehle verwendet werden,
- in welcher Reihenfolge die Schritte erfolgen,
- wie typische Fehler behandelt werden,
- wie das Ergebnis abschließend kontrolliert wird.
Genau diese Ebene ermöglicht es Hermes, aus abgeschlossenen Aufgaben wiederverwendbare Arbeitsabläufe zu entwickeln.
Der Self-Learning Loop
Der Self-Learning Loop verbindet die laufende Arbeit des Agenten mit seinem dauerhaften Skill-Speicher. Vereinfacht folgt der Prozess einem Kreislauf aus Ausführen, Auswerten, Speichern und Wiederverwenden.
1. Hermes führt eine komplexe Aufgabe aus
Zunächst bearbeitet der Agent eine normale Anfrage. Dafür kann er mehrere Tools nacheinander aufrufen und so Dateien durchsuchen, Terminalbefehle ausführen, eine API ansprechen und anschließend das Ergebnis kontrollieren. Die Gesamtheit aus Anfrage, Entscheidungen, Tool-Aufrufen, Fehlermeldungen und Korrekturen wird häufig als Trajektorie bezeichnet.
2. Das System erkennt einen potenziell wiederverwendbaren Ablauf
Hermes kann nach umfangreicheren Aufgaben eine Überprüfung des bisherigen Ablaufs anstoßen. Die Standardkonfiguration enthält dafür skills.creation_nudge_interval: 15. Nach jeweils 15 Tool-Iterationen wird das Modell daran erinnert, zu prüfen, ob sich aus der Arbeit ein Skill ableiten lässt. Der Wert kann in der Konfiguration verändert oder mit 0 deaktiviert werden.
3. Hermes extrahiert das wiederverwendbare Muster
Bei der Auswertung soll der Agent die einmaligen Details von den übertragbaren Arbeitsschritten trennen. Ein temporärer Dateiname oder eine einmalig aufgetretene Fehlermeldung gehört beispielsweise nicht zwingend in den Skill. Ein zuverlässig funktionierender Befehl, eine notwendige Reihenfolge oder eine bekannte Fehlerbehandlung kann dagegen dauerhaft relevant sein. Aus diesen Informationen entsteht eine strukturierte Anleitung. Sie enthält idealerweise:
- eindeutige Bedingungen für die Verwendung,
- eine nachvollziehbare Schrittfolge,
- benötigte Tools und Voraussetzungen,
- bekannte Fallstricke,
- einen abschließenden Funktionstest.
4. Der Skill wird erstellt oder aktualisiert
Mit dem internen Tool skill_manage kann Hermes einen neuen Skill erstellen oder einen vorhandenen Skill verändern. Dabei stehen unter anderem die Aktionen create, patch, edit, write_file, remove_file und delete zur Verfügung. Kleinere Verbesserungen sollen bevorzugt über patch erfolgen. Dabei wird nur die betroffene Stelle geändert, anstatt die gesamte SKILL.md neu zu übertragen. Das reduziert den erforderlichen Textumfang des Tool-Aufrufs.
5. Der Skill wird geladen
Hermes lädt nicht vorsorglich den vollständigen Inhalt aller Skills. Stattdessen verwendet das System eine mehrstufige Progressive Disclosure:
skills_list()stellt zunächst nur Namen, Kategorien und Kurzbeschreibungen bereit.skill_view(name)lädt die vollständigeSKILL.mdeines ausgewählten Skills.skill_view(name, path)lädt bei Bedarf eine einzelne Referenz-, Skript- oder Vorlagendatei.
Dadurch spart das System Kontext und kann bekannte Vorgehensweisen schneller wiederverwenden. Die tatsächliche Reduktion hängt von der Länge des Skills, der Komplexität der Aufgabe, dem verwendeten Modell und der Zahl vermiedener Tool- und Korrekturschritte ab. Auch die Reasoning-Phase entfällt nicht vollständig: Der Skill verkürzt und strukturiert sie, ersetzt aber nicht jede situationsabhängige Entscheidung.
Custom Skills erstellen: Prompt-basiert oder manuell
Entwicklerinnen und Entwickler müssen nicht darauf warten, dass Hermes selbst einen Skill vorschlägt. Eigene Skills lassen sich sowohl über einen Chat-Befehl als auch direkt im Dateisystem erstellen.
Möglichkeit 1: Skill generieren
Ein eigener Hermes Agent Skill lässt sich in nur wenigen Schritten bereitstellen.
- Bereiten Sie die Wissensquelle vor. Dies kann eine bereits abgeschlossene Unterhaltung, ein lokales Dokumentationsverzeichnis, eine Internetseite oder direkt eingefügte Notiz sein.
- Rufen Sie den
/learn-Befehl auf. Möchten Sie beispielsweise den gerade ausgeführten Deployment-Prozess speichern, können Sie folgenden Befehl verwenden:
/learn wie ich gerade den Staging-Server bereitgestellt habe- Hermes sammelt die relevanten Informationen und erstellt daraus eine strukturierte
SKILL.md. - Kontrollieren Sie den erzeugten Skill.
- Aktivieren Sie bei Bedarf die Schreibfreigabe. Mit
skills.write_approval: truekönnen Sie festlegen, dass automatisch erzeugte Änderungen zunächst nur vorgemerkt werden. Anschließend lassen sie sich mit/skills pendingund/skills diff <id>prüfen und mit/skills approve <id>freigeben. - Testen Sie den Hermes Agent Skill in einer neuen Sitzung. Er steht automatisch als Slash-Befehl zur Verfügung:
/mein-skill führe den Ablauf für das Testsystem ausMöglichkeit 2: Skill manuell anlegen
Sie brauchen nicht zwingend den /learn-Befehl, um neue Hermes Agent Skills zu erstellen. Auch eine manuelle Generierung neuer Skills ist möglich.
- Erstellen Sie das Skill-Verzeichnis mit
mkdir -p ~/.hermes/skills/finance/market-data. - Legen Sie eine Datei namens
SKILL.mdan. Diese kann für einen Skill, der Kurs- und Marktdaten abruft, zum Beispiel folgendermaßen aussehen:
---
name: market-data
description: Ruft Marktdaten ab und prüft die Ergebnisse
version: 1.0.0
metadata:
hermes:
tags: [finance, api, data]
category: finance
---
# Market Data
## When to Use
Verwenden Sie diesen Skill für aktuelle Kurs- und Marktdaten.
## Procedure
1. Prüfen Sie, welches Wertpapier und welcher Zeitraum gemeint sind.
2. Rufen Sie die Daten über die konfigurierte Datenquelle ab.
3. Prüfen Sie die Antwort auf fehlende Werte und Zeitstempel.
4. Bereiten Sie das Ergebnis verständlich auf.
## Pitfalls
- Verwechseln Sie verzögerte Kursdaten nicht mit Echtzeitdaten.
- Verwenden Sie keine nicht dokumentierten Endpunkte ohne Prüfung.
## Verification
Prüfen Sie Symbol, Handelsplatz, Währung und Zeitpunkt der Daten.- Verknüpfen Sie externe Werkzeuge. Für Finanzdaten kann der Skill beispielsweise ein vorhandenes Python-Skript oder eine konfigurierte Marktdatenquelle verwenden.
- Lagern Sie längere Inhalte aus. Umfangreiche API-Dokumentationen gehören beispielsweise in
references/, wiederverwendbare Konfigurationen intemplates/und längere ausführbare Abläufe inscripts/. - Speichern Sie keine API-Schlüssel im Skill.
- Laden und testen Sie den Skill beispielsweise mit folgendem Aufruf:
hermes chat -q "/market-data zeige die Daten für das gewünschte Wertpapier"Neu angelegte Skills werden automatisch erkannt.
Best Practices und Behebung von Retrieval-Fehlern
Damit Hermes einen Skill zuverlässig nutzt, muss der Agent erkennen, dass dieser zur aktuellen Anfrage passt. Probleme entstehen meist durch unklare Namen, zu allgemeine Beschreibungen oder eine falsche Erwartung an das Retrieval-System.
FTS5 ist nicht für die Skill-Aktivierung zuständig
SQLite FTS5 durchsucht im Hermes Agent vor allem frühere Sitzungen. Lokale Skills werden dagegen über einen kompakten Index aus Namen, Kategorien und Kurzbeschreibungen gefunden. Hermes entscheidet anhand dieser Informationen, ob es einen Skill mit skill_view() laden soll. Alternativ können Sie einen Hermes Agent Skill direkt aufrufen.
Verwenden Sie eindeutige Beschreibungen
Der Name und die Beschreibung eines Skills sollten klar erkennen lassen, wofür er gedacht ist. Allgemeine Formulierungen wie „hilfreicher Workflow“ sind wenig aussagekräftig. Besser ist beispielsweise:
description: Prüft Kubernetes-Deployments, Logs und Rollout-FehlerAuch der Abschnitt When to Use sollte typische Aufgaben und konkrete Suchbegriffe enthalten.
Trennen Sie Anleitung und Skripte
Die SKILL.md sollte erklären, wann der Skill verwendet wird und welche Schritte auszuführen sind. Längere oder immer gleich ablaufende Prozesse sollten dagegen in geprüften Skripten gespeichert werden. Dadurch muss Hermes den Code nicht bei jedem Aufruf neu erzeugen. Gleichzeitig lassen sich die Skripte separat testen und versionieren.
Fortgeschrittene User können einen eigenen semantischen Router entwickeln. Dieser vergleicht neue Anfragen mit den Beschreibungen vorhandener Skills und lädt anschließend den passendsten Skill. Dafür lassen sich beispielsweise Milvus oder Qdrant einsetzen. Eine solche Anbindung gehört jedoch nicht zur standardmäßigen Hermes-Konfiguration und muss selbst entwickelt oder über ein zusätzliches Plugin umgesetzt werden.
Prüfen Sie automatisch erstellte Skills
Der Learning Loop kann auch fehlerhafte oder nur vorübergehend funktionierende Abläufe speichern. In produktiven Umgebungen sollten neue Skills deshalb vor der Verwendung geprüft werden. Mit folgender Einstellung werden Änderungen zunächst nur vorgemerkt:
skills:
write_approval: trueDie Dateien landen anschließend unter ~/.hermes/pending/skills/ und können vor der Freigabe kontrolliert werden. Zusätzlich kann skills.guard_agent_created: true eine automatische Sicherheitsprüfung aktivieren. Diese ersetzt jedoch keine manuelle Kontrolle.
Die Einstellung skills.guard_agent_created steht standardmäßig auf false. Automatisch erstellte oder veränderte Skills werden daher nicht durch den integrierten Skills Guard geprüft, solange Sie die Funktion nicht ausdrücklich aktivieren..
Fazit: Skills machen Erfahrung wiederverwendbar
Hermes Agent Skills speichern keine bloßen Gesprächserinnerungen, sondern wiederverwendbare Arbeitsmethoden. Der Agent kann komplexe Tool-Abläufe analysieren, daraus eine SKILL.md mit ergänzenden Skripten und Referenzen erstellen und diesen Ablauf bei ähnlichen Aufgaben erneut laden. Der wichtigste Effizienzgewinn entsteht durch die Kombination aus prozeduralem Gedächtnis und Progressive Disclosure: Hermes lädt zunächst nur einen kompakten Skill-Index und ruft die vollständige Anleitung erst bei Bedarf ab. Dadurch werden wiederkehrende Aufgaben strukturierter, nachvollziehbarer und häufig auch tokenärmer bearbeitet.

