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.

WerkzeugeFunktionenWichtige Parameter
read_fileDateiinhalt lesenfile_path (erforderlich), offset (Startzeile), limit (maximale Anzahl Zeilen)
write_fileDatei erstellen oder überschreibenfile_path (erforderlich), content (erforderlich)
edit_fileText in Dateien präzise ersetzenfile_path、old_string、new_string、replace_all
list_dirVerzeichnisinhalt auflistenpath (erforderlich), recursive (ob rekursiv)
search_filesNach Dateinamenmuster suchenpattern (erforderlich, unterstützt glob), path (Wurzelverzeichnis für die Suche)
search_contentText in Dateiinhalt suchenpattern (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.

WerkzeugeFunktionenWichtige Parameter
run_commandEinen einzelnen Shell-Befehl ausführencommand (erforderlich), workdir (Arbeitsverzeichnis), timeout (Timeout in Millisekunden)
run_scriptMehrzeilige Shell-Skripte ausführenscript (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.

WerkzeugeFunktionenWichtige Parameter
execute_codeCode in Sandbox ausführenSprache (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.

WerkzeugeFunktionen
screenshotErfasst den Bildschirm oder einen angegebenen Bereich
clickKlickt mit der Maus an den angegebenen Koordinaten
typeTastatur-Texteingabe simulieren
scrollMausrad scrollen
moveMaus 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.

WerkzeugeFunktionenWichtige Parameter
web_searchInternet-Inhalte durchsuchenquery (erforderlich), num_results (Anzahl der Ergebnisse)
web_extractHauptinhalt einer angegebenen URL extrahierenurl (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

# Dateipfad: ~/.hermes/config.yaml
# 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.

WerkzeugeFunktionenWichtige Parameter
navigateZu einer angegebenen URL navigierenurl (erforderlich)
clickAuf Seitenelement klickenselector (CSS-Selektor oder Textbeschreibung)
fill_formFormularfelder ausfüllenfields (Zuordnung von Feldnamen zu Werten)
screenshotAktuelle Seite erfassenfull_page (ob ein ganzseitiger Screenshot erstellt werden soll)
extractStrukturierte Daten aus einer Seite extrahierenselector、format(json/text)
execute_jsFührt JavaScript auf der Seite ausCode (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".

WerkzeugeFunktionenWichtige Parameter
analyze_imageBildinhalt analysieren und eine Beschreibung generierenimage_path oder image_url (erforderlich), question (optional, spezifische Frage zum Bild)
describe_imageEine detaillierte textliche Beschreibung eines Bildes generierenimage_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.

WerkzeugeFunktionenWichtige Parameter
transcribeAudiodateien in Text umwandelnaudio_path (erforderlich), language (optional)
ttsText in Sprachdateien umwandelntext (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.

WerkzeugeFunktionenWichtige Parameter
memoryPersistenten Speicher verwalten (hinzufügen, löschen, ändern)action(add/replace/remove)、target(memory/user)、content
session_searchVolltextsuche in historischen Sitzungenquery (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.

WerkzeugeFunktionenWichtige Parameter
skills_listListet alle installierten Skills und ihre Beschreibungen aufKeine (wird automatisch beim Sitzungsstart aufgerufen)
skill_viewLade den vollständigen Inhalt eines Skillsname (erforderlich), path (optional, referenzierte Unterdateien laden)
skill_manageSkill-Dateien erstellen, ändern oder löschenaction、name、content

delegation — Sub-Agent-Delegation

Erzeugt Sub-Agents, um Aufgaben parallel auszuführen.

WerkzeugeFunktionenWichtige Parameter
spawn_agentErzeugt einen einzelnen Sub-Agent, um eine Aufgabe auszuführenprompt (erforderlich), model (optional)
spawn_parallelMehrere Sub-Agents parallel erstellentasks (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).

WerkzeugeFunktionen
task_createErstellt eine neue Aufgabe im Kanban-Board
task_updateAktualisiert den Aufgabenstatus (todo/in_progress/done)
task_listListet alle Aufgaben des Mandanten auf
task_assignWeist 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.

WerkzeugeFunktionenWichtige Parameter
generate_imageErzeuge ein Bild basierend auf einem Promptprompt(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.

WerkzeugeFunktionen
text_to_speechText in Sprachdateien umwandeln
list_voicesVerfügbare Stimm-Timbres auflisten

Benutzerdefiniertes Toolset

Du kannst vorhandene Tool-Sammlungen zu projektspezifischen benutzerdefinierten Tool-Sammlungen kombinieren:

Beispiel

# Dateipfad: ~/.hermes/config.yaml
# 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

# Benutzerdefiniertes Toolset beim Start verwenden
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:

  1. Das LLM entscheidet während der Generierung seiner Antwort, ein Tool aufzurufen, und gibt den Tool-Namen und die Parameter aus
  2. Ausführung der tool_request-Middleware (kann Parameter ändern)
  3. Genehmigungsprüfung – wenn das Tool eine gefährliche Operation ist, wird anhand von approvals.mode entschieden, ob eine Bestätigungsaufforderung angezeigt wird
  4. Tatsächliche Tool-Ausführung
  5. tool_execution-Middleware wird ausgeführt (kann Ergebnisse ändern)
  6. post_tool_call-Hook zeichnet Telemetriedaten auf
  7. 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

# Tool-Nutzungsstatistiken für diese Sitzung anzeigen
/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

// Dateipfad: data/my_first_run/statistics.json
{
  "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"
  ]
}
Weitere Erweiterungen