AKIRA-SOFTEDGE / BUG_FIX_DOWNLOAD_MEDIA_AUTO.md
akra35567's picture
Upload 190 files
b259a65 verified
|
Raw
History Blame Contribute Delete
4.89 kB

🐛 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_media automaticamente
  • Não havia filtro para distinguir entre:
    1. Skills explicitamente solicitadas (usuário pediu "baixa este vídeo")
    2. 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:

  1. download_media - Evita download automático de URLs em histórico
  2. generate_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)