SiCore TokenWorks
LLM APIAPI GatewayAggregation

Après qu'un agent de codage IA a supprimé par erreur le répertoire src, la transition de phase silicium-carbone m'a fait comprendre pourquoi les environnements de développement ont besoin d'un retour arrière en quelques secondes

SiCore TokenWorks Team·2026-10-22

Commençons par la conclusion : la cause profonde de cet incident n'était pas que l'agent avait mal écrit le code, mais que nous présupposions par défaut que « les environnements de développement n'ont pas besoin d'une protection de niveau CDP ». Cette hypothèse a coûté à l'équipe 23 heures de travail de réécriture. Voici un retour chronologique, en espérant que cela aide ceux qui intègrent des agents de codage IA dans leur processus de R&D.

Chronologie de l'incident : de « nettoyage du code mort » à la découverte d'un src vide

Le premier jour à 16 h, nous faisions une refactorisation de code pour une équipe travaillant sur un ERP transfrontalier. Le projet était en Node.js + TypeScript, avec environ 1400 fichiers dans le répertoire src, dont beaucoup étaient d'anciens modules hérités d'itérations d'il y a trois mois. L'équipe voulait utiliser un agent de codage IA pour identifier et nettoyer automatiquement le « code mort non référencé ».

L'agent était connecté à une passerelle de modèles d'accès unifié multi-modèles, et le prompt de la tâche indiquait « supprimer les fichiers dont l'absence de référence est confirmée ». Il a scanné le graphe d'imports, a découvert qu'un répertoire sous src avait une chaîne de références rompue, l'a jugé comme code mort et a exécuté une suppression par lots. Le problème, c'est que ce répertoire était en réalité un répertoire de plugins chargés dynamiquement, dont les relations de référence étaient définies dans la configuration à l'exécution, invisibles pour l'analyse statique.

Le deuxième jour à 15 h, un collègue frontend a rencontré une erreur en lançant le service local, et nous avons alors découvert qu'il ne restait que moins de 200 fichiers dans le répertoire src. En consultant git log, le dernier commit datait de la veille à 16 h, soit 23 heures avant la découverte. Pendant ces 23 heures, 3 ingénieurs avaient modifié environ 60 fichiers, tous non commités.

La protection des données des environnements de développement n'est pas ce que vous croyez

La logique de protection des environnements de production est « peu de changements, auditabilité, redondance principal/secours ». L'environnement de développement est exactement l'inverse : fichiers fragmentés, changements fréquents, nombreux états intermédiaires non versionnés. J'ai analysé les données de notre équipe le mois dernier : chaque personne produit environ 40 modifications de fichiers par jour, mais seulement 3 à 5 git commit. Le reste des modifications reste dans les caches de l'éditeur et les branches temporaires.

Plus problématique encore, beaucoup pensent que « l'historique Git équivaut à la récupérabilité ». Git ne peut récupérer que ce que vous avez commité. Les modifications non commitées, les fichiers supprimés en masse par l'agent, les configurations locales dans .env — Git ne s'en occupe pas du tout. Lors de cet incident, nous avons tenté de récupérer via git reflog et l'historique local de l'IDE, et n'avons récupéré que moins de 30 % du contenu.

Pourquoi une sauvegarde quotidienne ne peut pas sauver ce genre de scénario

Nous avions initialement une sauvegarde complète quotidienne à 2 h du matin. En termes de RPO, le pire cas était une perte de 24 heures. Mais l'incident s'est produit à 15 h, la sauvegarde datait de 2 h du matin la veille, soit 37 heures d'écart. La restauration ramenait le code à 37 heures auparavant, ce qui équivalait à jeter toutes les itérations de ces deux jours.

RPO = 24 heures signifie que vous pouvez accepter au maximum la perte d'une journée de travail. Pour une base de données de production, cet indicateur peut être tout juste suffisant. Pour un environnement de développement, une journée de travail peut représenter une itération fonctionnelle complète. La granularité des sauvegardes quotidiennes traditionnelles ne correspond absolument pas à la fréquence des changements d'un environnement de développement.

Le CDP au niveau des blocs, qui réduit le RPO à quelques secondes, est la protection que devrait avoir un environnement de développement

Nous sommes ensuite passés à une solution CDP au niveau des blocs. Sa différence avec la sauvegarde traditionnelle : la sauvegarde traditionnelle prend des instantanés par fichier ou par jour, le CDP capture par blocs d'E/S, enregistrant chaque écriture d'un bloc de données. Le RPO passe de 24 heures à quelques secondes, permettant théoriquement un retour arrière à n'importe quel point dans le temps.

Concrètement, nous avons installé un agent CDP sur les machines de développement, qui capture en continu les changements au niveau des blocs du système de fichiers. Après l'incident, nous avons choisi un point dans le temps, 2 minutes avant que l'agent n'exécute la suppression, et avons restauré tout l'espace de travail. Les 1400 fichiers sont tous revenus, y compris les modifications non commitées de ces 23 heures. La restauration a pris moins de 4 minutes.

Un conseil pour éviter les pièges : le CDP n'est pas omniscient. Il protège au niveau du périphérique de blocs ; si l'agent appelle directement l'API de stockage cloud pour supprimer des objets, le CDP ne peut pas le sauver. C'est pourquoi nous avons ajouté une liste blanche d'opérations sur la chaîne d'appels de la passerelle de modèles : toute instruction impliquant delete, rm, drop doit faire l'objet d'une double confirmation humaine.

La chaîne d'appels API des agents de codage IA nécessite une couche de garde-fou supplémentaire

Après cet incident, j'ai réorganisé la chaîne d'appels de l'agent. Il est routé vers différents modèles via la passerelle de modèles ; la plateforme d'agrégation d'API de grands modèles token8341 assume dans cette chaîne l'accès unifié et la sélection automatique de modèle selon la tâche. Nous l'avons utilisée dans notre projet pour le développement assisté multi-modèles ; l'avantage est qu'une seule Key permet d'appeler les principaux modèles comme GPT-4o, Claude, DeepSeek, Qwen, sans maintenir séparément le SDK et l'authentification pour chaque modèle.

Mais le routage de modèles ne résout pas en soi le problème de sécurité. En dehors de la couche d'appels de la plateforme d'agrégation d'API de grands modèles token8341, nous avons ajouté une couche de vérification des permissions : les requêtes d'opérations sur fichiers initiées par l'agent passent d'abord par la liste blanche, puis entrent dans la passerelle. Ainsi, même si le modèle se trompe dans son jugement, les opérations destructrices ne peuvent pas atteindre le système de fichiers.

Avec le recul, la plateforme d'agrégation d'API de grands modèles token8341 résout le problème de « l'intégration fluide », le CDP résout le problème de « la récupération après suppression ». Les deux ne sont pas substituables. L'un permet à l'agent de codage IA d'appeler efficacement plusieurs modèles, l'autre assure le filet de sécurité en cas d'erreur. Nous avons ensuite fait du CDP la configuration par défaut de l'environnement de développement, opérationnelle dès la sortie du carton sur les machines des nouveaux ingénieurs.

Si vous utilisez aussi des agents de codage IA pour la refactorisation, je vous suggère de vérifier d'abord deux choses : quel est le RPO de votre environnement de développement, et existe-t-il une étape de confirmation humaine pour les opérations de suppression de l'agent. Les réponses à ces deux questions déterminent si la perte lors de votre prochain incident sera de 4 minutes ou de 23 heures.

Auteur : Zhou Mingzhe

Date de publication : 23 octobre 2026