ZivK00 Labs
Tous les systèmes

Routing · garde-fous · receipts

AgentLane

Open source · MIT

Ce qu’il fait

Décide quel outil a le droit d’exécuter une tâche IA, refuse ceux qui n’ont jamais réellement fonctionné, et garde la trace de ce qui a vraiment tourné.

Lire le code sur GitHub

Preuve

Neuf outils entrent. Quatre ressortent.

Le registre passe quatre portes, dans cet ordre : non prouvé, risque élevé, non pertinent, hors liste courte. Deux outils sont refusés alors qu’ils fonctionnent — parce que personne n’a jamais terminé une tâche à travers eux.

Corriger le test qui échoue dans le compilateur

OutilStatut au registreVerdict
read_fileWORKING_END_TO_ENDRetenu
run_testsWORKING_END_TO_ENDRetenu
write_fileWORKING_END_TO_ENDRetenu
git_diffWORKING_END_TO_ENDRetenu
search_filesWORKING_END_TO_ENDHors des quatre premiers
deployWORKING_END_TO_ENDRisque élevé — demande un humain
browser_agentDETECTEDPas prouvé de bout en bout
vector_storeCONFIGUREDPas prouvé de bout en bout
send_emailWORKING_END_TO_ENDAucun rapport avec cette tâche

Reproduit l’ordre publié de selectTools. DETECTED veut dire qu’un binaire a été trouvé, pas qu’un travail y est passé.

Étude de cas

  • 1 425 lignes de source, 635 de tests
  • 65 tests, typecheck strict sans erreur
  • Zéro dépendance runtime
Problème
Un agent qui atteint plusieurs providers, plusieurs niveaux d’effort et plusieurs outils doit trancher quatre questions avant d’agir : quelle voie exécute ce travail, quels outils sont réellement prouvés, la boucle avance-t-elle encore, et qu’est-ce qui a effectivement tourné.
Approche
Douze modules, chacun une fonction pure sur une entrée explicite. Rien n’appelle de modèle, n’écrit de fichier ni n’ouvre de socket — sauf un adaptateur de provider, inclus justement parce que son comportement réseau mérite d’être lu.
Architecture
Un routeur — politique et registre de modèles, sélection d’outils, résolution d’exécuteur, garde anti-boucle — et un cœur : allowlist host et chemin par connecteur MCP, garde anti-injection, receipts d’exécution.
Ce qui a raté
Le détecteur de cycles était une traduction ligne à ligne d’une source Apache-2.0. Découvert en comparant les fichiers amont avant publication, réécrit avec un algorithme différent, et l’histoire est consignée dans le message du premier commit plutôt que discrètement effacée.
Résultat
Deux idées tenues par les types : « détecté » n’est pas « disponible », et « demandé » n’est pas « observé ». Un receipt garde les deux valeurs séparément, donc il prouve ce qui a tourné et non ce qui avait été demandé.
Limites
Ce n’est pas un agent : ni boucle, ni planificateur, ni moteur d’exécution. Ce n’est pas un framework. Et rien n’y est mesuré contre une alternative.

Contact

Un système à rendre contrôlable ?

Ouvert aux postes d’ingénierie, missions et collaborations.

vlad@zivk00-labs.com