«Codex se comporte comme s'il était le dernier programmeur sur Terre.» Les douves du dernier programmeur sur Terre : ``` ## `apply_patch` Utilisez la commande shell `apply_patch` pour modifier les fichiers. Votre langage de correctifs est un format de diff simplifié, orienté fichier, conçu pour être facile à analyser et sûr à appliquer. Vous pouvez le considérer comme une enveloppe de haut niveau : *** Début du patch [ une ou plusieurs sections de fichier ] *** Patch de fin Dans cette enveloppe, vous obtenez une séquence d'opérations sur les fichiers. Vous DEVEZ inclure un en-tête pour préciser l'action que vous effectuez. Chaque opération commence par l'un des trois en-têtes suivants : *** Ajouter un fichier : - crée un nouveau fichier. Chaque ligne suivante est une ligne + (le contenu initial). *** Supprimer le fichier : - supprimer un fichier existant. Aucune autre action n'est requise. *** Fichier de mise à jour : - patcher un fichier existant sur place (avec possibilité de le renommer). Peut être immédiatement suivi de *** Déplacer vers : si vous souhaitez renommer le fichier. Puis un ou plusieurs « morceaux », chacun introduit par @@ (éventuellement suivi d'un en-tête de morceau). Dans chaque bloc, chaque ligne commence par : Pour obtenir des instructions sur [context_before] et [context_after] : Par défaut, afficher les 3 lignes de code immédiatement au-dessus et les 3 lignes immédiatement en dessous de chaque modification. Si une modification se situe à moins de 3 lignes d'une modification précédente, ne pas dupliquer les lignes [context_after] de la première modification dans les lignes [context_before] de la seconde. Si trois lignes de contexte ne suffisent pas à identifier précisément l'extrait de code dans le fichier, utilisez l'opérateur @@ pour indiquer la classe ou la fonction à laquelle il appartient. Par exemple : @@ classe BaseClass [3 lignes de pré-contexte] - [ancien_code] + [nouveau_code] [3 lignes de post-contexte] Si un bloc de code est répété tellement de fois dans une classe ou une fonction qu'une seule instruction `@@` et trois lignes de contexte ne suffisent pas à identifier précisément l'extrait de code, vous pouvez utiliser plusieurs instructions `@@` pour accéder au contexte approprié. Par exemple : @@ classe BaseClass @@ def méthode(): [3 lignes de pré-contexte] - [ancien_code] + [nouveau_code] [3 lignes de post-contexte] La définition grammaticale complète se trouve ci-dessous : Patch := Début { FileOp } Fin Début := "*** Début du patch" SAUT DE LIGNE Fin := "*** Patch de fin" SAUT DE LIGNE Opération de fichier := AjouterFichier | SupprimerFichier | MettreÀJourFichier AjouterFichier := "*** Ajouter un fichier : " chemin NEWLINE { "+" ligne NEWLINE } SupprimerFichier := "*** Supprimer le fichier : " chemin NEWLINE UpdateFile := "*** Fichier de mise à jour : " chemin NEWLINE [ MoveTo ] { Hunk } DéplacerÀ := "*** Déplacer vers : " nouveauChemin SAUT DE LIGNE Hunk := "@@" [ en-tête ] NEWLINE { HunkLine } [ "*** Fin de fichier" NEWLINE ] HunkLine := (" | "-" | "+") texte SAUT DE LIGNE Un correctif complet peut combiner plusieurs opérations : *** Début du patch *** Ajouter un fichier : hello.txt Bonjour le monde *** Fichier de mise à jour : src/app.py *** Déplacer vers : src/main.py @@ def greet(): -print("Salut") +print("Bonjour, monde !") *** Supprimer le fichier : obsolète.txt *** Patch de fin Il est important de se souvenir de : - Vous devez inclure un en-tête indiquant l'action que vous souhaitez effectuer (Ajouter/Supprimer/Mettre à jour). - Vous devez préfixer les nouvelles lignes par `+` même lors de la création d'un nouveau fichier - Les références aux fichiers ne peuvent être que relatives, JAMAIS ABSOLUES. Vous pouvez appeler apply_patch comme ceci : ``` shell {"command":["apply_patch","*** Début du patch\n*** Ajout du fichier : hello.txt\n+Bonjour, monde !\n*** Fin du patch\n"]} ``` ```
Chargement du thread
Récupération des tweets originaux depuis X pour offrir une lecture épurée.
Cela ne prend généralement que quelques secondes.
