Utiliser Ferret
Envoyer aux agents
Lancez votre agent de code dans le terminal intégré et confiez-lui une relecture en un clic. Claude Code et Codex sont les exemples habituels, mais tout agent de la liste ci-dessous fonctionne, de même qu'une CLI que vous ajoutez vous-même. Vous pouvez aussi copier l'instruction pour un agent qui tourne ailleurs, ou publier la relecture sur GitHub.
#Relire les remarques
Chaque carte de l'onglet Remarques permet :
- de modifier directement le titre et la demande
- de basculer entre Envoyer et Ne pas envoyer
- Voir l'enregistrement (se place à ce moment-là) et Remplacer l'image (choisir une autre image de la vidéo)
- Valider / Marquer « À vérifier », Fusionner avec la suivante, Supprimer
Filtrer par avancement affiche ou masque les remarques selon leur statut (par exemple Seulement celles qui attendent votre relecture) ; Tout afficher retire le filtre.
L'en-tête contient Annuler, Ouvrir le dossier, Copier pour l'agent, Envoyer vers GitHub / GitLab, Organiser et Envoyer à l'agent. Les paroles qui ne sont pas devenues des remarques sont listées sous Paroles exclues, où Restaurer en remarque les récupère.
#Lancer des agents dans le terminal intégré
À l'ouverture d'un projet, Ferret ouvre un onglet de terminal par agent choisi dans Réglages → Agents → Démarrer à l'ouverture d'un projet, dans le dossier du projet et dans le mode normal de l'agent. Par défaut, ce sont Claude Code et Codex :
claude
codex
Vous pouvez choisir à la place n'importe quels agents de la liste des agents pris en charge (ils démarrent dans l'ordre où vous les choisissez), ou aucun.
Les demandes d'autorisation restent actives
Enregistrer ou cloner un projet ne fait pas que Ferret lui fasse confiance. Des agents comme Claude Code et Codex demandent la première fois si vous faites confiance au dossier, et continuent de demander avant de modifier des fichiers ou d'exécuter des commandes. Pour permettre aux agents d'ignorer les demandes d'autorisation, les validations et la sandbox dans un projet de confiance, activez l'option pour ce projet sous Réglages → Agents → Ignorer les demandes d'autorisation et confirmez. Ferret ajoute l'option d'ignorance propre à chaque agent lorsqu'elle est connue ; les agents sans option connue gardent leurs demandes. Cela ne s'applique alors qu'aux agents que vous ouvrez vous-même dans le dossier de ce projet ; les agents démarrés à l'ouverture du projet gardent toujours leurs demandes. Les options d'ignorance des autorisations saisies dans les arguments sont ignorées.
Si aucun agent n'est sélectionné, un shell simple s'ouvre. Le menu + ouvre un Nouveau terminal, lance l'un de vos agents dans un nouvel onglet ou mène à Réglages des agents…. Son champ de recherche trouve aussi les onglets, les URL enregistrées et les fichiers.
Les onglets affichent l'état de l'agent : En cours, En attente d'une saisie, Terminé (non lu), Inactif. Dans la barre latérale, un projet où un agent tourne est signalé : vous le voyez sans changer de projet.
Faire glisser pour diviser. Faites glisser un onglet, ou un panneau par sa poignée (affichée dès qu'un onglet est divisé), et déposez-le :
- sur le quart extérieur d'un bord de panneau : Diviser à gauche / Diviser à droite / Diviser en haut / Diviser en bas
- au centre d'un panneau : Ouvrir dans un onglet (un panneau quitte sa division et devient son propre onglet)
- sur la fine bande qui entoure toute la zone du terminal : Diviser toute la zone à gauche, etc. (lorsqu'il y a au moins 2 panneaux)
- sur la barre d'onglets : Placer ici comme onglet
Les processus continuent de tourner pendant le déplacement, et un onglet laissé vide se ferme. Divisions au clavier :
| Action | macOS | Windows / Linux |
|---|---|---|
| Nouveau terminal | ⌘T | CtrlT |
| Diviser à droite | ⌘D | CtrlShiftD |
| Diviser en bas | ⌘⇧D | AltShiftD |
| Fermer le panneau / l'onglet | ⌘W | CtrlW |
#Agents pris en charge
Ferret n'est pas lié à un seul agent. Il reconnaît les agents de code ci-dessous : il peut les démarrer, les détecter dans un terminal pour Envoyer à l'agent et indiquer s'ils sont installés. Réglages → Agents les liste avec Installé / Introuvable, un bouton Installer lorsque l'éditeur publie un installeur en une ligne, ainsi que la commande et les arguments de chacun.
- Claude Code (s'ouvre dans un nouvel onglet)
claude - Codex (s'ouvre dans un nouvel onglet)
codex - Gemini CLI (s'ouvre dans un nouvel onglet)
gemini - Cursor (s'ouvre dans un nouvel onglet)
agent - GitHub Copilot (s'ouvre dans un nouvel onglet)
copilot - Devin (s'ouvre dans un nouvel onglet)
devin - OpenCode (s'ouvre dans un nouvel onglet)
opencode - Amp (s'ouvre dans un nouvel onglet)
amp - Droid (s'ouvre dans un nouvel onglet)
droid - Kiro (s'ouvre dans un nouvel onglet)
kiro-cli chat - Aider (s'ouvre dans un nouvel onglet)
aider - Ante (s'ouvre dans un nouvel onglet)
ante - Antigravity (s'ouvre dans un nouvel onglet)
agy - Auggie (s'ouvre dans un nouvel onglet)
auggie - Autohand Code (s'ouvre dans un nouvel onglet)
autohand - BLACKBOX CLI (s'ouvre dans un nouvel onglet)
blackbox - Cline (s'ouvre dans un nouvel onglet)
cline - CodeBuddy (s'ouvre dans un nouvel onglet)
codebuddy - Codebuff (s'ouvre dans un nouvel onglet)
codebuff - Command Code (s'ouvre dans un nouvel onglet)
command-code --trust - Continue (s'ouvre dans un nouvel onglet)
cn - Charm (Crush) (s'ouvre dans un nouvel onglet)
crush - DeepSeek Harness (s'ouvre dans un nouvel onglet)
dsh tui - ForgeCode (s'ouvre dans un nouvel onglet)
forge - Freebuff (s'ouvre dans un nouvel onglet)
freebuff - Goose (s'ouvre dans un nouvel onglet)
goose session - Grok (s'ouvre dans un nouvel onglet)
grok - Hermes Agent (s'ouvre dans un nouvel onglet)
hermes --tui - Junie CLI (s'ouvre dans un nouvel onglet)
junie - Kilocode (s'ouvre dans un nouvel onglet)
kilo - Kimi (s'ouvre dans un nouvel onglet)
kimi - Letta Code (s'ouvre dans un nouvel onglet)
letta - MiMo Code (s'ouvre dans un nouvel onglet)
mimo - Mistral Vibe (s'ouvre dans un nouvel onglet)
vibe - Muse (s'ouvre dans un nouvel onglet)
muse --trust-workspace - oh-my-pi (s'ouvre dans un nouvel onglet)
omp - OpenClaude (s'ouvre dans un nouvel onglet)
openclaude - OpenClaw (s'ouvre dans un nouvel onglet)
openclaw chat - OpenHands CLI (s'ouvre dans un nouvel onglet)
openhands - Pi (s'ouvre dans un nouvel onglet)
pi - Prime Agent (s'ouvre dans un nouvel onglet)
prime-agent - Qoder CLI (s'ouvre dans un nouvel onglet)
qoder - Qwen Code (s'ouvre dans un nouvel onglet)
qwen - Roo Code CLI (s'ouvre dans un nouvel onglet)
roo - Rovo Dev (s'ouvre dans un nouvel onglet)
acli rovodev run - Trae CLI (s'ouvre dans un nouvel onglet)
traecli - ZCode (s'ouvre dans un nouvel onglet)
zcode
Absent de la liste ? Réglages → Agents → Ajouter un agent personnalisé enregistre n'importe quelle CLI ou script d'enrobage (un nom, une commande et, facultativement, le nom de processus servant à le reconnaître), ou ajoutez-le à agents.customAgents dans settings.json. Les agents qui tournent en dehors de Ferret peuvent utiliser Copier pour l'agent.
Quelques fonctions dépendent de l'agent et sont pour l'instant limitées à Claude Code et Codex :
- Comptes et utilisation : le passage d'une connexion à l'autre et l'indicateur de limite d'utilisation dans le pied de page.
- Organiser : s'exécute avec votre connexion Claude Code ou Codex, ou avec une API de LLM que vous configurez.
#Envoyer à l'agent / Copier pour l'agent
- Cliquez sur Envoyer à l'agent. Par défaut (Auto (onglet actuel ou agent en cours)), l'envoi part vers l'agent de l'onglet de terminal actuel, ou vers un agent en cours d'exécution. Utilisez la flèche à côté du bouton (Choisir l'agent destinataire) pour choisir un agent ou un onglet précis.
- Ferret écrit l'instruction dans la saisie de l'agent et la valide. Suivez l'avancement dans le terminal.
Si aucun agent ne tourne, Ferret en démarre un d'abord et envoie dès qu'il est prêt. Rien n'est envoyé tant que l'agent attend une réponse à une demande d'autorisation : répondez d'abord dans le terminal.
Copier pour l'agent place la même instruction dans le presse-papiers pour un agent qui tourne ailleurs (un autre terminal, un IDE ou une application). Seules les remarques réglées sur Envoyer sont concernées. La vidéo n'est jamais incluse.
#Vérification d'acceptation avec un modèle de décision
Activez cette option et votre agent de code vérifie son propre travail par rapport à chaque remarque avant d'annoncer Terminé. Ferret ne juge rien lui-même : il fournit à l'agent un modèle de décision (n'importe quelle API compatible System One) et lui demande, dans feedback.md, de boucler jusqu'à ce que chaque remarque passe.
- L'agent implémente les remarques.
- Pour chaque remarque, il prend une capture d'écran APRÈS (même viewport et même état de la page que l'image AVANT) et envoie au modèle de décision une requête avec le texte de la remarque, sa ligne « Terminé quand » et les images AVANT/APRÈS.
- Une remarque passe lorsque P(done) atteint au moins le seuil (0,7 par défaut) et que le choix est
done. L'agent corrige le reste et rejuge toutes les remarques à chaque tour, et ne s'arrête que lorsque toutes passent dans le même tour, ou pour une raison légitime qu'il doit indiquer : l'API est injoignable, une remarque est hors périmètre, ou une remarque reste bloquée avec des scores inchangés. - La liste finale Terminé / Non terminé indique les scores de chaque remarque et le nombre de tours.
Configurez-le dans Réglages → Modèle de décision et activez Ajouter la vérification par modèle de décision aux instructions de l'agent. Les préréglages ne font que remplir les champs ; chaque champ reste modifiable, et Personnalisé fonctionne avec n'importe quelle API compatible.
| Préréglage | URL de requête | Modèles | Clé |
|---|---|---|---|
| Ollama (par défaut) | http://localhost:11434/v1/systemone | clef-flash, clef (lisent les images) ; nimble, tev1 (texte uniquement) | aucune, gratuit |
| Cloudflare Workers AI | https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/cloudflare/{model} | clef-flash, clef (lisent les images) | CLOUDFLARE_API_TOKEN (autorisation Workers AI) ; ID de compte depuis le champ ou CLOUDFLARE_ACCOUNT_ID |
| Vercel AI Gateway | https://ai-gateway.vercel.sh/typesafe/v1/systemone | typesafe-ai/jev, convaiinnovations/laya (texte uniquement) | AI_GATEWAY_API_KEY |
| TypeSafe | https://api.typesafe.ai/v1/systemone | jev-latest, jev-preview (texte uniquement) | TYPESAFE_API_KEY |
| Personnalisé | n'importe quelle URL complète | n'importe lequel | Bearer, un en-tête personnalisé ou aucune ; en-têtes supplémentaires autorisés |
Pour Ollama, installez-le (0.35.1 ou ultérieur pour Clef / Clef Flash) et téléchargez le modèle dans un terminal. Ferret n'exécute pas d'installeur :
ollama pull clef-flash
Les clés proviennent du champ de clé (enregistré avec vos autres clés d'API), d'une variable d'environnement que vous nommez (l'environnement de l'application, le .env du projet ou ~/.ferret/.env), ou de apiKey dans settings.json. Les en-têtes supplémentaires peuvent lire des valeurs dans des variables d'environnement avec ${VAR}.
Comment la clé reste hors des prompts
Les agents ne voient jamais votre clé. Ferret exécute un relais local sur 127.0.0.1 et fournit à chaque terminal FERRET_DECISION_URL (le relais, avec un jeton propre à chaque terminal), FERRET_DECISION_MODEL et FERRET_DECISION_IMAGES (pendant une version, les anciens noms MOVIE_ADE_DECISION_* sont aussi définis). Le relais ajoute la clé et les en-têtes et transmet la requête sans la modifier : les prompts, feedback.md et les transcriptions des agents ne contiennent donc aucun secret. Les terminaux ouverts après une modification des réglages en tiennent compte.
Cloudflare diffère de la documentation System One sur deux points (vérifiés sur l'API réelle) : les images doivent être des data URI (data:image/jpeg;base64,…, sinon erreur 422 « image must be an embedded base64 data URI »), et la réponse est enveloppée sous la forme { "result": { … }, "success": true } (les erreurs reviennent sous la forme { "success": false, "errors": [ … ] }). Le préréglage Cloudflare règle Encodage des images sur data URI, les agents le reçoivent via FERRET_DECISION_IMAGE_FORMAT, et les instructions leur demandent de lire .result lorsqu'il est présent. Le relais transmet les deux sens sans modification. Pour utiliser une Global API Key au lieu d'un jeton d'API, réglez Authentification sur Sans clé et ajoutez les en-têtes X-Auth-Email: ${CLOUDFLARE_EMAIL} et X-Auth-Key: ${CLOUDFLARE_API_KEY}.
Seuls Clef et Clef Flash lisent les images. Avec un modèle texte uniquement, désactivez Envoyer les images AVANT/APRÈS ; l'agent juge alors à partir du texte seul, ce qui est moins fiable.
Ollama et les images volumineuses
Ollama 0.35.0 limite les requêtes /v1/systemone à 64 Kio : les requêtes avec des captures d'écran échouent donc avec une erreur HTTP 413. Les instructions demandent à l'agent de réduire les deux images à 1024 px de large au maximum, en JPEG (qualité d'environ 70). S'il obtient encore une erreur 413, mettez Ollama à jour en 0.35.1 ou ultérieur, ou passez à Cloudflare Workers AI.
#Utilisation de l'API dans le pied de page
Les appels au modèle de décision passent par le relais, ce qui permet à Ferret de les compter. L'élément du pied de page situé à côté de l'indicateur d'utilisation de l'agent affiche le modèle de décision ainsi que les appels, les jetons et le coût du jour (par exemple clef-flash · 42 calls · 18.3k tok). Cliquez dessus pour voir le jour, le mois, le détail par projet, par modèle et par type (décision / transcription / organisation), ainsi que les 50 derniers appels.
Le coût n'apparaît que si l'API le communique (c'est le cas de Vercel AI Gateway) ou si vous définissez des prix par million de jetons dans Réglages → Modèle de décision ; sinon « — » s'affiche. Seules les métadonnées sont journalisées (heure, projet, modèle, statut, latence, taille, nombre d'images, jetons, coût), jamais les images, le texte ni les clés, dans ~/.ferret/usage/decision-YYYY-MM.jsonl, un fichier par mois.
#Personnaliser l'instruction
Modifiez Réglages → Agents → Instructions pour l'agent. Deux variables sont remplacées :
| Variable | Remplacée par |
|---|---|
{{path}} | Chemin absolu de feedback.md |
{{relpath}} | Chemin relatif au projet : .ferret/reviews/<id>/feedback.md |
Laissez le champ vide pour utiliser l'instruction par défaut. La longueur maximale est de 2000 caractères, et Réinitialiser les instructions rétablit l'instruction par défaut. Exemple :
Read {{relpath}} and the PNGs next to it. Fix only findings marked to send, one commit per finding, then run the tests.
Le réglage est stocké sous agentPrompt dans settings.json.
#Envoyer vers GitHub ou GitLab (Issue / commentaire de PR ou de MR)
Envoyer sur GitHub publie la relecture sous forme de nouvelle Issue ou de commentaire sur l'une de vos pull requests ouvertes. L'authentification est déléguée à la GitHub CLI (s'ouvre dans un nouvel onglet). Ferret ne lit ni ne stocke jamais de jeton.
- Installez
gh:brew install gh(macOS),winget install --id GitHub.cli(Windows), ou consultez cli/cli (s'ouvre dans un nouvel onglet). - Réglages → GitHub / GitLab → Se connecter dans le terminal exécute
gh auth login --web -h github.comdans le terminal intégré. - Cliquez sur Envoyer sur GitHub, choisissez Créer une nouvelle Issue ou une PR, et relisez le Titre et le Corps (modifiables).
- Cochez la case de confirmation, puis Créer l'Issue ou Publier le commentaire.
Détails :
- Le dépôt est déterminé par
git remote get-url origin. - Ferret exécute
gh issue create --repo … --title … --body-file -ough pr comment <n> --repo … --body-file -. - Le corps est le
feedback.mdsans les lignes d'image (les images ne sont pas envoyées), jusqu'à 60 000 caractères. - Les PR proposées sont vos propres PR ouvertes (jusqu'à 30).
Si GH_TOKEN ou GITHUB_TOKEN est défini, gh l'utilise en priorité, et le panneau des réglages vous en avertit.
GitLab. Lorsque origin est un projet GitLab (gitlab.com ou une instance GitLab autogérée), le même bouton envoie vers GitLab via la GitLab CLI (s'ouvre dans un nouvel onglet) (glab) : une nouvelle Issue, ou un commentaire sur l'une de vos merge requests ouvertes. Connectez-vous depuis Réglages → GitHub / GitLab, qui exécute glab auth login (avec --hostname pour une instance GitLab autogérée) dans le terminal intégré. Ferret ne lit ni ne stocke jamais le jeton, et vous avertit lorsque GITLAB_TOKEN est défini.
Demande d'étoile. Après votre premier Envoyer à l'agent, puis lorsque vous atteignez 3, 10 et 30 relectures terminées, Ferret peut vous proposer de lui mettre une étoile sur GitHub. Il le demande au maximum 3 fois, à au moins 3 jours d'intervalle, et jamais pendant un enregistrement. Mettre une étoile sur GitHub ajoute l'étoile via votre propre connexion gh (ou ouvre GitHub si gh n'est pas disponible), et Ne plus demander arrête ces demandes. Vous pouvez aussi mettre une étoile depuis Aide → Mettre une étoile à Ferret sur GitHub.
#Installer les outils CLI et s'y connecter
Réglages → Outils CLI liste les outils en ligne de commande dont vos agents ont souvent besoin, indique ceux qui sont installés et leur version, et exécute dans un nouvel onglet de terminal la commande officielle d'installation ou de connexion pour votre OS :
- Hébergement Git :
gh,glab - IA et modèles : Ollama, Cloudflare
wrangler - Déploiement : Vercel, Netlify, Fly.io, Railway, Heroku
- Cloud et services : Supabase, Firebase, Stripe, Google Cloud (
gcloud), AWS, Azure, Docker
Lorsqu'un outil n'a pas d'installeur officiel en une ligne pour votre OS, Documentation ouvre sa page d'installation à la place. La liste refait sa vérification d'elle-même une fois l'installation terminée.
Aider à traduire cette page sur GitHub (s'ouvre dans un nouvel onglet)