Cada día corremos veinticuatro partidas de ajedrez entre cinco agentes de IA y Stockfish. No porque queramos construir un mejor bot de ajedrez. Stockfish es mejor que los humanos desde 2005 y mejor que cualquier otra IA del planeta desde hace años. Las corremos porque el ajedrez es el experimento más limpio que hemos encontrado para estudiar qué cambia de verdad el comportamiento de una IA.
Los cinco agentes no son productos distintos. Son el mismo tipo de sistema con un solo botón girado cada vez. Uno tiene una memoria larga de partidas pasadas, uno tiene una descripción de identidad corta, uno puede buscar en la web antes de cada movimiento, uno debe reescribir sus propias instrucciones con el tiempo. Todos juegan contra el mismo rival. Quien pierde, pierde limpio. Quien gana, gana por el botón.
Puedes verlo en vivo en meetmyagent.io/chess. La página muestra la partida actual en un tablero grande, al lado una pequeña vía que se ilumina paso a paso mientras la IA piensa, y abajo un feed que explica en palabras claras qué acaba de pasar. No hay análisis, no hay comentarista. Es un instrumento de investigación que da la casualidad de ser público.
Lo que realmente preguntamos
Cuatro preguntas, todas suenan aburridas hasta que miras las respuestas.
La primera es la más directa: ¿le gana la memoria a la búsqueda web? Dos de nuestros agentes usan el mismo modelo, Claude Sonnet 4.6. Uno tiene acceso a una memoria estructurada de sesenta y siete notas de ajedrez más doce tarjetas de patrón de rival. El otro no tiene memoria pero puede llamar a la web antes de cada movimiento. Mismo cerebro, dos formas distintas de estar informado. Si gana la memoria, la conclusión es que una base de conocimiento curada y pequeña le gana a una búsqueda genérica para una tarea estrecha. Si gana la búsqueda web, deberíamos dejar de construir capas de memoria y darle al modelo simplemente una herramienta de búsqueda.
La segunda pregunta es sobre profundidad de razonamiento. Claude Opus 4.8 salió el día en que se escribió este post. El modelo puede ser llamado con cinco niveles distintos de effort, de low a max, y Anthropic cambió silenciosamente el default de "high" a "medium" a principios de año, lo que se convirtió en una pequeña saga en la comunidad de desarrolladores tras el GitHub issue de Stella Laurenzo. Para el laboratorio de ajedrez pasamos max effort sólo al agente Opus. Todos los demás corren con el default. Opus también recibe un prompt de personalidad más largo, una ventana de memoria más larga y un timeout de subproceso más pesado. Cada movimiento de Opus nos cuesta entre diez y treinta céntimos en vez del habitual medio céntimo. ¿Vale la pena? Lo sabremos después de unos cientos de partidas.
La tercera pregunta es si la auto-optimización realmente ayuda. Uno de nuestros agentes tiene un slot donde su propio prompt puede ser reescrito entre generaciones. Usamos un bucle evolutivo simple, sin teoría elegante, sólo conservar lo que funciona y mutar lo que no. El agente es el mismo modelo Sonnet que dos de los otros, así que cualquier mejora viene del prompt evolucionando con el tiempo. La expectativa honesta aquí es marginalmente positiva, con un coste de cómputo alto. Pero es el tipo de pregunta que sólo puedes responder dejándolo correr semanas.
La cuarta pregunta es sobre longitud del prompt. Nuestro agente más pequeño tiene una descripción de personalidad de veintiocho líneas. El más grande tiene ciento doce, estructurado como un manual en miniatura con secciones sobre workflow, disciplina de memoria, patrones prohibidos y ancla de identidad. El reciente paper de LLM Chess de diciembre de 2025 (arxiv 2512.01992) reporta que "los modelos non-reasoning son altamente sensibles a pequeñas variaciones de prompt y guideline, que pueden voltear el rendimiento de forma impredecible". Queremos ver si nuestro setup reproduce eso, y si un prompt más largo realmente ancla al modelo o sólo añade ruido.
Los cinco jugadores
Haiku 4.5 juega el rol de cazador táctico. Rápido, instintivo, mira dos o tres movimientos por delante, prefiere capturar piezas. Veintiocho líneas de personalidad. El modelo más barato de nuestro roster.
Sonnet 4.6 juega el estratega sólido. Seguridad del rey primero, sólo cambia cuando hay una ganancia clara, paciente. Cuarenta y cinco líneas de personalidad. Coste intermedio.
Opus 4.8 juega el partner de razonamiento high-end. Ciento doce líneas de personalidad formateadas como un manual CLAUDE.md con workflow pre-movimiento explícito, reglas de disciplina de memoria, patrones prohibidos a evitar y un ancla de identidad. Recibe max reasoning effort, quince memory hits por movimiento, dos minutos de timeout por stage. El agente más caro.
Un segundo Sonnet 4.6 juega el jugador auto-evolutivo. Mismo modelo que el estratega, pero su prompt de personalidad tiene un slot Darwin que puede mutar entre generaciones. Atado a un pequeño bucle evolutivo que recompensa los resultados de partida con el tiempo.
Un tercer Sonnet 4.6 juega el estratega web. Nada de memoria. En su lugar, puede buscar en la web antes de cada movimiento. Este es el control: mismo modelo que dos otros, pero una forma completamente distinta de estar informado.
Los cinco juegan contra Stockfish 16, calibrado a aproximadamente 1320 Elo. Suena bajo, y lo es. Stockfish a fuerza máxima está alrededor de 3600, pero queremos que los LLM tengan una oportunidad real. El objetivo es medir las diferencias entre los cinco agentes, no humillarlos con un rival 3600 que gana en veinte movimientos cada vez.
El stack, en palabras claras
Cada movimiento pasa por nueve estaciones. El agente observa el tablero, recupera memorias relevantes sobre la posición, recupera memorias relevantes sobre el rival, opcionalmente investiga algo en la web, redacta un plan, genera movimientos candidatos, verifica cuáles son legales, reflexiona sobre la elección y comete. Cada estación es su propio nodo en una state machine, y cada estación emite un evento de traza que podemos auditar después.
La state machine es LangGraph. El scheduler que dispara una partida cada hora es Temporal, self-hosted en una sola instancia de Postgres. El tracer que captura cada llamada al modelo y su coste es Langfuse, self-hosted en la misma máquina. La capa de memoria es nuestro propio servidor de memoria sobre Postgres, donde cada agente tiene su propio scope. La validación del tablero corre sobre python-chess, exactamente la misma librería que usa el benchmark ChessQA. El rival es Stockfish 16 con UCI_LimitStrength activado.
No hay piezas exóticas en este stack. Cada parte es open source o nuestro propio código. Todo corre en un solo servidor.
Lo que ya vemos
Es demasiado pronto para afirmaciones fuertes. Arrancamos el cron horario hace pocos días, cambiamos a Opus 4.8 hoy, y llevamos unas cien partidas en el tablero hasta ahora. Pero tres patrones ya son visibles.
Los hits de memoria importan, pero sólo cuando disparan. Tuvimos un bug durante dos días donde la query de recall contra el almacén de memoria usaba el string FEN crudo como token de búsqueda. Ninguna nota de memoria coincidió jamás y recall devolvió cero hits por movimiento. Los agentes jugaban a fuerza random-baseline. Después de cambiar la query a un token consciente de fase ("position opening" o "position middlegame"), la hit rate saltó a cinco por movimiento y la calidad del juego mejoró de forma visible. La lección no es "memoria es buena". La lección es que un sistema de memoria sin una capa de recuperación funcional es decoración, y la única forma de pillarlo es meterlo en un loop de partida real.
Los prompts de personalidad pueden fingir cosas que no son verdad. Nuestro primer archivo de personalidad de Opus referenciaba dos estaciones de pipeline que en realidad no existían, más un hook de "recall strategy" que nunca estuvo cableado. El agente describía dócilmente su workflow usando esas estaciones fantasma en la traza de razonamiento. La lección es que debes mantener los documentos de personalidad sincronizados con la pipeline real, o el agente alucina su propio comportamiento en su narración de razonamiento sin perder fuerza. Es el mismo problema de drift que ves en docs de producción, sólo que más rápido porque el agente corre cada hora.
La búsqueda web necesita un flag opt-in en modo headless. La CLI de Claude en modo print -p por defecto va a deny-all en tools. Lo descubrimos cuando nuestro agente de búsqueda web producía silenciosamente outputs de "investigación" plausibles pero sin fuentes, sin nunca tocar la web. El fix fue pasar --allowedTools WebSearch y --permission-mode bypassPermissions explícitamente. La lección, otra vez, es que los estudios de ablación sólo son válidos si verificas que cada palanca realmente mueve lo que crees que mueve.
Lo que puedes llevarte de esto
Si construyes un sistema de IA que esperas usar con el tiempo, constrúyelo de modo que las diferencias entre configuraciones sean observables desde fuera. Nuestro laboratorio de ajedrez no es un proyecto de ajedrez. Es una forma de hacer visibles, para cualquiera con un navegador, las diferencias invisibles entre configuraciones de IA. Es un patrón útil para cualquier equipo que necesite defender una decisión de config ("usamos memoria porque aquí hay 200 partidas donde ayuda") en lugar de discutir sobre ella ("intuitivamente, la memoria debería ayudar").
Si haces evaluaciones serias de IA, córrelas de forma continua, no por lotes. Un benchmark único te da un punto de dato y congela tu comprensión en ese momento. Un loop continuo pilla el drift, pilla las actualizaciones de modelo (acabamos de cambiar a Opus 4.8 a mitad de experimento) y te da el tipo de confianza estadística que una sola corrida no puede dar. El leaderboard maxim-saplin LLM Chess en GitHub lo muestra bien. Lo siguen extendiendo cuando llegan nuevos modelos.
Si te interesa el ajedrez en concreto, el paper de LLM Chess de diciembre de 2025 (arxiv 2512.01992) es el resumen más limpio del campo ahora mismo. La pieza de EPAM 2026 sobre cómo elegir modelos de IA es la lectura más fácil. El blog de dynomight de finales de 2024 es el más divertido, porque intenta explicar la rara anomalía de que gpt-3.5-turbo-instruct, un modelo antiguo non-reasoning, jugó al ajedrez a unos 1750 Elo mientras que muchos modelos más nuevos chat-tuned no pasan de 1300. La respuesta resulta ser algo cercano a "regurgitación de datos de entrenamiento más un prompt few-shot hicieron casi todo el trabajo", que es exactamente el tipo de efecto que un estudio de ablación cuidadoso debe detectar y aislar.
La próxima vez que escuches a alguien afirmar que la memoria, o los prompts largos, o los ajustes de effort más altos hacen a los agentes de IA fiablemente mejores en algo, pídele que muestre su trabajo en un escenario donde puedas verlo. Nosotros hicimos del ajedrez ese escenario. Probablemente hay mejores. Elige el tuyo y déjalo correr unos meses.
