Sistema de herramientas ToolRegistry
Responsabilidad
Las Tools son funciones atómicas que el agent puede invocar (terminal, navegador, archivos, MCP, llamadas a skills…). ToolRegistry descubre automáticamente al importar el módulo, vía escaneo AST, las herramientas en tools/*.py y las registra, ofreciendo al bucle principal una tabla name → ToolEntry para despachar las llamadas. Las herramientas son estáticas, en contraste con la «evolutividad» de las habilidades.
Archivos clave
discover_builtin_tools:67-86— escanea con ASTtools/*.pypara encontrar módulos que registran herramientas_is_registry_register_call / _module_registers_tools:30-43— decide si un módulo llama aregistry.registerclass ToolEntry:87-153— metadatos de cada herramienta (handler, schema, toolset, flags de caché)class ToolRegistry:217-365— el registro en sídef register:365-436— registra una herramienta, construye internamente unToolEntryget_entry / register_toolset_alias:274-290— consulta y alias de toolsetregister_plugin_override_policy:316-365— política de admisión de namespace para herramientas de pluginsingleton registry:765—registry = ToolRegistry()(singleton a nivel de módulo)tool_error / tool_result:784-810— envoltura estándar de los valores de retornodirectorio tools/— unos 80 archivos de herramientas (terminal/browser/web/file/mcp/skills/delegate…)
Flujo de datos
- En el arranque,
init_agent:276dispara la configuración de toolsets. discover_builtin_tools:67recorre el directoriotools/y usa AST para decidir si cada módulo llama aregistry.register(tools/registry.py:30).- Los módulos que cumplen se importan; su llamada a nivel de módulo
registry.register(...)se ejecuta y escribe elToolEntryen elsingleton registry:765. - El bucle principal, cada turno, recolecta los
ToolEntry.schemade los toolsets activos en el campotoolsenviado al provider. - El provider devuelve un
tool_call→ el bucle principal haceget_entry(name)(tools/registry.py:274) para encontrar el handler y ejecutarlo → el resultado se envuelve contool_result:798y se devuelve al bucle principal.
Resumen
La sutileza del sistema de herramientas está en «importar = registrar»: el escaneo AST evita mantener una lista a mano; añadir una herramienta es tan simple como soltar en tools/ un archivo que llame a register. El singleton registry es la única fuente de verdad; el bucle principal solo lo lee. La diferencia con las habilidades: las herramientas son funciones estáticas; las habilidades, flujos que el bucle de aprendizaje puede reescribir.