Criando um assistente pessoal com o OpenClaw¶
O OpenClaw é um gateway de WhatsApp + Telegram + Discord + iMessage para agentes Pi. Plugins adicionam Mattermost. Este guia é a configuração de “assistente pessoal”: um número dedicado de WhatsApp que se comporta como seu agente sempre ativo.
⚠️ Segurança em primeiro lugar¶
Você está colocando um agente em posição de:
- executar comandos na sua máquina (dependendo da configuração das ferramentas do Pi)
- ler/gravar arquivos no seu workspace
- enviar mensagens para fora via WhatsApp/Telegram/Discord/Mattermost (plugin)
Comece de forma conservadora:
- Sempre defina
channels.whatsapp.allowFrom(nunca execute aberto para o mundo no seu Mac pessoal). - Use um número de WhatsApp dedicado para o assistente.
- Heartbeats agora têm padrão de 30 minutos. Desative até confiar na configuração definindo
agents.defaults.heartbeat.every: "0m".
Pré-requisitos¶
- OpenClaw instalado e integrado — veja Primeiros passos se você ainda não fez isso
- Um segundo número de telefone (SIM/eSIM/pré-pago) para o assistente
A configuração com dois telefones (recomendado)¶
Você quer isto:
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#000000',
'primaryBorderColor': '#000000',
'lineColor': '#000000',
'secondaryColor': '#f9f9fb',
'tertiaryColor': '#ffffff',
'clusterBkg': '#f9f9fb',
'clusterBorder': '#000000',
'nodeBorder': '#000000',
'mainBkg': '#ffffff',
'edgeLabelBackground': '#ffffff'
}
}}%%
flowchart TB
A["<b>Your Phone (personal)<br></b><br>Your WhatsApp<br>+1-555-YOU"] -- message --> B["<b>Second Phone (assistant)<br></b><br>Assistant WA<br>+1-555-ASSIST"]
B -- linked via QR --> C["<b>Your Mac (openclaw)<br></b><br>Pi agent"]
Se você vincular seu WhatsApp pessoal ao OpenClaw, cada mensagem para você vira “entrada do agente”. Isso raramente é o que você quer.
Início rápido de 5 minutos¶
- Pareie o WhatsApp Web (mostra o QR; escaneie com o telefone do assistente):
openclaw channels login
- Inicie o Gateway (deixe-o em execução):
openclaw gateway --port 18789
- Coloque uma configuração mínima em
~/.openclaw/openclaw.json:
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Agora envie uma mensagem para o número do assistente a partir do seu telefone na allowlist.
Quando a integração terminar, abrimos automaticamente o dashboard e imprimimos um link limpo (sem token). Se pedir autenticação, cole o token de gateway.auth.token nas configurações da Control UI. Para reabrir depois: openclaw dashboard.
Dê ao agente um workspace (AGENTS)¶
O OpenClaw lê instruções operacionais e “memória” do diretório de workspace.
Por padrão, o OpenClaw usa ~/.openclaw/workspace como workspace do agente e o criará (além dos arquivos iniciais AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) automaticamente na configuração/primeira execução do agente. BOOTSTRAP.md só é criado quando o workspace é totalmente novo (ele não deve voltar depois que você o apagar). MEMORY.md é opcional (não é criado automaticamente); quando presente, é carregado para sessões normais. Sessões de subagentes injetam apenas AGENTS.md e TOOLS.md.
Dica: trate esta pasta como a “memória” do OpenClaw e torne-a um repositório git (idealmente privado) para que seus AGENTS.md + arquivos de memória tenham backup. Se o git estiver instalado, workspaces totalmente novos são inicializados automaticamente.
openclaw setup
Layout completo do workspace + guia de backup: Agent workspace
Fluxo de trabalho de memória: Memory
Opcional: escolha um workspace diferente com agents.defaults.workspace (suporta ~).
{
agent: {
workspace: "~/.openclaw/workspace",
},
}
Se você já distribui seus próprios arquivos de workspace a partir de um repositório, pode desativar completamente a criação de arquivos de bootstrap:
{
agent: {
skipBootstrap: true,
},
}
A configuração que o transforma em “um assistente”¶
O OpenClaw vem com um bom padrão de assistente, mas você normalmente vai querer ajustar:
- persona/instruções em
SOUL.md - padrões de raciocínio (se desejado)
- heartbeats (quando você passar a confiar)
Exemplo:
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-6",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
// Start with 0; enable later.
heartbeat: { every: "0m" },
},
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true },
},
},
},
routing: {
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"],
},
},
session: {
scope: "per-sender",
resetTriggers: ["/new", "/reset"],
reset: {
mode: "daily",
atHour: 4,
idleMinutes: 10080,
},
},
}
Sessões e memória¶
- Arquivos de sessão:
~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl - Metadados da sessão (uso de tokens, última rota, etc.):
~/.openclaw/agents/<agentId>/sessions/sessions.json(legado:~/.openclaw/sessions/sessions.json) /newou/resetinicia uma sessão nova para aquele chat (configurável viaresetTriggers). Se enviado sozinho, o agente responde com um breve olá para confirmar o reset./compact [instructions]compacta o contexto da sessão e informa o orçamento de contexto restante.
Heartbeats (modo proativo)¶
Por padrão, o OpenClaw executa um heartbeat a cada 30 minutos com o prompt:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
Defina agents.defaults.heartbeat.every: "0m" para desativar.
- Se
HEARTBEAT.mdexistir mas estiver efetivamente vazio (apenas linhas em branco e cabeçalhos markdown como# Heading), o OpenClaw pula a execução do heartbeat para economizar chamadas de API. - Se o arquivo estiver ausente, o heartbeat ainda é executado e o modelo decide o que fazer.
- Se o agente responder com
HEARTBEAT_OK(opcionalmente com um pequeno preenchimento; vejaagents.defaults.heartbeat.ackMaxChars), o OpenClaw suprime a entrega de saída para aquele heartbeat. - Heartbeats executam turnos completos do agente — intervalos menores consomem mais tokens.
{
agent: {
heartbeat: { every: "30m" },
},
}
Mídia de entrada e saída¶
Anexos de entrada (imagens/áudio/documentos) podem ser expostos ao seu comando via templates:
{{MediaPath}}(caminho de arquivo temporário local){{MediaUrl}}(pseudo-URL){{Transcript}}(se a transcrição de áudio estiver habilitada)
Anexos de saída do agente: inclua MEDIA:<path-or-url> em sua própria linha (sem espaços). Exemplo:
Here’s the screenshot.
MEDIA:https://example.com/screenshot.png
O OpenClaw extrai isso e envia como mídia junto com o texto.
Checklist operacional¶
openclaw status # local status (creds, sessions, queued events)
openclaw status --all # full diagnosis (read-only, pasteable)
openclaw status --deep # adds gateway health probes (Telegram + Discord)
openclaw health --json # gateway health snapshot (WS)
Os logs ficam em /tmp/openclaw/ (padrão: openclaw-YYYY-MM-DD.log).
Próximos passos¶
- WebChat: WebChat
- Operações do Gateway: Gateway runbook
- Cron + wakeups: Cron jobs
- Companion de menu do macOS: OpenClaw macOS app
- App de nó iOS: iOS app
- App de nó Android: Android app
- Status do Windows: Windows (WSL2)
- Status do Linux: Linux app
- Segurança: Security