Hermes Agent-Toolkit
Tools sind der einzige Kanal, über den Hermes Agent mit der Außenwelt interagiert — Dateien lesen und schreiben, Befehle ausführen, das Web durchsuchen, Bilder erzeugen; alle Fähigkeiten werden über Tools bereitgestellt.
Hermes verfügt über mehr als 70 integrierte Tools, organisiert in 28 Tool-Sammlungen. Dieses Kapitel analysiert nacheinander die Kern-Tools, Parameter und Best Practices jeder Tool-Sammlung.
Tool-Systemarchitektur
Bevor wir in konkrete Tools eintauchen, wollen wir zunächst verstehen, wie Tools organisiert sind.
Hermes verwendet eine dreischichtige Struktur zur Verwaltung von Tools:
工具(Tool) ← 单个可调用函数,如 read_file、web_search
└── 工具集(Toolset) ← 相关工具的逻辑分组,如 file、web
└── 平台配置 ← 哪个平台加载哪些工具集
Schlüsseldesign: Das Deaktivieren einer Tool-Sammlung lässt ihre Tools vollständig aus dem System-Prompt verschwinden – nicht nur unaufrufbar, sondern der Agent ist sich ihrer Existenz überhaupt nicht bewusst. Das spart sowohl Tokens als auch verhindert, dass der Agent Tools missbraucht, die er nicht verwenden sollte.
Möglichkeiten zur Verwaltung von Tool-Sets:
# TUI 交互式管理(推荐) hermes tools # 命令行管理 hermes tools list # 列出所有工具及启用状态 hermes tools enable browser # 启用指定工具集 hermes tools disable audio # 禁用指定工具集
In config.yaml konfigurieren:
# 文件路径:~/.hermes/config.yaml
# 按平台指定启用的工具集
platform_toolsets:
cli:
- hermes-cli # CLI 核心工具集
- file
- terminal
- web
- memory
- skills
Desktop-Version, im linken Menü Skills & Tools:

Tools können auch im Dashboard verwaltet werden, im linken Skills-Menü:

Datei- und System-Tool-Sets
Diese Art von Tool-Sammlung ermöglicht es dem Agenten, das lokale Dateisystem zu manipulieren, Befehle auszuführen und Prozesse zu verwalten.
file — Dateioperationen
Die grundlegendste Tool-Sammlung; der Agent verlässt sich bei nahezu allen Aufgaben auf sie, um Dateien zu lesen und zu schreiben.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| read_file | Dateiinhalt lesen | file_path (erforderlich), offset (Startzeile), limit (maximale Anzahl Zeilen) |
| write_file | Datei erstellen oder überschreiben | file_path (erforderlich), content (erforderlich) |
| edit_file | Text in Dateien präzise ersetzen | file_path、old_string、new_string、replace_all |
| list_dir | Verzeichnisinhalt auflisten | path (erforderlich), recursive (ob rekursiv) |
| search_files | Nach Dateinamenmuster suchen | pattern (erforderlich, unterstützt glob), path (Wurzelverzeichnis für die Suche) |
| search_content | Text in Dateiinhalt suchen | pattern (erforderlich, unterstützt regex), path, file_types |
Wie edit_file funktioniert: Es verwendet exakte Teilstring-Übereinstimmung, um die Änderungsstelle zu lokalisieren. Der Agent stellt old_string bereit (Text, der tatsächlich in der Datei existiert), das Tool findet ihn und ersetzt ihn durch new_string. Wenn old_string mehreren Stellen entspricht, setze replace_all: true, um alle Vorkommen zu ersetzen.
edit_file ist die vom Agenten am häufigsten verwendete Dateiänderungsmethode—sie ist sicherer als write_file, weil der Vorgang mit einem Fehler fehlschlägt, wenn old_string nicht gefunden wird, anstatt die Datei versehentlich zu überschreiben.
terminal — Shell-Befehlsausführung
Ermöglicht dem Agenten, Shell-Befehle in einer angegebenen Backend-Umgebung auszuführen.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| run_command | Einen einzelnen Shell-Befehl ausführen | command (erforderlich), workdir (Arbeitsverzeichnis), timeout (Timeout in Millisekunden) |
| run_script | Mehrzeilige Shell-Skripte ausführen | script (erforderlich, mehrzeiliger Skriptinhalt), workdir, timeout |
Befehle werden im konfigurierten Terminal-Backend ausgeführt – lokal, Docker (Container), SSH (Remote) usw.
Ausführungsergebnisse umfassen stdout, stderr und den Exit-Code. Der Agent kann diese Informationen verwenden, um festzustellen, ob der Befehl erfolgreich war.
code — Sandbox-Codeausführung
Führt Codeausschnitte in einer isolierten Sandbox aus, unterstützt Python, JavaScript und Bash.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| execute_code | Code in Sandbox ausführen | Sprache (python/js/bash), code (erforderlich), timeout |
Unterschied zum Terminal: Das code-Tool läuft in einer unabhängigen Sandbox und kann nicht auf das Dateisystem zugreifen (es sei denn, es wird explizit gemountet). Es eignet sich für die Ausführung von Code, der keine Dateiinteraktion erfordert, wie z. B. Algorithmusvalidierung und Datenverarbeitung.
computer — Desktop-GUI-Automatisierung
Steuert die Maus, die Tastatur und die Screenshots der Desktopumgebung.
| Werkzeuge | Funktionen |
|---|---|
| screenshot | Erfasst den Bildschirm oder einen angegebenen Bereich |
| click | Klickt mit der Maus an den angegebenen Koordinaten |
| type | Tastatur-Texteingabe simulieren |
| scroll | Mausrad scrollen |
| move | Maus an die angegebenen Koordinaten bewegen |
Die Computer-Tool-Sammlung wird hauptsächlich für GUI-Anwendungstests und automatisierte Vorgänge verwendet. Wenn Ihr Anwendungsfall keine Desktop-Anwendungen umfasst, können Sie sie deaktivieren, um Tokens zu sparen.
Netzwerk- und Inhalts-Tool-Sets
Diese Tool-Sets ermöglichen es dem Agenten, das Internet zu durchsuchen, Webseiteninhalte zu extrahieren und Browser-Vorgänge zu automatisieren.
web — Websuche und Inhaltsextraktion
Der Hauptkanal, über den der Agent externe Informationen bezieht.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| web_search | Internet-Inhalte durchsuchen | query (erforderlich), num_results (Anzahl der Ergebnisse) |
| web_extract | Hauptinhalt einer angegebenen URL extrahieren | url (erforderlich), extract_mode (auto/text/markdown) |
web_search gibt eine Liste von Suchergebnissen zurück (Titel + URL + Zusammenfassung). Der Agent sucht typischerweise zuerst und ruft dann web_extract für interessante Seiten auf, um detaillierte Inhalte zu erhalten.
Um sie zu nutzen, muss eine Such-API konfiguriert werden. Mehrere Anbieter werden unterstützt:
Beispiel
# Web-Such-Backend konfigurieren
web:
search_provider: firecrawl # oder brave, serpapi, tavily
# Den entsprechenden API-Schlüssel in .env setzen
# FIRECRAWL_API_KEY=fc-...
# Oder BRAVE_API_KEY=BS...
browser — Browser-Automatisierung
Vollständige Browser-Steuerungsfunktionen – Navigation, Klicken, Ausfüllen von Formularen, Screenshots – Bedienung von Webseiten wie ein Mensch.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| navigate | Zu einer angegebenen URL navigieren | url (erforderlich) |
| click | Auf Seitenelement klicken | selector (CSS-Selektor oder Textbeschreibung) |
| fill_form | Formularfelder ausfüllen | fields (Zuordnung von Feldnamen zu Werten) |
| screenshot | Aktuelle Seite erfassen | full_page (ob ein ganzseitiger Screenshot erstellt werden soll) |
| extract | Strukturierte Daten aus einer Seite extrahieren | selector、format(json/text) |
| execute_js | Führt JavaScript auf der Seite aus | Code (erforderlich) |
Die Browser-Tool-Sammlung erfordert Playwright oder ein Cloud-Browser-Backend.
Das Browser-Tool-Set verbraucht zusätzliche Ressourcen beim Starten von Browser-Instanzen. Wenn Sie nur den Textinhalt einer Webseite extrahieren möchten, bevorzugen Sie web_extract gegenüber Browser-Extraktion – Ersteres ist eine leichtgewichtige HTTP-Anfrage, während Letzteres das Starten eines vollständigen Browsers erfordert.
Vision — Bildanalyse
Ermöglicht dem Agenten, Bildinhalte zu "verstehen".
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| analyze_image | Bildinhalt analysieren und eine Beschreibung generieren | image_path oder image_url (erforderlich), question (optional, spezifische Frage zum Bild) |
| describe_image | Eine detaillierte textliche Beschreibung eines Bildes generieren | image_path oder image_url (erforderlich) |
Das Vision-Tool sendet Bilder an ein visionsfähiges LLM (wie claude-sonnet-4-6, gpt-4o), und das Modell erkennt und beschreibt den Bildinhalt.
audio — Audioverarbeitung
Sprache-zu-Text und Text-zu-Sprache.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| transcribe | Audiodateien in Text umwandeln | audio_path (erforderlich), language (optional) |
| tts | Text in Sprachdateien umwandeln | text (erforderlich), voice (Stimmauswahl), provider |
Agent-Fähigkeits-Toolsets
Diese Art von Tool-Sammlung verwaltet den eigenen Zustand des Agenten – Gedächtnis, Fähigkeiten und Sub-Agent-Zusammenarbeit.
memory — Gedächtnisverwaltung
Persistenten Speicher lesen und schreiben und sitzungsübergreifenden Verlauf durchsuchen.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| memory | Persistenten Speicher verwalten (hinzufügen, löschen, ändern) | action(add/replace/remove)、target(memory/user)、content |
| session_search | Volltextsuche in historischen Sitzungen | query (erforderlich, unterstützt FTS5-Syntax) |
Das Memory-Tool hat keine Leseoperation – persistenter Speicher wird bereits beim Sitzungsstart in den System-Prompt injiziert, sodass der Agent ihn nicht separat lesen muss.
skills — Skill-Verwaltung
Lädt und verwaltet wiederverwendbare Workflow-Skills.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| skills_list | Listet alle installierten Skills und ihre Beschreibungen auf | Keine (wird automatisch beim Sitzungsstart aufgerufen) |
| skill_view | Lade den vollständigen Inhalt eines Skills | name (erforderlich), path (optional, referenzierte Unterdateien laden) |
| skill_manage | Skill-Dateien erstellen, ändern oder löschen | action、name、content |
delegation — Sub-Agent-Delegation
Erzeugt Sub-Agents, um Aufgaben parallel auszuführen.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| spawn_agent | Erzeugt einen einzelnen Sub-Agent, um eine Aufgabe auszuführen | prompt (erforderlich), model (optional) |
| spawn_parallel | Mehrere Sub-Agents parallel erstellen | tasks (erforderlich, Aufgabenliste) |
Sub-Agenten haben unabhängige Kontextfenster und verunreinigen den Konversationsverlauf des Haupt-Agenten nicht. Nach der Ausführung geben sie eine Zusammenfassung der Ergebnisse zurück.
kanban — Multi-Agent-Kanban-Board
Ein strukturiertes Multi-Agenten-Kollaborationssystem, das explizit aktiviert werden muss (all/* aktiviert es nicht automatisch).
| Werkzeuge | Funktionen |
|---|---|
| task_create | Erstellt eine neue Aufgabe im Kanban-Board |
| task_update | Aktualisiert den Aufgabenstatus (todo/in_progress/done) |
| task_list | Listet alle Aufgaben des Mandanten auf |
| task_assign | Weist designierten Worker-Agenten Aufgaben zu |
Kanban ist der Kernmechanismus für die Zusammenarbeit mehrerer Profile – ein Orchestrator-Profil erstellt Aufgaben, und mehrere Worker-Profile übernehmen und führen sie aus. Dazu müssen die Gateways mehrerer Profile gleichzeitig laufen.
Toolset zur Medienerstellung
Diese Art von Tool-Sammlung erfordert normalerweise ein Abonnement für Nous Portal oder den entsprechenden Drittanbieter-API-Key.
image_gen — KI-Bildgenerierung
Erzeugt Bilder aus Textbeschreibungen und unterstützt 9 Modelle.
| Werkzeuge | Funktionen | Wichtige Parameter |
|---|---|---|
| generate_image | Erzeuge ein Bild basierend auf einem Prompt | prompt(Erforderlich)、model(flux/gpt-image/ideogram usw.)、size、style |
tts — Text-to-Speech
TTS-Funktionalität unabhängig von der Audio-Tool-Sammlung, mit einer reicheren Auswahl an Anbietern.
| Werkzeuge | Funktionen |
|---|---|
| text_to_speech | Text in Sprachdateien umwandeln |
| list_voices | Verfügbare Stimm-Timbres auflisten |
Benutzerdefiniertes Toolset
Du kannst vorhandene Tool-Sammlungen zu projektspezifischen benutzerdefinierten Tool-Sammlungen kombinieren:
Beispiel
# Projektspezifische Toolset-Kombination definieren
custom_toolsets:
# Tools, die für Data-Science-Projekte benötigt werden
data-science:
- file
- terminal
- Code
- Web
# Reine Schreibprojekte benötigen nur Dateioperationen
writing:
- file
- Web
- memory
# Ops-Projekte benötigen Terminal + Dateien, keinen Browser
devops:
- file
- terminal
- memory
Bei Verwendung über--toolsetsParameterspezifikation:
Beispiel
hermes --toolsets data-science chat
# Oder als Standard in der Profilkonfiguration festlegen
coder config set toolsets data-science
Ablauf von Tool-Aufrufen
Das Verständnis des vollständigen Ablaufs eines Tool-Aufrufs hilft, das Verhalten des Agenten zu verstehen und Probleme zu beheben.
Ein vollständiger Tool-Aufruf durchläuft die folgenden Schritte:
- Das LLM entscheidet während der Generierung seiner Antwort, ein Tool aufzurufen, und gibt den Tool-Namen und die Parameter aus
- Ausführung der tool_request-Middleware (kann Parameter ändern)
- Genehmigungsprüfung – wenn das Tool eine gefährliche Operation ist, wird anhand von approvals.mode entschieden, ob eine Bestätigungsaufforderung angezeigt wird
- Tatsächliche Tool-Ausführung
- tool_execution-Middleware wird ausgeführt (kann Ergebnisse ändern)
- post_tool_call-Hook zeichnet Telemetriedaten auf
- Das Ausführungsergebnis wird an das LLM zurückgegeben, und das LLM fährt mit der Generierung einer Antwort fort
Wenn Ihre Middleware Tool-Parameter ändert, sind die geänderten Parameter die Eingabe für die Genehmigung und die tatsächliche Ausführung. Wenn Sie die Ausführung in der Middleware kurzschließen (ein benutzerdefiniertes Ergebnis zurückgeben), wird das eigentliche Tool nicht ausgeführt.
Tool-Nutzungsstatistiken
Zu wissen, welche Tools häufig verwendet werden, hilft, die Konfiguration der Tool-Sammlung und den Token-Verbrauch zu optimieren.
In einer Sitzung die Tool-Aufrufstatistiken für die aktuelle Sitzung anzeigen:
Beispiel
/usage
# Beispielausgabe:
# Token-Nutzung: Eingabe 12,340 | Ausgabe 5,678 | Gesamt 18,018
# Tool-Aufrufe: read_file (15 Mal) | edit_file (8 Mal)
# terminal (3 Mal) | web_search (2 Mal)
In Batch-Verarbeitungsszenarien speichert die Datei statistics.json detailliertere Statistiken:
Beispiel
{
"total_tool_calls": 1523,
"tools": {
"read_file": {"count": 520, "success": 510, "failure": 10},
"edit_file": {"count": 380, "success": 375, "failure": 5},
"terminal": {"count": 290, "success": 270, "failure": 20},
"web_search": {"count": 180, "success": 178, "failure": 2}
},
"avg_tool_calls_per_turn": 2.4,
"most_common_tool_sequence": [
"read_file", "edit_file", "terminal"
]
}