Skip to content

Werkzeugsystem ToolRegistry

源码版本v2026.7.20

Verantwortung

Tools sind atomare Funktionen, die der Agent aufrufen kann (Terminal, Browser, Datei, MCP, Skill-Aufruf, …). ToolRegistry entdeckt beim Modulimport per AST-Scan automatisch die Werkzeuge in tools/*.py und registriert sie; es bietet der Hauptschleife eine name → ToolEntry-Lookup-Tabelle für den Werkzeug-Dispatch. Tools sind statisch – im Gegensatz zu den «evolvierbaren» Skills.

Schlüsseldateien

Datenfluss

  1. Beim Start löst init_agent:276 die Toolset-Konfiguration aus.
  2. discover_builtin_tools:67 durchläuft das Verzeichnis tools/ und entscheidet per AST, ob jedes Modul registry.register aufruft (tools/registry.py:30).
  3. Treffer-Module werden importiert, ihr modulweiter registry.register(...)-Aufruf wird ausgeführt und schreibt ein ToolEntry in das Registry-Singleton:765.
  4. Die Hauptschleife sammelt jeden Turn die ToolEntry.schema der aktivierten Toolsets ins tools-Feld für den Provider.
  5. Der Provider liefert tool_call → die Hauptschleife schlägt den Handler per get_entry(name) (tools/registry.py:274) nach, führt ihn aus → das Ergebnis wird mit tool_result:798 verpackt und zurückgefüllt.

Zusammenfassung

Das Eleganteste am Werkzeugsystem ist «Import = Registrierung»: Der AST-Scan macht eine manuell gepflegte Liste überflüssig; ein neues Werkzeug ist nur eine Datei in tools/, die register aufruft. Das registry-Singleton ist die einzige globale Wahrheit, die Hauptschleife liest sie nur. Der Unterschied zu Skills: Tools sind tote Funktionen, Skills sind von der Lernschleife umbuchbare Flüsse.

Inoffizielle Community-Lernseite. Basiert auf dem MIT-lizenzierten NousResearch/hermes-agent-Quellcode.