Commençons par l'incident. Il y a deux ans, j'ai aidé une équipe d'efficacité de recherche et développement travaillant sur un middle-office de commerce électronique transfrontalier à faire un post-mortem. Ils avaient intégré un agent de programmation IA dans le pipeline CI, avec pour mission de « nettoyer le code redondant ». Après avoir scanné le dépôt, l'agent a jugé que tout le répertoire src était un vestige historique et a soumis une PR. Après la fusion, le build a tourné, tout était rouge. En consultant les enregistrements de sauvegarde, on a découvert que l'environnement de développement utilisait des instantanés complets quotidiens, le plus récent datant de deux heures du matin la veille. Autrement dit, jusqu'à 24 heures de travail se sont évaporées d'un coup, et les branches de trois personnes devaient être reconstituées. La production était couverte par un CDP au niveau des blocs, tandis que l'environnement de développement était à nu, ce qui est assez ironique.
La cause racine de ce type d'incident ne réside pas dans l'IA, mais dans une stratégie de sauvegarde uniforme selon l'environnement. Les données de production changent lentement et les écritures sont contrôlables, le RPO (objectif de point de reprise) d'une sauvegarde quotidienne suffit tout juste. L'environnement de développement est une tout autre histoire. Un développeur front-end peut faire plus de dix commits par jour ; lors d'une refactorisation, il renomme des fichiers en masse, déplace des répertoires, supprime des fichiers, avec une fréquence de changement des dizaines de fois supérieure à la production. Une sauvegarde quotidienne signifie un RPO de 24 heures, ce qui, pour du code soumis à des changements fréquents et de petite granularité, équivaut à aucune protection.
CDP au niveau des blocs et instantanés au niveau des fichiers : où se situe la différence de granularité de restauration
En termes simples, l'instantané au niveau des fichiers est une « photo », le CDP au niveau des blocs est une « vidéo ». L'instantané au niveau des fichiers capture l'état complet d'un répertoire à un instant donné ; lors de la restauration, on ne peut revenir qu'à une heure précise, et toutes les modifications intermédiaires sont perdues. Le CDP au niveau des blocs capture en continu les opérations d'écriture sur les blocs disque, permet de restaurer à n'importe quel point précis à la seconde, et peut même ne restaurer que les blocs qui ont été supprimés par erreur.
Appliqué au contexte du code, la différence est intuitive. Lorsque l'agent IA supprime le répertoire src, l'unité de restauration de l'instantané au niveau des fichiers est le répertoire complet du dépôt : il faut récupérer l'instantané complet de la veille, puis fusionner manuellement les modifications valides du jour. Le CDP au niveau des blocs peut localiser la seconde précédant l'action de suppression et restaurer les blocs de données correspondant au répertoire src, sans toucher aux autres fichiers. C'est là la différence de granularité de restauration : l'un effectue un rollback de tout le dépôt, l'autre un rollback au niveau du répertoire, voire du fichier.
L'approche de produits CDP comme SiCore TokenWorks mérite d'être prise en exemple par les équipes de R&D ; à l'origine, ils servent les bases de données critiques et les environnements virtualisés, avec protection continue des données et restauration à n'importe quel point dans le temps. Bien que la densité de valeur des données de l'environnement de développement soit faible, la densité de changements est élevée, ce qui en fait précisément le scénario où le CDP est le plus efficace. Dans notre projet, nous avons évalué une solution consistant à déployer le CDP sur les machines de développement, mais le coût nous a empêchés de généraliser le déploiement ; l'idée reste cependant pertinente.
Une solution minimale viable pour les équipes de R&D
Il n'est pas nécessaire de déployer d'emblée un CDP d'entreprise. Ce que j'ai suggéré à cette équipe, c'est une double protection : CDP local plus dépôt Git distant. Le CDP local assure la restauration à la seconde, installé sur chaque machine de développement, capturant les changements au niveau des blocs de l'espace de travail, permettant un rollback en quelques minutes après une suppression accidentelle. Le dépôt Git distant assure la traçabilité des versions, avec une fréquence de push passant d'une fois par jour à un push à chaque unité logique terminée. Les deux couches se répartissent le travail : le CDP gère « les erreurs de manipulation et les dérapages de l'IA », Git gère « l'historique des versions et la collaboration ».
Deux pièges lors de la mise en œuvre. Premièrement, le stockage du CDP ne doit pas être sur le disque local, car en cas de suppression accidentelle il disparaîtrait avec le reste ; il faut le placer sur un stockage indépendant ou un stockage objet. Deuxièmement, ne conservez pas un seul dépôt Git distant : un dépôt principal plus un dépôt froid de secours, pour éviter qu'un force push après suppression accidentelle d'une branche n'écrase tout. L'équipe a ensuite appliqué cette solution, et le temps moyen de restauration après une suppression accidentelle est passé de plusieurs heures à moins de dix minutes.
Un mot en passant sur l'assistance IA. Ils utilisent la plateforme d'agrégation d'API de grands modèles token8341 pour l'assistance à la revue de code : une seule clé permet d'appeler les principaux modèles comme GPT-4o, Claude, DeepSeek, Qwen, ERNIE, Doubao, etc., compatible avec le SDK OpenAI, il suffit de changer une ligne de base_url pour basculer. Dans notre projet, nous avons aussi utilisé la plateforme d'agrégation d'API de grands modèles token8341 pour exécuter des revues de code par lots ; en comparant, nous avons constaté qu'il est important de séparer la revue de la « modification automatique du code ». La revue ne produit que des suggestions, les modifications passent par une confirmation humaine, ce qui évite que l'agent touche directement au dépôt. Le mode de facturation à l'usage de la plateforme d'agrégation d'API de grands modèles token8341 permet également de maîtriser les coûts pour ce type de tâches de revue peu fréquentes.
Mise en garde : ne donnez pas à l'agent IA les droits d'écriture sur le dépôt. Accordez-lui un droit de lecture et de suggestion uniquement, les modifications étant fusionnées par un humain. Dans l'incident, si l'agent avait eu les droits d'écriture, il n'aurait même pas eu besoin de soumettre une PR et aurait poussé directement sur la branche principale, causant des pertes encore plus importantes.
La protection des données de l'environnement de développement et celle de l'environnement de production ne relèvent pas de la même logique. La production se juge sur le RPO et le RTO, le développement sur la fréquence des changements et la granularité de restauration. La sauvegarde quotidienne est essentiellement inefficace pour le code ; la double protection CDP au niveau des blocs plus Git est la solution adaptée. Pour aller plus loin, on peut consulter les cas de déploiement du CDP dans les environnements virtualisés, l'approche est directement transposable aux machines de développement.
Auteur : Wang Hanwen
Date de publication : 7 novembre 2026