search
AILinux6 min lectura

OpenClaw: cómo optimizar el contexto, la memoria y la seguridad (lo que dice Reddit y lo que funciona de verdad)

Pablo IB

TL;DR: Reduje el contexto inyectado de OpenClaw de 10.4 KB a 3.8 KB, activé memory-lancedb con embeddings locales, configuré context pruning, y limpié el security audit a 0 critical. La fuente: una guía de 33 capítulos en GitHub, 50+ hilos en Reddit, y mucho trial-and-error. Aquí va lo que funcionó.


La premisa: el harness importa más que el modelo

La guía de optimización de OnlyTerp (33 capítulos, 15K palabras, actualizada a mayo 2026) tiene una tesis clara:

La mayoría de la capacidad de un agente viene del harness, no de los weights.

El modelo importa. Pero las optimizaciones grandes vienen de: presupuesto de contexto, disciplina de memoria, permisos de tools, control de flujo, routing de providers, hooks, y loops de verificación. Todo lo que tú, operador, puedes controlar.


Optimización 1: adelgazar el contexto (el win más grande)

El diagnóstico

Cada vez que tu agente responde un mensaje, OpenClaw inyecta estos archivos en el system prompt:

ArchivoContenidoSe inyecta
SOUL.mdIdentidad, personalidadCada mensaje
AGENTS.mdReglas operativasCada mensaje
MEMORY.mdHechos duraderosCada mensaje
TOOLS.mdNotas de herramientasCada mensaje
DREAMS.mdDiario de reflexiónCada mensaje

Mi setup inicial tenía 10.4 KB de contexto inyectado por turno. La guía recomienda < 8 KB. Reddit lo explica así: cada KB encima del óptimo paga impuestos en cada turno. Más contexto = más tokens = más lento = más caro.

La cirugía

SOUL.md (1.7 KB → 628 B): Eliminé párrafos enteros de personalidad. El agente no necesita 40 líneas para saber que es “clever, helpful, dependable”. 4 líneas bastan.

AGENTS.md (7.8 KB → 1.4 KB): Esto fue el filete. El archivo original tenía instrucciones detalladas para group chats, heartbeats, formateo por plataforma, voz… Todo interesante. Todo innecesario en el system prompt. Lo reduje a reglas duras: memory protocol, red lines, heartbeat checklist. 3 líneas por sección, nada más.

MEMORY.md (no existía → 897 B): Creé un archivo índice siguiendo el patrón “LLM Wiki” de Karpathy. MEMORY.md no es un almacén — es un índice. Los detalles van en vault/. Lo inyectado es solo punteros.

El resultado

Antes:  SOUL(1.7KB) + AGENTS(7.8KB) + TOOLS(0.9KB) = 10.4 KB
Después: SOUL(0.6KB) + AGENTS(1.4KB) + MEMORY(0.9KB) + TOOLS(0.9KB) = 3.8 KB

Un 63% de reducción. El agente responde más rápido y gasta menos tokens en cada turno.

La regla de oro de Reddit

En r/clawdbot hay un post viral: “The best OpenClaw setups I’ve seen all have one thing in common: they do less”. El autor ha visto 40-50 setups. Su conclusión:

Los que siguen usando OpenClaw después de un mes tienen 1 agente, 3-5 skills, y un modelo barato. Los que abandonan a las 3 semanas tenían 8 agentes, 20 skills, Opus como default, y un setup que rompía cada 48 horas.

Haz una cosa bien. Ya.


Optimización 2: memory-lancedb con embeddings locales

El problema de memory-core

OpenClaw viene con memory-core, que usa SQLite con búsqueda de texto completo (FTS5). Funciona, pero la búsqueda es léxica — busca palabras exactas. Si tu agente recuerda “Pablo prefiere respuestas en español” y buscas “idioma favorito”, no lo encuentra.

La solución: LanceDB + embeddings

memory-lancedb es el plugin oficial de OpenClaw para vector search. Convierte texto en embeddings (vectores numéricos) y busca por similitud semántica, no por palabras exactas.

{
  "plugins": {
    "entries": {
      "memory-lancedb": {
        "enabled": true,
        "config": {
          "embedding": {
            "provider": "openai",
            "model": "text-embedding-3-small",
            "baseUrl": "https://api.z.ai/api/coding/paas/v4/"
          },
          "autoCapture": true,
          "autoRecall": true,
          "dreaming": {
            "enabled": true,
            "schedule": "0 3 * * *"
          }
        }
      }
    }
  }
}

Lo que hace:

  • autoCapture: captura automáticamente información importante de las conversaciones
  • autoRecall: inyecta memorias relevantes en el contexto cuando hace falta
  • dreaming: a las 3AM, el agente revisa sus memorias y consolida lo importante

El lío con los embeddings locales

Intenté usar Ollama con nomic-embed-text (local, gratis, 0 latency). Pero memory-lancedb solo soporta oficialmente text-embedding-3-small y text-embedding-3-large de OpenAI. Mi modelo local dio “Unsupported embedding model”.

Workaround: uso el endpoint de z.ai (OpenAI-compatible) con text-embedding-3-small. Costo mínimo, funciona perfecto.


Optimización 3: context pruning

Esta es la optimización que menos gente conoce y más impacto tiene.

{
  "agents": {
    "defaults": {
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "5m"
      }
    }
  }
}

Sin pruning, OpenClaw re-inyecta SOUL + AGENTS + MEMORY + TOOLS en cada turno de la conversación. Con pruning, los cachea durante 5 minutos. Si en 5 minutos no cambió nada, no los reenvía.

El efecto: en conversaciones largas, esto ahorra miles de tokens. El modelo ya tiene la información en su contexto — no necesita que se la vuelvas a enviar.


Optimización 4: security audit

OpenClaw tiene un security audit built-in:

openclaw security audit

Mi estado inicial:

Summary: 3 critical · 2 warn · 1 info

Lo que arreglé:

ProblemaSeveridadFix
Gateway token de 15 chars (“agentx-lab-2026”)CriticalRoté a 48 chars random
Sin rate limitingCritical10 intentos / 60s / 300s lockout
API keys en JSON sin protecciónWarnPerms 600, pendiente 1Password plugin
allowedOrigins con 10 entriesWarnReduje a 4 (solo los necesarios)
Plugin codex sin integrity hashWarnReinstalé con versión pinneada
201 symlinks rotos en skills/WarnEliminados, instalé 3 skills reales
plugins.allow sin configurarWarnAllowlist explícito de 8 plugins

Estado final:

Summary: 0 critical · 0 warn · 1 info

La regla de skills: calidad > cantidad

Tenía 201 symlinks en ~/.openclaw/skills/ — todos apuntando a ~/.agents/skills/. OpenClaw los ignoraba (symlink-escape security). En práctica: 0 skills funcionando.

Reemplacé con 3 skills reales instalados desde ClawHub:

openclaw skills install github
openclaw skills install obsidian
openclaw skills install session-logs

Siguiendo el “do less” de Reddit: no necesitas 200 skills. Necesitas 3 que uses.


Lo que NO apliqué (y por qué)

TécnicaPor qué no
Task Brain / semantic approvalsSingle-agent personal. No hay usuarios hostiles. Las reglas de AGENTS.md son suficiente soft enforcement.
API keys en env vars (SecretRef)SecretRef requiere un secrets backend (1Password, Vault). Sin él, ${VAR} no resuelve. Las keys quedan en JSON con chmod 600.
Modelo local para compactionglm-4.7 es barato. Si quisiera $0, usaría Ollama con gemma4:e4b.

El patrón que repiten todos

Tanto la guía de OnlyTerp como Reddit como mi experiencia dicen lo mismo:

  1. Empieza con 1 agente y 0 skills. Habla con él una semana. Configura la personalidad.
  2. Añade 1 cosa a la vez. Primero web search. Luego calendar. Luego una skill.
  3. Mide el contexto. Si tu AGENTS.md pesa más de 2KB, recorta.
  4. Audita la seguridad. openclaw security audit es tu amigo.
  5. El setup que sobrevive un mes es el setup aburrido.

El asistente más útil no es el que tiene 20 skills y 8 agentes. Es el que fiablemente te dice qué tienes en el calendario cuando se lo preguntas.