- openclaw.json: qwen3-vl reasoning:true, maxTokens 16384, nettoyage entrees dupliquees - handoffs: synthese HANDOFF-2026-06-24-BOURSE-N8N.md (archi webhook N8N, config, tests)
5.9 KiB
5.9 KiB
HANDOFF — Refonte Bourse via N8N + passage modèle Thinking
Date : 2026-06-24 / 2026-06-25 Auteur : session OpenCode (assistant) + Thierry Périmètre : suivi boursier (Orange, Total, etc.), workflow N8N, modèle vLLM
1. Contexte / problème initial
orange-bourse.mdétait corrompu chaque semaine : le LLM l'éditait à la main (cronorange-intraday8×/jour) → doublons, sections vides, ordre cassé.- Jours de bourse fermée non gérés → cours inventés ou lignes incohérentes.
- Tout en dur dans des scripts Python (
get_quote.py,generate_chart.py) : ajouter une valeur = réécrire un script. - 2 workflows N8N "Bourse" préexistants cassés (IDs dupliqués, données en dur, faux endpoint WhatsApp).
- Graphe avec axe Y non-zéro → "variations géantes pour 5 cts".
- Modèle en variante Instruct (
reasoning:false).
2. Nouvelle architecture
Toi (WhatsApp / GUI)
│ langage naturel ("ajoute Nvidia", "zoom variations")
▼
Agent OpenClaw (Qwen3-VL Thinking)
│ interprète → appelle le webhook (curl) ou édite bourse-config.json
▼
N8N workflow "Bourse — Graphe multi-tickers (v3)" [id 4bluZIeN3TnbzIrv]
│ fetch Yahoo (multi-tickers, range/interval), gère marché fermé
▼ renvoie un PNG (QuickChart, axe Y configurable)
Agent → affiche le PNG (WhatsApp / GUI)
Principe : l'agent = interlocuteur, N8N = exécutant. Plus AUCUNE donnée éditée à la main.
3. Le workflow N8N (source unique du graphe)
- Nom :
Bourse — Graphe multi-tickers (v3) - ID :
4bluZIeN3TnbzIrv(actif) - Webhook :
POST https://n8n.airtria.pro/webhook/bourse-graphe - Nodes : Webhook → Code "Fetch + Build QuickChart" → HTTP QuickChart → Respond (binary PNG)
- Body JSON (tout optionnel) :
tickers: ex["ORA.PA","TTE.PA","NVDA"](FR = suffixe.PA, US = sans suffixe)range:1d|5d|1mo|3mo|6mo|1y(def5d)interval:15m|60m|1d(def60m)beginAtZero:true(axe Y depuis 0) |false(zoom serré sur les variations,grace:"5%")title: titre optionnel
- Marché fermé / ticker invalide : renvoie un PNG "Aucune donnée" (jamais de cours inventé).
- Point technique clé : QuickChart nécessite
version:"4"(Chart.js v4) dans le payload pour quescales.y.min:0/beginAtZerosoient respectés. Sans ça l'axe ne descend pas à 0.
Exemple :
curl -s -X POST "https://n8n.airtria.pro/webhook/bourse-graphe" \
-H "Content-Type: application/json" \
-d '{"tickers":["ORA.PA","TTE.PA"],"beginAtZero":true}' \
-o /home/node/.openclaw/workspace/charts/bourse.png
4. Fichiers / config modifiés
| Fichier | Changement |
|---|---|
workspace/bourse-config.json |
NOUVEAU : watchlist + défauts + aliases (source de vérité éditable par l'agent) |
workspace/AGENTS.md |
Section BOURSE réécrite (pilotage N8N), anciennes hard-constraints supprimées |
workspace/TOOLS.md |
Sections 3 et 6 réécrites (webhook N8N, scripts marqués obsolètes) |
openclaw.json |
qwen3-vl → reasoning:true, maxTokens 8192→16384, suppression entrée doublon qwen3-vl-thinking et ref orpheline vllm/qwen3.6 |
| Crons (SQLite) | orange-cloture (40 17 * * 1-5) → appelle le webhook N8N + envoie PNG WhatsApp ; orange-intraday/orange-ouverture/orange-chart-update désactivés |
| N8N | 2 workflows bourse cassés supprimés (rJswndMIRj7R7uQ6, w30bBJXQFgRV6RMB) |
| Cache modèle (SQLite) | agent_model_catalogs + model_capability_cache purgés (entrées qwen3-vl périmées) → régénérés au restart |
Archivé (récupérable) : workspace/_archive-bourse-20260624/
(get_quote.py, generate_chart.py, clean_bourse_md.py, orange-bourse.md + backups, SVG/PNG de test).
Backups DB : state/openclaw.sqlite.bak-pre-bourse-refonte-*, *-pre-catalog-purge-*.
5. Modèle vLLM (Thinking)
- vLLM sert
Qwen/Qwen3-VL-30B-A3B-Thinking-FP8sous--served-model-name=qwen3-vl(nom inchangé → zéro reconfig réseau côté OpenClaw). - Flags clés :
--reasoning-parser=qwen3,--enable-auto-tool-choice,--tool-call-parser=hermes, samplingtemp=0.6 top_p=0.95 top_k=20. - Côté OpenClaw : entrée
qwen3-vl=reasoning:true,maxTokens:16384,contextWindow:65536. - GUI expose un menu REASONING (Off/Minimal/Low/Medium/High). Défaut conseillé : Medium. High pour conception/debug de workflows ; Low/Medium pour les graphes courants.
- Le mode Thinking est plus lent (~17-21 tok/s) mais plus juste sur le tool-calling.
- Max tokens GUI : monter le défaut de session de 800 → ~8192 (réglage côté navigateur, pas de défaut serveur dans cette version).
6. Validations effectuées (tests réels)
- ORA seul, ORA+TTE, ORA+TTE+NVDA (1 mois) → PNG corrects, axe à 0.
beginAtZero:false→ zoom serré (ex ORA 16,65–17,10 €) : micro-variations visibles.- Ticker invalide → PNG "Aucune donnée".
- Agent (Thinking) a appelé le webhook de façon autonome avec les bons tickers
(
ORA.PA,TTE.PA) → exécution N8N671723✅, livré WhatsApp + GUI. - Après restart : sélecteur GUI propre (plus d'entrée fantôme), agent liste OK.
7. Reste à faire / vérifs
- Régler le max tokens GUI à ~8192 (navigateur).
- Tester "2 graphes séparés zoomés" (Orange / Total) → doit faire 2 appels
beginAtZero:false. - Surveiller le 1er cron
orange-clotureréel (lenteur Thinking vs timeouts). - Anthropic = non cotée en bourse (pas de ticker) — le dire si demandé.
- Si besoin, monter
OPENCLAW_CRON_JOB_TIMEOUT_MSsi le Thinking déborde.
8. Notes opérationnelles
- Modifier le comportement du graphe = éditer le node JS du workflow
4bluZIeN3TnbzIrvvia MCPn8n-mcpou l'API n8n (le tool MCPupdate_workflow/activateest buggé sur cette version → préférer l'API REST n8n directe :PUT /workflows/{id}puisPOST /workflows/{id}/activate). - Ne JAMAIS rééditer
orange-bourse.md(mort, archivé).