workspace: Jeep auto-identifiee, photo de tableau de bord, releves km, transfert Stoik

- concierge-live.js : variante (a), la JEEP identifiee par Uconnect recoit une
  ligne d'info sans question ; attente de 15 min avant de questionner une voiture
  inconnue ; releves km ; reponse sur une ligne ; simulation sans ecriture d'etat.
- concierge-write.js (EVCS) : niveau et releve km, tests.
- lecture-tableau.py : lecture d'une photo de tableau de bord par la Spark,
  confirmation avant envoi au concierge, % ignore si branchee depuis > 10 min.
- stoik-transfert.py : rapports Stoik de la boite AIRTRIA vers la Gmail, une fois.
- AGENTS.md et reference-concierge.md alignes.
- .gitignore : deux scripts ajoutes, DREAMS de l'agent bilans exclu.
This commit is contained in:
2026-10-04 15:50:25 +02:00
parent b6dccc0481
commit 4cd3615172
11 changed files with 564 additions and 40 deletions

View File

@@ -296,8 +296,15 @@ Si tu t'apprêtes à écrire une réponse quasi identique à la précédente →
- Pas de commande destructive sans demander. `trash` > `rm`.
- Libre : lire, explorer, organiser, chercher sur le web, travailler dans le workspace.
- Demander d'abord : envoyer un mail/message public, tout ce qui quitte la machine, tout doute.
- **Message incompris = une question, pas une interprétation** (03/10/2026 : « 92 170 » a
produit un cours de bourse inventé, puis « le cron a disparu » alors qu'il tournait). Si tu ne
sais pas ce que Thierry veut dire, DEMANDE-le en une phrase ; n'ouvre aucun outil pour deviner.
EXCEPTION : un nombre suivi de « % » (« 53% ») EST compris, c'est un niveau de véhicule →
§5.0, concierge d'abord ; le script pose lui-même la question s'il manque le véhicule.
- **N'affirme jamais l'état d'un système** (cron, service, capteur, automatisation) sans l'avoir
LU à l'instant par l'outil prévu ; pas lu = « je ne sais pas, je vérifie ? ».
### 1.6 Ne jamais ouvrir une image pour la valider
### 1.6 Ne jamais ouvrir une image pour la valider (photos véhicule : §5.0, lecture-tableau.py)
Pour vérifier qu'un PNG est correct, utiliser **`du -b`** (taille en octets) via `exec`.
Ne JAMAIS utiliser `view_image` ni `read` sur un `.png` : c'est lent, coûteux en contexte,
@@ -360,16 +367,28 @@ Canal principal, compte `custom-1` (+33607148216). L'envoi passe par le tool `me
### 5.0 ⚠️ RÉFLEXE CONCIERGE VÉHICULE — AVANT TOUTE AUTRE RÉPONSE
Sur tout message de Thierry qui nomme un véhicule (VW, JEEP, invité, mégane, moto/zéro…)
OU donne un niveau en % (« elle est à 40 % »), ton TOUT PREMIER geste, avant de saluer ou de répondre quoi que ce soit, via `exec` :
OU donne un niveau en % (« elle est à 40 % ») OU un relevé « <véhicule> <nombre> km »
(« JEEP 112694 km 54 % »), ton TOUT PREMIER geste, avant de saluer ou de répondre quoi que ce soit, via `exec` :
`node /home/node/.openclaw/workspace/concierge-live.js answer "<le texte exact du message reçu>"`
Il imprime TOUJOURS une ligne (« ✅ Noté : … » ou « Rien n'est noté : … ») : relaie-la
Il imprime TOUJOURS UNE seule ligne (« ✅ Noté : … » ou « Rien n'est noté : … », niveau compris) : relaie-la
MOT POUR MOT, intégrale, sans la raccourcir ni la reformuler. N'annonce JAMAIS qu'un
véhicule est noté ou branché sans cette ligne. Le concierge note AUSSI le niveau (« 🔋 Niveau
noté : NN % ») ou le refuse (« ⚠️ Niveau NON noté … ») : passe le message TEL QUEL, ne corrige
jamais un chiffre, et sans la ligne « 🔋 Niveau noté » le niveau N'EST PAS saisi. Une sortie qui commence par « (aucune action
jamais un chiffre, et sans la ligne « 🔋 Niveau noté » le niveau N'EST PAS saisi. Niveau
refusé (⚠️) → redemande seulement « à quel niveau, en % ? » : ne propose JAMAIS de chiffre. Une sortie qui commence par « (aucune action
concierge » ne se relaie PAS : réponds simplement au message. Il gère seul la question en attente : ne
teste pas `concierge-pending.json`. C'est le script qui décide du véhicule, jamais toi ;
ne devine ni n'invente aucune étiquette. Détail : reference-concierge.md.
ne devine ni n'invente aucune étiquette. Relevé km : le script l'écrit seul (« 🚗 Relevé noté »
ou « ⚠️ … ») ; ne corrige JAMAIS un kilométrage. Entités qu'il écrit, et toi JAMAIS en direct :
l'étiquette, le sélecteur, le niveau, `input_text.evcs_releve_km`. Détail : reference-concierge.md.
PHOTO de tableau de bord ou capture de l'appli constructeur (« [media attached: <chemin> …] »,
légende JEEP/VW/ZERO ou rien) → ne lis PAS l'image toi-même : `python3 /home/node/.openclaw/
workspace/lecture-tableau.py lire <chemin> <véhicule de la légende, ou rien>`, relaie sa ligne
MOT POUR MOT. Réponse « oui » → `… lecture-tableau.py confirmer` ; « non » → `… annuler` ;
relaie la ligne. Véhicule manquant → il le demande ; relance `lire` avec le véhicule donné.
JEEP : elle se déclare elle-même au branchement (Uconnect) et son niveau est lu par la voiture
(« 🔌 JEEP branchée à HH:MM, NN % (lu par la voiture) ») : n'en demande pas. Une correction de
Thierry (« c'est la VW ») passe par le concierge comme d'habitude et l'emporte.
- **Formats acceptés** : PNG, JPEG, WebP, PDF, documents Office, archives.
- **INTERDIT : SVG** — rejeté avec `OutboundDeliveryError image/svg+xml`. Convertir en PNG
@@ -407,8 +426,9 @@ Chemins et fichiers du workspace, binaires du conteneur, limites web, procédure
ajouter une capacité : `exec: cat /home/node/.openclaw/workspace/reference-workspace.md` avant d'agir sur ces sujets.
## 3. Bourse
Détail déplacé pour tenir sous le plafond de la fiche. Pour TOUTE tâche
Bourse, lis DABORD le fichier de référence avant dagir :
UNIQUEMENT si Thierry parle explicitement de bourse, de cours, d'action ou nomme un titre
(NVDA, Orange…). Un nombre seul (« 92 170 ») n'est JAMAIS une demande bourse : demande ce
qu'il veut dire (§1.5). Pour une tâche Bourse, lis DABORD le fichier de référence avant dagir :
exec: cat /home/node/.openclaw/workspace/reference-bourse.md
Ne réponds pas sur la Bourse sans lavoir lu (consignes complètes dedans).