Aller au contenu

OS Agentique — Avancement session 20260520

Suite de shared/architecture/plan-assemblage-os-agentique. Bilan de ce qui a été réalisé et ce qui reste à faire.


Bilan Semaine 1 — Mémoire Hermes ✅

Fichiers enrichis sur le VPS dans /home/kanmaber/.hermes/ :

Fichier Contenu
SOUL.md Personnalité : concis, technique, français, validation avant action
memories/USER.md Profil complet Bernard : Caritas Bénin, FSM 2026, 5 projets, infra VPS
memories/MEMORY.md Règles DDD ajoutées + plan OS agentique 4 semaines

Test validé : Hermes répond avec les 5 projets actifs et les bons statuts sans que Bernard se présente.


Bilan Semaine 2 — Veille technologique quotidienne ✅

Canal de notification

  • Email choisi (Telegram inaccessible — écran téléphone cassé, téléphone d'emprunt)
  • himalaya v1.2.0 installé et configuré : /home/kanmaber/.local/bin/himalaya
  • Config : /home/kanmaber/.config/himalaya/config.toml
  • Mot de passe SMTP : /home/kanmaber/.himalaya_smtp_pass
  • Envoi via Python SMTP (himalaya CLI a un bug sur send)

Script veille technologique

  • Fichier : /home/kanmaber/scripts/veille_techno.py
  • Cron : 0 7 * * * (chaque jour à 7h00)
  • Log : /home/kanmaber/scripts/veille.log
  • Cache : /home/kanmaber/scripts/veille_cache.json
  • Sources (13) : Prisma, Express, React, TypeScript, BullMQ, Node.js, Anthropic, Hermes Agent, Docker, Caddy, Dev.to DDD, Dev.to TS, Dev.to Node
  • Résultat : email quotidien avec articles des 24h groupés par source

Bilan Semaine 3 — Cron jobs (en cours) 🔄

tekdhi_rss_articles.py ✅ (priorité confirmée)

  • Fichier : /home/kanmaber/scripts/tekdhi_rss_articles.py
  • Cron : 0 8 * * * (chaque jour à 8h00)
  • Log : /home/kanmaber/scripts/tekdhi_rss.log
  • Cache : /home/kanmaber/scripts/tekdhi_rss_cache.json
  • MAX_ARTICLES = 5 par exécution (configurable ligne 27)
  • 9 sources RSS : Vatican News FR, Aleteia FR, Zenit FR, La Croix, Famille Chrétienne, Disrupt Africa, Jeune Afrique, MIT Tech Review, Le Monde Numérique
  • Filtrage mots-clés : foi, technologie, Afrique, développement, IA, etc.
  • Doublons : similarité titre/extrait ≥ 80%, URL déjà traitée, cache local
  • Rapport email après chaque exécution avec liste des brouillons créés
  • Template HTML : analyse foi + tech + Afrique + appel à l'action
  • Script original préservé : tekdhi_dynamic_article.sh (données hardcodées, ne pas supprimer)

✅ Résolu (session suivante) : filtrage remplacé par les tags des catégories du blog (dynamique). Voir section ci-dessous.

Guide semaine 3

  • Fichier : /home/kanmaber/scripts/guide_semaine3_cron_jobs.md
  • Explique : ajouter sources RSS, gérer cron jobs, scripts restants à créer

Éléments semaine 3 restants ❌

Élément Script à créer Cron
Rapport hebdo lundi (état PsychoEnLigneV2) rapport_psycho.sh 0 7 * * 1
Résumé vendredi resume_vendredi.py 0 17 * * 5
Health check backend (alerte si DOWN) health_check.sh */15 * * * *

Cron jobs actifs sur le VPS (20260520)

@reboot    nohup ttyd -p 7681 -W docker exec -it hermes-telegram tmux ...
0 * * * *  cd /home/kanmaber/second-memory && git pull origin master
0 7 * * *  python3 /home/kanmaber/scripts/veille_techno.py >> veille.log
0 8 * * *  python3 /home/kanmaber/scripts/tekdhi_rss_articles.py >> tekdhi_rss.log

Infrastructure de notification (résumé)

Canal Statut Usage
Email (Gmail) ✅ Opérationnel Toutes les notifications actuelles
Telegram ❌ Inaccessible (téléphone cassé) À rétablir quand téléphone réparé
Signal ⏸ Possible mais complexe (signal-cli + Java) Envisager si Telegram reste inaccessible


Amélioration filtrage tekdhi_rss_articles.py ✅ (20260520, session 2)

Problème résolu

Le filtrage par mots-clés statiques (liste KEYWORDS) était binaire : 1 mot-clé = article accepté. Résultat : 38 brouillons par run, dont "Festival de Cannes", "grève Samsung".

Solution : tags des catégories du blog (dynamique)

Principe : au démarrage, le script fait GET /api/v1/categories, extrait le champ tags (CSV) de chaque catégorie, et utilise ces termes comme référentiel de filtrage.

Avantage : si une catégorie reçoit de nouveaux tags dans l'admin du blog, le filtre s'adapte automatiquement sans modifier le script.

Tags ajoutés aux 3 catégories qui n'en avaient pas (via PUT /api/v1/categories/:id) :

Catégorie Tags ajoutés
Ai et Développement de logiciels intelligence artificielle, logiciel, développement, numérique, code, programmation, machine learning, LLM
DevOps, CI/CD déploiement, infrastructure, docker, automatisation, conteneur, pipeline, intégration continue, kubernetes
Développement Web web, application, frontend, backend, api, javascript, typescript, react, node.js, framework

Total : 35 tags de référence sur 5 catégories.

Paramètres finaux du script

Paramètre Valeur Rôle
SCORE_MIN 1 Au moins 1 tag de catégorie dans titre+description
MAX_ARTICLES 5 Plafond brouillons créés par run

Détail technique : word boundary pour tags courts

Les tags < 4 caractères (ai, ia, ddd...) utilisent \btag\b (regex word boundary) pour éviter les faux positifs (ex. "ai" ne doit pas matcher "avait" ou "était"). Les tags longs utilisent la simple recherche de sous-chaîne.

def _tag_dans_texte(tag, texte):
    if len(tag) < 4:
        return bool(re.search(r'\b' + re.escape(tag) + r'\b', texte))
    return tag in texte

Résultat

2-5 articles pertinents par run (vs 38 avant). Email récapitulatif inclut le score de chaque article.


Prochaines priorités

  1. rapport_psycho.sh — rapport lundi état PsychoEnLigneV2
  2. health_check.sh — alerte backend DOWN
  3. resume_vendredi.py — résumé vendredi
  4. Semaine 4 — Orchestration Hermes ↔ Claude Code

Liens connexes