diff --git a/Dockerfile b/Dockerfile index 1eb0996..ac20de2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN pip install --no-cache-dir -r requirements.txt COPY . . # Expõe a porta do FastAPI -EXPOSE 8000 +EXPOSE 8001 # Garante que o script de inicialização do repositório tenha permissão de execução RUN chmod +x start.sh diff --git a/ai_agent.py b/ai_agent.py index 0630721..a49081b 100644 --- a/ai_agent.py +++ b/ai_agent.py @@ -43,6 +43,10 @@ DIRETRIZES: * Listar Drive: `[TOOL:run_bash_command] gws-adm drive files list --params '{{"pageSize": 5}}' [/TOOL]` - Nunca responda que não tem acesso a e-mails ou arquivos externos se puder usar o GWS. - Responda sempre em PORTUGUÊS. +- CAMINHOS DO SISTEMA: + * BotVPS / Antigravity: `/root/Apps/BotVPS` (seu código fonte) + * Repositórios: `/data/repositories/` +- Se não souber onde um arquivo está, use `run_bash_command` com `find`. NUNCA CHUTE DIRETÓRIOS. ### FERRAMENTAS DISPONÍVEIS: {tools_desc} @@ -60,7 +64,8 @@ DIRETRIZES: history_str += f"\nUsuário: {prompt}\n" current_history = history_str - for i in range(5): # Reduzido de 10 para 5 para economizar cota e evitar loops infinitos + max_iterations = 10 + for i in range(max_iterations): print(f"[AGENT] Iteração {i+1} - Enviando para {provider} (modelo padrão)...") response = await get_llm_response_async(system_prompt + current_history, provider, cfg) print(f"[LLM RESPONSE]: {response}") @@ -80,6 +85,7 @@ DIRETRIZES: else: current_history += f"\nAgente: {response}\nSISTEMA: Erro: Ferramenta inexistente.\n" else: + # Se não há ferramenta, terminou o pensamento. return response - return "Limite de pensamento atingido." + return f"Limite de pensamento ({max_iterations} iterações) atingido.\nÚltima resposta: {response if 'response' in locals() else 'Nenhuma'}" diff --git a/docker-compose.yml b/docker-compose.yml index 408ba0a..f5bbbce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,9 +6,9 @@ services: container_name: vps-ai-agent restart: unless-stopped expose: - - "8000" + - "8001" ports: - - "8001:8000" + - "8001:8001" # Monta as credenciais e o socket do docker para o Bot conseguir comandar a VPS raiz! volumes: - .:/app @@ -26,7 +26,7 @@ services: - "traefik.http.routers.vps-agent.entrypoints=https" - "traefik.http.routers.vps-agent.tls=true" - "traefik.http.routers.vps-agent.tls.certresolver=letsencrypt" - - "traefik.http.services.vps-agent.loadbalancer.server.port=8000" + - "traefik.http.services.vps-agent.loadbalancer.server.port=8001" networks: coolify: diff --git a/orchestrator.py b/orchestrator.py index e5d92da..d995c6f 100644 --- a/orchestrator.py +++ b/orchestrator.py @@ -29,8 +29,13 @@ Seu trabalho é decompor tarefas em passos executáveis CORRETOS. 3. Use "cd /app && docker compose up -d --build" para rebuild e deploy ### EXEMPLOS DE COMANDOS CORRETOS: -✅ CORRETO: cd /app && git pull origin master -✅ CORRETO: cd /app && docker compose up -d --build +✅ CORRETO: cd /root/Apps/BotVPS && git log -n 1 +✅ CORRETO: cd /data/repositories/admtracksteel/AdmTrackSteel && git status + +### DIRETÓRIOS REAIS (HOST): +- BotVPS / Antigravity: `/root/Apps/BotVPS` +- AdmTrackSteel: `/data/repositories/admtracksteel/AdmTrackSteel` +- Se não tiver certeza de um caminho, use `ls` ou `find` primeiro. NUNCA CHUTE CAMINHOS. ### FORMATO DE RESPOSTA: Responda APENAS com JSON: @@ -68,9 +73,9 @@ async def detect_git_repo_path_async(task: str) -> str: # Mapeamento de APPs conhecidos app_map = { "tracksteel": "/data/repositories/admtracksteel/AdmTrackSteel", - "botvps": "/app", + "botvps": "/root/Apps/BotVPS", "coolify": "/data/coolify/source", - "antigravity": "/app" + "antigravity": "/root/Apps/BotVPS" } for key, path in app_map.items(): diff --git a/start.sh b/start.sh index b18e843..53e8648 100755 --- a/start.sh +++ b/start.sh @@ -8,4 +8,4 @@ fi # Inicia o serviço web com log unbuffered echo "Iniciando Uvicorn..." -exec uvicorn main:app --host 0.0.0.0 --port 8000 +exec uvicorn main:app --host 0.0.0.0 --port 8001