skills n8n: garde 5 actives, désactive 3 (config Qwen3.6 local)
This commit is contained in:
65
AGENTS.md
Normal file
65
AGENTS.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# AGENTS.md — Projet n8n / Home Assistant / EVCS Solaire
|
||||
|
||||
## 🎯 Environnement
|
||||
- Serveur n8n : https://n8n.airtria.pro (API v1)
|
||||
- Accès n8n via le MCP `n8n-mcp` (lecture/écriture de workflows).
|
||||
- Pilotage énergie via MCP dédiés. Modèle local : Qwen3.6-35B (contexte limité).
|
||||
|
||||
## 🔧 OUTILS — RÈGLES STRICTES
|
||||
|
||||
### Noms d'outils MCP (TIRETS, jamais underscores)
|
||||
- `ha-get-state` · lire un état Home Assistant
|
||||
- `ha-set-helper` · écrire un helper HA
|
||||
- `grid-set-state` · piloter le grid
|
||||
- `victron-set-charge-limits` · limites de charge Victron
|
||||
- `pv-get-forecast` · prévision solaire
|
||||
- `n8n-mcp` · workflows n8n
|
||||
⚠️ Recopie ces noms EXACTEMENT. N'invente jamais un nom d'outil.
|
||||
|
||||
### Interdictions
|
||||
- JAMAIS de `curl` / `wget` / appel HTTP direct vers HA, n8n, Victron.
|
||||
Tout passe par les MCP (le shell bloque curl de toute façon).
|
||||
- JAMAIS d'IP, d'URL ni de token inventés. Info manquante → utilise le MCP
|
||||
ou demande-moi. Ne devine pas.
|
||||
- `ripgrep`/`rg` N'EST PAS installé. Utilise `grep`.
|
||||
|
||||
## 📂 LIRE UN WORKFLOW n8n (méthode obligatoire)
|
||||
|
||||
Le MCP `n8n-mcp_get_workflow` renvoie le workflow ENTIER (~357K, trop gros
|
||||
pour le contexte). opencode l'écrit alors dans un fichier
|
||||
`~/.local/share/opencode/tool-output/tool_*` et te le tronque.
|
||||
|
||||
⚠️ Ce fichier commence par une ligne de texte
|
||||
`Retrieved workflow: <nom>` AVANT le JSON. Donc :
|
||||
- N'utilise JAMAIS `json.load(f)` ni `json.loads(text)` directement → ÉCHEC
|
||||
garanti (JSONDecodeError, le fichier ne commence pas par `{`).
|
||||
|
||||
MÉTHODE VALIDÉE pour extraire UN nœud (ex: DECISION_ENGINEV2) :
|
||||
1. Localise-le : grep -n '"name": "NOM_DU_NOEUD"' <fichier_tool-output>
|
||||
2. Extrais sa section : sed -n 'DEBUT,FINp' <fichier_tool-output>
|
||||
(repère les bornes d'accolades autour du nœud avec le grep).
|
||||
Si tu tiens à Python, retire d'abord le préfixe texte :
|
||||
text = open(f).read(); json_text = text[text.index('{'):]
|
||||
|
||||
## 🧭 MÉTHODE DE TRAVAIL
|
||||
- UN nœud / UNE tâche à la fois. Ne charge JAMAIS le workflow complet.
|
||||
- Avant toute écriture (patch/PUT/set) : backup ou dry-run, puis attends ma
|
||||
validation. Applique une seule action, vérifie, puis continue.
|
||||
- Si un outil ou un parse échoue 2 fois : ARRÊTE et demande-moi comment
|
||||
procéder. Ne pars jamais en boucle de réessais.
|
||||
- Toutes les valeurs d'énergie (SOC, PV, charge, grid, courant EVCS) se
|
||||
lisent via `ha-get-state`, jamais en dur.
|
||||
|
||||
## ⚡ CONTEXTE MÉTIER — Workflow "HA Snapshot EVCS Surplus Controller V2.6"
|
||||
ID: ATswvGfG4KJUls0K (les V1/V1.2/V2.0 sont INACTIFS, ne pas y toucher).
|
||||
Nœud central de décision : DECISION_ENGINEV2 (id 1a8271fd-...).
|
||||
Stratégies (entrées via strategy.userStrategy) → context.sourceMode :
|
||||
- auto_solar → sourceMode solar_only / solar_potential
|
||||
- force_grid_now → strategy.forceGridRequested=true → grid_forced / grid_hc_allowed
|
||||
Garde-fous connus : effectiveSocStartFloor, commonSafetyStartOk,
|
||||
gridAllowedBySoc (SOC<=35 OU forceGridRequested → bypass), batteryAssistSolarStartOk (SOC>=90).
|
||||
|
||||
Quand tu analyses le pipeline complet (plusieurs nœuds), n'extrais que les
|
||||
lignes pertinentes (grep -n "name"/"jsCode" puis sed sur la plage), jamais
|
||||
le workflow JSON entier en mémoire Python. Traite un nœud, résume, libère.
|
||||
|
||||
Reference in New Issue
Block a user