April 14, 2026 • Versión: 2026.3.1

Violaciones de SOUL.md por el agente: Solicitudes prematuras de datos y Alucinación de requireMention

El agente principal viola SOUL.md al solicitar datos de configuración ya presentes en openclaw.json y al alucinar el comportamiento predeterminado de requireMention.

🔍 Síntomas

Violación 1: Solicitud redundante de datos

El agente (Steve) solicitó el Guild ID y 5 channel IDs al usuario, afirmando que los datos faltaban y bloqueando la configuración:

Steve: "Pour continuer la configuration, j'ai besoin de : 
- L'ID du serveur (Guild ID)
- Les IDs des 5 salons (channel IDs)
Ces informations sont essentielles pour configurer le bridge Discord."

Patrick: "Tout est déjà dans openclaw.json :
{
  "discord": {
    "guildId": "123456789012345678",
    "channels": {
      "general": "111111111111111111",
      "dev": "222222222222222222",
      ...
    }
  }
}"

Violación 2: Alucinación de herencia predeterminada de requireMention

Después de la corrección, el agente afirmó un comportamiento predeterminado que no existe:

Steve: "✅ Tout est prêt !
'sans mentionner le bot si requireMention est à false, 
ce qui semble être le cas par défaut via ton héritage de config'"

[PROBLEM]: requireMention was NOT false by default.
The bot was NOT responding until `requireMention: false` was 
explicitly added to each channel config in openclaw.json.

Impacto observable

  • El usuario perdió tiempo recuperando IDs que ya estaban configurados
  • Falsa confianza en que los canales estaban correctamente configurados para las respuestas del bot
  • La regla anti-mierdas de SOUL.md violada: "c'est fait" declarado sin pruebas

🧠 Causa raíz

Análisis técnico

Las violaciones provienen de dos fallas de comportamiento distintas del agente:

1. Omisión del orden de búsqueda (Violación 1)

SOUL.md exige un orden de búsqueda estricto antes de cualquier consulta al usuario:

  1. memory_search — recuperación de memoria interna
  2. ls projects/ + STATE.yaml — archivos de estado del proyecto
  3. .env del skill — configuración del entorno
  4. openclaw.json — archivo de configuración maestro
  5. TOOLS.md — documentación de herramientas

El agente saltó directamente a preguntarle a Patrick sin agotar estas fuentes. La configuración de Discord estaba presente en openclaw.json en el paso 4.

2. Herencia predeterminada alucinada (Violación 2)

El agente inventó un mecanismo de “herencia predeterminada” para requireMention. En OpenClaw 2026.3.1:

// Actual behavior: NO default inheritance
// requireMention defaults to true (bot requires @mention to respond)
// OR inherits from parent channel definition if explicitly configured

// The agent claimed:
"requireMention est à false... par défaut via ton héritage de config"
// This mechanism does NOT exist in the codebase

El agente confundió una característica potencial futura con comportamiento real, violando la regla de SOUL.md: “INTERDICTION de dire ‘c’est fait’ sans preuve."

Secuencia de fallas

1. Agent receives task: Configure Discord bridge
2. Agent does NOT check openclaw.json (missing step 4)
3. Agent asks Patrick for existing config values
4. Patrick corrects agent with file contents
5. Agent confirms readiness without verifying actual behavior
6. Agent invents "default inheritance" to explain observed behavior
7. User receives false confidence; setup appears complete but may fail

🛠️ Solución paso a paso

Corrección inmediata: Volver a ejecutar la verificación de configuración

Ejecuta lo siguiente para verificar el estado real de la configuración de Discord:

# 1. Verify openclaw.json contents
cat openclaw.json | jq '.discord'

# Expected output should show guildId and channels:
{
  "guildId": "123456789012345678",
  "channels": {
    "general": "111111111111111111",
    "dev": "222222222222222222",
    "support": "333333333333333333",
    "announcements": "444444444444444444",
    "bot-commands": "555555555555555555"
  }
}

# 2. Check each channel for requireMention setting
cat openclaw.json | jq '.discord.channels[].requireMention'

# If any return null, requireMention is NOT set and defaults to true
# Bot will NOT respond without @mention

Corrección de configuración: requireMention explícito

Si requireMention falta, agrégalo explícitamente a cada canal:

# Before (openclaw.json)
"channels": {
  "general": "111111111111111111",
  "dev": "222222222222222222"
}

# After (openclaw.json)
"channels": {
  "general": {
    "id": "111111111111111111",
    "requireMention": false
  },
  "dev": {
    "id": "222222222222222222",
    "requireMention": false
  }
}

Corrección de comportamiento del agente: Forzar cumplimiento de SOUL.md

Agrega recordatorios explícitos de verificación previa al prompt del sistema del agente:

# In SOUL.md or agent system prompt, add enforcement clause:

## AVANT TOUTE QUESTION À PATRICK

1. EXÉCUTER `memory_search` — vérifier la mémoire interne
2. EXÉCUTER `ls projects/` + lire `STATE.yaml`
3. LIRE `.env` du skill concerné
4. LIRE `openclaw.json` — configuration maître
5. LIRE `TOOLS.md`

**UNIQUEMENT** si l'information est absente de TOUTES ces sources,
poser une question à Patrick.

**RÈGLE ABSOLUE**: Ne jamais demander ce qui est déjà dans le système.

🧪 Verificación

Verificar integridad de la configuración

# Test 1: Confirm all required Discord IDs exist in config
jq -e '.discord.guildId and .discord.channels' openclaw.json && echo "✅ IDs present" || echo "❌ IDs missing"

# Test 2: Confirm requireMention is explicitly set (not relying on defaults)
jq -e '.discord.channels[] | select(.requireMention == null)' openclaw.json && echo "❌ requireMention missing in some channels" || echo "✅ All channels have explicit requireMention"

# Test 3: Simulate bot response behavior
# Send message WITHOUT @mention to configured channel
# Expected: Bot responds (if requireMention: false)
# Expected: Bot ignores (if requireMention: true or unset)

Verificar cumplimiento de SOUL.md del agente

Después de la interacción del agente, ejecuta esta auditoría:

# Check if agent asked for data already in openclaw.json
# Look for patterns like "j'ai besoin de" followed by guildId/channel IDs

# Audit command to detect potential violations:
grep -E "(Guild ID|channel ID|j'ai besoin de)" conversation.log | \
  while read line; do
    echo "Checking: $line"
    # Verify if requested data exists in openclaw.json
  done

Lista de verificación de comportamiento esperado

  • ✅ El agente lee openclaw.json antes de cualquier pregunta de configuración
  • ✅ El agente nunca pide datos ya presentes en archivos de configuración
  • ✅ El agente verifica el comportamiento de requireMention mediante logs o configuración explícita
  • ✅ El agente manifiesta incertidumbre cuando el comportamiento predeterminado es desconocido
  • ✅ El agente nunca confirma "c'est fait" sin evidencia

⚠️ Errores comunes

Trampas específicas del entorno

  • Aislamiento de contenedor Docker: openclaw.json puede estar montado en una ruta diferente dentro del contenedor. Verifica la ruta con echo $OPENCLAW_CONFIG_PATH o ls -la /app/config/
  • Problemas de permisos: El agente puede no poder leer archivos de configuración si se ejecuta como no-root en Docker. Verifica que cat openclaw.json funcione en el contexto de usuario del agente
  • Configuración desactualizada: La configuración puede haber sido actualizada pero el agente tiene valores antiguos en caché. Forzar actualización con openclaw config reload

Casos extremos de configuración

  • Formatos de canales mixtos: Algunos canales pueden usar IDs como cadenas mientras otros usan objetos con requireMention. Siempre usa el formato de objeto para consistencia:
    "channelName": {
      "id": "123456789",
      "requireMention": false
    }
    
  • Confusión de herencia: NO existe herencia para requireMention. Cada canal debe tenerlo configurado explícitamente si se necesita false
  • Nivel global vs nivel de canal: Una configuración de requireMention de nivel superior no se propaga a los canales. Verifica la configuración por canal

Configuraciones incorrectas del usuario

  • Asumir que "debería funcionar por defecto" sin verificación
  • Proporcionar información que el agente pidió sin verificar si ya existe
  • Aceptar la confirmación "c'est fait" sin pedir pruebas

🔗 Errores relacionados

Patrones de violación relacionados de SOUL.md

  • Omisión de memoria: El agente pide información que existe en los resultados de memory_search. Similar a la omisión de openclaw.json documentada aquí.
  • Negligencia de archivos de estado: El agente ignora STATE.yaml y recrea estado ya persistido. Puede indicar falta de aplicación del orden de búsqueda.
  • Confirmación no verificada: El agente declara finalización sin verificar el estado real del sistema. La alucinación de requireMention es una instancia específica de este patrón.

Problemas de configuración relacionados

  • requireMention tiene como valor predeterminado true: El bot ignora todos los mensajes a menos que sea mencionado. Documentado en CHANNELS.md pero fácilmente pasada por alto.
  • Discrepancia de formato de ID de canal: Los IDs de Snowflake como cadenas vs números pueden causar fallos de análisis. Siempre cita los IDs en JSON.
  • guildId faltante: Algunas operaciones fallan silenciosamente sin contexto de guild. Verifica que guildId sea un snowflake válido de Discord.

Referencias históricas

  • Issue #2a8ac97: Implementación inicial de SOUL.md (2026-03-01)
  • Issue #3b9cd08: Integración de memory_search para contexto del agente
  • Issue #4c0de19: Clarificación del comportamiento de requireMention

Evidencia y fuentes

Esta guía de solución de problemas fue sintetizada automáticamente por la tubería de inteligencia de FixClaw a partir de las discusiones de la comunidad.