Dejé que el agente Jules AI de Google en mi repositorio de código e hizo cuatro horas de trabajo en un instante

Publicado el:

spot_img
- Advertisment -spot_img

Bueno. Respiración profunda. Esto es surrealista. Acabo de agregar una característica completa a mi software, incluida la interfaz de usuario y la funcionalidad, solo escribiendo cuatro párrafos de instrucciones. Tengo capturas de pantalla e intentaré darle sentido en este artículo. No puedo decir si vivimos en el futuro o si acabamos de descender a un nuevo avión del infierno (o ambos).

Demos un paso atrás. Jules de Google es el último de una inundación de nuevos agentes de codificación lanzados solo esta semana. Escribí sobre OpenAI Codex y el agente de codificación de copilot GitHub de Microsoft al comienzo de la semana, y Webb Wright de ZDNet escribió sobre Jules de Google.

- Advertisement -[wpcode id="699"]

Todos estos agentes de codificación realizarán operaciones de codificación en un repositorio de GitHub. GitHub, para aquellos que han estado siguiendo, es el centro de almacenamiento, administración y distribución de software propiedad de Microsoft para gran parte del software más importante del mundo, especialmente el código de código abierto.

La diferencia, al menos en lo que respecta a este artículo, es que Google puso a Jules disponible para todos, de forma gratuita. Eso significaba que podía subirme y darlo por dar una vuelta. Y ahora mi cabeza está girando.

Límites de uso y mis dos primeras indicaciones

La versión de acceso gratuito de Jules permite solo cinco solicitudes por día. Eso puede no parecer mucho, pero en solo dos solicitudes, pude agregar una nueva característica a mi software. Por lo tanto, no descarte lo que puede hacer si piensa en sus indicaciones antes de disparar sus balas de plata para el día.

Mis dos primeras indicaciones fueron tentativas. No era que no estuviera impresionado; Fue que realmente no estaba dando a Jules mucho que hacer. Todavía no me siento cómodo con la idea de poner una IA suelta en todo mi código a la vez, así que lo jugué a salvo.

- Advertisement -[wpcode id="699"]

Mi primer aviso le pidió a Jules que documentara los «ganchos» que los desarrolladores de complementos podrían usar para agregar características a mi producto. No le dije mucho a Jules lo que quería. Devolvió un marcado que recomendó caer en el archivo ReadMe de mi código. Funcionó, pero meh.

Tuve la oportunidad de publicar ese código en una nueva sucursal de Github, pero la salté. Fue solo una prueba, después de todo.

Mi segundo aviso fue pedirle a Jules que sugiera cinco nuevos ganchos. Recibí una respuesta que parecía razonable. Sin embargo, me di cuenta de que abrir esas capacidades en un producto de seguridad era demasiado arriesgado para que yo delegara a una IA. También me salté esos cambios.

Fue en este punto que Jules quería un descanso para tomar un café. Dejó de funcionar durante unos 90 minutos.

Eso me dio tiempo para pensar. Lo que realmente quería ver era si Jules podía agregar una funcionalidad real a mi código y ahorrarme algo de tiempo.

Información de fondo necesaria

Mi sitio privado es un complemento de seguridad para WordPress. Se ejecuta en unos 20,000 sitios activos. Pone un diálogo de inicio de sesión frente a las páginas web del sitio. Hay un montón de opciones, pero esa es la característica clave. Originalmente adquirí el software hace una década de un codificador que se llamaba a sí mismo «Jonradio», y lo he estado manteniendo y expandiéndolo desde entonces.

El complemento proporciona control de acceso al front-end de un sitio web, las páginas que los visitantes ven cuando llegan al sitio. Los propietarios de sitios controlan el complemento a través de una interfaz del tablero, con varias funciones de administración disponibles en la interfaz de administración del complemento.

- Advertisement -[wpcode id="699"]

Decidí probar Jules en una característica que algunos usuarios han solicitado, ocultando la barra de administración de los usuarios iniciados. La barra de administración es la barra negra que WordPress pone en la parte superior de una página web. En el caso de la captura de pantalla a continuación, la barra de administración negra es visible.

Leer  El pequeño neo dron de DJI tiene un 20% de descuento con esta oferta de Amazon Prime Day

Quería que Jules agregue una opción en el tablero para ocultar la barra de administración de los usuarios registrados. La idea es que si un usuario inició sesión, la barra de administración estaría visible en el back-end, pero los usuarios iniciados por el front-end del sitio no tendrían que ver la barra fea.

Este es el tablero original, antes de agregar la nueva función.

Hace algunos años, reescribí completamente la interfaz de administración de la forma en que era cuando adquirí el complemento. Agregar opciones a la interfaz es sencillo, pero todavía lleva mucho tiempo. Cada opción requiere que se agregue no solo el elemento UI, sino también el ahorro de preferencia y el recuerdo de preferencias cuando se muestra el tablero. Eso se suma a cualquier lógica del programa que controla la preferencia.

En la práctica, descubrí que me lleva alrededor de 2-3 horas agregar un elemento de interfaz de usuario de preferencia, junto con la variedad de limpieza involucrada. No es difícil, pero hay muchos pequeños fragmentos complicados que deben modificarse. Eso lleva tiempo.

Eso debería ponerte al día lo suficiente como para comprender mi próxima prueba de Jules. Aquí hay un poco de presagio: la primera prueba falló miserablemente. La segunda prueba tuvo éxito asombrosamente.

Instruyendo a Jules

Agregar una función de Hide Admin Bar no es algo que hubiera sido fácil para la ayuda de codificación de la actualidad que hemos estado pidiendo a ChatGPT y los otros chatbots para realizar. Como mencioné, agregar la nueva opción al tablero requiere programación en una variedad de ubicaciones a lo largo del código, y también requiere una comprensión de la base de código general.

Esto es lo que le dije a Jules.

1. En la pestaña de privacidad del sitio de la interfaz de administración, agregue una nueva casilla de verificación. Etiquete la sección «Barra de administración» y etiquete la casilla de verificación «Ocultar la barra de administración». (Coloque esto en el bloque de Make Site Private, ubicado justo debajo de la casilla de verificación de inicio de sesión de inicio de sesión y antes del segmento del modo de privacidad del sitio).

Instruí a Jules donde quería que la IA pusiera la nueva opción. En mi primera carrera, cometí un error y dejé fuera los detalles en los soportes cuadrados. No le dije a Jules exactamente donde quería que colocara la nueva opción. Resulta que esa omisión causó un gran fracaso. Una vez que agregué la oración entre paréntesis, la función funcionó.

2. Asegúrese de guardar la selección de esa casilla de verificación a la variable de preferencias del complemento cuando se verifica el botón Guardar estado de privacidad.

Esto asegura que Jules sepa que hay una estructura de datos de preferencia y para asegurarse de actualizarlo cuando el usuario realice un cambio. Es importante tener en cuenta que si no tuviera una comprensión del código subyacente, no habría ordenado a Jules sobre esto, y el código no funcionaría. No puede «vibrar código» algo como esto sin conocer el código subyacente.

3. Muestre el estado apropiado o no controlado cuando se muestra la pestaña de privacidad del sitio.

Esto le dice a la IA que quiero que la interfaz se actualice para que coincida con lo que especifica la variable de preferencia.

4. Basado en la variable de preferencia creada en (2), agregue código para ocultar o mostrar la barra de administración de WordPress. Si se verifica la barra de administración de ocultar, la barra de administrador no debe estar visible para los usuarios front-end de WordPress iniciados. Si no se verifica la barra de administración de Ocultar, la barra de administración debe estar visible para los usuarios front-end iniciados. Los usuarios de back-end iniciados en la interfaz de administración siempre deben poder ver la barra de administración.

Esto describe la lógica comercial que debe controlar la nueva preferencia. Requiere que la IA sepa cómo ocultar o mostrar la barra de administración (se usa una llamada de API de WordPress), y requiere que la IA sepa dónde colocar el código en mi complemento para habilitar o deshabilitar esta función.

Leer  Dfinity lanza Caffeine, una plataforma de inteligencia artificial que crea aplicaciones de producción a partir de indicaciones en lenguaje natural

Y con eso, Jules fue entrenado en lo que quería.

Jules se sumerge en mi código

Alimenté mi aviso a Jules y recuperé un plan de acción. Presta mucha atención a eso ¿Aprobar plan? botón.

Ni siquiera tuve la oportunidad de leer el plan antes de que Jules decidiera aprobar el plan por su cuenta. Hizo esto después de cada plan que presentó. Una IA que no espera permiso levanta los pelos en la parte posterior de mi cuello. Solo digo.

Quiero desesperadamente hacer una broma de Skynet/Landru/Colossus/P1/Hal, porque estoy asustado. Quiero decir, es bueno. Pero estoy asustado.

Aquí está algunos de los códigos que escribió Jules. El verde sombreado son las cosas nuevas. No estoy emocionado con el esquema de color, pero estoy seguro de que se puede ajustar con el tiempo.

Más relevante es el hecho de que Jules recogió mis convenciones de nombres variables y la arquitectura de mi código y se sumergió directamente. Esta es la nueva opción, representada en el código.

Para cuando se realizó, Jules había escrito en todos los cambios de código que planeó originalmente, más algún código de prueba. No uso pruebas estandarizadas. Le habría dicho a Jules que no lo hiciera como planeaba, pero nunca me dio tiempo para aprobar o modificar su plan original. Aun así, funcionó.

Empujé el botón Publish Branch, que hizo que GitHub creara una nueva rama, separada de mi repositorio principal. Jules luego publicó sus cambios en esa rama.

Así es como los contribuyentes a grandes proyectos pueden trabajar en esos proyectos sin causar el caos en la línea de código principal.

Hasta este punto, podía mirar el código, pero no pude ejecutarlo. Pero al empujar el código a una rama, Jules y Github me permitieron replicar los cambios de forma segura a mi computadora para probarlos. Si no me gustaron los cambios, podría haber vuelto a la rama principal y sin daño, sin falta. Pero me gustaron los cambios, así que pasé al siguiente paso.

Alrededor del código en 8 clics

Una vez que llevé la rama a mi máquina de desarrollo, pude probarla. Aquí está el nuevo panel de tablero con la función de menú de admin.

Intenté encender y apagar la función y asegurarme de que la configuración se atasque. Lo hicieron. También probé otras características en el complemento para asegurarme de que nada más se hubiera roto. Estaba bastante seguro de que nada lo haría, porque revisé todos los cambios antes de aprobar la sucursal. Pero aún así. La prueba es algo bueno.

Luego inicié sesión en el sitio web de prueba. Como puede ver, no se muestra en la barra de administración.

En este punto, el proceso estaba fuera de las manos de la IA. Era simplemente hora de implementar los cambios, tanto a GitHub como en el repositorio maestro de WordPress. Primero, utilicé GitHub Desktop para fusionar el código de rama en la rama principal de mi máquina de desarrollo.

Cambié «ocultar el menú de administración» para «ocultar el menú de administración» en la rama principal de mi código, porque me gusta más. Empujé eso (la rama principal completa en mi máquina local) de regreso a la nube de Github.

Luego, debido a que no me gustan las ramas aleatorias que dan una vez que se han incorporado a la versión de distribución, eliminé la nueva rama en mi computadora.

También eliminé la nueva rama del servicio en la nube GitHub.

Finalmente, empaqué el nuevo código. Agregué un cambio al ReadMe para describir la nueva función y actualizar el número de versión del código. Luego, lo presioné usando SVN (el sistema de control del código fuente utilizado por la comunidad de WordPress) hasta el repositorio de complementos de WordPress.

Viaje al centro del código

Jules es definitivamente beta en este momento. Colgaba en algunos lugares. Algunas pantallas no se actualizaron. Decidió visitar durante 90 minutos. Tuve que esperar mientras iba y regresaba de su lugar digital feliz. Está evidenciando todo el tipo de cosas que esperarías de un código recién lanzado. No tengo preocupaciones sobre eso. Google lo limpiará.

El hecho de que Jules (y presumiblemente OpenAI Codex y GitHub Copilot Coding Agent) puedan manejar un repositorio completo de código en un montón de archivos es grande. Ese es un nivel mucho más profundo de comprensión e integración de lo que vimos, incluso hace seis meses.

Leer  Cloudflare acaba de cambiar Internet, y es malo para los gigantes de la IA

La velocidad con la que puede cambiar una base de código completa es aterradora. El daño que puede hacer es potencialmente extraordinario. Pasará alegremente y modificará todo en su base de código, y si especifica algo mal y luego presiona o se fusiona, tendrá un desastre épico en sus manos.

Existe una profunda desigualdad entre la rapidez con que puede cambiar el código y cuánto tiempo llevará a un humano revisar esos cambios. Trabajar en esta escala requerirá excelentes pruebas unitarias. Incluso las herramientas como la mía, que no se prestan a las pruebas unitarias completas, requerirán algún tipo de validación automatizada para evitar errores basados ​​en robots a gran escala.

Aquellos que temen que estas herramientas tomen trabajos de los programadores deben estar preocupados, pero no de la manera en que la mayoría de la gente piensa. Es absolutamente, totalmente, unoHUNDO-nepder necesarios para que los codificadores experimentados revisen y guíen a estos agentes. Cuando dejé fuera una instrucción crítica, el agente bloqueó alegremente mi sitio.

Como yo era la persona que escribió el código inicialmente, sabía qué solucionar. Pero habría sido brutalmente difícil para alguien más descubrir qué se había dejado fuera y cómo solucionarlo. Eso habría requerido acelerar todos los matices ocultos de toda la arquitectura del código.

Los trabajos que probablemente sean destruidos son los de los desarrolladores junior. Jules está haciendo fácilmente trabajo de nivel de desarrollador junior. Con herramientas como Jules o Codex o Copilot, ese costo de unos pocos cientos de dólares al mes como máximo, será difícil para la gerencia estar dispuesto a pagar seis cifras de mediana a alta para programadores de nivel medio y junior. Incluso la subcontratación y la deslocalización no son tan baratos como usar un agente de IA para hacer codificación de mantenimiento.

Y, como escribí a principios de semana, si no hay trabajos de nivel medio disponibles, ¿cómo capacitaremos a las personas experimentadas que necesitaremos en el futuro?

También me preocupa cómo se sacudirán los límites de acceso. Las ganancias de productividad caerán como una roca si necesita hacer un mensaje más y debe esperar un día para que se le permita hacerlo.

En cuanto a mí, en menos de 10 minutos, resultó una nueva característica que los lectores habían solicitado. Mientras escribía otro artículo, le alimenté el aviso a Jules. Volví a trabajar en el artículo y revisé a Jules cuando terminó. Revisé el código, lo llevé a mi computadora y empujé una versión.

Me llevó más tiempo cargar la cosa al repositorio de WordPress que agregar la nueva característica. Para esa clase de largometraje, hice un trabajo de medio día en menos de media hora, desde pensar en hacer que se publique a mis usuarios.

En las últimas dos horas, 2.500 sitios han descargado e instalado la nueva función. Eso aumentará a más de 10,000 por la mañana (ahora son alrededor de las 8 pm mientras escribo esto). Sin Jules, esos usuarios probablemente habrían estado esperando meses para esta nueva característica, porque tengo una gran cartera de trabajo, y no era mi máxima prioridad. Pero con Jules, apenas tomó ningún esfuerzo.

Estas herramientas requerirán que los programadores, gerentes e inversores repensen el flujo de trabajo de desarrollo de software. Habrá evidente «no puedes llegar desde aquí» Gotchas. Y habrá fallas épicas y errores de codificación. Pero no tengo dudas de que este es el siguiente nivel de codificación basada en IA. La inteligencia humana real será necesaria para descubrir cómo lidiar con ella.

¿Has probado Jules de Google o alguno de los otros nuevos agentes de codificación de IA? ¿Confiaría en ellos para hacer cambios directos en su base de código, o prefiere mantener un agarre manual más estricto? ¿Qué tipo de tareas de desarrollador crees que estas herramientas deberían y no deberían manejar? Háganos saber en los comentarios a continuación.

¿Quieres más historias sobre AI? Regístrese para la innovaciónnuestro boletín semanal.


Puede seguir mis actualizaciones de proyecto diarias en las redes sociales. Asegúrese de suscribirse a mi boletín de actualizaciones semanales y sígueme en Twitter/X en @Davidgewirtzen Facebook en Facebook.com/davidgewirtz, en Instagram en Instagram.com/davidgewirtz, en bluesky en @davidgewirtz.com, y en YouTube en youtube.com/davidgewirtztv.

spot_img

Relacionada

Leave a Reply

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

spot_img