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:
memory_search— recuperación de memoria internals projects/+STATE.yaml— archivos de estado del proyecto.envdel skill — configuración del entornoopenclaw.json— archivo de configuración maestroTOOLS.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.jsonantes de cualquier pregunta de configuración - ✅ El agente nunca pide datos ya presentes en archivos de configuración
- ✅ El agente verifica el comportamiento de
requireMentionmediante 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.jsonpuede estar montado en una ruta diferente dentro del contenedor. Verifica la ruta conecho $OPENCLAW_CONFIG_PATHols -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.jsonfuncione 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 necesitafalse - Nivel global vs nivel de canal: Una configuración de
requireMentionde 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 deopenclaw.jsondocumentada aquí. - Negligencia de archivos de estado: El agente ignora
STATE.yamly 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
requireMentiontiene como valor predeterminadotrue: El bot ignora todos los mensajes a menos que sea mencionado. Documentado enCHANNELS.mdpero 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
guildIdsea 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_searchpara contexto del agente - Issue #4c0de19: Clarificación del comportamiento de
requireMention