Dificuldade: Iniciante | Duração: 25 minutos | Resultado: Conecte o QQ ao OpenClaw usando o NapCat e obtenha controle sobre 45 ferramentas de IA
Público-alvo
Você já está usando o OpenClaw e experimentou a facilidade de processar tarefas através do Telegram, Discord ou outras plataformas. Agora, quer ir além: permitir que a IA assuma diretamente o controle do QQ. Use linguagem natural para postar anúncios em grupos, consultar membros, banir usuários, dar curtidas e controlar o comportamento do robô em chats privados.
O NapCat é uma ponte baseada no QQ (via protocolo OneBot 11), e o @hyl_aa/napcat é o plugin oficial de canal para conectá-lo ao OpenClaw. Uma vez instalado, seu robô de QQ se torna um Agente de IA com 45 ferramentas prontas para uso.
Este artigo é ideal para:
- Quem já implantou o OpenClaw e quer adicionar o QQ como interface de interação.
- Quem deseja que a IA execute operações de gerenciamento em grupos do QQ (banimento, expulsão, anúncios, etc.).
- Quem tem experiência no desenvolvimento de robôs OneBot ou QQ e quer uma integração rápida com o OpenClaw.
Dependências Principais e Ambiente
| Dependência | Requisito de Versão | Descrição |
|---|---|---|
| OpenClaw | >= 2026.3.14 | Necessita de uma versão recente para suporte a plugins de canal |
| NapCat | Versão em execução | Necessita ativar HTTP API + WebSocket Reverso |
| Node.js | >= 22 | Ambiente de execução para NapCat e plugins |
@hyl_aa/napcat | Versão mais recente | Plugin de canal QQ para OpenClaw |
TIP
O NapCat é, essencialmente, uma implementação do protocolo QQ que expõe as capacidades de operação do QQ através da interface padrão OneBot 11. O plugin @hyl_aa/napcat utiliza essas interfaces para permitir que a IA do OpenClaw "controle" o QQ.
Repositório GitHub: https://github.com/Aliang1337/openclaw-napcat
Estrutura Completa do Projeto
Após a instalação do plugin @hyl_aa/napcat, a estrutura do diretório será a seguinte:
napcat/
├── index.ts # Entrada do plugin
├── openclaw.plugin.json # Metadados do plugin
├── package.json
└── src/
├── channel.ts # Definição do Plugin de Canal e Dock (núcleo de mensagens)
├── tools.ts # Registro das 45 ferramentas do Agente de IA
├── api.ts # Cliente HTTP API OneBot 11
├── monitor.ts # Monitoramento de mensagens WebSocket + processamento de voz STT
├── accounts.ts # Análise de múltiplas contas
├── config-schema.ts # JSON Schema de configuração + dicas de interface
├── probe.ts # Detecção de conexão / Verificação de saúde
├── runtime.ts # Contexto de tempo de execução
├── send.ts # Envio de mensagens
└── types.ts # Definições de tipos TypeScript
Passo a Passo
Passo 1: Instalar o NapCat e concluir o login da conta QQ
Esta etapa não tem relação direta com o OpenClaw; é o processo de instalação do próprio NapCat. Vamos colocar isso para funcionar primeiro.
Vá ao Repositório Oficial do NapCat, encontre o pacote de lançamento correspondente à sua versão do cliente QQ e conclua a instalação seguindo a documentação. O único requisito crítico é: a conta deve estar logada com sucesso e o robô deve estar online.
WARNING
O método de login do NapCat (NTQQ antigo vs. novo) varia conforme a versão; algumas exigem leitura manual de QR Code. Recomenda-se consultar as instruções mais recentes na Documentação do NapCat.
Passo 2: Configurar NapCat para ativar HTTP API + WebSocket Reverso
Após iniciar o NapCat, você precisa ativar dois canais:
HTTP API (usado pelo plugin para enviar mensagens ativamente, porta padrão 3000):
{
"httpApi": {
"enable": true,
"port": 3000
}
}
WebSocket Reverso (recebe mensagens do QQ e as envia para o OpenClaw):
{
"reverseWs": {
"enable": true,
"urls": ["ws://127.0.0.1:18800"]
}
}
18800 é a porta WS padrão atribuída ao canal NapCat pelo OpenClaw; o plugin monitorará esta porta ao iniciar. Se várias contas forem configuradas, as portas aumentarão sequencialmente (18800, 18801, 18802...), correspondendo aos channelId napcat, napcat_1, napcat_2, respectivamente.
Reinicie o NapCat após modificar as configurações para que tenham efeito.
Passo 3: Instalar o plugin @hyl_aa/napcat
Duas formas:
Opção 1: Instalação via npm (Recomendado)
openclaw plugins install @hyl_aa/napcat
Opção 2: Clone manual
cd ~/.openclaw/extensions
git clone https://github.com/Aliang1337/openclaw-napcat.git napcat
cd napcat && npm install --omit=dev
Após a instalação, reinicie o OpenClaw:
openclaw gateway restart
Passo 4: Configurar o canal NapCat no OpenClaw
Use openclaw config edit para abrir o arquivo de configuração e adicionar o bloco channels.napcat:
{
"channels": {
"napcat": {
"httpApi": "http://127.0.0.1:3000",
"accessToken": "seu_token",
"selfId": "123456789",
"dmPolicy": "allowlist",
"allowFrom": ["QQ_do_amigo"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["numero_do_grupo"]
}
}
}
Explicação dos campos:
| Campo | Significado |
|---|---|
httpApi | Endereço da API HTTP do NapCat, usada pelo plugin para enviar mensagens |
accessToken | Token de autenticação, deve coincidir com o configurado no NapCat (deixe vazio se não houver) |
selfId | O número do QQ do próprio robô, usado para detecção de @menção |
dmPolicy | Estratégia de chat privado (veja Passo 5) |
groupPolicy | Estratégia de chat de grupo (veja Passo 5) |
TIP
Se o accessToken estiver vazio, significa que não há autenticação, mas se um token for configurado no NapCat, ele deve ser idêntico aqui para que a comunicação funcione.
Passo 5: Configurar políticas de acesso dmPolicy / groupPolicy
Estes dois campos controlam quem pode interagir com a IA, sendo as configurações de segurança mais importantes:
dmPolicy (Política de Chat Privado):
| Valor | Significado |
|---|---|
allowlist | Apenas pessoas na lista allowFrom podem falar com a IA (padrão) |
pairing | Novos amigos precisam de confirmação de pareamento |
open | Qualquer pessoa em chat privado pode acionar a IA |
disabled | Desativa a função de chat privado |
groupPolicy (Política de Chat de Grupo):
| Valor | Significado |
|---|---|
allowlist | Apenas grupos na lista groupAllowFrom podem acionar a IA |
open | Mencionar o robô (@) em qualquer grupo pode acioná-lo (padrão) |
disabled | Desativa a função de chat de grupo |
allowFrom / groupAllowFrom:
allowFrom: Lista branca de chats privados, insira os números de QQ permitidos (formato string numérica).groupAllowFrom: Lista branca de grupos; se deixado vazio, usará os valores deallowFrom.
Configuração mais comum — permitir IA apenas para grupos e amigos específicos:
{
"channels": {
"napcat": {
"dmPolicy": "allowlist",
"allowFrom": ["10001", "10002"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["987654321"]
}
}
}
Passo 6: Definir tools.profile como "full"
Este é o erro mais comum. O perfil padrão tools.profile do OpenClaw é "coding", que filtra a maioria das ferramentas qq_*, fazendo com que a IA responda "Eu não tenho essa capacidade".
Adicione à configuração:
{
"tools": {
"profile": "full"
}
}
O perfil "full" exporá todas as ferramentas fornecidas pelos canais (incluindo todas as 45 ferramentas qq_*) ao modelo de IA.
Passo 7: Reiniciar OpenClaw e verificar conexão
openclaw gateway restart
openclaw gateway status
Verifique nos logs se há informações de conexão bem-sucedida do canal NapCat. Se vir algo como "napcat connected" ou "reverse ws connected", o canal WebSocket entre o NapCat e o OpenClaw foi estabelecido.
Você também pode pedir ao robô para enviar uma mensagem de teste — se a interface HTTP API do NapCat estiver normal, o OpenClaw pode enviar mensagens ativamente para o QQ:
# Teste manual: faça a IA te enviar uma mensagem
# Envie no chat privado do QQ: "Olá"
# A IA deve responder
Se não houver resposta no chat privado, pule para o Passo 1 de "Solução de Problemas Comuns".
Passo 8: Chamar ferramentas de IA no QQ
Após validar a conexão, você pode usar linguagem natural no QQ para comandar a IA. Aqui estão alguns cenários típicos:
Envio de mensagens e anúncios:
"Poste um anúncio no grupo: reunião amanhã às 20h"
"Enviar anúncio de grupo: evento cancelado este fim de semana"
A IA chamará qq_send_group_notice, desde que o robô tenha permissões de proprietário ou administrador.
Gerenciamento de membros do grupo:
"Silencie @alguem por 10 minutos"
"Expulse aquela pessoa do grupo"
"Defina Fulano como administrador do grupo"
As ferramentas correspondentes são qq_mute_group_member, qq_kick_group_member e qq_set_group_admin.
Operações de consulta:
"Ver lista de membros do grupo"
"Mostre as últimas 30 mensagens deste grupo"
"Consulte o perfil de @alguem"
A IA chamará qq_get_group_member_list, qq_get_group_msg_history e qq_get_user_info.
Mensagens essenciais e arquivos:
"Defina esta mensagem como essência"
"Veja o que há nos arquivos do grupo"
Curtir mensagens e cutucar:
"Dê uma curtida para 3870871935"
"Dê um cutucão em @alguem"
Solução de Problemas Comuns
1. Falha na conexão WebSocket
Sintoma: O log do OpenClaw não mostra "napcat connected" e o robô não responde às mensagens.
Passos de verificação:
# 1. Verifique se o NapCat está rodando normalmente
curl http://127.0.0.1:3000/get_version_info
# Se retornar informações da versão, a HTTP API do NapCat está acessível
# 2. Verifique se a porta do WS reverso está ocupada
netstat -an | grep 18800
# Se outro processo estiver usando esta porta, o NapCat não conectará
# 3. Confirme se o endereço WS na configuração do NapCat está correto
# Deve coincidir com a porta do OpenClaw, padrão: ws://127.0.0.1:18800
Certifique-se de que a porta em reverseWs.urls na configuração do NapCat seja a mesma que o OpenClaw está monitorando.
2. Falha na autenticação accessToken
Sintoma: Resposta HTTP 401 ou erro "unauthorized" nos logs.
Verifique se a configuração do token no lado do NapCat e o campo accessToken no OpenClaw são idênticos. Se o NapCat não tiver a verificação de token ativada, deixe o campo accessToken vazio no OpenClaw.
// No NapCat (se houver token)
"accessToken": "meu-token-secreto"
// No OpenClaw deve ser idêntico
"accessToken": "meu-token-secreto"
3. @Robô não reconhecido
Sintoma: Enviou "@Robô Olá" no grupo, mas a IA não respondeu.
Ordem de verificação:
- Confirme se o
selfIdestá configurado com o número de QQ correto do próprio robô. - Confirme se
groupPolicynão édisablede se o número do grupo está na listagroupAllowFrom(se estiver no modo allowlist). - Confirme se o formato do @ é
"@ApelidoDoRobo". - Verifique se o canal
@hyl_aa/napcatestá corretamente configurado no prompt do OpenClaw.
4. Ferramentas filtradas pelo perfil (qq_* indisponíveis)
Sintoma: IA responde "Eu não tenho essa capacidade", mas a configuração parece correta.
Este é o erro mais frequente. O padrão tools.profile: "coding" filtra a maioria das ferramentas de canal.
{
"tools": {
"profile": "full"
}
}
Após a alteração, reinicie o OpenClaw e tente acionar o robô novamente no QQ.
5. Conflito de portas em múltiplas contas
Sintoma: Configurou uma segunda conta NapCat, mas o segundo robô não recebe mensagens.
Com múltiplas contas no NapCat, tanto a porta HTTP API quanto a porta WS reverso precisam ser incrementadas:
// Primeira conta
{
"httpApi": { "port": 3000 },
"reverseWs": { "urls": ["ws://127.0.0.1:18800"] }
}
// Segunda conta
{
"httpApi": { "port": 3001 },
"reverseWs": { "urls": ["ws://127.0.0.1:18801"] }
}
O OpenClaw também precisa da configuração de mapeamento para múltiplas contas.
6. Falta de resposta devido às políticas dmPolicy / groupPolicy
Sintoma: Nenhuma reação no chat privado ou grupo; a IA parece não receber mensagens.
A causa mais comum é uma política muito restrita:
dmPolicy: "allowlist"comallowFromvazio → Ninguém pode acionar o chat privado.groupPolicy: "allowlist"comgroupAllowFromvazio → Nenhum grupo pode acionar.
Relaxe a política temporariamente para confirmar se este é o problema:
{
"channels": {
"napcat": {
"dmPolicy": "open",
"groupPolicy": "open"
}
}
}
Se responder normalmente após mudar para open, o problema está na configuração da lista branca.
Leituras Adicionais / Direções Avançadas
1. Configuração e Colaboração Multi-contas
O OpenClaw suporta a execução simultânea de várias contas de robô NapCat. Após defini-las no bloco accounts, você pode alternar entre contas usando comandos como /clawspec worker <account-id> (se usado com ClawSpec). Útil para: uma conta para suporte ao cliente e outra como bot de administração.
2. Configuração de Voz STT
Se deseja que a IA processe mensagens de voz, ative o áudio STT na configuração do OpenClaw:
{
"tools": {
"media": {
"audio": {
"enabled": true
}
}
}
}
Uma vez ativado, as mensagens de voz no QQ serão transcritas automaticamente para texto antes de serem enviadas ao modelo de IA.
3. Prefixo de Resposta de IA Personalizado
Use responsePrefix para adicionar um prefixo a cada resposta da IA:
{
"channels": {
"napcat": {
"responsePrefix": "[AI]"
}
}
}
A IA responderá como "[AI] Olá! Como posso ajudar?", facilitando a distinção entre respostas da IA e mensagens de membros do grupo.
4. Coexistência com outros canais OpenClaw
O OpenClaw pode se conectar a vários canais simultaneamente (NapCat + Telegram + Discord, etc.). Cada canal é independente, e o conjunto de ferramentas da IA é exposto uniformemente por tools.profile: "full". Você pode iniciar uma tarefa no Telegram e verificar o progresso no QQ.
5. Controle de Permissões e Segurança
dmPolicy e groupPolicy são apenas controles de acesso básicos. Em ambientes de produção, recomenda-se:
- Usar o modo
allowlistpara chats privados, adicionando apenas usuários confiáveis. - Para operações de alto risco em grupos, configure a IA para solicitar confirmação do proprietário antes de agir.
- Verifique regularmente o status de login do NapCat.
6. Conexão com outros clientes compatíveis com OneBot 11
O NapCat não é a única opção. Qualquer cliente QQ que implemente o padrão OneBot 11 (como Lagrange ou LLOneBot) pode ser conectado ao OpenClaw da mesma forma.