La dérive des coûts des agents IA est la lente croissance de votre plancher d'entrée (invite système, schémas d'outils, CLAUDE.md, serveurs MCP) qu'une ligne de base mobile ne rattrape jamais, car la ligne de base grimpe avec elle.drift_anchor_gate.pyépingle un canari congelé au jour 0 et compare : une dérive de 0,35 %/jour n'a déclenché aucune alarme en 60 jours ; l'ancre l'a bloqué le jour 9.
Le tableau de bord de votre flotte se déclenche lorsque la moyenne d'aujourd'hui dépasse de 20 % celle de la semaine dernière. Votre plancher de contexte augmente de 0,35 % par jour. Ces deux chiffres ne se rencontrent jamais. J'ai construit six mondes de 60 jours et j'ai fait fonctionner quatre détecteurs roulants dessus, chacun au seuil le plus strict qui reste silencieux sur une flotte plate, et la lente progression n'a déclenché aucune alarme dans les quatre, sur 60 jours, tandis que le plancher a augmenté de 22,6 pour cent. Une ancre gelée a attrapé le même phénomène le 9ème jour.
Divulgation de l'IA : j'ai écrit
drift_anchor_gate.pyetmake_worlds.pyavec un assistant IA et je les ai exécutés moi-même : Python 3.13.5, hors ligne, bibliothèque standard uniquement, pas de réseau, pas de clés. Chaque numéro, code de sortie et sha256 ci-dessous est collé à partir d'une véritable exécution locale. J'ai exécuté toute la démo deux fois à partir d'un nettoyagemondes rm -rf, et les deuxsortie.txtles fichiers sont identiques octet par octet (sha256 1772e695cb75f79d9e3f162ed4c49477a329703610cdf5ddff54cec2cc4da62a). Les séries sont synthétiques, et je dis exactement comment elles sont générées ci-dessous. La seule chose qui n’est pas synthétique est l’arithmétique, et c’est la partie qui fait le travail.
En bref:
wtir au ratioTje ne vois aucune croissance quotidienne uniforme ci-dessousg* = T^(2/w) - 1. Pourw=7, T=1,20cela représente 5,35 pour cent par jour. La véritable dérive du contexte s'élève à un dixième de cela.diff-rqn'imprime rien,git diffn'imprimerait rien), le vendeur a doucement heurté l'échafaudage du harnais, les détecteurs à fenêtre courte du tableau de bord de la flotte sont restés silencieux (la longue fenêtre s'est déclenchée une fois, le jour 58 - avec 46 jours de retard), et l'ancre s'est bloquée le jour 12 avec la croissance attribuée àvendeur : +2600 B.Le 13 juillet, Dipankar Sarkar a répondu à mon message sur les journaux d'utilisation qui rapportent zéro jeton pour le texte livré avec une forte correction. Son argument : une augmentation du tokenizer du fournisseur et une suppression réelle semblent identiques si vous ne surveillez qu'un seuil, donc l'homonymie doit être la population, pas le seuil. "Donc, la condition de bloc n'est pas" un delta élargi au-delà de X ", mais" le delta de ce flux a divergé de celui de la flotte ", une anomalie par flux par rapport à une ligne de base mobile de tous les autres."
Il a raison et je l'ai dit. Ensuite, j'ai argumenté sur ce qui est devenu cet article : une ligne de base mobile s'adapte, donc tout ce qui croît plus lentement que la fenêtre d'adaptation ne s'écarte jamais de la flotte. Il accompagne la flotte avec lui. Grenouille bouillante. Ce dont vous avez besoin, c'est d'une deuxième ancre gelée à une date connue, et pour un développeur solo sans flotte, une requête Canary avec entrée déterministe représente une population d'un.
Et puis j'ai terminé mon propre commentaire par ceci :
"Pour être honnête sur le statut, il s'agit d'un argument de conception et non de quelque chose que j'ai mesuré. J'ai exécuté le plancher re-tokenisé. Je n'ai pas fait de discrimination entre flotte et canari."
C'était il y a deux jours. Ce message, c'est moi qui paie ça. Le domaine a bougé (je mesure la dérive du coût des intrants, pas la suppression de l'utilisation) mais la structure de la question est la même que celle sur laquelle Dipankar et moi disputions : une ligne de base construite à partir de votre propre histoire récente peut-elle voir quelque chose qui fait bouger votre propre histoire récente ?
Cette partie n'est pas une découverte. C'est un dérivé, et cela vaut la peine de le faire sur papier avant de toucher un appareil, car il vous indique ce que la mesure est autorisée à trouver.
Une fenêtre glissante se compare aujourd'hui à une référence construite à partir du précédentwjours. Cette ligne de base est approximativement centréeavec 2il y a quelques jours. Sous croissance quotidienne uniformeg, le niveau actuel par rapport au niveau de référence est d'environ(1+g)^(avec/2). L'alarme se déclenche lorsque ce rapport dépasse le seuilT. Résoudre pourg:
g* = T^(2/w) - 1Toute croissance plus lente queg*est invisible pour toujours. Pas « pendant un moment ». Le rapport calculé par le détecteur cesse d'augmenter, car la ligne de base augmente au même rythme que le signal. Voici ce que l'outil imprime avant d'avoir lu un seul octet de données :
seuil de fenêtre invisible en dessous des composés à, sur 30 jours se=7 T=1,15 4,07%/jour x3,31 se=7 T=1,20 5,35%/jour x4,77 se=14 T=1,20 2,64%/jour x2,18 se=28 T=1,20 1,31%/jour x1,48 se=28 T=1,10 0,68%/jour x1,23Read the right-hand column. Une fenêtre de sept jours à un seuil de 20 % ne permet pas de détecter toute dérive qui multiplie le coût de vos intrants par 4,77 sur un mois. That is the prediction. La mesure n'est pas une formule, c'est la question de savoir où se situe le véritable glissement du contexte par rapport à cette bande, et si vous pouvez choisir unTsuffisamment bas pour le fermer sans que l'alarme ne retentisse tous les mardis.
Soixante jours. Quarante courses par jour, fixes. J'ai volontairement corrigé le nombre de courses : le trafic variable ajoute du bruit à une moyenne quotidienne, et le bruit est ce qui augmente le seuil du tableau de bord...
[Courte citation de 8% de l'article original]