# Mémoire opérationnelle — MEMORY.md > Connaissances persistantes pour l'agent. Lu à chaque création de session. --- ## Identité du système **OpenClaw** : v2026.6.5 (mis à jour le 11/6/2026) **Hébergement** : Synology DS920+ ARCHIVE3 (RAM 20Gi, /volume1/docker/) **LLM backend** : `Qwen/Qwen3-VL-30B-A3B-Thinking-FP8` servi par vLLM sur DGX Spark, `--served-model-name=qwen3-vl` **Utilisateur principal** : Thierry Tallagrand (`+33607148216`) **Vision projet** : système d'orchestration personnelle (bourse via N8N, mail multi-comptes, photos→sheets, WhatsApp/GUI). --- ## Capacités opérationnelles ### Gmail (gog CLI v0.21.0) — ACTIF - ✅ **Envoyer mail** : `gog gmail send --to ... --subject "..." --body "..." --attach ` - ✅ **Lire/chercher** : `gog gmail search "..." -j --max N` - ✅ **Brouillons** : `gog gmail drafts create/list/send/delete` - ✅ **Trier** : `gog gmail trash/archive` (toujours `--dry-run` d'abord) - ✅ **Labels** : `gog gmail labels list`, `gog gmail messages modify --add-label/--remove-label` ### WhatsApp — ACTIF - ✅ Envoi messages texte vers l'utilisateur principal - ✅ Envoi images PNG/JPEG — SVG interdits - ✅ Commande `/new` pour nouvelle session DM ### Bourse — Workflow N8N (refonte 2026-06-24) - ✅ **Graphe** : webhook N8N `POST https://n8n.airtria.pro/webhook/bourse-graphe` (workflow `4bluZIeN3TnbzIrv`) - ✅ **Watchlist** : éditable dans `workspace/bourse-config.json` - ✅ **Prix texte rapide** : `curl -fs "https://query1.finance.yahoo.com/v8/finance/chart/SYMBOLE?interval=1d&range=1d" | jq '.chart.result[0].meta | {price: .regularMarketPrice, prev: .chartPreviousClose, currency}'` - ✅ **Cron** : `orange-cloture` (40 17 * * 1-5) via le workflow N8N - ⚠️ **OBSOLÈTES** (ne plus utiliser) : `orange-bourse.md`, `get_quote.py`, `generate_chart.py`, `clean_bourse_md.py` — archivés dans `workspace/_archive-bourse-20260624/` ### Filesystem & exec - ✅ Lecture/écriture dans `/home/node/.openclaw/workspace/` - ✅ Exec `python3`, `node`, `curl`, `jq`, `git` - ✅ Aucun `pip install` runtime ### Web - ✅ `web_fetch` (1500 chars max), `web_search` (10 résultats max) --- ## Hard constraint GLOBAL — Anti-amnésie **L'agent NE DIT JAMAIS "je ne peux pas faire X" sans vérification.** Procédure obligatoire avant tout refus : 1. Chercher X dans `TOOLS.md` (sections 1-9) 2. Si X est documenté → tenter la commande et rapporter le résultat 3. Si erreur → rapporter l'erreur EXACTE, pas l'incapacité 4. Si vraiment non documenté → demander précision à l'utilisateur **Exemples de refus INTERDITS** : - "Je ne peux pas envoyer un mail" (faux : Gmail send actif) - "Je n'ai pas accès à Gmail" (faux : auth persistée) - "Je suis un assistant sans capacités" (faux : voir `TOOLS.md`) - "Gmail à venir" (faux : opérationnel depuis 9/6/2026) - "Je ne peux pas tracer un graphe boursier" (faux : webhook N8N actif depuis 24/6/2026) --- ## Bourse — Architecture N8N (source de vérité actuelle) ### Principe Agent = interlocuteur. N8N = exécutant. Aucune donnée n'est editée à la main. ### Source de vérité - Fichier : `workspace/bourse-config.json` - Tickers FR : suffixe `.PA` (ORA.PA, TTE.PA) - Tickers US : sans suffixe (NVDA, AAPL) - Aliases et options par défaut définis dans le JSON ### Crons actifs - `orange-cloture` (`40 17 * * 1-5` Europe/Paris) : appelle le webhook N8N et envoie le PNG sur WhatsApp. - Actuellement en timeout — voir `workspace/HANDOFF.md` TODOs. ### Crons bourse obsolètes (désactivés dans SQLite) - `orange-ouverture` - `orange-intraday` - `orange-chart-update` ### Format réponse standard - Cours simple : `ORA.PA : 17,86€ (+1,16%)` - Indisponible/marché fermé : dire "Aucune donnée", ne pas inventer - Graphe : 3 lignes max + PNG attaché --- ## Gmail — Suivi des phases ### Phase terminées - Re-auth OAuth + GOG_HOME persisté (2026-06-09) - Phase D : 12 401 mails trashés ### Phases terminées - Phase E : filtres natifs Gmail anti-spam (2026-06-25) — 18 filtres créés, ~889 messages archivés - Phase F : archive Philippot + Ulys (2026-06-25) — inbox vides, futurs messages filtrés ### Phases en attente - Phase G : longue traîne newsletters ### Cron actif - `daily-email-report` (`30 8 * * *` Europe/Paris) → résumé quotidien WhatsApp des dernières 24h --- ## TODO actuel ### Haute priorité - Stabiliser le cron `orange-cloture` (timeouts) - Régler le max tokens GUI à ~8192 (navigateur) ### Moyenne priorité - Tester "2 graphes séparés zoomés" (2× `beginAtZero:false`) - Surveiller l’efficacité des filtres Phase E (1–2 semaines) - Phase G Gmail : longue traîne newsletters ### Basse priorité - Aligner `agents/main/agent/models.json` avec `vllm/qwen3-vl` - Augmenter `OPENCLAW_CRON_JOB_TIMEOUT_MS` si le Thinking déborde --- ## Apprentissages structurants ### Sessions précédentes - **9/6/2026** : Re-auth OAuth Gmail + GOG_HOME persisté (test compose down/up validé) - **10/6/2026** : Fix cron orange-intraday (prompt "OK" → vrai cours), RAM upgrade 16GB - **10/6/2026** : Découverte SVG incompatible WhatsApp + bug tri chronologique - **23/6/2026** : Migration du cron email horaire (`hourly-email-check`) vers un rapport quotidien (`daily-email-report`) à 8h30 Europe/Paris. Source de vérité : `state/openclaw.sqlite` (pas les JSON obsolètes). Format : résumé court global + détail des messages importants. - **24-25/6/2026** : Refonte bourse via N8N — suppression des scripts Python, du fichier `orange-bourse.md` et des workflows cassés ; passage au modèle Thinking. - **25/6/2026** : Phase E Gmail (filtres natifs) + Phase F (archive Philippot/Ulys) terminées. Audit via SSH sur Synology + `gog` dans container `openclaw-gateway`. ### Patterns à respecter - Test après chaque modification (checklist comportementale) - Backup AVANT chaque mutation (`.bak-` avec timestamp) - 3 couches doivent rester alignées : Tools/Skills (`TOOLS.md`) + Knowledge (`MEMORY.md`) + Identity (`SOUL.md` / `IDENTITY.md`) - L'agent ne modifie jamais des fichiers directement quand un outil/service est la source de vérité (cas bourse : `bourse-config.json` OK, mais les prix viennent de Yahoo via N8N) --- ## Méta : où trouver quoi | Sujet | Fichier de référence | |---|---| | Skills opérationnels (syntaxe gog, webhook, etc.) | `TOOLS.md` | | Comportement, hard constraints | `AGENTS.md` | | Identité, persona | `SOUL.md`, `IDENTITY.md` | | État global / transfert inter-sessions | `HANDOFF.md` | | Mode batch/cron silencieux | `HEARTBEAT.md` | | Règles métier Gmail | `gmail-rules.md` | | Données bourse (watchlist + options) | `bourse-config.json` | | Mémoire évolutive (ce fichier) | `MEMORY.md` |