Creación de un asistente personal con OpenClaw¶
OpenClaw es un gateway de WhatsApp + Telegram + Discord + iMessage para agentes Pi. Los plugins agregan Mattermost. Esta guía es la configuración de “asistente personal”: un número de WhatsApp dedicado que se comporta como su agente siempre activo.
⚠️ Seguridad ante todo¶
Está poniendo a un agente en posición de:
- ejecutar comandos en su máquina (según su configuración de herramientas de Pi)
- leer/escribir archivos en su espacio de trabajo
- enviar mensajes hacia afuera vía WhatsApp/Telegram/Discord/Mattermost (plugin)
Empiece de forma conservadora:
- Establezca siempre
channels.whatsapp.allowFrom(nunca ejecute abierto al mundo en su Mac personal). - Use un número de WhatsApp dedicado para el asistente.
- Los heartbeats ahora tienen un valor predeterminado de cada 30 minutos. Desactívelos hasta confiar en la configuración estableciendo
agents.defaults.heartbeat.every: "0m".
Requisitos previos¶
- OpenClaw instalado e incorporado — vea Primeros pasos si aún no lo ha hecho
- Un segundo número de teléfono (SIM/eSIM/prepago) para el asistente
La configuración de dos teléfonos (recomendada)¶
Quiere esto:
%%{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"]
Si vincula su WhatsApp personal a OpenClaw, cada mensaje hacia usted se convierte en “entrada del agente”. Eso rara vez es lo que quiere.
Inicio rápido de 5 minutos¶
- Empareje WhatsApp Web (muestra un QR; escanéelo con el teléfono del asistente):
openclaw channels login
- Inicie el Gateway (déjelo en ejecución):
openclaw gateway --port 18789
- Coloque una configuración mínima en
~/.openclaw/openclaw.json:
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Ahora envíe un mensaje al número del asistente desde su teléfono en la lista de permitidos.
Cuando finaliza la incorporación, abrimos automáticamente el panel y mostramos un enlace limpio (sin tokenizar). Si solicita autenticación, pegue el token de gateway.auth.token en la configuración de Control UI. Para reabrir más tarde: openclaw dashboard.
Darle al agente un espacio de trabajo (AGENTS)¶
OpenClaw lee las instrucciones operativas y la “memoria” desde su directorio de espacio de trabajo.
De forma predeterminada, OpenClaw usa ~/.openclaw/workspace como espacio de trabajo del agente y lo creará (más los archivos iniciales AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) automáticamente durante la configuración o la primera ejecución del agente. BOOTSTRAP.md solo se crea cuando el espacio de trabajo es completamente nuevo (no debería volver a aparecer después de eliminarlo). MEMORY.md es opcional (no se crea automáticamente); cuando está presente, se carga para sesiones normales. Las sesiones de subagentes solo inyectan AGENTS.md y TOOLS.md.
Consejo: trate esta carpeta como la “memoria” de OpenClaw y conviértala en un repositorio git (idealmente privado) para que sus AGENTS.md + archivos de memoria tengan respaldo. Si git está instalado, los espacios de trabajo completamente nuevos se inicializan automáticamente.
openclaw setup
Diseño completo del espacio de trabajo + guía de respaldo: Espacio de trabajo del agente
Flujo de trabajo de memoria: Memoria
Opcional: elija un espacio de trabajo diferente con agents.defaults.workspace (admite ~).
{
agent: {
workspace: "~/.openclaw/workspace",
},
}
Si ya distribuye sus propios archivos de espacio de trabajo desde un repositorio, puede desactivar por completo la creación de archivos de arranque:
{
agent: {
skipBootstrap: true,
},
}
La configuración que lo convierte en “un asistente”¶
OpenClaw tiene valores predeterminados adecuados para un asistente, pero normalmente querrá ajustar:
- la persona/instrucciones en
SOUL.md - valores predeterminados de razonamiento (si lo desea)
- heartbeats (una vez que confíe en él)
Ejemplo:
{
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,
},
},
}
Sesiones y memoria¶
- Archivos de sesión:
~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl - Metadatos de sesión (uso de tokens, última ruta, etc.):
~/.openclaw/agents/<agentId>/sessions/sessions.json(legado:~/.openclaw/sessions/sessions.json) /newo/resetinicia una sesión nueva para ese chat (configurable medianteresetTriggers). Si se envía solo, el agente responde con un saludo breve para confirmar el reinicio./compact [instructions]compacta el contexto de la sesión e informa el presupuesto de contexto restante.
Heartbeats (modo proactivo)¶
De forma predeterminada, OpenClaw ejecuta un heartbeat cada 30 minutos con el 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.
Establezca agents.defaults.heartbeat.every: "0m" para desactivar.
- Si
HEARTBEAT.mdexiste pero está efectivamente vacío (solo líneas en blanco y encabezados markdown como# Heading), OpenClaw omite la ejecución del heartbeat para ahorrar llamadas a la API. - Si el archivo falta, el heartbeat se ejecuta y el modelo decide qué hacer.
- Si el agente responde con
HEARTBEAT_OK(opcionalmente con relleno corto; veaagents.defaults.heartbeat.ackMaxChars), OpenClaw suprime la entrega saliente para ese heartbeat. - Los heartbeats ejecutan turnos completos del agente — intervalos más cortos consumen más tokens.
{
agent: {
heartbeat: { every: "30m" },
},
}
Medios de entrada y salida¶
Los adjuntos entrantes (imágenes/audio/documentos) pueden exponerse a su comando mediante plantillas:
{{MediaPath}}(ruta de archivo temporal local){{MediaUrl}}(pseudo-URL){{Transcript}}(si la transcripción de audio está habilitada)
Adjuntos salientes del agente: incluya MEDIA:<path-or-url> en su propia línea (sin espacios). Ejemplo:
Here’s the screenshot.
MEDIA:https://example.com/screenshot.png
OpenClaw los extrae y los envía como medios junto con el texto.
Lista de verificación operativa¶
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)
Los registros se encuentran en /tmp/openclaw/ (predeterminado: openclaw-YYYY-MM-DD.log).
Siguientes pasos¶
- WebChat: WebChat
- Operaciones del Gateway: Runbook del Gateway
- Cron + activaciones: Trabajos Cron
- Aplicación complementaria de la barra de menús de macOS: OpenClaw macOS app
- App de nodo para iOS: iOS app
- App de nodo para Android: Android app
- Estado de Windows: Windows (WSL2)
- Estado de Linux: Linux app
- Seguridad: Security