Un auditeur en lecture seule pour les journaux d'événements des agents IA — Notes de recherche
Ceci est une traduction. La version de référence est l’original en anglais ; citez celle-ci.
AI-Watchbird-Sheckley est un petit module Python qui lit le journal d'événements d'une exécution multi-agents IA et signale des indices que sa surveillance s'étend, stagne ou détruit le travail. Il n'a aucune autorité : il ne bloque, n'édite ni n'ouvre jamais rien.
Pourquoi auditer la boucle de surveillance elle-même
L'article a examiné les garde-fous existants, les compteurs d'étapes et de budget, et les évaluateurs de modèles-juges le 14 septembre 2026. Aucun des outils dans la documentation publique examinée ne prend la boucle de surveillance elle-même comme unité de mesure. Aucun ne mesure la croissance des contrôles, les cycles au-delà d'un budget défini par les conclusions, un garde dont le verdict ne varie jamais, une victoire sans contrôle négatif, ou un travail partiel détruit à un plafond.
Design : lire, rapporter, ne jamais bloquer
Le module est écrit en Python 3 avec la bibliothèque standard uniquement et sans accès réseau. Il s'installe en tant que paquet ai-watchbird-sheckley et s'exécute en tant que commande du même nom ; audit --json émet un rapport lisible par machine. Il lit le journal des événements d'une exécution et rapporte. Son code de sortie ne dépend pas des signaux qu'il rapporte. Sa liste de signaux est figée, donc ajouter un signal nécessite un jeton d'autorité et un changement de version. Il reste silencieux lors d'une exécution propre, ce qu'un test garantit.
Il fournit également trois règles budgétaires sous forme de fonctions pures qu'un pipeline peut appeler :
- R1,
stop_rule: une ronde de critique et une ronde de corrections par étape. Un bloqueur compte uniquement avec un scénario concret, un lien vers l'objectif de mission déclaré et la confirmation du coordinateur. Elle retournefix_once,close,incompleteoucut, et jamais une nouvelle phase. - R2,
settle_at_ceiling: conserve ce qu'un participant a produit avant un plafond, marqué comme partiel. - R3,
admit_control: admet une nouvelle vérification, ronde, rôle ou porte uniquement avec un jeton d'autorité ; sinon, elle retourne un refus sous forme d'enregistrement.
Neuf signaux pour la supervision multi-agents
La partie mesure rapporte neuf signaux, W1 à W9 : expansion de mandat (une étape non dérivée d'un objectif de mission enregistré), un garde aveugle ou destructeur (un verdict sur 20 décisions ou plus, chaque approbation révoquée, ou une entrée requise manquante), un cliquet de contrôle (des contrôles ajoutés sans jeton d'autorité), une boucle auto-alimentée (des tours au-delà du budget, ou un tour ouvert après un sans bloqueur confirmé), une victoire contrefaite (une victoire sans contrôle négatif ou sonde A/A), construit pour personne (artefacts désactivés par défaut sans appelants), travail partiel détruit, un bloqueur non confirmé pilotant le travail, et une limite sans auteur enregistré.
Testé contre ses propres falsificateurs
Six falsificateurs énoncent comment un déploiement prétendant respecter les règles serait réfuté, par exemple si un deuxième cycle de critique pouvait être planifié sans jeton d'autorité, ou si l'arrêt d'un processus au plafond supprimait sa sortie partielle. Chacun possède un test. Un script de mutation applique dix-huit mutations ciblées ; chacune d'elles fait échouer la suite, et une mutation de contrôle qui n'édite qu'un commentaire la laisse verte.
Sur six journaux de relecture, le contrôle propre et l'étape du matin ne produisent aucun signal. Sur l'exécution long-horizon reconstruite, où les étapes ont réellement exécuté cinq, cinq et un cycles, stop_rule aurait fermé tous les trois au point du budget.
Ce que le module ne fait pas
L'article est direct sur les limites :
- Aucun journal brut n'est entré dans les rejeux. Ils ont été reconstruits à partir de comptages publiés, et « lorsqu'aucun nombre exact n'a été publié, la plus petite valeur plausible est utilisée et marquée ».
- Un signal indique qu'un motif est présent. La cause et la perte se situent en dehors de ce qu'un signal mesure.
- Il ne voit que ce qui est enregistré. Une porte jamais enregistrée, un objectif jamais consigné, et le travail que les gens cessent de tenter parce qu'une garde est présente sont invisibles pour lui.
- Il est numérique et en lecture seule, et ne doit pas envoyer de commandes à un robot, drone, pilote automatique ou actionneur. Un profil incarné est proposé comme format d'événement uniquement.
Le module est lui-même un nouveau contrôle, donc sa propre règle R3 s'y applique en premier. Lorsqu'un portage de celui-ci a été intégré au pipeline de l'auteur, il a été admis avec une condition de retrait, n'a signalé aucun signal sur trois exécutions réelles, et a été supprimé le 15 septembre par une décision humaine datée.
L'exécution
L'Appendice B donne les commandes, exécutées à partir du dossier du module : pip install ., puis ai-watchbird-sheckley audit <log.jsonl> pour un journal d'événements, ai-watchbird-sheckley replay replays/ pour régénérer le tableau de replay, et python3 -m unittest -v pour les tests unitaires et de falsification. Un journal d'événements est un fichier JSON-lines avec un événement par ligne.
L'implémentation de référence, les tests, les journaux de replay et les données du test aléatoire sont archivés sur Zenodo sous le nom AI-Watchbird-Sheckley version 1.1.0 avec le DOI de concept 10.5281/zenodo.22774269, qui résout la version actuelle.
Sections complètes : le module (10), ce qui existe déjà (10.1), conception (10.2), falsificateurs (10.3), replays (10.4), ce que le module ne fait pas (10.5), dans le pipeline de l'auteur (10.6), exécution du module (Appendice B).
Chernets, V. (2026). AI-Watchbird (Sheckley): When Automated Oversight Widens Its Own Mandate and Harms What It Guards. SSRN 7473658. https://doi.org/10.2139/ssrn.7473658
Vadym Chernets construit également Poly A1, une application dans laquelle les IA de différentes entreprises vérifient le travail les unes des autres.