🔧 BaseTool — O Contrato
BaseTool é a interface que torna o sistema de ferramentas extensível. Quatro atributos obrigatórios e o LLM já sabe como usar a ferramenta.
📌 Interface BaseTool
- •name: str — identificador único ('google_calendar')
- •description: str — para o LLM decidir quando usar
- •parameters: dict — JSON Schema dos argumentos
- •async execute(**kwargs) -> str — implementação
- •O registry.py descobre tools automaticamente em tools/
💡 Dica Prática
Escreva a description como se fosse para um humano inteligente. O LLM lê exatamente isso para decidir quando chamar a tool.
🔍 Registry e Descoberta Automática
O registry.py usa reflexão Python para descobrir automaticamente todas as classes que estendem BaseTool. Zero código manual de registro.
📌 Como o Auto-Discovery Funciona
- •Escaneia todos os arquivos em tools/*.py
- •Importa cada módulo com importlib.import_module()
- •Inspeciona classes com inspect.getmembers()
- •Filtra por subclasses de BaseTool com issubclass()
- •Instancia e registra em tool_registry dict
💡 Dica Prática
Coloque uma tool em tools/ e reinicie o Jarvis. Ela aparece disponível automaticamente. Sem editar Agent, sem editar registry manual.
📅 Google Workspace
A integração com Google Workspace conecta o Jarvis à infraestrutura mais comum de produtividade do mundo. Calendar, Drive, Gmail e Sheets em ferramentas nativas.
📌 Tools do Google Workspace
- •GoogleCalendarTool: criar, listar, atualizar e cancelar eventos
- •GoogleDriveTool: upload, download, busca e compartilhamento
- •GmailTool: ler, enviar, arquivar e categorizar e-mails
- •GoogleSheetsTool: ler e escrever em planilhas
- •Autenticação: OAuth2 com token refresh automático
💡 Dica Prática
Use service accounts para automação sem interação humana. Para uso pessoal, OAuth2 com token salvo no .secrets é mais simples.
🐙 GitHub Integration
A GitHubTool transforma o Jarvis em um colaborador de desenvolvimento. Issues, PRs, commits e code search via API.
📌 Capacidades do GitHub
- •Listar e criar issues com labels e assignees
- •Revisar PRs: ver diffs, comentar, aprovar ou requestar mudanças
- •Buscar código por padrão em repositório específico
- •Fazer commits simples (ex: atualizar arquivo de config)
- •Verificar status de CI/CD no último commit
💡 Dica Prática
Configure o GITHUB_TOKEN com scope mínimo necessário. Para read-only, use apenas 'repo:read'. Para escrita, adicione 'repo' completo.
🌐 BrowserTool — Web Scraping
BrowserTool usa Playwright headless para dar ao Jarvis acesso à web em tempo real. Pesquisar, extrair e navegar com aprovação do usuário.
📌 Capacidades do Browser
- •web_search(): busca em DuckDuckGo ou Google com resultados estruturados
- •fetch_page(): extrai texto de qualquer URL (com injection detection)
- •take_screenshot(): captura visual de páginas para análise
- •fill_form(): preenche formulários com aprovação explícita
- •Todas as ações passam pelo approval gate nível 2
💡 Dica Prática
Sempre passe conteúdo de páginas web pelo injection scanner antes de adicionar ao contexto. Páginas maliciosas podem conter indirect injection.
⚡ Criando Tools Customizadas
O modelo de extensão do INTELECTO é deliberadamente simples. Menos de 50 linhas para transformar qualquer API em uma ferramenta do Jarvis.
📌 Template de Tool em 5 Passos
- •1. Criar tools/minha_tool.py
- •2. from intelecto.tools.base import BaseTool
- •3. class MinhaTool(BaseTool):
- •4. Definir name, description, parameters (JSON Schema)
- •5. async def execute(**kwargs) -> str: # sua lógica
💡 Dica Prática
O parâmetro description é o mais importante. Escreva como uma docstring de função: o que faz, quando usar, o que retorna. O LLM lê literalmente.
✅ Resumo do Módulo 4.2
Próximo:
4.3 Automação e Webhooks