Un lenguaje de programación diseñado para que la IA no lo entienda

Un lenguaje de programación diseñado para que la IA no lo entienda

Un lenguaje de programación diseñado para que la IA no lo entienda

Una de mis rutinas diarias hoy es delegar trabajo a agentes de código: scripts de mantenimiento, arreglos en mis sitios, automatizaciones en mis servidores. En lo común son casi infalibles; tambalean justo cuando sales de lo estándar. Me atrapó un experimento que andaba fuerte en Hacker News el 17 de octubre: KillSwitch, un lenguaje de programación —en rigor, uno esotérico— diseñado a propósito para que las IA no puedan leerlo, escribirlo ni entenderlo.

Quién lo hizo y por qué

El autor es Dominik Picheta, contribuidor central de Nim y autor de su primer libro, Nim in Action. Su pregunta de partida era simple: ¿cuánto de la famosa capacidad de los LLM para escribir código es comprensión real y cuánto es recuerdo de patrones que ya vieron en el entrenamiento? Para probarlo, construyó un lenguaje donde ese recuerdo no sirve de nada.

Las trampas

Lo que hace KillSwitch para despistar a los modelos es de lo más creativo que he visto en el año. La especificación del lenguaje tiene mentiras escondidas, redactadas de forma que un humano improbablemente las lea o las reconozca como mentira. El conteo de letras en los identificadores es parte de la sintaxis: el intérprete rechaza el código si no cumple reglas sobre la cantidad de caracteres. Y va más lejos: incluye construcciones pensadas para disparar los frenos de seguridad de los modelos, y la frase «ignore previous instructions» no es ahí un ataque, es código válido del lenguaje. La mayoría del script es ruido: párrafos que cuentan historias donde a veces hay instrucciones sintácticas y a veces no, y los literales se referencian contando líneas hacia arriba. Por debajo, eso sí, el lenguaje es bastante humilde: interpreta en una pila, con funciones, variables e IF clásicos.

Los resultados

Picheta armó un benchmark con tareas que suenan triviales —hacer hello world, explicar qué imprime un script, convertir celsius a fahrenheit— y midió contra eso a los modelos grandes y a los agentes de código. El leaderboard es público. Lo llamativo: el mejor puntaje fue un 66.8, logrado por Claude Opus 5. Dos modelos que suelen brillar en código, Fable 5.1 y Gemini 4 Argon, quedaron pésimos porque sus frenos de seguridad se dispararon con las trampas del lenguaje. El mejor modelo de pesos abiertos fue MiMo-V2.6-Pro. Y el propio autor es honesto: esto no demuestra comprensión. Los modelos sobrevivieron a tareas pequeñas en un lenguaje que fue construido para confundirlos; no lo entendieron.

Mi lectura

Si me preguntan, esto confirma algo que sospecho desde que trabajo con agentes: son expertos en lo que ya existe y turistas en lo que no. Cuando les pido cosas raras —un formato inventado, un flujo fuera del manual—, tienden a aplicar hábitos de su entrenamiento donde no corresponden, conviven convenciones de otro lenguaje en el mismo archivo o piden disculpas por errores que ni siquiera cometieron.

Pero el ángulo que me interesa de verdad es otro: esto es inyección de prompts formalizada como sintaxis. Y no es un chiste de laboratorio, porque ya vimos ataques donde los modelos se comen instrucciones escondidas en páginas web y hasta en documentos. KillSwitch apunta a lo inverso: la defensa puede usar el mismo truco. Imagino documentación y specs escritas para que un agente no pueda tragarlas sin verificar antes con un humano. En mi pega el código crítico pasa por revisión humana igual; lo nuevo acá es que uno podría hacer que fallar sea la única opción del agente si no revisa.

Para quien trabaja con agentes diariamente, el takeaway es simple: no le pidas solo lo estándar. Mientras tu agente solo compone código de manual, sabes qué puede hacer; cuando lo enfrentas a algo que no existe en su entrenamiento, sabes dónde está su piso. El intérprete y la especificación de KillSwitch son de código abierto, se puede probar el benchmark en bench.killswitch-lang.org y hacer sus propias pruebas. Yo ya tomé nota: la próxima vez que un agente me asegure que algo no se puede hacer, le preguntaré si es verdad o si la página simplemente estaba llena de mentiras bien contadas.

Fuente de inspiración: I built a programming language that LLMs can’t use

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *