Core · Seis capas, una sola dependencia
Arquitectura
OpenClaw está diseñado alrededor de seis capas separables. Cada una tiene responsabilidades claras, contratos estables y puede sustituirse de forma independiente. Esto permite empezar con un agente simple y escalar a multi-agente en producción sin re-arquitectar.
Canales
Adaptadores para Telegram, WhatsApp Business API, Slack, web chat, API HTTP, email y voz (Deepgram + TTS). Normalizan eventos a un formato interno único.
Clases: TelegramChannel · WhatsAppBusinessChannel · SlackChannel · WebWidget · APIChannel · VoiceChannel
Orquestador
Elige el modelo óptimo por tarea (coste, latencia, calidad), mantiene el loop agente → tool → agente, y decide handoffs entre sub-agentes. Respeta el contrato de Claude Messages API / OpenAI Responses API.
Clases: Router · ModelSelector · AgentLoop · HandoffManager
Sub-agentes
Agentes especializados con su system prompt, set de herramientas y memoria. Colaboran vía orquestador con estado compartido. Compatible con OpenAI Agents SDK y Claude Managed Agents.
Clases: Agent · Crew · Workflow (LangGraph compat)
Herramientas
Tools tipadas con Zod/Pydantic, sandboxing opcional, guardrails de input/output, límites de gasto y aprobación humana configurable por política.
Clases: ToolRegistry · HTTPTool · DBTool · ShellTool · HumanApproval
Memoria
Estado persistente por conversación/usuario, memoria vectorial para RAG (pgvector, Qdrant, Pinecone), y contexto largo con resumen automático.
Clases: ConversationStore · VectorMemory · SummaryCompactor
Observabilidad
Tracing completo por conversación, métricas (coste, latencia p50/p99, tasa de éxito), auditoría y exportación a Grafana, Datadog, Sentry, OpenTelemetry.
Clases: Tracer · Metrics · AuditLog · Exporters
Flujo típico de un mensaje
Usuario → [Canal: Telegram] → Evento normalizado
→ [Orquestador]
↓ selecciona modelo (claude-haiku-4-5 por coste)
↓ carga memoria de conversación
→ [Sub-agente: support]
↓ LLM razona, decide invocar tool
→ [Tool: get_order_status]
↓ guardrails · validación Zod · ejecución
↓ resultado devuelto al loop
→ [LLM] redacta respuesta final
→ [Observabilidad] traza completa (prompts, tokens, coste)
→ [Canal: Telegram] entrega respuestaPrincipios de diseño
- Todo es observable. Cada decisión del orquestador y cada tool call es trazable por defecto. No hay caja negra.
- Todo es sustituible. Cambiar de Claude a GPT o de pgvector a Pinecone es cambiar una línea de configuración.
- Fallos explícitos. Un LLM que alucina, un tool que falla o un presupuesto excedido disparan estados definidos, no excepciones silenciosas.
- Producción por defecto. Rate limiting, retry con backoff, circuit breakers y timeouts sensatos están configurados desde el primer día.
Anterior
Quickstart
Siguiente
Modelos y routing