J'ai un assistant IA qui bosse dans mon terminal. Jusque là, rien d'extraordinaire. Ce qui l'est plus, c'est qu'il tourne tout seul, en arrière-plan, sans que j'aie à lui demander quoi que ce soit. Chaque matin, il checke la santé du serveur. Chaque jeudi, il fait une veille IA. Chaque vendredi, il résume ce qu'il a retenu de la semaine. Et il m'envoie tout ça sur Discord. Voici comment.
L'infrastructure
Trois scripts bash, un cron, un webhook Discord. Le cerveau c'est runner.sh dans /root/assistant/proactive-agent/. Il parcourt les scripts dans tasks/, les exécute avec un timeout de 5 minutes, écrit un rapport global. Les crons :
0 7 * * *— santé système (tous les jours)0 9 * * 4— veille IA (tous les jeudis)0 18 * * 5— résumé des apprentissages (tous les vendredis)
Le tout envoyé sur un webhook Discord. Pas de base de données à part celle du système, pas de UI, pas de polling. L'idée est simple : bash + cron → tâche → Discord. Ça s'est installé en une heure et ça n'a pas bougé depuis.
Les tâches
alerte-sys — bash pur, zéro dépendance
Un script bash qui lit df, free, uptime, nproc, compare à des seuils (80% disque/RAM/CPU), et envoie un rapport formaté sur Discord.
Le résultat, c'est ça :
🖥️ SANTÉ SYSTÈME — debian 📅 mercredi 24 juin 2026 15:57 ⏱️ UPTIME — up 1 day, 3 hours, 51 minutes 💾 DISQUE ✅ 11% — 388G libre / 456G 🧠 RAM ✅ 9% — 2,1Gi / 23Gi ⚙️ CPU ✅ Load: 0,40 sur 4 cœurs 🔄 136 processus actifs 🚨 ALERTES : RAS
Le serveur tient le coup. Rien à signaler. C'est chiant, c'est parfait.
veille-ia — OpenCode + WebSearch = veille automatique
Le script envoie un prompt à opencode qui utilise WebSearch pour explorer Reddit (r/LocalLLaMA, r/MachineLearning), Hacker News, Twitter/X, YouTube, les blogs officiels (OpenAI, Anthropic, Google, Mistral) et Hugging Face. Le tout formaté en sections sans blabla, avec un top 3 percutant.
Cette semaine, le rapport a déniché entre autres :
- Mistral 3 Large (675B MoE, 41B actifs) — le plus gros modèle open-weight sous Apache 2.0
- Les reasoning effort dials comme nouveau levier — bye bye prompt engineering incantatoire
- SGLang RadixAttention 29% plus rapide que vLLM, 3.1× sur DeepSeek V3
- 55% du frontpage HN est AI-related ou AI-generated en juin 2026
resume-apprentissages — la mémoire qui parle
Celui-ci interroge la base mémoire SQLite et calcule les stats de la semaine : nombre de faits, répartition par catégorie, rythme quotidien, et les entrées les plus longues. Le tout en une seule requête SQL avec des json_group_object et json_group_array, parsée par Python pour le formatage. Le résultat part sur Discord.
La mémoire vectorielle
La base mémoire, c'est du SQLite avec des embeddings vectoriels et FTS5 pour le fallback textuel. Chaque fait a une clé unique, une valeur, une catégorie (project, tech, identity, preferences, credentials, etc.), une date de création, un niveau de confiance.
Pas de serveur, pas de service, pas de Redis. Un fichier .db de quelques centaines de Ko, des requêtes SQL, et ça répond en 5ms. La mémoire peut être interrogée par similarité sémantique (memory_recall) ou par catégorie (memory_list), le tout depuis l'agent dans le terminal.
Bonus — Ce que j'ai appris cette semaine
Voilà la partie la plus parlante : les vraies données, brutes de la base mémoire, pour la semaine du 18 au 24 juin.
28 nouveaux faits enregistrés, répartis dans 8 catégories. Rythme soutenu : jusqu'à 7 faits par jour (le dimanche, j'ai dû lever le pied avec 1 seul).
📊 Par catégorie • project : 16 • preferences : 3 • tech : 3 • identity : 2 • credentials : 1 • site_synthese : 1 • tools : 1 • veille : 1 📅 Par jour • 2026-06-18 : 5 • 2026-06-19 : 6 • 2026-06-21 : 1 • 2026-06-22 : 6 • 2026-06-23 : 7 • 2026-06-24 : 3
Les sujets qui ont marqué la semaine :
- Gear S3 — sisi, la vieille montre connectée Samsung. J'ai passé un temps fou à faire du sideload sur ma SM-R770 sous Tizen 4.0. Problème de certificat résolu, Pixel.wgt installé avec succès, 23 apps et 90 cadrans récupérés sur Archive.org. La mémoire a tout retenu : les commandes SDB, les URLs de téléchargement, la procédure exacte.
- Mon Galaxy S25 — retenu en base avec son numéro de série RFCY41CYTXZ. J'ai aussi noté que je travaille maintenant avec des IA, moins fullstack qu'avant. Reconversion silencieuse.
- Le blog JNK — installé dans
/var/www/html. La Google Search Console montre que seulement 2 pages sont indexées — Google n'arrive pas à lire le sitemap. Un problème à régler un de ces quatre. - Les sources de trafic — Facebook 113 visites, Reddit 47. Le bestiaire de mon JDR solo et le post "How I Accidentally" sont les pages les plus consultées.
Et des perles comme :
current_role_shift: "Travaille maintenant avec des IA, moins fullstack qu'avant"gear_s3_outreach_leads: les posts Reddit récents sur les problèmes de certificat Samsung, WatchMaker, etc.top_traffic_sources_2026: les chiffres exacts de fréquentation
Ce qui est frappant, c'est que la base mémoire capture vraiment ce qui se passe — les galères techniques, les découvertes, les changements de cap. Rien n'est perdu.
Leçons et principes
bash > dépendances lourdes. Trois scripts, un cron, un webhook. Pas de Docker, pas de Kubernetes, pas de message queue. Le tout tient dans moins de 400 lignes.
webhook > UI. Pas de dashboard à coder, pas de login, pas de base de monitoring. Un channel Discord et des curl POST. Si je veux voir l'historique, je scrolle. Si je veux une alerte, mon téléphone vibre.
simple > complexe. Chaque tâche fait une chose, la fait bien, et s'arrête. Le framework est une boucle for dans un shell script. Le pattern matching, du case "${1:-}". La gestion d'erreur, exit 1.
La laziness comme vertu d'ingénierie. Pourquoi j'ai fait ça ? Parce que je ne voulais pas me rappeler de faire la veille IA. Parce que je ne voulais pas checker le disque manuellement. Parce que je voulais que mon agent retienne les choses à ma place. J'ai écrit une fois l'infrastructure, et depuis elle tourne sans moi. C'est ça, être lazy efficace : automatiser ce qui peut l'être, pour avoir l'esprit libre sur ce qui compte.
Le code est zero-dépendance, la stack fait le café toute seule, et le tout m'a coûté moins de temps que d'écrire la spec d'un vrai système de monitoring.
Si ça t'intéresse, les scripts sont dans /root/assistant/proactive-agent/ et le cron tourne sur une Debian à 23 Gi de RAM qui flâne à 9% de charge. Pas de panne, pas d'alerte, juste un agent qui bosse.