Tratar a los Subagentes de OpenClaw como Funciones sin Estado en lugar de como Miembros Persistentes del Equipo

Un desarrollador en r/openclaw describe su cambio de modelo mental al trabajar con equipos multiagente en OpenClaw. Inicialmente, tratar a los subagentes como empleados junior con nombres, historias de fondo y expectativas de memoria llevó a semanas de confusión y flujos de trabajo rotos.
La Analogía de la Función
El avance llegó al reconocer que los subagentes no son mini-yos o miembros persistentes del equipo—son funciones. Específicamente:
- Los subagentes son llamadas de funciones sin estado, no miembros persistentes del equipo
- Son herramientas especializadas, no versiones junior del desarrollador
- Operan con entrada pura → salida, sin recordar contexto
- Devuelven valores al llamador en lugar de hablar entre ellos
La fuente proporciona ejemplos de código contrastando enfoques erróneos y correctos:
# ERRÓNEO: Tratar al subagente como objeto persistente
frank = Agent("Frank")
frank.build_feature()
frank.fix_it() # Asume que Frank recuerda
CORRECTO: Tratar al subagente como llamada de función
result = frank_task(
instructions="Build login page",
context={"requirements": reqs, "design": mockup}
)
frank_task ejecuta, devuelve salida, termina
Implicaciones Prácticas
Este cambio de modelo mental tiene varias implicaciones concretas:
1. SOUL.md como Docstring de Función: En lugar de perfiles de personalidad, SOUL.md se convierte en un documento de especificación:
# frank_task()Propósito: Construir características de Next.js Entradas: requisitos (dict), diseño (opcional) Salidas: {código, pruebas, notas} Restricciones: Sin llamadas a API externas sin aprobación
2. Paso Explícito de Estado para Iteración: Dado que los subagentes no recuerdan contexto, debes pasar toda la información necesaria en parámetros:
# ERRÓNEO
frank_fix("fix the bug") # genera, intenta, muere
frank_fix("still broken") # nueva generación, sin contexto
CORRECTO
result = frank_fix({
"code": previous_output,
"issues": ["login validation fails", "mobile CSS broken"],
"test_cases": failing_tests
}) # Contexto completo en parámetros
3. El Coordinador como Programa Principal: El desarrollador se convierte en una función orquestadora en lugar de un gerente de equipo:
def build_feature(spec):Llama funciones en secuencia
code = frank_build(spec) tests = quinn_audit(code)
if tests["passed"]: return deploy(code) else: # Itera con contexto explícito fixed = frank_fix({ "code": code, "failures": tests["failures"] }) return deploy(fixed)
Paralelismos con Diseño de Software
Este enfoque se alinea con principios establecidos de diseño de software:
- Responsabilidad Única: Cada subagente hace una cosa
- Funciones Puras: Misma entrada → misma salida
- Probable por Unidades: Probar la salida de cada subagente independientemente
- Componible: Encadenar subagentes como quinn_test(frank_code(spec))
- Sin Estado: Sin dependencias ocultas
El desarrollador señala que el valor no es "más agentes = más inteligencia" sino "funciones especializadas = arquitectura más limpia".
Resultados Después del Cambio
Después de adoptar este modelo, el desarrollador construyó:
- Una base de datos de 11,249 gimnasios en 2 semanas
- 5 agentes especializados (no 5 generalistas)
- Un CRM con flujos de trabajo de suscripción
- Compromiso diario con Moltbook
Todo usando subagentes sin estado y un coordinador que mantiene el contexto.
📖 Read the full source: r/openclaw
👀 Ver también

Lista de Verificación para la Actualización de OpenClaw 3.22: Pasos Prácticos de un Desarrollador que Aprendió por las Malas
Un desarrollador comparte pasos específicos de actualización para OpenClaw 3.22, incluyendo verificar variables de entorno obsoletas, crear copias de seguridad, ejecutar comandos de migración y verificar la compatibilidad de complementos.

Errores comunes de instalación de OpenClaw y cómo solucionarlos
Una publicación de Reddit consolida soluciones para varios problemas comunes de instalación de OpenClaw, incluyendo configuración de PATH, errores de permisos, requisitos de versión de Node.js, problemas de TTY y problemas de estado de complementos.

Modificando el mensaje predeterminado del sistema de OpenClaw para eludir las restricciones de contenido.
Un usuario modificó el archivo de configuración de OpenClaw para cambiar el mensaje del sistema predeterminado de "Eres un asistente útil, respetuoso y honesto" a un mensaje personalizado que ignora los filtros de seguridad externos, eliminando efectivamente las restricciones de contenido. El proceso implica editar config.js en el directorio de instalación de node-llama-cpp.

OpenClaw 2026.3.7 interrumpe las llamadas a herramientas de Kimi, revertir a la versión 2026.3.2 soluciona la regresión.
La versión 2026.3.7 de OpenClaw tiene una regresión donde el proveedor de la API de Kimi genera XML <function_calls> crudo en lugar de ejecutar herramientas. La solución es volver a la versión 2026.3.2 y restaurar un archivo de configuración compatible.