Configuración de Asistente Personal
Una guía completa para ejecutar OpenClaw como asistente personal (incluyendo consideraciones de seguridad).
OpenClaw es un gateway de WhatsApp + Telegram + Discord + iMessage para agentes **Pi**. Los plugins también permiten acceso a Mattermost. Esta guía es para la configuración de "Asistente Personal": usar un número de WhatsApp dedicado para actuar como un Agente siempre en línea.
⚠️ Seguridad Primero
Estás poniendo un Agente en una posición donde puede: - Ejecutar comandos en tu máquina (dependiendo de tu configuración de herramientas Pi) - Leer/escribir archivos en tu espacio de trabajo - Enviar mensajes salientes vía WhatsApp/Telegram/Discord/Mattermost (vía plugin) Recomendamos comenzar con una configuración conservadora:
- Siempre establece `channels.whatsapp.allowFrom` (no ejecutes un asistente "abierto al mundo" en tu máquina personal).
- Usa un número de WhatsApp separado para el asistente.
- El latido predeterminado es cada 30 minutos. Sugerimos desactivarlo hasta que confíes en la configuración: `agents.defaults.heartbeat.every: "0m"`.
Requisitos Previos
- Node **22+** - OpenClaw disponible en tu PATH del sistema (recomendado: instalación global) - Un segundo número de teléfono (SIM/eSIM/prepago todos funcionan) para el número del asistente
npm install -g openclaw@latest
Ejecutar desde el código fuente (modo dev):
git clone https://github.com/openclaw/openclaw.git cd openclaw pnpm install pnpm ui:build # instala dependencias UI en la primera ejecución pnpm build pnpm link --global
Estrategia de Teléfono Dual (Recomendado)
Esta es la estructura que quieres:
Tu Teléfono (Personal) Teléfono del Asistente (Secundario)
┌─────────────────┐ ┌─────────────────┐
│ Tu WhatsApp │ ──────▶ │ WhatsApp Asistente│
│ +1-555-TU │ mensaje │ +1-555-ASIST │
└─────────────────┘ └────────┬────────┘
│ Vincular vía código QR
▼
┌─────────────────┐
│ Tu Mac │
│ (openclaw) │
│ Agente Pi │
└─────────────────┘Si vinculas tu cuenta personal de WhatsApp a OpenClaw, cada mensaje que te envían se convierte en "entrada del agente". Esto generalmente no es lo que quieres.
Inicio Rápido en 5 Minutos
1. Vincular WhatsApp Web (se mostrará QR; escanear con el teléfono del asistente):
openclaw channels login
2. Iniciar el Gateway (mantenerlo ejecutándose):
openclaw gateway --port 18789
3. Escribir una configuración mínima en `~/.openclaw/openclaw.json`:
'{'
channels: '{' whatsapp: '{' allowFrom: ["+15555550123"] '}' '}',
'}'Ahora, envía un mensaje al número del asistente desde tu teléfono en la lista permitida.
Una vez completada la incorporación, abrimos automáticamente el enlace del dashboard con un token e imprimimos la URL tokenizada. Para abrirlo después: `openclaw dashboard`.
Dar al Agente un Espacio de Trabajo (AGENTS)
OpenClaw lee instrucciones operativas y "recuerdos" desde su directorio de espacio de trabajo.
Por defecto, OpenClaw usa `~/.openclaw/workspace` como espacio de trabajo del agente y lo crea automáticamente al configurar/ejecutar por primera vez (junto con los archivos iniciales `AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`). `BOOTSTRAP.md` solo se crea cuando el espacio de trabajo es nuevo (y no debería reaparecer después de eliminarlo).
Recomendación: Trata esta carpeta como la "memoria" de OpenClaw y respáldala convirtiéndola en un repositorio git (repo privado preferido) para `AGENTS.md` y archivos de memoria. Si git está instalado, un nuevo espacio de trabajo se inicializará automáticamente como repo.
openclaw setup
Guía completa de estructura del espacio de trabajo y respaldo: Espacio de trabajo del agente
Flujo de trabajo de memoria: Memoria
Opcional: Establece una ruta diferente para el espacio de trabajo vía `agents.defaults.workspace` (soporta `~`):
{
agent: {
workspace: "~/.openclaw/workspace",
},
}Si ya estás distribuyendo tus propios archivos de espacio de trabajo vía repo, puedes desactivar la creación de archivos bootstrap completamente:
{
agent: {
skipBootstrap: true,
},
}Configuración para una verdadera "Sensación de Asistente"
OpenClaw viene con valores predeterminados decentes para asistente, pero generalmente querrás ajustar:
- Persona / Instrucciones en `SOUL.md`
- Valores predeterminados de pensamiento (si es necesario)
- Latido (habilitar después de confiar en él)
Ejemplo:
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-5",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
// Comienza con 0; habilita después.
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: `<code1>~/.openclaw/agents/<agentId>/sessions/{'{SessionId}'}.jsonl</code1>`
- Metadatos de sesión (uso de tokens, última ruta, etc.): `<code1>~/.openclaw/agents/<agentId>/sessions/sessions.json</code1>` (ruta antigua: `<code2>~/.openclaw/sessions/sessions.json</code2>` )
- `/new` o `/reset` inicia una nueva sesión para ese chat (configurado vía `resetTriggers`). Si se envía como comando independiente, el Agente responde con un mensaje corto de confirmación.
- `/compact [instrucciones]` compacta el contexto de la sesión e informa el presupuesto de contexto restante.
Latido (Modo Proactivo)
Por defecto, OpenClaw ejecuta un latido cada 30 minutos con el prompt:
`Lee HEARTBEAT.md si existe (contexto del espacio de trabajo). Síguelo estrictamente. No infieras ni repitas tareas antiguas de chats anteriores. Si nada necesita atención, responde HEARTBEAT_OK.`
Establecer `agents.defaults.heartbeat.every: "0m"` desactiva los latidos.
- Si `HEARTBEAT.md` existe pero está esencialmente vacío (solo líneas en blanco o un título como `# Encabezado`), OpenClaw omite el latido para ahorrar llamadas API.
- Si el archivo falta, el latido aún se ejecuta, dejando que el modelo decida qué hacer.
- Si el Agente responde `HEARTBEAT_OK` (puede contener relleno menor; ver `agents.defaults.heartbeat.ackMaxChars`), OpenClaw suprime el envío saliente de ese latido.
- Los latidos son 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/docs) se proporcionan a tus comandos mediante parámetros de plantilla:
- `<code1>'{'{MediaPath}'}'</code1>` (ruta de archivo temporal local)
- `<code2>'{'{MediaUrl}'}'</code2>` (pseudo-URL)
- `<code3>'{'{Transcript}'}'</code3>` (si la transcripción de audio está habilitada)
Adjuntos salientes del Agente: Escribe `<code1>MEDIA:<ruta-o-url>'</code1>` (sin espacios) en una línea separada. Por ejemplo:
Aquí está la captura de pantalla. MEDIA:https://example.com/screenshot.png
OpenClaw analiza estas líneas y las envía como medios junto con el texto.
Lista de Verificación de Operaciones
openclaw status # Estado local (creds, sesiones, eventos en cola) openclaw status --all # Diagnósticos completos (solo lectura, fácil de pegar/compartir) openclaw status --deep # Añade sondeos de salud del gateway (Telegram + Discord) openclaw health --json # Instantánea de salud del Gateway (WS)
Los registros predeterminan a `/tmp/openclaw/` (nombres de archivo como `openclaw-YYYY-MM-DD.log`).