Outils du système de fichiers Qwen Code
Qwen Code fournit une suite complète d’outils pour interagir avec le système de fichiers local. Ces outils permettent au modèle de lire, écrire, lister, rechercher et modifier des fichiers et des répertoires, entièrement sous votre contrôle, et généralement avec une confirmation pour les opérations sensibles.
[!note]
Tous les outils du système de fichiers s’exécutent dans unrootDirectory(généralement le répertoire de travail courant depuis lequel vous avez lancé l’interface en ligne de commande) à des fins de sécurité. Les chemins que vous fournissez à ces outils doivent généralement être absolus ou sont résolus relativement à ce répertoire racine.
1. list_directory (Lister les fichiers)
list_directory liste les noms des fichiers et sous-répertoires situés directement dans un chemin de répertoire spécifié. Il peut éventuellement ignorer les entrées correspondant à des motifs glob fournis.
- Nom de l’outil :
list_directory - Nom d’affichage : Lister les fichiers
- Fichier :
ls.ts - Paramètres :
path(chaîne de caractères, requis) : Le chemin absolu du répertoire à lister.ignore(tableau de chaînes de caractères, facultatif) : Une liste de motifs glob à exclure de la liste (par exemple,["*.log", ".git"]).respect_git_ignore(booléen, facultatif) : Indique si les motifs définis dans.gitignoredoivent être respectés lors de la liste des fichiers. Valeur par défaut :true.
- Comportement :
- Renvoie une liste des noms de fichiers et de répertoires.
- Indique si chaque entrée est un répertoire.
- Trie les entrées en plaçant d’abord les répertoires, puis effectue un tri alphabétique.
- Sortie (
llmContent) : Une chaîne de caractères telle que :Liste des éléments du répertoire /chemin/vers/votre/dossier :\n[DIR] sous-dossier1\nfichier1.txt\nfichier2.png - Confirmation : Non
2. read_file (ReadFile)
read_file lit et renvoie le contenu d’un fichier spécifié. Cet outil gère les fichiers texte ainsi que les fichiers multimédias (images, PDF, audio, vidéo) dont la modalité est prise en charge par le modèle actuel. Pour les fichiers texte, il peut lire des plages de lignes spécifiques. Les fichiers multimédias dont la modalité n’est pas prise en charge par le modèle actuel sont rejetés avec un message d’erreur explicite. Les autres types de fichiers binaires sont généralement ignorés.
- Nom de l’outil :
read_file - Nom affiché : ReadFile
- Fichier :
read-file.ts - Paramètres :
path(chaîne de caractères, requis) : Le chemin absolu du fichier à lire.offset(nombre, facultatif) : Pour les fichiers texte, le numéro de ligne (indexé à partir de zéro) à partir duquel commencer la lecture. Nécessite quelimitsoit également défini.limit(nombre, facultatif) : Pour les fichiers texte, le nombre maximal de lignes à lire. Si omis, lit un maximum par défaut (par exemple, 2000 lignes) ou l’intégralité du fichier si cela est possible.
- Comportement :
- Pour les fichiers texte : Renvoie le contenu. Si
offsetetlimitsont utilisés, ne renvoie que cette portion de lignes. Indique clairement si le contenu a été tronqué en raison d’une limite sur le nombre de lignes ou sur la longueur des lignes. - Pour les fichiers multimédias (images, PDF, audio, vidéo) : Si la modalité du fichier est prise en charge par le modèle actuel, renvoie le contenu sous forme d’un objet
inlineDataencodé en base64. Si la modalité n’est pas prise en charge, renvoie un message d’erreur accompagné de recommandations (par exemple, suggestions de compétences ou d’outils externes). - Pour les autres fichiers binaires : Tente de les identifier et de les ignorer, en renvoyant un message indiquant qu’il s’agit d’un fichier binaire générique.
- Pour les fichiers texte : Renvoie le contenu. Si
- Sortie : (
llmContent)- Pour les fichiers texte : Le contenu du fichier, éventuellement précédé d’un message de troncature (par exemple,
[Contenu du fichier tronqué : affichage des lignes 1 à 100 sur 500 lignes au total…]\nContenu réel du fichier…). - Pour les fichiers multimédias pris en charge : Un objet contenant
inlineData, avec les champsmimeTypeetdataencodé en base64 (par exemple,{ inlineData: { mimeType: 'image/png', data: 'chaîneencodéeenbase64' } }). - Pour les fichiers multimédias non pris en charge : Une chaîne de caractères décrivant l’absence de prise en charge de cette modalité par le modèle actuel, accompagnée de suggestions d’alternatives.
- Pour les autres fichiers binaires : Un message tel que
Impossible d’afficher le contenu du fichier binaire : /chemin/vers/data.bin.
- Pour les fichiers texte : Le contenu du fichier, éventuellement précédé d’un message de troncature (par exemple,
- Confirmation : Aucune.
3. write_file (WriteFile)
La fonction write_file écrit du contenu dans un fichier spécifié. Si le fichier existe déjà, il est écrasé. Si le fichier n’existe pas, celui-ci (ainsi que tous les répertoires parents nécessaires) est créé.
- Nom de l’outil :
write_file - Nom affiché : WriteFile
- Fichier :
write-file.ts - Paramètres :
file_path(chaîne de caractères, requis) : Le chemin absolu du fichier à écrire.content(chaîne de caractères, requis) : Le contenu à écrire dans le fichier.
- Comportement :
- Écrit le
contentfourni au cheminfile_path. - Crée les répertoires parents s’ils n’existent pas.
- Écrit le
- Résultat (
llmContent) : Un message de réussite, par exempleFichier écrasé avec succès : /chemin/vers/votre/fichier.txtouFichier nouvellement créé et écrit avec succès : /chemin/vers/nouveau/fichier.txt. - Confirmation : Oui. Affiche un diff des modifications et demande l’approbation de l’utilisateur avant d’écrire.
4. glob (Glob)
glob recherche les fichiers correspondant à des motifs glob spécifiques (par exemple, src/**/*.ts, *.md) et renvoie leurs chemins absolus triés par date de modification (le plus récent en premier).
- Nom de l’outil :
glob - Nom d’affichage : Glob
- Fichier :
glob.ts - Paramètres :
pattern(chaîne de caractères, requis) : Le motif glob à faire correspondre (par exemple,"*.py","src/**/*.js").path(chaîne de caractères, facultatif) : Le répertoire dans lequel effectuer la recherche. Si non spécifié, le répertoire de travail actuel est utilisé.
- Comportement :
- Recherche les fichiers correspondant au motif glob dans le répertoire spécifié.
- Renvoie une liste de chemins absolus, triée avec les fichiers les plus récemment modifiés en premier.
- Prend en compte par défaut les motifs définis dans les fichiers
.gitignoreet.qwenignore. - Limite les résultats à 100 fichiers afin d’éviter un débordement de contexte.
- Sortie (
llmContent) : Un message tel que :5 fichier(s) trouvé(s) correspondant à "*.ts" dans /chemin/vers/repertoire/de/recherche, triés par date de modification (le plus récent en premier) :\n---\n/chemin/vers/fichier1.ts\n/chemin/vers/sous-repertoire/fichier2.ts\n---\n[95 fichiers tronqués] ... - Confirmation : Non.
5. grep_search (Grep)
La fonction grep_search recherche un motif d’expression régulière dans le contenu des fichiers d’un répertoire spécifié. Elle permet de filtrer les fichiers à l’aide d’un motif glob. Elle renvoie les lignes contenant des correspondances, accompagnées de leur chemin de fichier et de leur numéro de ligne.
-
Nom de l’outil :
grep_search -
Nom affiché : Grep
-
Fichier :
grep.ts(avecripGrep.tscomme solution de secours) -
Paramètres :
pattern(chaîne de caractères, requis) : Le motif d’expression régulière à rechercher dans le contenu des fichiers (par exemple"function\\s+myFunction","log.*Error").path(chaîne de caractères, facultatif) : Fichier ou répertoire dans lequel effectuer la recherche. Par défaut, le répertoire de travail courant.glob(chaîne de caractères, facultatif) : Motif glob permettant de filtrer les fichiers (par exemple"*.js","src/**/*.{ts,tsx}").limit(nombre, facultatif) : Limite le résultat aux N premières lignes correspondantes. Facultatif — affiche toutes les correspondances si non spécifié.
-
Comportement :
- Utilise ripgrep pour une recherche rapide lorsqu’il est disponible ; sinon, se rabat sur une implémentation JavaScript de recherche.
- Renvoie les lignes correspondantes avec leurs chemins de fichier et numéros de ligne.
- Insensible à la casse par défaut.
- Prend en compte les motifs définis dans les fichiers
.gitignoreet.qwenignore. - Limite la sortie afin d’éviter un débordement de contexte.
-
Sortie (
llmContent) : Une chaîne de caractères formatée listant les correspondances, par exemple :Trouvé 3 correspondances pour le motif "myFunction" dans le chemin "." (filtre : "*.ts") : --- src/utils.ts:15:export function myFunction() { src/utils.ts:22: myFunction.call(); src/index.ts:5:import { myFunction } from './utils'; --- [0 lignes tronquées] ... -
Confirmation : Non
Exemples de grep_search
Rechercher un motif avec la limitation par défaut du nombre de résultats :
grep_search(pattern="function\\s+myFunction", path="src")Rechercher un motif avec une limitation personnalisée du nombre de résultats :
grep_search(pattern="function", path="src", limit=50)Rechercher un motif avec filtrage des fichiers et limitation personnalisée du nombre de résultats :
grep_search(pattern="function", glob="*.js", limit=10)6. edit (Modifier)
edit remplace du texte dans un fichier. Par défaut, il exige que old_string corresponde à un emplacement unique et précis ; définissez replace_all sur true si vous souhaitez délibérément remplacer toutes les occurrences. Cet outil est conçu pour des modifications précises et ciblées, et nécessite un contexte important autour de old_string afin de garantir qu’il modifie bien l’emplacement souhaité.
-
Nom de l’outil :
edit -
Nom affiché : Modifier
-
Fichier :
edit.ts -
Paramètres :
-
file_path(chaîne de caractères, requis) : Le chemin absolu du fichier à modifier. -
old_string(chaîne de caractères, requis) : Le texte littéral exact à remplacer.CRITIQUE : Cette chaîne doit identifier de façon unique la seule occurrence à modifier. Elle doit inclure suffisamment de contexte autour du texte cible, en respectant scrupuleusement les espaces et l’indentation. Si
old_stringest vide, l’outil tente de créer un nouveau fichier à l’emplacementfile_path, dont le contenu seranew_string. -
new_string(chaîne de caractères, requis) : Le texte littéral exact qui remplaceraold_string. -
replace_all(booléen, facultatif) : Remplace toutes les occurrences deold_string. Valeur par défaut :false.
-
-
Comportement :
- Si
old_stringest vide et quefile_pathn’existe pas, crée un nouveau fichier contenantnew_string. - Si
old_stringest fourni, l’outil lit le fichier désigné parfile_pathet tente d’y trouver une seule occurrence, sauf sireplace_allvauttrue. - Si la correspondance est unique (ou si
replace_allvauttrue), le texte est remplacé parnew_string. - Fiabilité renforcée (correction itérative des modifications) : Afin d’améliorer significativement le taux de réussite des modifications — notamment lorsque
old_stringfourni par le modèle pourrait ne pas être parfaitement précis — cet outil intègre un mécanisme de correction itérative en plusieurs étapes.- Si
old_stringinitial n’est pas trouvé ou correspond à plusieurs emplacements, l’outil peut solliciter le modèle Qwen pour affiner itérativementold_string(et éventuellementnew_string). - Ce processus d’autocorrection cherche à identifier le segment unique que le modèle entendait modifier, rendant ainsi l’opération
editplus robuste même avec un contexte initial légèrement imprécis.
- Si
- Si
-
Cas d’échec : Malgré ce mécanisme de correction, l’outil échoue si :
file_pathn’est pas absolu ou se trouve en dehors du répertoire racine.old_stringn’est pas vide, mais le fichierfile_pathn’existe pas.old_stringest vide, mais le fichierfile_pathexiste déjà.old_stringn’est pas trouvé dans le fichier, même après les tentatives de correction.old_stringest trouvé plusieurs fois,replace_allvautfalse, et le mécanisme d’autocorrection ne parvient pas à résoudre l’ambiguïté en une correspondance unique et non équivoque.
-
Sortie (
llmContent) :- En cas de succès :
Fichier modifié avec succès : /chemin/vers/fichier.txt (1 remplacement).ouFichier créé : /chemin/vers/nouveau_fichier.txt avec le contenu fourni. - En cas d’échec : Un message d’erreur expliquant la cause (ex. :
Échec de la modification : 0 occurrence trouvée…,Échec de la modification car le texte correspond à plusieurs emplacements…).
- En cas de succès :
-
Confirmation : Oui. Affiche une comparaison (diff) des modifications proposées et demande l’approbation explicite de l’utilisateur avant d’écrire dans le fichier.
Ces outils système de fichiers constituent la base permettant à Qwen Code de comprendre et d’interagir avec le contexte local de votre projet.