🚀 Auto-deploy: BotVPS atualizado em 28/03/2026 17:15:38
This commit is contained in:
@@ -18,7 +18,7 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Expõe a porta do FastAPI
|
# 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
|
# Garante que o script de inicialização do repositório tenha permissão de execução
|
||||||
RUN chmod +x start.sh
|
RUN chmod +x start.sh
|
||||||
|
|||||||
10
ai_agent.py
10
ai_agent.py
@@ -43,6 +43,10 @@ DIRETRIZES:
|
|||||||
* Listar Drive: `[TOOL:run_bash_command] gws-adm drive files list --params '{{"pageSize": 5}}' [/TOOL]`
|
* 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.
|
- Nunca responda que não tem acesso a e-mails ou arquivos externos se puder usar o GWS.
|
||||||
- Responda sempre em PORTUGUÊS.
|
- 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:
|
### FERRAMENTAS DISPONÍVEIS:
|
||||||
{tools_desc}
|
{tools_desc}
|
||||||
@@ -60,7 +64,8 @@ DIRETRIZES:
|
|||||||
history_str += f"\nUsuário: {prompt}\n"
|
history_str += f"\nUsuário: {prompt}\n"
|
||||||
|
|
||||||
current_history = history_str
|
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)...")
|
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)
|
response = await get_llm_response_async(system_prompt + current_history, provider, cfg)
|
||||||
print(f"[LLM RESPONSE]: {response}")
|
print(f"[LLM RESPONSE]: {response}")
|
||||||
@@ -80,6 +85,7 @@ DIRETRIZES:
|
|||||||
else:
|
else:
|
||||||
current_history += f"\nAgente: {response}\nSISTEMA: Erro: Ferramenta inexistente.\n"
|
current_history += f"\nAgente: {response}\nSISTEMA: Erro: Ferramenta inexistente.\n"
|
||||||
else:
|
else:
|
||||||
|
# Se não há ferramenta, terminou o pensamento.
|
||||||
return response
|
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'}"
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ services:
|
|||||||
container_name: vps-ai-agent
|
container_name: vps-ai-agent
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
expose:
|
expose:
|
||||||
- "8000"
|
- "8001"
|
||||||
ports:
|
ports:
|
||||||
- "8001:8000"
|
- "8001:8001"
|
||||||
# Monta as credenciais e o socket do docker para o Bot conseguir comandar a VPS raiz!
|
# Monta as credenciais e o socket do docker para o Bot conseguir comandar a VPS raiz!
|
||||||
volumes:
|
volumes:
|
||||||
- .:/app
|
- .:/app
|
||||||
@@ -26,7 +26,7 @@ services:
|
|||||||
- "traefik.http.routers.vps-agent.entrypoints=https"
|
- "traefik.http.routers.vps-agent.entrypoints=https"
|
||||||
- "traefik.http.routers.vps-agent.tls=true"
|
- "traefik.http.routers.vps-agent.tls=true"
|
||||||
- "traefik.http.routers.vps-agent.tls.certresolver=letsencrypt"
|
- "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:
|
networks:
|
||||||
coolify:
|
coolify:
|
||||||
|
|||||||
@@ -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
|
3. Use "cd /app && docker compose up -d --build" para rebuild e deploy
|
||||||
|
|
||||||
### EXEMPLOS DE COMANDOS CORRETOS:
|
### EXEMPLOS DE COMANDOS CORRETOS:
|
||||||
✅ CORRETO: cd /app && git pull origin master
|
✅ CORRETO: cd /root/Apps/BotVPS && git log -n 1
|
||||||
✅ CORRETO: cd /app && docker compose up -d --build
|
✅ 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:
|
### FORMATO DE RESPOSTA:
|
||||||
Responda APENAS com JSON:
|
Responda APENAS com JSON:
|
||||||
@@ -68,9 +73,9 @@ async def detect_git_repo_path_async(task: str) -> str:
|
|||||||
# Mapeamento de APPs conhecidos
|
# Mapeamento de APPs conhecidos
|
||||||
app_map = {
|
app_map = {
|
||||||
"tracksteel": "/data/repositories/admtracksteel/AdmTrackSteel",
|
"tracksteel": "/data/repositories/admtracksteel/AdmTrackSteel",
|
||||||
"botvps": "/app",
|
"botvps": "/root/Apps/BotVPS",
|
||||||
"coolify": "/data/coolify/source",
|
"coolify": "/data/coolify/source",
|
||||||
"antigravity": "/app"
|
"antigravity": "/root/Apps/BotVPS"
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, path in app_map.items():
|
for key, path in app_map.items():
|
||||||
|
|||||||
Reference in New Issue
Block a user