\n\n\n\n Mon projet d'agent IA : Ce que j'apprends maintenant - ClawGo \n

Mon projet d’agent IA : Ce que j’apprends maintenant

📖 11 min read2,021 wordsUpdated Mar 26, 2026

Salut à tous, ici Jake de clawgo.net. Nous sommes le 23 mars 2026, et si vous êtes comme moi, votre boîte de réception est probablement débordante de titres du genre « IA ceci » et « agent cela ». Il est facile de se sentir submergé par cet océan de battage médiatique, surtout quand on essaie juste de faire un peu de travail. Oublions les promesses irréalistes un moment. Aujourd’hui, je veux parler de quelque chose de tangible, quelque chose sur lequel j’ai travaillé ces dernières semaines et qui fait vraiment la différence dans mon quotidien : utiliser des agents IA pour gérer ma collection d’actifs numériques en constante augmentation. Plus précisément, je parle d’OpenClaw et de la manière dont j’ai mis en place un système pour gérer mon nombre ridicule de captures d’écran, d’extraits de code et d’idées de design inachevées.

Ma vie numérique est un vrai bazar. Voilà, je l’ai dit. En tant que blogueur tech, je prends sans cesse des captures d’écran, télécharge des exemples de code, sauvegarde des articles et rédige des notes. Tout se retrouve dans une poignée de dossiers, généralement nommés quelque chose comme « Trucs », « Nouveau dossier (2) » ou « Bureau (final) (NE PAS SUPPRIMER) ». Quand j’ai réellement besoin de retrouver cette capture d’écran parfaite d’une sortie console OpenClaw d’il y a trois semaines, ou ce script Python que j’ai bricolé pour analyser un JSON, c’est une chasse au trésor. J’ai essayé tous les suspects habituels : le stockage cloud avec recherche intégrée, les outils de recherche sur bureau, même juste en étiquetant religieusement tout. Rien ne tient jamais. Jusqu’à présent.

Le Désordre Qui Devait Être Dompté : Mon Accumulation Numérique

Soyons réalistes. Mon « système » impliquait :

  • Un dossier « Téléchargements » qui était essentiellement un trou noir.
  • Un dossier « Captures d’écran » avec des centaines de PNG nommés comme « Screenshot 2026-03-01 at 10.34.12 AM.png ».
  • Divers dossiers de projets, chacun avec ses propres mini-dossiers de téléchargements et de captures d’écran.
  • Un compte Evernote plein de notes que je ne relis jamais.
  • Un Google Drive avec des fichiers organisés… par Google.

Le problème n’est pas seulement de retrouver des choses ; c’est la charge cognitive de savoir par où commencer à chercher. C’est le frottement mental qui m’empêche de réutiliser du bon contenu, voire de me rappeler que je l’avais en premier lieu.

Pourquoi OpenClaw ? Mon Approche Basée sur des Agents

J’ai joué avec quelques frameworks d’agents différents, mais OpenClaw m’a vraiment séduit grâce à son accent sur la modularité et le contrôle local. Je ne voulais pas que ma vie numérique entière soit téléchargée sur un service tiers. Je voulais quelque chose qui fonctionne sur ma machine, qui puisse accéder à mes fichiers locaux, et qui soit suffisamment flexible pour s’adapter à mes besoins étranges et spécifiques. La capacité d’OpenClaw à définir des « compétences » personnalisées et à les orchestrer avec de simples configurations YAML semblait exactement ce qu’il me fallait.

Mon idée de base était simple : un agent qui pourrait surveiller des dossiers spécifiques, identifier de nouveaux fichiers, comprendre ce qu’ils étaient (image, code, document), puis les déplacer dans une structure organisée tout en extrayant des métadonnées et en les rendant consultables. Pensez-y comme à un majordome numérique surpuissant pour mes fichiers.

Construction de l’Agent « Archiviste Numérique »

Voici comment j’ai décomposé cela :

  1. La Compétence de Surveillance : Cette compétence a pour tâche de remarquer lorsque de nouveaux fichiers apparaissent dans mes dossiers « entrants » (Téléchargements, Bureau, Captures d’écran).
  2. La Compétence de Classification : Une fois qu’un nouveau fichier est détecté, cette compétence utilise un LLM local (j’exécute une version quantifiée de Llama 3 sur mon bureau) pour déterminer le type et le contenu du fichier. Pour les images, elle essaie de décrire ce qu’il y a dans l’image. Pour le code, elle identifie le langage et tente d’en comprendre l’objectif. Pour les documents, elle extrait les mots-clés.
  3. La Compétence de Déplacement : Basée sur la classification, cette compétence déplace le fichier vers un dossier structuré approprié (par exemple, ~/Archive/Screenshots/2026/March/ ou ~/Archive/Code/Python/).
  4. La Compétence d’Indexation : C’est la partie cruciale. Elle prend toutes les métadonnées extraites (description, mots-clés, chemin du fichier, date) et les pousse dans une base de données SQLite locale, les rendant consultables.

Ça semble complexe, mais avec OpenClaw, définir ces compétences comme séparées et réutilisables, puis les orchestrer a été étonnamment simple. Voici une version simplifiée de mon agent_config.yaml :


agent_name: DigitalArchivist
description: Un agent pour organiser et indexer automatiquement des actifs numériques.

skills:
 - name: FileWatcher
 module: local_skills.file_management
 function: watch_directory
 config:
 directories: ["/Users/jake/Downloads", "/Users/jake/Desktop/temp_incoming"]
 interval_seconds: 60

 - name: FileClassifier
 module: local_skills.classification
 function: classify_and_extract
 dependencies: [FileWatcher]
 config:
 llm_model_path: "/Users/jake/llm_models/llama3-8b-quant.gguf"
 image_processor_endpoint: "http://localhost:8000/image_describe" # Une API locale pour le sous-titrage d'images

 - name: FileMover
 module: local_skills.file_management
 function: move_file_to_archive
 dependencies: [FileClassifier]
 config:
 archive_root: "/Users/jake/Archive"

 - name: MetadataIndexer
 module: local_skills.indexing
 function: index_metadata
 dependencies: [FileMover]
 config:
 db_path: "/Users/jake/Archive/metadata.db"

tasks:
 - name: ProcessNewFiles
 steps:
 - skill: FileWatcher
 output_key: new_files
 - skill: FileClassifier
 input_key: new_files
 output_key: classified_data
 - skill: FileMover
 input_key: classified_data
 output_key: moved_files
 - skill: MetadataIndexer
 input_key: classified_data

Et voici un aperçu d’une version simplifiée de la fonction classify_and_extract dans local_skills/classification.py. C’est là que le LLM local entre en jeu pour les fichiers basés sur du texte :


import os
from llama_cpp import Llama
import mimetypes

def classify_and_extract(file_path, llm_model_path, image_processor_endpoint=None):
 llm = Llama(model_path=llm_model_path, n_ctx=2048, n_batch=512)
 mime_type, _ = mimetypes.guess_type(file_path)
 file_extension = os.path.splitext(file_path)[1].lower()

 if mime_type and mime_type.startswith('image'):
 # Dans un scénario réel, cela appellerait le image_processor_endpoint
 # Pour simplifier, nous allons juste simuler une description ici
 description = f"Fichier image : {os.path.basename(file_path)}. Probablement une capture d'écran."
 keywords = ["image", "capture d'écran", "visuel"]
 file_type = "image"
 elif file_extension in ['.py', '.js', '.html', '.css', '.md', '.txt']:
 with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
 content = f.read(2000) # Lire les 2 premiers Ko pour la classification
 
 prompt = f"Analysez le contenu textuel suivant et déterminez son type (par exemple, code Python, JavaScript, Markdown, texte brut). Ensuite, extrayez 3 à 5 mots-clés et fournissez un bref résumé de son objectif probable. Formatez en JSON.\n\nContenu :\n{content}\n\nJSON:"
 
 output = llm(prompt, max_tokens=200, stop=["\n\n"], echo=False)
 try:
 parsed_output = json.loads(output['choices'][0]['text'])
 description = parsed_output.get('summary', 'Aucun résumé fourni.')
 keywords = parsed_output.get('keywords', [])
 file_type = parsed_output.get('type', 'document')
 except json.JSONDecodeError:
 description = "Impossible de parser la sortie LLM. Document générique."
 keywords = ["document", "non classifié"]
 file_type = "document"
 else:
 description = f"Fichier générique : {os.path.basename(file_path)}"
 keywords = ["générique", "non classifié"]
 file_type = "autre"

 return {
 "file_path": file_path,
 "description": description,
 "keywords": keywords,
 "file_type": file_type,
 "timestamp": os.path.getmtime(file_path)
 }

Le image_processor_endpoint est un petit service FastAPI distinct que j’exécute localement et qui utilise un modèle CLIP affiné pour le sous-titrage d’images. C’est un peu au-delà du périmètre de cet article, mais c’est un excellent exemple de la façon dont vous pouvez intégrer des modèles locaux spécialisés avec des agents OpenClaw.

Les Résultats : Moins de Désordre, Plus de Concentration

Après avoir laissé cet agent fonctionner pendant quelques semaines, la différence est saisissante. Mon dossier Téléchargements n’est plus un cimetière. Chaque nouveau fichier que je dépose sur mon bureau ou que je sauvegarde depuis un navigateur est traité en quelques minutes. J’ai maintenant un répertoire ~/Archive magnifiquement organisé, avec des sous-dossiers pour l’année, le mois et le type de contenu. Ce n’est pas juste une question d’organisation, cependant.

La véritable magie réside dans la base de données consultable. J’ai construit une petite interface web (une autre petite application FastAPI) qui interroge la base de données SQLite. Maintenant, si j’ai besoin de cette capture d’écran « sortie console OpenClaw », je tape simplement « sortie console OpenClaw » dans ma barre de recherche, et boum, la voici, avec le chemin du fichier et un lien pour l’ouvrir. Si je cherche « script Python pour analyser du JSON », j’obtiens une liste de tous les scripts pertinents, complète avec leurs résumés générés par le LLM. C’est comme avoir un bibliothécaire personnel pour mon désordre numérique.

Un Petit Recul, Une Solution Rapide

Un défi auquel j’ai été confronté au début était lié à des fichiers très volumineux. Le LLM avait parfois du mal à traiter des fichiers texte massifs. Ma solution a été d’ajouter un contrôle de taille de fichier dans le FileClassifier et, pour tout ce qui dépasse un certain seuil (disons, 5 Mo), d’extraire uniquement les métadonnées de base comme le nom de fichier, le type et la date de création, plutôt que d’essayer d’effectuer une analyse complète du contenu. C’est un compromis pragmatique : mieux vaut avoir des métadonnées plutôt que pas de métadonnées du tout à cause d’un crash de l’agent.

Leçons à Tirer

Si vous êtes submergé par le désordre numérique comme je l’étais, voici comment vous pouvez commencer à construire votre propre archiviste numérique :

  1. Identifiez vos points de douleur : Quels types de fichiers avez-vous du mal à organiser ? Où finissent-ils généralement ? Pour moi, c’étaient des captures d’écran et des extraits de code.
  2. Commencez petit avec OpenClaw : Ne tentez pas de construire l’agent ultime d’un coup. Commencez par une seule compétence, comme simplement surveiller un dossier. Assurez-vous que cela fonctionne.
  3. Utilisez des LLMs locaux (ou des API) : Pour la classification et la synthèse, un LLM local peut être extrêmement puissant et offre de la confidentialité. Si local n’est pas une option, envisagez un point de terminaison API privé pour des tâches spécifiques.
  4. Définissez des compétences claires : Décomposez votre flux de travail souhaité en compétences discrètes et gérables. Cela rend votre agent plus facile à déboguer et à étendre.
  5. Construisez une couche de recherche : L’organisation est super, mais la véritable utilité vient de la capacité à retrouver des choses. Une simple base de données SQLite et une interface de recherche basique peuvent faire toute la différence.
  6. Itérez et affinez : Mon agent n’est pas parfait, et je modifie constamment les invites de classification et j’ajoute de nouvelles compétences (comme la suppression automatique des fichiers temporaires après traitement). Les agents IA sont des systèmes vivants ; ils s’améliorent avec l’utilisation et le perfectionnement.

Il ne s’agit pas de scénarios magiques où « l’IA prend le contrôle de ma vie ». Il s’agit d’utiliser des outils intelligents pour résoudre de véritables problèmes quotidiens. Mon agent OpenClaw n’organise pas seulement des fichiers ; il libère de l’énergie mentale, réduit la frustration et, au final, me rend plus efficace. Et ça, dans mon livre, c’est une grande victoire.

Articles connexes

🕒 Published:

🤖
Written by Jake Chen

AI automation specialist with 5+ years building AI agents. Previously at a Y Combinator startup. Runs OpenClaw deployments for 200+ users.

Learn more →
Browse Topics: Advanced Topics | AI Agent Tools | AI Agents | Automation | Comparisons
Scroll to Top