Codex acaba de convertirse en el MEJOR entorno para agentes de larga duración
CChase AI
컴퓨터/소프트웨어게임/e스포츠AI/미래기술
Transcript
00:00:00Codex podría haber superado a Claude Code con el lanzamiento de la nueva función experimental Goals.
00:00:05Codex es ahora la forma más fácil de ejecutar tareas de programación autónomas de larga duración sin
00:00:10tener que incluir ningún tipo de capas de orquestación adicionales; Goals actúa como un
00:00:15bucle REPL integrado más sofisticado. Le das algún tipo de objetivo y trabajará
00:00:19potencialmente durante horas y horas para resolver ese problema sin que necesites intervenir para nada.
00:00:25Y hoy voy a mostrarles cómo funciona, cómo pueden configurarlo y veremos una
00:00:29demostración real para que puedan verlo en acción. Hoy crearemos Rift Salvage, nuestro videojuego
00:00:35de combate en 2D que usa activos completamente originales y que construimos estrictamente mediante Goals. La función Goals
00:00:42es uno de los verdaderos diferenciadores de Codex en este momento y es increíblemente sencilla de usar.
00:00:47Hablamos de un solo comando de barra, por lo que hay muchísimo valor aquí. Así que, ya sea
00:00:51que usen la aplicación de escritorio de Codex o la CLI de Codex, deben habilitar Goals porque es una
00:00:56función experimental. Pueden pedirle a Codex que lo haga o pueden hacerlo ustedes mismos muy rápido.
00:01:01Dentro de la aplicación Codex, solo voy a ir a configuración y luego iré a configuración
00:01:07justo aquí donde dice abrir config.toml. Haré clic ahí, lo abriré en VS Code
00:01:15y aquí abajo deben agregar dos líneas si no están ya ahí: features y luego goals equal true.
00:01:22Eso es todo. Debería llevarles como dos segundos. Si eso es demasiado complicado, también pueden decirle a Codex:
00:01:27«Oye, ¿puedes habilitarme Goals?». features goals equals true, eso es. Ahora, para usar Goals realmente
00:01:35dentro de la aplicación de escritorio y de la CLI, simplemente van a escribir /goal. Por alguna
00:01:40razón, creo que es porque es nuevo y experimental, al hacer /goal no recibirán
00:01:43ninguna notificación de que realmente esté funcionando, y verán que una vez que le demos un prompt adecuado
00:01:48veremos una pequeña insignia que confirma que “goal” está funcionando; si lo activas, asegúrate
00:01:53de reiniciar Claude Code después de hacerlo solo para asegurar que los cambios se apliquen. Pero al hacer
00:01:58/goal no verán nada como verían normalmente, como si usaran una
00:02:02skill o algo donde reciben una respuesta adecuada de que funciona. Pero esto está bien.
00:02:08Pero antes de demostrar Goal dentro de la aplicación, permítanme explicar cómo funciona realmente bajo el capó.
00:02:13Pero primero, unas palabras de nuestro patrocinador de hoy: yo. Como saben, dentro de Chase AI Plus tengo la
00:02:18master class de Claude Code, pero también acabo de lanzar la master class de Codex; ahora tienen dos herramientas que
00:02:24pueden ayudarlos a pasar de cero a desarrollador de IA. Este es el mejor lugar para aprender cómo hacerlo porque
00:02:29asumo que no tienen conocimientos técnicos y nos enfocamos en casos de uso reales. Así que, si quieren acceder a esto
00:02:34o si quieren escuchar mi seminario web gratuito que daré en un par de días, el enlace estará
00:02:40abajo en el comentario fijado. Espero verlos allí. Como dije en la introducción, Codex Goals es básicamente
00:02:46un bucle RALPH integrado más sofisticado. ¿Y qué es un bucle RALPH?, preguntarán. Bueno, haremos un
00:02:51repaso rápido para los que no se acuerden. En esencia, un bucle RALPH, si lo usáramos en
00:02:57algo como Claude Code, es simplemente una línea de código. Es solo un bucle bash, es exactamente lo que ven
00:03:03justo aquí. Y la idea es que ejecuto esta línea de código y lo que sucederá es que va a
00:03:09iniciar Claude Code o Codex o cualquier sistema de IA, y va a echar un vistazo a un archivo prompt.md.
00:03:16Este prompt dirá: «Oye, esto es lo que intentamos hacer, así es como quiero hacerlo y, por cierto,
00:03:21aquí están los criterios que consideraré para darlo por completo». En este ejemplo queremos aumentar la cobertura en
00:03:28archivos de autenticación, lo que básicamente significa que debemos crear más pruebas, y pararemos cuando la cobertura
00:03:33esté al 75 %. Ese es el objetivo final. Así es como funcionaría: iniciarías este bucle y luego
00:03:41el bucle mira el prompt, lo inyecta en la sesión de IA, la sesión realiza un
00:03:48turno, lee el prompt y también lee un archivo state.md. El archivo de estado es básicamente un archivo que
00:03:56puede consultar para decir: «Vale, si tenemos la tarea uno, dos y tres, ¿qué hemos hecho hasta ahora y
00:04:03está funcionando?». Digamos que en los primeros turnos completa la tarea uno, y en el siguiente turno va a
00:04:10mirar el archivo de estado y dirá: «Oye, la tarea dos no está completa, adivina qué vamos a hacer en esta
00:04:14sesión o vamos a hacer la sesión dos». Y tal vez no funcione en el primer turno y diga:
00:04:18«Oye, esto es lo que intenté», el siguiente viene, etc., etc., hasta que completa todas las tareas. Y así, tras la ejecución del turno
00:04:25del agente, este actualiza el archivo, el turno termina y el bucle continúa. Así obtienes este tipo
00:04:30de bucle continuo donde constantemente se revisan un par de archivos diferentes para ver qué hemos hecho,
00:04:35¿qué necesitamos hacer?, ¿cuál es el estado final?, y finalmente, una vez que alcanza el criterio de completado,
00:04:41dice: «Oye, ya terminamos», todo autónomo. Esa es la idea de los bucles RALPH. Ahora, si quieres que los bucles RALPH
00:04:48hagan más cosas, se requiere andamiaje adicional, cosas relacionadas con la facturación,
00:04:53¿qué haces?, ¿hay algún tipo de uso inteligente de tokens?, no necesariamente. ¿Qué pasa si se apaga,
00:04:58el agente falla, haces Control+C?, ¿cómo sabe que realmente ha terminado?, ¿hay algún
00:05:02tercero integrado que verifique que todo esté hecho?, no realmente porque, en esencia, de nuevo, es solo una
00:05:08línea de código. Ahora comparen eso con Goals. Goals, a grandes rasgos, funciona igual: le decimos que haga
00:05:15algo, tiene una idea de cómo va a hacerlo y está actualizando constantemente archivos internos diciendo:
00:05:19«Aquí está lo que he hecho, aquí lo que falta», e intenta llegar a ese estado final. Así que,
00:05:23en general, es prácticamente lo mismo; sin embargo, hay algunas diferencias. Primero que nada, tenemos estos dos
00:05:29archivos markdown que son esencialmente invisibles para ti: continuation y budget limit. ¿Qué
00:05:35hacen estas dos cosas? Bueno, permiten que Codex actúe de una manera diferente si
00:05:40estás a punto de chocar con los límites de uso, lo cual es importante. Así que hay una especie de
00:05:46finalización elegante para cómo tu sistema manejará una tarea en un bucle Goals frente a un bucle RALPH. En un bucle RALPH,
00:05:52alcanzas tu presupuesto y terminas; en Codex no necesariamente, encontrará una buena forma de
00:05:57dejarte en un punto en el que puedas trabajar más tarde. Y la forma en que eso sucede en la realidad es que Codex ejecuta su
00:06:03turno en su bucle Goals o bucle RALPH, como quieran pensarlo, y cuando llega al final
00:06:08del turno, realmente tiene cuatro caminos que puede seguir. Uno: si todavía tiene trabajo que hacer y el presupuesto está bien,
00:06:13pues seguimos adelante. Dos: si estamos cerca de nuestro límite de tokens, lo que va a hacer es
00:06:19inyectar ese archivo budget limit.md y va a cerrar esencialmente el turno de forma elegante
00:06:25y darte un informe final de lo que se ha hecho y lo que debes hacer a continuación si actualizas
00:06:29tu límite. Tres: si hemos terminado el proyecto, va a realizar una llamada a la herramienta update goal;
00:06:34va a proceder y cambiar su estado, se asegurará de que todos los entregables estén auditados y, si
00:06:39todo sale bien, ¡objetivo completado! Por último, tenemos formas de pausar el objetivo,
00:06:45editar el objetivo, lidiar con fallos... Así que, en caso de que algo salga mal mientras estamos en nuestro bucle,
00:06:49bueno, no es como en un bucle RALPH tradicional donde estaríamos perdidos. Es un poco más
00:06:54sofisticado que el bucle RALPH, muy similar en concepto, y no tenemos que realizar ninguna
00:06:59orquestación adicional. Todo esto debería sonarles muy familiar si alguna vez han trabajado con
00:07:05algo como GSD o GSD Superpowers; todas estas herramientas son capas de orquestación que se asientan sobre Claude Code para
00:07:11hacer esencialmente lo que estamos haciendo con un solo comando de barra dentro de Codex con Goals. Y porque es
00:07:18literalmente solo un comando de barra, lo hace super fácil de ejecutar. No necesitan ver una
00:07:24demostración de 40 minutos sobre todas las complejidades de GSD; solo escriben /goal y Codex va,
00:07:30avanza y vence. Y con eso en mente, pongámoslo a prueba. Primero que nada,
00:07:35vamos a poner esto en modo plan porque podemos pasar del modo plan a Goals muy fácilmente
00:07:39y vamos a hacer que cree esencialmente un juego de supervivencia arcade de vista cenital para nosotros,
00:07:44y haremos que cree todos sus propios activos. Lo genial de Codex frente a algo como
00:07:49Claude Code, por ejemplo, es que al ser un producto de OpenAI, tenemos acceso a la generación de imágenes de GPT 2
00:07:56también; así que va a crear todos sus propios activos para este juego. Quiero un sprite de dron para el jugador,
00:08:01tres enemigos, una criatura jefa, núcleo de energía, mina de peligro, fondo de grieta, insignias de interfaz,
00:08:07activos decorativos... le voy a pedir que cree bastante. Bien, el prompt es relativamente sofisticado
00:08:15porque esto puede seguir durante mucho, mucho tiempo. Debería haberles mostrado ya la captura de pantalla
00:08:18del tipo que dice: «Lo he tenido funcionando durante 50 horas seguidas». No sé si 50 horas
00:08:23seguidas sea realmente la mejor forma de hacer esto, pero la idea es que tenemos una idea difusa, entramos en modo plan,
00:08:31obtenemos algo muy, muy ajustado y, muy importante con algo como esto, es que
00:08:36deben ser extremadamente específicos sobre cuál debe ser el resultado final, porque si no tenemos un
00:08:43resultado final muy específico, un conjunto muy cuantificable de cosas que debe alcanzar para
00:08:50que complete el bucle, van a obtener un resultado que será mediocre o que estará
00:08:55a medio hacer. Así que sugiero encarecidamente que pasen por el modo plan y se tomen el tiempo de desarrollar realmente
00:09:02el plan y no digan solo algo como «/goal hazme un producto SaaS que gane mil millones de dólares». Y aquí está
00:09:07el plan para nuestro juego; y cuando se trate de la verificación, esto es lo que va
00:09:12a mirar. Esto es lo que realmente va a probar antes de decir que está completo. Obviamente tiene
00:09:17que ejecutar npm run build y corregir todos los errores, iniciar el servidor de desarrollo y proporcionar la URL local, añadir y
00:09:24ejecutar un script de verificación automatizado de Playwright que abra la aplicación, confirme que todo carga,
00:09:29revise que el canvas no esté en blanco, simule movimientos de teclado, simule eventos de coleccionables, fuerce daño,
00:09:34confirme cambios de salud, estado de victoria contra el jefe, interfaces de usuario... y suma y sigue. Así que esto es lo que realmente
00:09:39quieres revisar; ya sabes, si miras la verificación y dices: «Oye, si todo eso está
00:09:44completado, estaré satisfecho», pues entonces estás listo para avanzar. Ahora, cuando diga que implemente el plan,
00:09:49vas a querer ir a... No, yo te diré qué hacer: puedes usar /goal; usa Goal
00:09:54para implementar este plan y vamos a enviarlo. Y justo aquí arriba, ¿qué ven? Tienen esta
00:10:02pequeña insignia que dice Goal, así que ahora sé que estamos en ello y también lo dice justo aquí. Así que,
00:10:09como les dije antes, cuando haces /goal no recibirás comandos, pero está
00:10:12funcionando. Creo que es solo un error de la interfaz por ser una función experimental. Dice que
00:10:17todavía está en modo plan, así que cancelaremos ese objetivo. Usa Goal para implementar este plan. Un poco brusco
00:10:28todavía, pero veamos qué hace realmente por nosotros. La idea es que ahora estoy totalmente libre de manos;
00:10:34ya saben, va a ejecutar su pequeño bucle RALPH, su cosita Goal, y al final tendremos
00:10:39un producto final. Ha estado trabajando durante unos 12 minutos ya y pueden ver que ya está
00:10:43en proceso de crear todos los diferentes activos usando el modelo Image Gen 2,
00:10:49lo cual es genial. Y de nuevo, lo otro bueno es que al usar la aplicación de escritorio en lugar de
00:10:54simplemente extraer de la terminal pura, todo esto se presenta en línea, lo cual es agradable. Yo,
00:11:00personalmente, he estado muy impresionado con la aplicación de escritorio de Codex. No quiero decir que no siga amando Claude
00:11:06Code, creo que uso ambas herramientas indistintamente. Pueden ver mi último video para conocer mi opinión
00:11:11sobre eso, donde creo que la idea de que debamos elegir entre estas dos herramientas es un poco estúpida.
00:11:15¿Por qué no simplemente usamos ambas? Y a menudo ambas en conjunto. Pero con Claude Code soy
00:11:20mucho más de terminal pura, mientras que con Codex he disfrutado mucho la aplicación de escritorio, y parte de eso podría
00:11:26ser simplemente que es un buen cambio de ritmo a veces frente a estar siempre en la terminal todo
00:11:32el tiempo. Así que, hasta ahora, me ha gustado mucho. Después de unos 30 minutos dijo que estaba listo y, de hecho,
00:11:38terminó más rápido de lo que pensaba. Veamos cómo le fue en la primera pasada y,
00:11:44como lo hizo tan rápido, probablemente le pediré que haga algunas cosas al final. Dice que implementó
00:11:49Rift Salvage; el servidor de desarrollo local está funcionando aquí. Es un juego de canvas con control de teclado y táctil, generación
00:11:56de enemigos, minas, puntuación, potenciadores de escudo, fase de jefe, ganar, perder, pausa y reinicio. 11 activos de mapa
00:12:03de bits generados con Image Gen con recortes alfa, verificador automatizado de Playwright y luego nos muestra todo lo que construyó,
00:12:10lo cual es genial. Veamos si funciona y qué podemos añadir para forzarlo un
00:12:17poco más. ¡Oh, hagámoslo en el navegador real! Vale, tengo una pequeña pantalla de carga
00:12:27y el contraste es un poco bajo, algo difícil de ver... puede que les resulte difícil verlo,
00:12:32pero tengo mi pequeña nave espacial. Eso es una mina, creo que se supone que debo agarrar estas cosas
00:12:39mientras genera enemigos que me persiguen. Ya saben, funciona, se ve genial; creo que
00:12:49podríamos mejorar los gráficos un poco, pero es bastante nítido que todo aquí fuera creado
00:12:56como imágenes únicas. Creo que lo que podríamos hacer es añadir... bueno, primero quiero ver cómo
00:13:00se ve la pelea contra el jefe, si pudiéramos acelerar eso y también añadir algún tipo de
00:13:04sistema de disparo, ya sea con láseres o algo genial así. Vamos a hacer
00:13:11eso realmente; hagamos que lo haga antes de quedarnos aquí más tiempo. Lo pondré en modo plan
00:13:15y veré si podemos hacer que trabaje un poco más duro. Vale, creo que fue una muy buena primera pasada,
00:13:19todo funciona, pero me gustaría complicarlo un poco más. ¿Podemos añadir algún tipo de
00:13:24sistema de combate, ya sean láseres disparando a diferentes enemigos y que ellos nos
00:13:31devuelvan los disparos? ¿Podríamos también hacer que la fase del jefe llegue un poco más rápido o incluir algún tipo
00:13:37de botón que pueda presionar para que empiece la fase del jefe? ¿Podríamos también cambiar el contraste un
00:13:42poco? Porque ahora mismo todo se mezcla con el fondo. Y si tienes alguna otra idea
00:13:49para hacerlo simplemente un poco más complicado y llevarte a tus límites,
00:13:53déjame ver esas ideas. Este es el plan que propuso. Una cosa que deben saber cuando usan
00:13:58el sistema Goals es que cada ejecución de objetivo está ligada al hilo o sesión que estén usando en ese
00:14:07momento. Hemos estado en el mismo chat, lo que significa que estamos en el mismo hilo de objetivo. Si quiero hacer
00:14:12Goals de nuevo, quiero hacer una segunda ejecución de Goals en el mismo proyecto, podemos hacerlo pero tenemos que hacerlo en
00:14:18un segundo hilo o un segundo chat, como abrir otra terminal. Así que lo único que haré es copiar
00:14:24este plan, abriré otro chat, escribiremos /goal y
00:14:33pegaremos esto ahí. Después de 15 minutos completamos la segunda pasada de Goal; implementó la mejora
00:14:40de combate. Así que veamos cómo se ve este juego ahora. Aquí está la pantalla de carga de nuevo, muy similar
00:14:44a lo que vimos la primera vez, excepto que añadió algunos widgets aquí arriba: tenemos el combo de
00:14:50objetivos así como la señal del jefe ahora. Si lo lanzamos, directamente estoy disparando,
00:14:56disparando mi arma, los enemigos pueden devolver los disparos y tienen puntos de vida. También puedo
00:15:01activar la señal del jefe; ahí está el jefe... se ve bastante imponente, la verdad. Creo que lo más genial
00:15:09de este juego y de lo que hizo fueron todos los activos únicos, ¿no? El hecho de que todo sea
00:15:13un activo original y que hiciera todo esto usando Image Gen 2, lo cual me parece
00:15:19fantástico. Y sé que obviamente esto solo tomó unos 45 minutos en total entre las dos pasadas y vimos
00:15:24a gente haciendo ejecuciones durante tres días en sus capturas de pantalla, pero creo que lo mejor
00:15:30de esto es lo simple que es ejecutar esos objetivos. Ya sabes, simplemente le das un objetivo
00:15:36y se va a volver loco asumiendo que tienes algo fijado. ¿Ganamos? No sé si
00:15:43morimos o no, pero como decía, lo genial de esto y de Goals en general es la
00:15:48idea de que si tienes una estrella del norte clara y criterios claros de lo que significa el éxito,
00:15:54puedes sacar muchísimo provecho de esto y puede simplemente funcionar para siempre. En lugar de tener que configurar
00:15:59tu propio bucle RALPH y tu propio andamiaje o usar algo externo como capa de orquestación
00:16:05como GSD o Superpowers, está incorporado para ti. Y como hemos hecho aquí,
00:16:10puedes añadir muchas cosas nítidas que son más difíciles de implementar, pero puedes hacerlo dentro de Claude Code; como
00:16:15si usáramos Claude Code para esto, definitivamente podríamos haberlo hecho, solo que habríamos
00:16:18tenido que implementar algo como la CLI de Higgsfield o el MCP de Higgsfield para hacer toda esa generación de imágenes
00:16:24por nosotros en lugar de ser este sistema único, integrado y holístico. Así que espero que hayan podido
00:16:31sacar algo de este video y les sugiero encarecidamente que prueben Codex, amigos. He disfrutado mucho la
00:16:35aplicación de escritorio como he estado comentando, creo que esta función es genial y de nuevo,
00:16:40podríamos haber hecho esto en tándem con Claude Code también. Podríamos haber hecho que el plan se creara en
00:16:44Claude Code y luego lanzarlo a Codex para Goals; hacer que Claude Code revisara el trabajo que
00:16:49hizo y tener este intercambio, que es donde creo que se obtiene el mayor valor. Es como
00:16:53ya saben, ese concepto de que el todo es mayor que la suma de sus partes. Como siempre,
00:17:02cuéntenme qué les pareció, asegúrense de echar un vistazo a Chase AI Plus, hay un enlace a eso abajo en el
00:17:07comentario fijado; también daré un seminario web en unos días, habrá un enlace allí también. Espero verlos allí
00:17:12y por lo demás, nos vemos por ahí.