Imposición de barreras estrictas para los agentes de IA de OpenClaw: control de aprobación y límites de concurrencia

Un desarrollador que ejecuta un bot de OpenClaw en un Mac mini con Ollama (GLM 5.2, con respaldo a Anthropic Sonnet 4.6 y Haiku) se encontró con un problema clásico: el bot viola repetidamente reglas estrictas, como "nunca enviar correos sin aprobación" y "máximo 5 llamadas concurrentes", aunque confirme que las entiende cada vez. La hipótesis del usuario es acertada: esto es reglas como contexto, no reglas como restricciones. El modelo trata las instrucciones como consejos, por lo que ninguna cantidad de indicaciones o refuerzo de memoria lo soluciona.
La solución estándar es mover la aplicación fuera del bucle de razonamiento del modelo. No se puede confiar en un predictor estadístico de texto para aplicar límites estrictos; se necesitan comprobaciones deterministas en la capa de orquestación.
Aprobación para llamadas de herramientas
Para condicionar los correos (o cualquier acción peligrosa) a la aprobación, envuelva la llamada de herramienta en un patrón de humano en el bucle:
- Cuando el modelo solicite enviar un correo, intercepte la llamada antes de que se ejecute.
- Presente un mensaje de confirmación en Discord (por ejemplo, botones o una reacción).
- Solo si el usuario aprueba, ejecute la llamada real a la API.
# Pseudo-código en su manejador de herramientas de OpenClaw
if tool == "send_email":
message = f"¿Aprobar envío de correo a {to}?"
if not await discord_approval(message):
return "Usuario rechazó. No enviar."
# proceda con la llamada a la API de correo
Esto garantiza que el modelo no pueda eludir la compuerta físicamente, sin importar lo que diga.
Límites de concurrencia a nivel de orquestación
Para límites de concurrencia como "máximo 5", implemente un semáforo o contador en el despachador de comandos:
import asyncio
semaphore = asyncio.Semaphore(5)
async def handle_tool_call(tool, args):
async with semaphore:
# ejecutar llamada de herramienta
Cualquier intento que supere el límite espera o falla inmediatamente, independientemente de la intención del modelo.
¿Es este un problema específico de GLM/Ollama?
El usuario pregunta si esto es específico de GLM o general a los modelos locales. Según la discusión en r/openclaw, esta es una limitación general de los LLM: todos los modelos tratan las instrucciones como contexto, no como restricciones. La sola indicación no puede imponer límites estrictos. La solución siempre requiere aplicación a nivel de infraestructura.
Recomendación
Deje de repetir reglas en memoria o habilidades. En su lugar, construya comprobaciones explícitas en su capa de llamada de herramientas. Trate al modelo como un motor de sugerencias, no como un aplicador de políticas.
📖 Lee la fuente completa: r/openclaw
👀 Ver también

Corrigiendo las Alucinaciones Temporales de Claude en Claude Code con Hooks
Un usuario descubrió que Claude Code carece de acceso a un reloj en tiempo real, lo que hace que sugiera incorrectamente acciones como 'descansa un poco' en momentos inapropiados. La solución implica agregar un gancho de una línea a ~/.claude/settings.json que inyecta la hora actual en el contexto de Claude en cada mensaje.

9 Consejos Prácticos de Claude tras 8 Meses de Uso Diario (No Programación)
Un usuario de Reddit comparte 9 lecciones aprendidas en 8 meses de uso diario de Claude para escribir e investigar (no código), que abarcan edición, gestión de contexto, configuración de estilo y uso de Claude como compañero de pensamiento.

Ejecutando OpenClaw en un Raspberry Pi Model B con APIs gratuitas
OpenClaw funciona de manera estable en una Raspberry Pi Model B con APIs de nivel gratuito, incluyendo Google Gemma 4 31B IT (~20 RPM, contexto ilimitado) y Gemini Flash, donde Firefox headless supera a Chromium para automatización del navegador.

Instrucciones Personalizadas Esenciales para Claude para Prevenir Molestias Comunes
Un usuario de Reddit comparte tres instrucciones personalizadas específicas para abordar molestias comunes de Claude: requerir advertencias antes de comandos destructivos, evitar cambios de plan a mitad de respuesta y mantener los bloques de código exclusivamente para código funcional.