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"
```python
# ✅ 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)