Despliegue offline de OpenClaw: aplicação do ollama-QwQ-32B em ambientes de intranet

  1. Motivação para o despliegue offline

Em setores como finanças e governo, onde a segurança de dados é primordial, os servidores frequentemente operam em redes internas rigorosamente isoladas. Durante a implementação de um sistema de conhecimento corporativo para uma instituição financeira, encontramos o desafio de fornecer uma ferramenta de automação para documentos e relatórios sem acesso à internet pública.

Serviços de IA baseados em nuvem são inviáveis nesses cenários. A combinação das capacidades localizáveis do OpenClaw com o modelo ollama-QwQ-32B oferece uma solução viável. Após validação em ambiente de produção, estabelecemos um fluxo de trabalho automatizado eficiente.

  1. Preparação do ambiente offline

2.1 Transferência de dependências

Para instalar o OpenClaw em rede isolada, preparamos um pacote completo de dependências npm em um ambiente com acesso externo.

mkdir pacote-openclaw
cd pacote-openclaw
npm install --cache ./cache_npm --prefix . openclaw@latest
tar -czvf pacote-openclaw.tar.gz .

No serviodr interno, após descompactar, realizamos a instalação local:

npm install --cache ./cache_npm --prefix . openclaw@latest
npm link ./lib/node_modules/openclaw

É crucial verificar a árvore de dependências com npm ls --depth=99 para garantir integridade.

2.2 Implantação do modelo

O modelo QwQ-32B (cerca de 24GB) deve ser transferido previamente. Para iniciar o servidor ollama com otimização NUMA:

ollama serve --model qwq-32b --numa

Verificamos a disponibilidade do serviço com uma solicitação simples:

curl -X POST http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{"model":"qwq-32b","prompt":"Teste de conexão"}'
  1. Configuração do OpenClaw

3.1 Ajuste do modelo

No arquivo ~/.openclaw/config.json, configuramos a referência ao serviço local e desativamos verificações online:

{
  "engine": {
    "modelProvider": {
      "id": "ollama-local",
      "endpoint": "http://192.168.1.10:11434",
      "authToken": "unused",
      "protocol": "openai-compatible",
      "activeModels": [
        {
          "name": "qwq-32b",
          "alias": "Modelo Interno",
          "maxTokens": 32768
        }
      ]
    },
    "autoUpdate": false
  }
}

3.2 Integração com sistemas de mensagens

Para comunicação via Feishu em rede isolada, registramos a aplicação externamente e configuramos um proxy WebSocket interno:

{
  "messaging": {
    "feishuBot": {
      "status": "active",
      "applicationId": "id_da_aplicacao",
      "secretKey": "chave_secreta",
      "transport": "websocket",
      "websocketEndpoint": "ws://proxy-interno:8080"
    }
  }
}
  1. Casos de uso validados

Implementamos com sucesso três automações no setor financeiro:

  1. Extração de tabelas de PDFs: Transformação de relatórios em estruturas JSON usando um script auxiliar:
import re

def estruturar_tabela(dados_brutos):
    padrao_celula = r'\|\s*(.*?)\s*(?=\||$)'
    linhas = [re.findall(padrao_celula, linha) for linha in dados_brutos.split('\n') if '|' in linha]
    cabecalhos = linhas[0]
    return [dict(zip(cabecalhos, linha)) for linha in linhas[1:]]
  1. Conformidade regulatória: Comparação automatizada entre documentos e normas atualizadas.
  2. Atas de reunião: Síntese de decisões a partir de transcrições.

Este fluxo reduziu o tempo de processamento de 2 horas para 15 minutos com precisão superior a 92%.

  1. Solução de problemas comuns

  • Timeout do modelo: Aumentar o limite de tempo na configuração do OpenClaw para 120 segundos.
  • Falha de comunicação bidirecional: Garantir resolução DNS interna para domínios do Feishu.
  • Instalação de extensões: Transferir pacotes manualmente e instalar com clawhub install ./pacote.tgz.
  1. Medidas de segurança

mkdir -p /var/opt/openclaw/seguro
chown openclaw:openclaw /var/opt/openclaw/seguro
chmod 700 /var/opt/openclaw/seguro

Bloqueamos comandos potencialmente perigosos na configuração:

"protecao": {
  "comandos_bloqueados": ["rm -rf", "mkfs", "reboot"]
}

Ativamos logs detalhados para auditoria:

openclaw gateway start --log-level=info --audit-log=/var/log/openclaw/audit.log

Tags: OpenClaw Ollama QwQ-32B despliegue offline intranet

Publicado em 6-15 08:28 por Thomas