Spaces:
Running
Running
🐛 BUG FIX: Download Media Automático
Problema Identificado
Símbolo: [RESP-EMPTY] ao chamar skill download_media sem solicitação
Reprodução:
Mensagem: "a belmira... olha só beu ela já nem lembra de vc"
↓
Sistema acionou AUTOMATICAMENTE: download_media com URL do YouTube
↓
Resultado: [RESP-EMPTY] (resposta vazia)
Causa Raiz
No arquivo modules/api.py, função _execute_agent_loop (linha 2915-2944):
- O sistema executava TODAS as tool_calls geradas pelo LLM sem validação
- Se o LLM visse uma URL no histórico observado (passivo), acionava
download_mediaautomaticamente - Não havia filtro para distinguir entre:
- Skills explicitamente solicitadas (usuário pediu "baixa este vídeo")
- Skills executadas por contexto (URL apareceu no histórico, LLM decidiu baixar "por iniciativa própria")
Solução Implementada
Filtro de Segurança: "Explicit Request Validation"
# ✅ NOVO: FILTRO CRÍTICO - Evita skills não solicitadas explicitamente
auto_exec_blocked_skills = ["download_media", "generate_image"]
filtered_tool_calls = []
for tc in tool_calls:
should_execute = True
if tc.name in auto_exec_blocked_skills:
original_msg_lower = (original_message or "").lower()
if tc.name == "download_media":
# Procura por PEDIDOS EXPLÍCITOS do usuário:
explicit_triggers = [
"baixa", "download", "baixar", "pega", "get",
"url", "link", "media", "vídeo", "áudio", "audio",
"imagem", "image", "foto", "picture"
]
# Verifica se o histórico tem observações PASSIVAS (não solicitações)
has_explicit_request = any(t in original_msg_lower for t in explicit_triggers)
has_passive_observation = "[GRUPO |" in str(current_context)
# Bloqueia se: Não há pedido explícito E histórico é passivo
if not has_explicit_request and has_passive_observation:
should_execute = False # ✅ BLOQUEADO!
Comportamento Antes vs Depois
ANTES (❌ BUG)
[User]: "a belmira... olha só beu ela já nem lembra de vc"
↑ Mensagem simples, sem pedir download
[AKIRA Histórico]:
[GRUPO | Isaac]: $ytmp4 https://youtube.com/shorts/...
[LLM gera]:
tool_calls: [{name: "download_media", args: {url: "..."}}]
[Sistema executa]:
🚀 Executando Skill: download_media...
[RESP-EMPTY] ← RESPOSTA VAZIA, usuário confuso
DEPOIS (✅ CORRIGIDO)
[User]: "a belmira... olha só beu ela já nem lembra de vc"
↑ Mensagem simples, sem pedir download
[AKIRA Histórico]:
[GRUPO | Isaac]: $ytmp4 https://youtube.com/shorts/...
[LLM gera]:
tool_calls: [{name: "download_media", args: {url: "..."}}]
[FILTRO VALIDA]:
✅ Verificando: skill "download_media"
✓ original_message contém trigger explícito? NÃO
✓ histórico é passivo ([GRUPO |])? SIM
[DECISÃO]: 🚫 BLOQUEADO - Não há solicitação explícita!
[Sistema responde]:
✅ Akira: "tua criação, tua responsabilidade, teu problema kkkk"
(Resposta normal, sem execução de skill não solicitada)
Skills Protegidas
Atualmente bloqueadas quando não solicitadas explicitamente:
download_media- Evita download automático de URLs em históricogenerate_image- Evita geração de imagens sem pedido
Triggers Explícitos Aceitos
Para download_media:
- "baixa", "download", "baixar", "pega", "get", "url", "link"
- "media", "vídeo", "áudio", "audio", "imagem", "image", "foto", "picture"
Para generate_image:
- "gera", "create", "draw", "faz", "desenha", "imagem", "image"
- "foto", "picture", "ilustra"
Impacto
✅ Problemas Resolvidos:
- Sem mais execução de skills não solicitadas
- Sem mais respostas vazias
[RESP-EMPTY] - Akira não "halucina" ações baseado em histórico passivo
- Melhor segurança: usuário deve ser explícito
⚠️ Comportamento Mudado:
- Se usuário disser só "e aí" e há URL no histórico, skill NÃO executa
- Necessário pedir explicitamente: "baixa aquele vídeo"
Teste Manual
✅ PASSOU: "baixa esse vídeo pra mim"
→ Executa download_media
✅ PASSOU: "e aí"
→ Não executa, retorna resposta normal
✅ PASSOU: "qual o seu propósito?"
→ Não executa, retorna resposta normal
(mesmo com URL em [GRUPO | histórico])
Ficheiro Modificado
modules/api.py(linhas 2915-3007)
Deploy
Commitado como: fix: block auto-execution of download_media without explicit request
Status: ✅ CORRIGIDO
Data: 2026-05-24
Gravidade: 🔴 CRÍTICA (afetava UX)