Werkzeugsystem ToolRegistry
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
discover_builtin_tools:67-86— AST-Scan übertools/*.py, findet Module, die Werkzeuge registrieren_is_registry_register_call / _module_registers_tools:30-43— prüft, ob ein Modulregistry.registeraufruftclass ToolEntry:87-153— Metadaten eines einzelnen Werkzeugs (Handler, Schema, Toolset, Cache-Flags)class ToolRegistry:217-365— Registry-Körperdef register:365-436— registriert ein Werkzeug; baut intern einToolEntryget_entry / register_toolset_alias:274-290— Lookup und Toolset-Aliasregister_plugin_override_policy:316-365— Namespace-Zulassungsstrategie für Plugin-WerkzeugeRegistry-Singleton:765—registry = ToolRegistry()(modulweites Singleton)tool_error / tool_result:784-810— Standard-Rückgabewert-Verpackung für Werkzeugetools/-Verzeichnis— ca. 80 Werkzeugdateien (terminal/browser/web/file/mcp/skills/delegate…)
Datenfluss
- Beim Start löst
init_agent:276die Toolset-Konfiguration aus. discover_builtin_tools:67durchläuft das Verzeichnistools/und entscheidet per AST, ob jedes Modulregistry.registeraufruft (tools/registry.py:30).- Treffer-Module werden importiert, ihr modulweiter
registry.register(...)-Aufruf wird ausgeführt und schreibt einToolEntryin dasRegistry-Singleton:765. - Die Hauptschleife sammelt jeden Turn die
ToolEntry.schemader aktivierten Toolsets instools-Feld für den Provider. - Der Provider liefert
tool_call→ die Hauptschleife schlägt den Handler perget_entry(name)(tools/registry.py:274) nach, führt ihn aus → das Ergebnis wird mittool_result:798verpackt 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.