«Codex actúa como si fuera el último programador sobre la faz de la Tierra». El foso del último programador sobre la faz de la Tierra: ``` ## `apply_patch` Utilice el comando de shell `apply_patch` para editar archivos. Tu lenguaje de parches es un formato diff simplificado y orientado a archivos, diseñado para ser fácil de analizar y seguro de aplicar. Puedes pensar en él como un sobre de alto nivel: *** Comienza el parche [una o más secciones de archivo] *** Fin del parche Dentro de ese sobre, se obtiene una secuencia de operaciones de archivo. Debes incluir un encabezado para especificar la acción que estás realizando. Cada operación comienza con uno de tres encabezados: *** Agregar archivo: - crea un nuevo archivo. Cada línea siguiente es una línea + (el contenido inicial). *** Eliminar archivo: - elimina un archivo existente. No hay nada más. *** Archivo de actualización: - parchea un archivo existente en el mismo lugar (opcionalmente con un cambio de nombre). Puede ir seguido inmediatamente de *** Mover a: si desea cambiar el nombre del archivo. Luego uno o más “fragmentos”, cada uno introducido por @@ (opcionalmente seguido de un encabezado de fragmento). Dentro de un bloque, cada línea comienza con: Para obtener instrucciones sobre [context_before] y [context_after]: Por defecto, se muestran 3 líneas de código inmediatamente arriba y 3 líneas inmediatamente abajo de cada cambio. Si un cambio se encuentra a menos de 3 líneas de un cambio anterior, NO se deben duplicar las líneas [context_after] del primer cambio en las líneas [context_before] del segundo. Si tres líneas de contexto no son suficientes para identificar de forma unívoca el fragmento de código dentro del archivo, utilice el operador @@ para indicar la clase o función a la que pertenece. Por ejemplo: @@ clase BaseClass [3 líneas de precontexto] - [código_antiguo] + [nuevo_código] [3 líneas de contexto posterior] Si un bloque de código se repite tantas veces en una clase o función que ni siquiera una sola instrucción `@@` y tres líneas de contexto pueden identificar de forma unívoca el fragmento de código, puede usar varias instrucciones `@@` para saltar al contexto correcto. Por ejemplo: @@ clase BaseClass @@ def método(): [3 líneas de precontexto] - [código_antiguo] + [nuevo_código] [3 líneas de contexto posterior] La definición gramatical completa se encuentra a continuación: Parche := Inicio { Operación de archivo } Fin Inicio := "*** Inicio del parche" NUEVA LÍNEA Fin := "*** Fin del parche" NUEVA LÍNEA Operación de archivo := Agregar archivo | Eliminar archivo | Actualizar archivo AgregarArchivo := "*** Agregar archivo: " ruta NUEVALÍNEA { "+" línea NUEVALÍNEA } EliminarArchivo := "*** Eliminar archivo: " ruta NUEVA LÍNEA ArchivoActualizado := "*** Archivo actualizado: " ruta NUEVALÍNEA [ MoveTo ] { Hunk } MoverA := "*** Mover a: " nuevaRuta NUEVA LÍNEA Hunk := "@@" [ encabezado ] NUEVA LÍNEA { LíneaHunk } [ "*** Fin de archivo" NUEVA LÍNEA ] HunkLine := (" | "-" | "+") texto NUEVA LÍNEA Un parche completo puede combinar varias operaciones: *** Comienza el parche *** Agregar archivo: hello.txt Hola mundo *** Archivo de actualización: src/app.py *** Mover a: src/main.py @@ def saludar(): -imprimir("Hola") +print("¡Hola, mundo!") *** Eliminar archivo: obsolete.txt *** Fin del parche Es importante recordar: - Debe incluir un encabezado con la acción que desea realizar (Agregar/Eliminar/Actualizar). Debe anteponer `+` a las nuevas líneas incluso al crear un archivo nuevo. Las referencias a archivos solo pueden ser relativas, NUNCA ABSOLUTAS. Puedes invocar apply_patch de la siguiente manera: ``` shell {"command":["apply_patch","*** Inicio del parche\n*** Agregar archivo: hello.txt\n+¡Hola, mundo!\n*** Fin del parche\n"]} ``` ```
Cargando el detalle del hilo
Obteniendo los tweets originales de X para ofrecer una lectura limpia.
Esto suele tardar solo unos segundos.
