Elias Bellouti
EN
← Retour aux projets

Contribution à un logiciel existant

camofox-mcp : navigation web pour agents IA

Un agent qui accède à une page doit encore trouver les bons éléments, agir et comprendre ce qui a changé. Pour mon usage avec Hermès, j’ai adapté l’interface MCP de Camoufox en ajoutant une couche qui interprète des consignes comme « relève les prix ». Mon travail porte sur les outils sémantiques, le routage des modèles, les prompts et le diagnostic des parcours. Le navigateur et son travail contre la détection viennent des projets amont, que je conserve comme base du service.

Fork de redf0x1/camofox-mcp ; couche sémantique, prompts et diagnostics consultables dans le dépôt public.

Un agent donne une consigne, le navigateur interagit avec la page et renvoie les informations trouvées.
Un agent donne une consigne, le navigateur interagit avec la page et renvoie les informations trouvées. Agrandir le visuel ↗

Donner des outils web à mes agents

J’utilise Hermès pour des tâches qui nécessitent de trouver, lire et manipuler des pages web. Certains sites compliquent l’accès automatisé ; une fois la page accessible, l’agent doit encore repérer les bonnes commandes dans une interface parfois dense. J’ai choisi d’étendre camofox-mcp de redf0x1, l’adaptateur qui relie un agent au navigateur Camoufox.

Le moteur de navigation et son empreinte viennent de Camoufox et de camofox-browser. Ma contribution se situe dans l’adaptateur : interprétation des intentions, réponses structurées, contexte de tâche et outils de diagnostic.

Séparer observation, décision et action

Une consigne comme « relève le nom et le prix » passe par une capture de l’état de page, un prompt spécialisé et un modèle de langage. L’outil d’extraction renvoie des données structurées et signale les informations absentes. L’observation propose des éléments pertinents sans agir ; l’action résout une cible puis effectue une interaction.

J’ai conservé une voie déterministe pour les plans dont les références sont déjà connues. Cela permet à l’agent de choisir entre interprétation d’une intention et exécution explicite. Les prompts demandent une seule action, des références issues de la page et aucune saisie inventée. Ils sont stockés séparément du code TypeScript pour pouvoir être ajustés sans modifier les gestionnaires d’outils.

Comprendre ce qui se passe après un clic

Un appel terminé ne dit pas forcément qu’une case a été cochée ou qu’un formulaire a avancé. J’ai organisé le contexte et les consignes de reprise autour du résultat observé : changement d’état, dialogue apparu, alerte ou absence de progression.

Les captures peuvent être recentrées sur une zone et réduites aux éléments utiles. Le contexte d’onglet garde le but de la tâche et les actions récentes. Les consignes de récupération limitent les nouvelles tentatives et demandent de changer un paramètre ou une stratégie. L’objectif est de donner à l’agent de quoi choisir sa prochaine action lorsque le parcours ne suit plus son plan.

Maintenir le service et ses contrats

J’ai ajouté un routeur de modèles avec repli, validation et réparation des réponses JSON. Les profils d’exposition permettent de proposer un ensemble réduit ou complet d’outils au client MCP, le protocole qui relie l’agent au service.

Le contrôle de santé vérifie séparément l’adaptateur et le serveur navigateur : un processus actif peut répondre sans permettre de navigation. J’ai aussi corrigé la restauration des cookies afin qu’une entrée rejetée ne fasse pas échouer toute la session. Les modifications restent intégrées à un fork maintenu avec l’amont. Le dépôt et son architecture détaillent les outils, les prompts et les frontières entre ces composants.

Les compétences mises en pratique

Ingénierie des agents IA

Dans ce fork, j’ai ajouté des outils de navigation pour observer une page, exécuter une intention et extraire des informations pour Hermès.

Tests, évaluation et fiabilité

J’ai ajouté des contrôles du serveur et du navigateur, ainsi que des indications sur le résultat d’une action pour guider la reprise.

← Retour aux projets