El blog de Deska

El agente recurrió a any: Por qué los modelos de IA terminan usando tipos laxos

Descubre por qué el agente recurrió a any en tu código TypeScript y cómo solucionar los patrones de tipado perezoso en la IA.

· 10 min de lectura

Cuando una herramienta de desarrollo autónoma envía un pull request, la frustración más común para los ingenieros senior es ver que el agente recurrió a any en lugar de definir una interfaz adecuada. Este comportamiento no es solo un atajo. Es un reflejo fundamental de cómo los Modelos de Lenguaje Extensos manejan la ambigüedad en bases de código complejas e interconectadas. Mientras que TypeScript fue diseñado para proporcionar seguridad a través del análisis estático, los agentes de IA a menudo tratan a los tipos como obstáculos en lugar de guías.

El uso de any en un flujo de trabajo automatizado introduce una deuda técnica que escala más rápido que el código escrito por humanos. Entender por qué sucede esto requiere un análisis profundo de las limitaciones de la ventana de contexto, la naturaleza de la inferencia y las formas específicas en que las herramientas de desarrollo modernas interactúan con tu entorno local.

Las raíces técnicas del tipado perezoso

Los agentes de IA no piensan en términos de sistemas de tipos sólidos. Predicen tokens basándose en probabilidades. Cuando un agente encuentra un objeto profundamente anidado o una librería de terceros sin definiciones de tipo instaladas, el camino de menor resistencia es optar por salir del comprobador de tipos.

Fragmentación de la ventana de contexto

La mayoría de los agentes solo ven lo que tú les entregas o lo que sus herramientas de búsqueda pueden encontrar. Si una interfaz específica está definida en un archivo de utilidad tres carpetas más allá, y ese archivo no se incluyó en el contexto actual, el agente carece de la información necesaria para ser preciso. En lugar de fallar en la tarea, el modelo asume una estructura genérica. Aquí es donde suele aparecer la palabra clave any, actuando como un marcador de posición para la información faltante.

El costo de la inferencia

Generar tipos genéricos complejos en TypeScript requiere una carga lógica significativa. Un agente debe equilibrar la probabilidad de acertar con la sintaxis frente al riesgo de causar un error de compilación. En muchos casos, el modelo determina que any es la forma más segura de garantizar que el código realmente se ejecute, incluso si viola las reglas del proyecto.

Comparación de arquitecturas de agentes

Diferentes herramientas manejan esta ambigüedad de varias maneras. Algunas se centran en la velocidad, mientras que otras priorizan la precisión mediante un mejor contexto local.

Enfoque de herramientaManejo de la ambigüedadImpacto en la seguridad
IDEs solo en la nubeLimitado a archivos indexadosAlto riesgo de usar any
Agentes basados en CLIAlto contexto, ejecución lentaMejor inferencia de tipos
Espacios de trabajo localesAcceso total a archivosSeguridad y velocidad equilibradas

Los desarrolladores modernos se están moviendo hacia entornos como Deska porque permiten una visión más amplia del proyecto. En una configuración local-first, el código, los archivos y las sesiones permanecen en tu máquina. Esto le da al agente una mejor oportunidad de encontrar las definiciones correctas sin filtrar tu lógica propietaria a un servidor de terceros.

Gestionando la deuda técnica generada por IA

Si notas que tu agente utiliza tipos laxos con frecuencia, debes cambiar la forma en que interactúas con la herramienta. Confiar únicamente en que el modelo "conozca" tu arquitectura es un error.

  1. Proporciona interfaces explícitas en el prompt.
  2. Utiliza un espacio de trabajo que te permita ver al agente trabajar en tiempo real.
  3. Configura tu tsconfig.json para que sea lo más estricto posible, obligando al agente a lidiar con errores durante la fase de ejecución.

En un espacio de trabajo como Deska, puedes ejecutar múltiples agentes de programación uno al lado del otro. Al usar el lienzo infinito, puedes tener una terminal mostrando errores de compilación en un panel mientras el agente trabaja en otro. Esta visibilidad evita el efecto de "caja negra" donde un agente oculta tipos any en lo profundo de un PR extenso.

El rol del contexto local en Deska

Deska proporciona una aplicación de escritorio gratuita para Mac, Windows y Linux que aborda el problema del contexto. Mediante el uso de un espacio de trabajo de lienzo infinito, puedes colocar paneles en cualquier lugar. Puedes tener terminales ejecutando un linter, un editor de código que usa Monaco y una sesión de agente, todos visibles al mismo tiempo.

Cuando usas Ask Deska, el asistente de voz y chat puede manejar el espacio de trabajo. Puede abrir paneles o revisar sesiones para asegurar que el agente tenga la información necesaria. Debido a que el espacio de trabajo es local-first, el agente tiene acceso directo a tu sistema de archivos, reduciendo la probabilidad de que se rinda y use un tipo genérico.

Uso de múltiples agentes para verificar tipos

Una estrategia efectiva es usar diferentes modelos para diferentes tareas. Podrías usar Claude Code para la lógica y Codex CLI para la refactorización. En Deska, estos se ejecutan como paneles dentro del mismo espacio de trabajo. Si un agente recurrió a any, puedes pedirle a otro agente que revise el código y sugiera una interfaz más específica.

Este enfoque multi-agente se ve facilitado por el diseño del lienzo. No estás limitado a una sola ventana de chat. Puedes alejar el zoom para ver todo el flujo de tu aplicación, lo que facilita detectar dónde se está rompiendo la seguridad de tipos.

Preguntas frecuentes

¿Por qué mi agente de IA sigue usando any en TypeScript?

El agente suele usar any cuando carece de acceso a las definiciones de interfaz específicas o cuando la complejidad de los tipos genéricos supera su capacidad de razonamiento actual. Proporcionar más contexto o usar una herramienta local-first puede ayudar.

¿Cómo evitar que la IA genere tipos incorrectos?

Asegúrate de que tu proyecto tenga strict: true activado en la configuración de TypeScript. Esto obliga al agente a ver los errores en la terminal durante su ciclo de retroalimentación, lo que generalmente resulta en una mejor calidad de código.

¿Puedo monitorear la generación de código del agente en el móvil?

Sí, usar la aplicación mobile te permite monitorear y continuar el trabajo desde tu teléfono. Puedes ver el progreso del agente a través de un relevo seguro que empareja los dispositivos directamente sin exponer puertos.

Optimiza tu flujo de trabajo

La transición a la programación autónoma requiere herramientas que respeten la complejidad del software moderno. Si estás cansado de limpiar PRs donde el agente recurrió a any simplemente porque no podía ver el resto de tus archivos, considera un entorno más visual e integrado.

Puedes experimentar una mejor manera de gestionar estos agentes visitando la página de descarga. Deska ofrece un espacio de trabajo gratuito donde puedes traer tus propias llaves de API o usar inferencia gestionada, manteniendo tu código y sesiones exactamente donde pertenecen: en tu máquina.

💡 Ideas+🐛 BugsPropón una feature o reporta un bug