node-red-contrib-knx-ultimate 6.3.26 → 6.3.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/examples/KNX AI - Summary Anomalies and Ask.json +1 -1
- package/nodes/knxUltimateAI.html +129 -50
- package/nodes/knxUltimateAI.js +1311 -197
- package/nodes/locales/de/knxUltimateAI.html +22 -10
- package/nodes/locales/de/knxUltimateAI.json +21 -6
- package/nodes/locales/en/knxUltimateAI.html +22 -10
- package/nodes/locales/en/knxUltimateAI.json +21 -6
- package/nodes/locales/es/knxUltimateAI.html +22 -10
- package/nodes/locales/es/knxUltimateAI.json +21 -6
- package/nodes/locales/fr/knxUltimateAI.html +22 -10
- package/nodes/locales/fr/knxUltimateAI.json +21 -6
- package/nodes/locales/it/knxUltimateAI.html +22 -10
- package/nodes/locales/it/knxUltimateAI.json +21 -6
- package/nodes/locales/zh-CN/knxUltimateAI.html +22 -10
- package/nodes/locales/zh-CN/knxUltimateAI.json +21 -6
- package/nodes/plugins/knxUltimateAI-vue/assets/app.css +1 -1
- package/nodes/plugins/knxUltimateAI-vue/assets/app.js +4 -4
- package/nodes/utils/knxAiHomeMemory.js +4 -32
- package/nodes/utils/knxAiScheduler.js +442 -0
- package/package.json +1 -1
|
@@ -28,21 +28,30 @@ Toute réponse fondée sur le Web contient des citations validées par le runtim
|
|
|
28
28
|
|
|
29
29
|
Lorsque des résultats Web vérifiés sont disponibles, le modèle peut composer les autres outils activés si le chat courant ou l'Éducation de l'IA l'y autorise. L'accès Web n'étend jamais les autorisations : la disponibilité des caméras, du TTS et de la mémoire, ainsi que les lectures et écritures KNX, la validation locale ETS/DPT et la confirmation configurée des écritures KNX restent inchangées. Les requêtes Web exposent la requête et l'adresse IP publique de ce serveur aux sites externes ou au service de recherche ; les données KNX/ETS, images de caméra, identifiants de chat, mémoire apprise et identifiants d'accès ne sont jamais ajoutés automatiquement.
|
|
30
30
|
|
|
31
|
+
### Planifications et rappels en langage naturel
|
|
32
|
+
Dans le langage normal du chat, l'utilisateur peut demander à KNX AI de créer, lister ou annuler un rappel, une surveillance ou une future commande domotique, ponctuelle ou récurrente. Le modèle choisit sémantiquement l'outil structuré de planification `scheduleActions` à partir de la demande complète et conserve tout l'objectif et ses conditions sous forme d'instruction en langage humain. Il n'existe ni mots-clés de planification, ni liste de phrases déclencheuses, ni classificateur d'intention rigide : la formulation et la langue ne limitent pas cette fonction.
|
|
33
|
+
|
|
34
|
+
Les planifications appartiennent à la session de chat et persistent pour chaque nœud KNX AI après les redémarrages de Node-RED. Leur état d'exécution faisant autorité est `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json` ; KNX AI génère aussi `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` comme vue lisible. Un plan peut s'exécuter une fois, se répéter à un intervalle d'au moins cinq minutes et expirer facultativement. Le modèle peut lister ou annuler uniquement les planifications actives appartenant au chat courant, sauf demande explicite d'annuler toutes les planifications de ce chat.
|
|
35
|
+
|
|
36
|
+
Lorsqu'une tâche arrive à échéance, KNX AI lance un passage séparé du modèle avec l'instruction en langage humain enregistrée comme autorité utilisateur fiable. Une surveillance reste silencieuse si sa condition n'est pas remplie. Les autorisations existantes s'appliquent toujours à l'exécution : une surveillance météo exige **Autoriser l'IA à utiliser le Web** et utilise le même budget Web, un résultat parlé sort par la sortie 5 et nécessite donc un nœud TTS Ultimate câblé, et les outils caméra restent limités aux adaptateurs détectés. Une écriture KNX planifiée conserve les contrôles ETS/DPT exacts et, si la confirmation est activée, présente d'abord un aperçu à la même session de chat ; la sortie 4 n'émet rien avant la confirmation.
|
|
37
|
+
|
|
38
|
+
Par exemple, l'utilisateur peut écrire : « Pendant les cinq prochains jours, vérifie toutes les 30 minutes les prévisions pour Cortemaggiore et utilise TTS Ultimate uniquement si des orages sont prévus. » KNX AI peut conserver cette condition et cette durée complètes dans une seule surveillance récurrente ; les exigences Web et TTS ci-dessus restent applicables.
|
|
39
|
+
|
|
31
40
|
## Commandes (entrée)
|
|
32
41
|
Envoyez `msg.topic` :
|
|
33
42
|
- `summary` (ou vide) : envoie le résumé immédiatement
|
|
34
|
-
- `reset` : efface l'historique, les compteurs, la mémoire domestique apprise
|
|
43
|
+
- `reset` : efface l'historique, les compteurs, la mémoire domestique apprise, tous les contextes de chat persistants et toutes les planifications de ce nœud ; l'Éducation IA configurée dans le nœud reste inchangée
|
|
35
44
|
- `ask` : envoie une question au LLM configuré
|
|
36
45
|
- `confirm` / `cancel` : confirme ou annule les commandes KNX en attente sans rappeler le LLM
|
|
37
|
-
- `clear_chat` : efface les échanges récents, les instructions persistantes et les commandes en attente de la session courante
|
|
46
|
+
- `clear_chat` : efface les échanges récents, les instructions persistantes et les commandes en attente de la session courante, puis annule ses planifications actives ; les autres sessions et l'Éducation IA restent inchangées
|
|
38
47
|
|
|
39
48
|
Pour `ask`, mettez la question dans `msg.prompt` (recommandé), `msg.payload` (chaîne), ou les champs Telegram courants `msg.payload.content` / `msg.payload.text`.
|
|
40
49
|
|
|
41
50
|
Si le traitement dure plus de 1,2 seconde, la sortie 3 émet immédiatement le message intermédiaire localisé « Je réfléchis… », avec `msg.knxAi.type = "thinking"` et `msg.knxAi.transient = true`. L’adaptateur de chat l’envoie au même utilisateur, puis la réponse finale arrive normalement dès qu’elle est prête. Ce message de progression n’est jamais enregistré dans le contexte de conversation ni dans la mémoire apprise.
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
Chaque requête de chat LLM utilise un délai d’attente minimal de 30 minutes, indépendamment du fournisseur. Aucun champ de délai n’est à gérer dans l’éditeur. Il s’agit d’une attente maximale, et non d’un délai artificiel : les modèles plus rapides terminent toujours dès que leur réponse est prête. Si même cette limite est atteinte, KNX AI indique que le modèle n’a pas terminé et conseille de réessayer ou de réduire le contexte du prompt.
|
|
44
53
|
|
|
45
|
-
Pour les fournisseurs locaux, **Quantité de contexte du chat** permet de choisir explicitement 4K, 8K ou
|
|
54
|
+
Pour les fournisseurs locaux, **Quantité de contexte du chat** permet de choisir explicitement 4K, 8K, 16K ou aucune limite KNX AI ; 16K reste la valeur par défaut. Sans limite KNX AI, la fenêtre de contexte déclarée ou active du modèle est utilisée sans jamais dépasser son maximum physique. Ce choix limite proportionnellement les données KNX, de mémoire, du projet Node-RED et des adaptateurs fournies au modèle, tout en conservant le contrat complet des outils de l’agent. Aucune capacité n’est activée ou désactivée selon une formulation, des mots-clés ou des intents linguistiques.
|
|
46
55
|
|
|
47
56
|
L’état du nœud sur le canvas est volontairement réservé à la dernière demande reçue et au message localisé « Je réfléchis… » pendant l’exécution du LLM. Les télégrammes KNX, mises à jour de la passerelle, débits de trafic, messages ready et résultats techniques ne l’écrasent jamais ; ils restent disponibles via les sorties, les journaux et les données de l’Assistant.
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Reliez la sortie 5 à un ou plusieurs nœuds `ttsultimate` du paquet facultatif
|
|
|
84
93
|
Le modèle décide de préparer ou non une annonce en raisonnant sur la demande actuelle, les instructions persistantes du chat et l’Éducation IA gérée par l’utilisateur ; il n’existe ni intent d’annonce ni liste de phrases déclencheuses. Les valeurs KNX, événements d’adaptateur, images et archives restent des données et non des instructions, mais les consignes fiables de l’utilisateur peuvent apprendre au modèle comment agir sur ces données. La sortie 5 émet le texte exact à prononcer dans `msg.payload`, définit `msg.topic = "knx_ai_announcement"` et ajoute `msg.knxAi.type = "tts_announcement"` avec `msg.knxAi.sourceNodeId`, `msg.knxAi.sessionId` et `msg.knxAi.reason`. TTS Ultimate gère ensuite le lecteur, la voix, le volume, le signal et la file d’attente.
|
|
85
94
|
|
|
86
95
|
### Aperçu du contexte du chat
|
|
87
|
-
L’éditeur du nœud affiche une carte compacte résumant les sources disponibles pour le chat : trafic KNX actuel, sémantique ETS et projet Node-RED, mémoire de session et de la maison, Éducation IA et caméras détectées. Elle affiche aussi le contexte opérationnel maximal choisi par l’utilisateur et la taille UTF-8 réelle du dernier prompt du chat ; les jetons d’entrée exacts du fournisseur sont utilisés lorsqu’ils sont fournis, sinon leur nombre est signalé comme estimé. Elle répertorie aussi
|
|
96
|
+
L’éditeur du nœud affiche une carte compacte résumant les sources disponibles pour le chat : trafic KNX actuel, sémantique ETS et projet Node-RED, mémoire de session et de la maison, Éducation IA, planifications actives et caméras détectées. Elle affiche aussi le contexte opérationnel maximal choisi par l’utilisateur et la taille UTF-8 réelle du dernier prompt du chat ; les jetons d’entrée exacts du fournisseur sont utilisés lorsqu’ils sont fournis, sinon leur nombre est signalé comme estimé. Elle répertorie aussi les chemins absolus des fichiers de planification JSON faisant autorité et Markdown lisible, ainsi que les archives des télégrammes KNX et des événements d’adaptateurs avec le format quotidien `YYYY-MM-DD.knxctx`. L’Éducation IA est enregistrée dans la configuration du nœud et ne possède donc aucun fichier d’exécution distinct.
|
|
88
97
|
|
|
89
|
-
Le modèle reçoit les lectures/écritures KNX, les adaptateurs caméra, les annonces TTS
|
|
98
|
+
Le modèle reçoit les lectures/écritures KNX, les adaptateurs caméra, les annonces TTS, la mémoire persistante, l'accès Web et les planifications/rappels comme outils structurés. Il peut les sélectionner et les combiner sémantiquement à partir de la demande actuelle et des consignes fiables apprises, sans routage par intents linguistiques. Le runtime ne valide que les arguments, la disponibilité des adaptateurs caméra et les limites de sécurité ; les écritures KNX conservent la validation ETS/DPT locale et la confirmation configurée.
|
|
90
99
|
|
|
91
100
|
### Modification et sauvegarde de l'apprentissage CHAT
|
|
92
101
|
L'onglet **Conversations et maison** de la configuration Node-RED de KNX AI contient le bouton **Ouvrir l'apprentissage du chat IA**, qui ouvre l'interface web Vue directement sur cet éditeur pour le nœud actuel.
|
|
@@ -105,7 +114,9 @@ Le rôle, la justification et la preuve appris sont enregistrés par nœud dans
|
|
|
105
114
|
|
|
106
115
|
La dernière session de chat est mémorisée comme propriétaire et reçoit les messages spontanés. La sortie 3 émet `msg.knxAi.type = "proactive_notification"` et `msg.inputMessage` conserve la session pour l’adaptateur de chat. Une limite stricte de trois notifications proactives par heure évite les rafales. La sortie 4 n’est jamais utilisée de façon proactive et KNX n’est jamais modifié de manière autonome.
|
|
107
116
|
|
|
108
|
-
La référence apprise partagée est chargée au démarrage depuis `<userDir>/knxai/memory/knxai-home-memory.md`, réécrite atomiquement toutes les 15 minutes et toujours strictement limitée à 5 Mo. Elle conserve au maximum 120 observations importantes, 80 habitudes agrégées, 80 notifications et 300 objets ETS sémantiques, jamais un flux illimité de télégrammes bruts. Les éléments anciens et moins prioritaires sont supprimés en premier.
|
|
117
|
+
La référence apprise partagée est chargée au démarrage depuis `<userDir>/knxai/memory/knxai-home-memory.md`, réécrite atomiquement toutes les 15 minutes et toujours strictement limitée à 5 Mo. Elle conserve au maximum 120 observations importantes, 80 habitudes agrégées, 80 notifications et 300 objets ETS sémantiques, jamais un flux illimité de télégrammes bruts. Les éléments anciens et moins prioritaires sont supprimés en premier.
|
|
118
|
+
|
|
119
|
+
**Éducation IA** est limitée à 16 000 caractères et constitue une propriété fixe enregistrée avec le nœud dans le flow Node-RED. Seul l’utilisateur la modifie dans l’éditeur et l’applique avec Deploy. Le modèle la lit comme une consigne faisant autorité, mais ne peut jamais l’écrire ni l’écraser. Les faits et préférences demandés dans le chat appartiennent à la mémoire apprise du chat ; les planifications, rappels, surveillances et commandes futures, ponctuels ou récurrents, appartiennent au planificateur sémantique. Le fichier de mémoire apprise ne contient volontairement pas le texte de l’Éducation.
|
|
109
120
|
|
|
110
121
|
## Exemple pratique de configuration
|
|
111
122
|
Placez toute la politique de notification dans **Éducation IA** (`aiEducation`) :
|
|
@@ -148,6 +159,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
|
|
|
148
159
|
- **Endpoint URL** : URL endpoint chat/completions.
|
|
149
160
|
- **API key** : clé API (non requise avec Ollama local ; facultative pour Bionic LM Studio sauf si l’authentification du serveur est activée).
|
|
150
161
|
- **Model** : ID/nom du modèle.
|
|
162
|
+
- **Effort de raisonnement** : préférence indépendante du fournisseur pour les modèles qui permettent de régler l’effort de raisonnement. **Automatique** n’envoie aucune préférence et conserve la valeur par défaut du modèle/fournisseur. Les choix explicites sont `none`, `minimal`, `low`, `medium`, `high`, `xhigh` et `max` ; leur prise en charge dépend du protocole de requête et du modèle, et KNX AI réessaie sans la préférence si elle est refusée.
|
|
151
163
|
- **Autoriser l'IA à utiliser le Web** : désactivé par défaut. Permet au modèle de choisir sémantiquement l'outil Web général et de fournir des sources vérifiées et citées.
|
|
152
164
|
- **Autoriser les vérifications Web proactives** : autorisation distincte pour les vérifications en arrière-plan ; elle exige aussi des instructions explicites rédigées par l'utilisateur dans **Éducation de l'IA**.
|
|
153
165
|
- **Intervalle minimal des vérifications proactives** : durée minimale entre les cycles proactifs ; elle ne retarde pas les opérations Web demandées pendant un échange utilisateur actif.
|
|
@@ -157,7 +169,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
|
|
|
157
169
|
- **Autoriser l’IA à lire les états KNX et commander les actionneurs** : active la sortie 4 et reste désactivé par défaut. Les objets exacts du catalogue ETS peuvent être lus ; seules les écritures vers des objets classés `command` sont acceptées. Les opérations inconnues, avec DPT discordant, invalides ou trop nombreuses, ainsi que les écritures vers des objets d'état ou neutres, sont rejetées localement.
|
|
158
170
|
- **Demander confirmation avant d’envoyer les commandes KNX** : activé par défaut. Affiche d'abord les modifications validées et n'émet aucune commande tant que la même session de chat ne les confirme pas. Lorsque des commandes attendent une confirmation, la réponse ajoute toujours les instructions exactes de confirmation ou d'annulation dans la langue de la demande courante. Les commandes sont à nouveau validées juste avant la sortie.
|
|
159
171
|
- **Adaptateur des messages d’entrée/sortie** : utilise **Aucun adaptateur** par défaut. La sélection charge la paire prédéfinie de mappages entrée/sortie ; les deux restent masqués dans l’éditeur.
|
|
160
|
-
- **Éducation de l’IA** : consignes
|
|
172
|
+
- **Éducation de l’IA** : consignes fixes du nœud faisant autorité, modifiées uniquement par l’utilisateur et appliquées avec Deploy. Le modèle les lit mais ne les écrit jamais. Les politiques domotiques proactives permanentes se définissent ici ; les faits et préférences demandés dans le chat vont dans la mémoire apprise, tandis que les planifications, rappels, surveillances et commandes futures, ponctuels ou récurrents, vont dans le planificateur sémantique sans phrase déclencheuse ni routage par intent.
|
|
161
173
|
- Les extraits fournis avec le paquet depuis l’aide, le README, le changelog, le wiki et les exemples ne sont pas inclus dans les prompts Telegram, RedBot ou CHAT personnalisés. Ils restent disponibles uniquement pour l’Assistant web lors des questions techniques sur le paquet.
|
|
162
174
|
- Bouton **Refresh** : interroge le provider et charge les modèles disponibles. Son icône tourne pendant le chargement ; une réussite ne produit volontairement aucun message.
|
|
163
175
|
|
|
@@ -169,7 +181,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
|
|
|
169
181
|
- **2) Install it** : télécharge et installe le modèle localement (ex. `llama3.1`).
|
|
170
182
|
- Pendant refresh/install, KNX AI tente aussi de démarrer automatiquement le serveur Ollama.
|
|
171
183
|
- Si l'installation échoue avec une erreur de connexion, vérifier qu'Ollama est lancé (app desktop ou `ollama serve`).
|
|
172
|
-
- Le contexte maximal déclaré par `/api/show` reste informatif. KNX AI envoie le budget choisi de 4K, 8K ou 16K comme `num_ctx`
|
|
184
|
+
- Le contexte maximal déclaré par `/api/show` reste informatif. KNX AI envoie le budget choisi de 4K, 8K ou 16K comme `num_ctx` ; sans limite KNX AI, il utilise le contexte déclaré par le modèle, sans jamais dépasser son maximum physique. Chaque source de contexte est limitée proportionnellement sans retirer de capacités à l’agent.
|
|
173
185
|
- Si Node-RED tourne dans Docker, utiliser `host.docker.internal` au lieu de `localhost` dans l'endpoint.
|
|
174
186
|
|
|
175
187
|
### Démarrage rapide Bionic LM Studio (local)
|
|
@@ -177,7 +189,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
|
|
|
177
189
|
- Démarrer le serveur API LM Studio depuis la page **Developer** ou avec `lms server start`.
|
|
178
190
|
- Endpoint par défaut : `http://localhost:1234/v1/chat/completions`.
|
|
179
191
|
- Cliquer sur **Refresh** pour charger tous les modèles exposés par `/v1/models` ; le premier est sélectionné si aucun modèle n’est configuré.
|
|
180
|
-
- Lorsqu’un modèle est déjà chargé, KNX AI conserve la longueur de contexte active. KNX AI ne charge jamais un modèle Bionic inactif via l’API de gestion : la première requête de chat laisse Bionic le charger en JIT avec les valeurs par défaut enregistrées pour ce modèle.
|
|
192
|
+
- Lorsqu’un modèle est déjà chargé, KNX AI conserve la longueur de contexte active. KNX AI ne charge jamais un modèle Bionic inactif via l’API de gestion : la première requête de chat laisse Bionic le charger en JIT avec les valeurs par défaut enregistrées pour ce modèle. KNX AI utilise le budget de prompt choisi de 4K, 8K ou 16K, ou la fenêtre déclarée ou active du modèle lorsque l’absence de limite KNX AI est sélectionnée, sans dépasser son maximum physique ; les capacités de raisonnement, KNX, routines, caméras et TTS restent disponibles.
|
|
181
193
|
- La clé API est facultative sauf si l’authentification est activée dans les paramètres du serveur LM Studio. Dans Docker, remplacer `localhost` par `host.docker.internal`.
|
|
182
194
|
|
|
183
195
|
## Note sécurité
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "Endpoint URL",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Model",
|
|
27
|
+
"llmReasoningEffort": "Effort de raisonnement",
|
|
27
28
|
"llmPromptContextTokens": "Quantité de contexte du chat",
|
|
28
29
|
"llmSystemPrompt": "System prompt",
|
|
29
30
|
"llmIncludeRaw": "Include raw payload hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "Réduit (4K, plus rapide)",
|
|
58
59
|
"medium": "Moyen (8K)",
|
|
59
|
-
"full": "Complet (16K)"
|
|
60
|
+
"full": "Complet (16K)",
|
|
61
|
+
"unlimited": "Aucune limite KNX AI (utiliser le contexte du modèle)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "Automatique (valeur du modèle/fournisseur)",
|
|
65
|
+
"none": "Aucun",
|
|
66
|
+
"minimal": "Minimal",
|
|
67
|
+
"low": "Faible",
|
|
68
|
+
"medium": "Moyen",
|
|
69
|
+
"high": "Élevé",
|
|
70
|
+
"xhigh": "Très élevé",
|
|
71
|
+
"max": "Maximum"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "Aucun adaptateur"
|
|
@@ -90,7 +102,8 @@
|
|
|
90
102
|
"lmStudioContextFailed": "Impossible de configurer le contexte du modèle",
|
|
91
103
|
"lmStudioContextCurrentlyLoaded": "actuellement chargé",
|
|
92
104
|
"localContextBudget": "Budget de contexte KNX AI",
|
|
93
|
-
"promptContextHint": "Contrôle la quantité de contexte KNX, mémoire, projet et adaptateurs envoyée aux modèles locaux. Cela n’active ni ne désactive les outils et n’utilise aucun routage par intent.",
|
|
105
|
+
"promptContextHint": "Contrôle la quantité de contexte KNX, mémoire, projet et adaptateurs envoyée aux modèles locaux. Choisissez « Aucune limite KNX AI » pour utiliser la fenêtre déclarée ou active du modèle. Cela n’active ni ne désactive les outils et n’utilise aucun routage par intent.",
|
|
106
|
+
"reasoningEffortHint": "Préférence facultative pour les modèles prenant en charge l'effort de raisonnement. Automatique n'envoie aucune préférence ; si le fournisseur ou le modèle refuse la valeur choisie, KNX AI réessaie sans elle.",
|
|
94
107
|
"ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
|
|
95
108
|
"ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
|
|
96
109
|
"installingOllamaModel": "Starting Ollama and installing model…",
|
|
@@ -123,11 +136,13 @@
|
|
|
123
136
|
"chatContextSourceKnxTraffic": "Résumé KNX actuel, anomalies, topologie et télégrammes sélectionnés.",
|
|
124
137
|
"chatContextSourceAdapterHistory": "Historique quotidien persistant des événements des adaptateurs détectés, y compris les détections des caméras.",
|
|
125
138
|
"chatContextSourceEtsProject": "Sémantique ETS et inventaire complet du projet Node-RED.",
|
|
126
|
-
"chatContextSourceMemoryEducation": "Contexte de session, Éducation IA
|
|
139
|
+
"chatContextSourceMemoryEducation": "Contexte de session, Éducation IA, mémoire domestique limitée et planifications actives.",
|
|
127
140
|
"chatContextSourceCameras": "Caméras détectées et leurs fonctionnalités disponibles.",
|
|
128
141
|
"chatContextSourceBadge": "Source",
|
|
129
142
|
"chatContextFileChatContext": "Tours de conversation persistants, instructions et règles de notification des caméras.",
|
|
130
|
-
"chatContextFileHomeMemory": "
|
|
143
|
+
"chatContextFileHomeMemory": "Mémoire domestique apprise et limitée uniquement ; l’Éducation IA reste dans la propriété du nœud.",
|
|
144
|
+
"chatContextFileSchedules": "État d’exécution persistant faisant autorité pour les planifications et rappels de ce nœud.",
|
|
145
|
+
"chatContextFileSchedulesReadable": "Vue lisible générée des planifications et rappels de ce nœud.",
|
|
131
146
|
"chatContextFileAssistantConfig": "Configuration persistante de l'Assistant web et zones sémantiques de ce nœud.",
|
|
132
147
|
"chatContextFileBadge": "Fichier",
|
|
133
148
|
"chatContextDirectoryRoot": "Racine de l'archive des télégrammes",
|
|
@@ -140,14 +155,14 @@
|
|
|
140
155
|
"chatAdapterIntro": "Choisissez un préréglage pour insérer son code de mappage d’entrée et de sortie. La liste est chargée depuis le fichier d’adaptateurs de chat fourni ; le code généré reste modifiable.",
|
|
141
156
|
"chatAdapterCodeHelp": "Les mappages s’exécutent de façon synchrone. Renvoyez msg pour continuer ou aucune valeur pour l’écarter. Les erreurs sont interceptées et signalées sans arrêter Node-RED.",
|
|
142
157
|
"homeIntelligenceIntro": "Le nœud crée un modèle ETS sémantique multilingue. Les notifications proactives ne sont envisagées que si l'Éducation IA les demande explicitement ; il n'envoie jamais de commande KNX de manière autonome.",
|
|
143
|
-
"aiEducationHelp": "Seul l
|
|
158
|
+
"aiEducationHelp": "Seul l’utilisateur peut modifier cette propriété du nœud. Utilisez-la pour les consignes durables et les règles de notification proactive, notamment les conditions, la durée, les heures silencieuses et la répétition. Le modèle la lit comme une consigne faisant autorité, mais ne l’écrit jamais. Les faits et préférences demandés dans le chat sont conservés dans la mémoire apprise du chat ; les planifications, rappels, surveillances et commandes futures, ponctuels ou récurrents, sont conservés par le planificateur sémantique. Aucune phrase déclencheuse ni aucun routage par intent n’est requis. Maximum 16 000 caractères."
|
|
144
159
|
},
|
|
145
160
|
"placeholder": {
|
|
146
161
|
"llmBaseUrl": "https://api.openai.com/v1/chat/completions (or your compatible endpoint)",
|
|
147
162
|
"llmApiKey": "Paste API key (starts with sk-)",
|
|
148
163
|
"llmModel": "e.g. gpt-4o-mini",
|
|
149
164
|
"llmSystemPrompt": "Optional. Leave empty for default.",
|
|
150
|
-
"aiEducation": "Exemple :
|
|
165
|
+
"aiEducation": "Exemple : répondre brièvement. Notifier mon dernier chat si une fenêtre reste ouverte 30 minutes ; ne pas me notifier entre 23:00 et 07:00."
|
|
151
166
|
},
|
|
152
167
|
"sidebar": {
|
|
153
168
|
"ui": {
|
|
@@ -28,21 +28,30 @@ Ogni risposta basata sul Web contiene citazioni validate dal runtime con URL del
|
|
|
28
28
|
|
|
29
29
|
Dopo che sono disponibili risultati Web verificati, il modello può comporre gli altri tool abilitati quando la chat corrente o Educazione AI lo autorizzano. L'accesso Web non amplia mai i permessi: disponibilità di telecamere, TTS e memoria, così come letture e scritture KNX, validazione locale ETS/DPT e conferma configurata per le scritture KNX, restano invariate. Le richieste Web espongono la query e l'IP pubblico del server ai siti esterni o al servizio di ricerca; dati KNX/ETS, contenuti delle telecamere, identificativi chat, memoria appresa e credenziali non vengono mai aggiunti automaticamente.
|
|
30
30
|
|
|
31
|
+
### Pianificazioni e promemoria in linguaggio naturale
|
|
32
|
+
Nel normale linguaggio della chat, l'utente può chiedere a KNX AI di creare, elencare o annullare un promemoria, un monitoraggio o un futuro comando domestico, una sola volta oppure con ripetizione. Il modello sceglie semanticamente lo strumento strutturato di pianificazione `scheduleActions` partendo dalla richiesta completa e conserva l'obiettivo e tutte le condizioni come istruzione in linguaggio umano. Non esistono parole chiave per le pianificazioni, liste di frasi trigger o classificatori di intent rigidi: la formulazione e la lingua non limitano la funzione.
|
|
33
|
+
|
|
34
|
+
Le pianificazioni appartengono alla sessione chat e persistono per singolo nodo KNX AI anche dopo il riavvio di Node-RED. Lo stato di runtime autorevole è `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json`; KNX AI genera anche `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` come vista leggibile. Un piano può essere eseguito una volta, ripetersi a intervalli di almeno cinque minuti e avere una scadenza facoltativa. Il modello può elencare o annullare solo le pianificazioni attive appartenenti alla chat corrente, salvo richiesta esplicita dell'utente di annullarle tutte per quella chat.
|
|
35
|
+
|
|
36
|
+
Quando arriva il momento di eseguire un'attività, KNX AI avvia un passaggio separato del modello usando l'istruzione in linguaggio umano salvata come autorizzazione attendibile dell'utente. Un monitoraggio resta silenzioso se la condizione non è soddisfatta. Al momento dell'esecuzione valgono ancora i permessi esistenti: un monitoraggio meteo richiede **Consenti all'AI di usare il Web** e usa lo stesso budget Web, un risultato parlato esce dall'uscita 5 e richiede quindi un nodo TTS Ultimate collegato, mentre gli strumenti telecamera restano limitati agli adapter rilevati. Una scrittura KNX pianificata conserva tutti i controlli ETS/DPT e, se abilitata, mostra l'anteprima alla stessa sessione chat e attende la conferma prima di emettere qualsiasi messaggio dall'uscita 4.
|
|
37
|
+
|
|
38
|
+
Per esempio, l'utente può scrivere: «Per i prossimi cinque giorni, controlla ogni 30 minuti le previsioni per Cortemaggiore e usa TTS Ultimate solo se sono previsti temporali». KNX AI può conservare l'intera condizione e la durata in un unico monitoraggio ricorrente; restano necessari i permessi Web e il collegamento TTS descritti sopra.
|
|
39
|
+
|
|
31
40
|
## Comandi (input)
|
|
32
41
|
Invia `msg.topic`:
|
|
33
42
|
- `summary` (o vuoto): emette subito la summary
|
|
34
|
-
- `reset`: azzera storico, contatori, memoria domestica appresa
|
|
43
|
+
- `reset`: azzera storico, contatori, memoria domestica appresa, tutti i context CHAT persistenti e ogni pianificazione di questo nodo; l'Educazione AI configurata nel nodo resta invariata
|
|
35
44
|
- `ask`: invia una domanda all'LLM configurato
|
|
36
45
|
- `confirm` / `cancel`: conferma o annulla i comandi KNX in attesa senza richiamare l'LLM
|
|
37
|
-
- `clear_chat`: azzera turni recenti, istruzioni persistenti e comandi in attesa
|
|
46
|
+
- `clear_chat`: azzera turni recenti, istruzioni persistenti e comandi in attesa della sessione corrente e annulla le sue pianificazioni attive; le altre sessioni ed Educazione AI restano invariate
|
|
38
47
|
|
|
39
48
|
Per `ask`, passa la domanda in `msg.prompt` (consigliato), in `msg.payload` (stringa), oppure nei comuni campi Telegram `msg.payload.content` / `msg.payload.text`.
|
|
40
49
|
|
|
41
50
|
Se l'elaborazione dura più di 1,2 secondi, l'uscita 3 emette subito il messaggio intermedio localizzato «Sto pensando…», con `msg.knxAi.type = "thinking"` e `msg.knxAi.transient = true`. L'adattatore chat lo invia allo stesso utente, mentre la risposta finale arriva normalmente appena pronta. Questo messaggio di avanzamento non viene mai salvato nel contesto della conversazione né nella memoria appresa.
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
Ogni richiesta chat LLM usa un timeout minimo di 30 minuti, indipendente dal provider. Non esiste un campo timeout da gestire nell'editor. È un'attesa massima, non un ritardo artificiale: i modelli più veloci terminano comunque appena la risposta è pronta. Se viene raggiunto anche questo limite, KNX AI segnala che il modello non ha completato la risposta e suggerisce di riprovare o ridurre il contesto del prompt.
|
|
44
53
|
|
|
45
|
-
Per i provider locali, **Quantità contesto chat** permette di scegliere esplicitamente 4K, 8K
|
|
54
|
+
Per i provider locali, **Quantità contesto chat** permette di scegliere esplicitamente 4K, 8K, 16K oppure nessun limite KNX AI; 16K resta il valore predefinito. Con nessun limite KNX AI viene usata la finestra di contesto dichiarata o attiva del modello, senza oltrepassarne il massimo fisico. La scelta limita proporzionalmente i dati KNX, memoria, progetto Node-RED e adapter forniti al modello, mantenendo completo il contratto degli strumenti dell’agente. Nessuna funzione viene abilitata o disabilitata in base a formulazioni, parole chiave o intent linguistici.
|
|
46
55
|
|
|
47
56
|
Lo stato del nodo sul canvas è riservato intenzionalmente all'ultima richiesta in ingresso e al messaggio localizzato «Sto pensando…» mentre l'LLM è in esecuzione. Telegrammi KNX, aggiornamenti del gateway, frequenze del traffico, messaggi ready e risultati tecnici non lo sovrascrivono mai; restano disponibili tramite uscite, log e dati dell'Assistente.
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Collega l'uscita 5 a uno o più nodi `ttsultimate` del pacchetto opzionale `node
|
|
|
84
93
|
Il modello decide se preparare un annuncio ragionando sulla richiesta corrente, sulle istruzioni persistenti della chat e sull'Educazione AI gestita dall'utente: non esistono intent per gli annunci né liste di frasi di attivazione. Valori KNX, eventi degli adapter, immagini e archivi restano dati e non diventano istruzioni, ma le indicazioni autorevoli dell'utente possono insegnare al modello come agire su quei dati. L'uscita 5 emette il testo esatto da pronunciare in `msg.payload`, imposta `msg.topic = "knx_ai_announcement"` e aggiunge `msg.knxAi.type = "tts_announcement"` insieme a `msg.knxAi.sourceNodeId`, `msg.knxAi.sessionId` e `msg.knxAi.reason`. TTS Ultimate gestisce poi player, voce, volume, hailing e coda.
|
|
85
94
|
|
|
86
95
|
### Riepilogo del contesto della chat
|
|
87
|
-
L'editor del nodo mostra una scheda compatta con le fonti disponibili alla chat: traffico KNX corrente e archiviato, eventi persistenti degli adapter, semantica ETS e progetto Node-RED, memoria di sessione e domestica, Educazione AI e telecamere rilevate. Mostra anche il contesto operativo massimo scelto dall'utente e il peso UTF-8 effettivo dell'ultimo prompt della chat; quando il provider comunica i token di input viene usato il valore esatto, altrimenti il conteggio è indicato come stima. La scheda elenca
|
|
96
|
+
L'editor del nodo mostra una scheda compatta con le fonti disponibili alla chat: traffico KNX corrente e archiviato, eventi persistenti degli adapter, semantica ETS e progetto Node-RED, memoria di sessione e domestica, Educazione AI, pianificazioni attive e telecamere rilevate. Mostra anche il contesto operativo massimo scelto dall'utente e il peso UTF-8 effettivo dell'ultimo prompt della chat; quando il provider comunica i token di input viene usato il valore esatto, altrimenti il conteggio è indicato come stima. La scheda elenca i percorsi assoluti dei file delle pianificazioni, JSON autorevole e Markdown leggibile, oltre alle directory degli archivi KNX e degli eventi adapter e al formato giornaliero `YYYY-MM-DD.knxctx`. L'Educazione AI è salvata nella configurazione del nodo e quindi non ha un file di runtime separato.
|
|
88
97
|
|
|
89
|
-
Il modello riceve letture e scritture KNX, adapter telecamera, annunci TTS
|
|
98
|
+
Il modello riceve letture e scritture KNX, adapter telecamera, annunci TTS, memoria persistente, accesso Web e pianificazioni/promemoria come strumenti strutturati. Può sceglierli e combinarli semanticamente partendo dalla richiesta corrente e dalle indicazioni autorevoli apprese, senza routing per intent linguistici. Il runtime valida soltanto argomenti, disponibilità degli adapter telecamera e confini di sicurezza; le scritture KNX conservano validazione ETS/DPT locale e conferma configurata.
|
|
90
99
|
|
|
91
100
|
### Modifica e backup dell'apprendimento CHAT
|
|
92
101
|
La scheda **Conversazioni e casa** nella configurazione Node-RED di KNX AI include il pulsante **Apri Apprendimento AI Chat**, che apre la Web UI Vue direttamente su questo editor per il nodo corrente.
|
|
@@ -107,7 +116,9 @@ Non esistono un interruttore o impostazioni proattive avanzate separate. Una con
|
|
|
107
116
|
|
|
108
117
|
L'ultima sessione chat viene ricordata come proprietario e riceve i messaggi spontanei. L'uscita 3 emette un messaggio localizzato con `msg.knxAi.type = "proactive_notification"`; un `msg.inputMessage` sintetico conserva la sessione per l'adattatore chat. Un limite rigido di tre notifiche proattive all'ora evita abusi. Il nodo non emette mai l'uscita 4 e non modifica autonomamente KNX; un'eventuale richiesta successiva passa sempre dalla normale validazione e conferma.
|
|
109
118
|
|
|
110
|
-
Il riferimento appreso condiviso viene caricato all'avvio da `<userDir>/knxai/memory/knxai-home-memory.md`, riscritto atomicamente ogni 15 minuti e sempre limitato rigidamente a 5 MB. Conserva al massimo 120 osservazioni significative, 80 abitudini aggregate, 80 notifiche e 300 oggetti ETS semantici, mai un flusso illimitato di telegrammi raw. Gli elementi vecchi e meno importanti vengono eliminati per primi.
|
|
119
|
+
Il riferimento appreso condiviso viene caricato all'avvio da `<userDir>/knxai/memory/knxai-home-memory.md`, riscritto atomicamente ogni 15 minuti e sempre limitato rigidamente a 5 MB. Conserva al massimo 120 osservazioni significative, 80 abitudini aggregate, 80 notifiche e 300 oggetti ETS semantici, mai un flusso illimitato di telegrammi raw. Gli elementi vecchi e meno importanti vengono eliminati per primi.
|
|
120
|
+
|
|
121
|
+
**Educazione AI** è limitata a 16.000 caratteri ed è una proprietà fissa salvata con il nodo nel flow Node-RED. Solo l'utente la modifica nell'editor e la applica con Deploy. Il modello la legge come istruzione autorevole, ma non può mai scriverla o sovrascriverla. Fatti e preferenze richiesti in chat appartengono alla memoria appresa della chat; pianificazioni, promemoria, monitoraggi e comandi futuri, singoli o ricorrenti, appartengono allo scheduler semantico. Il file della memoria appresa non contiene intenzionalmente il testo dell'Educazione.
|
|
111
122
|
|
|
112
123
|
## Esempio pratico di configurazione
|
|
113
124
|
Inserisci l'intera policy di notifica in **Educazione AI** (`aiEducation`):
|
|
@@ -154,6 +165,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
|
|
|
154
165
|
- **URL endpoint**: URL endpoint chat/completions.
|
|
155
166
|
- **API key**: chiave API (non necessaria con Ollama locale; opzionale per Bionic LM Studio, salvo autenticazione attiva sul server).
|
|
156
167
|
- **Modello**: ID/nome modello.
|
|
168
|
+
- **Impegno di ragionamento**: preferenza indipendente dal provider per i modelli che espongono il controllo dell’impegno di ragionamento. **Automatico** non invia alcuna preferenza e conserva il valore predefinito del modello/provider. Le scelte esplicite sono `none`, `minimal`, `low`, `medium`, `high`, `xhigh` e `max`; il supporto dipende dal protocollo di richiesta e dal modello, e KNX AI riprova senza la preferenza se viene rifiutata.
|
|
157
169
|
- **Consenti all'AI di usare il Web**: disattivato per impostazione predefinita. Permette al modello di scegliere semanticamente il tool Web generale e restituire fonti verificate e citate.
|
|
158
170
|
- **Consenti controlli Web proattivi**: opt-in separato per i controlli in background; richiede anche istruzioni esplicite scritte dall'utente in **Educazione AI**.
|
|
159
171
|
- **Intervallo minimo dei controlli proattivi**: tempo minimo tra i cicli proattivi; non ritarda le operazioni Web richieste durante un turno utente attivo.
|
|
@@ -163,7 +175,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
|
|
|
163
175
|
- **Consenti all'AI di leggere stati KNX e comandare attuatori**: abilita l'uscita 4 ed è disattivato per default. Gli oggetti esatti del catalogo ETS possono essere letti; le scritture sono accettate solo per gli oggetti classificati come `command`. Operazioni sconosciute, con DPT discordante, non valide o eccessive e scritture verso oggetti di stato/neutrali vengono rifiutate localmente.
|
|
164
176
|
- **Chiedi conferma prima di inviare comandi KNX**: attivo per default. Mostra prima le modifiche validate e non emette comandi KNX finché la stessa sessione chat non le conferma. Quando ci sono comandi in attesa, la risposta aggiunge sempre le istruzioni esatte per confermare o annullare nella lingua della richiesta corrente. I comandi vengono validati nuovamente subito prima dell'uscita.
|
|
165
177
|
- **Adattatore messaggi ingresso/uscita**: parte da **Nessun adattatore**. La selezione carica la coppia predefinita di mappature ingresso/uscita; entrambe restano nascoste nell'editor.
|
|
166
|
-
- **Educazione AI**: istruzioni autorevoli
|
|
178
|
+
- **Educazione AI**: istruzioni fisse e autorevoli del nodo, modificate soltanto dall'utente e applicate con Deploy. Il modello le legge ma non le scrive mai. Qui vanno le regole proattive domestiche permanenti; fatti e preferenze richiesti in chat vanno nella memoria appresa, mentre pianificazioni, promemoria, monitoraggi e comandi futuri, singoli o ricorrenti, vanno nello scheduler semantico senza frasi di attivazione né routing per intent.
|
|
167
179
|
- Gli estratti inclusi nel pacchetto da help, README, changelog, wiki ed esempi non vengono inviati nei prompt di Telegram, RedBot o CHAT personalizzate. Restano disponibili soltanto all'Assistente web per le domande tecniche sul pacchetto.
|
|
168
180
|
- Pulsante **Aggiorna**: interroga il provider e popola i modelli disponibili. Durante il caricamento l'icona ruota; il completamento corretto non mostra messaggi.
|
|
169
181
|
|
|
@@ -175,7 +187,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
|
|
|
175
187
|
- **2) Installalo**: scarica e installa localmente il modello (esempio `llama3.1`).
|
|
176
188
|
- Durante refresh/installazione, KNX AI prova anche ad avviare automaticamente il server Ollama quando possibile.
|
|
177
189
|
- Se l'installazione fallisce per errore di connessione, verifica che Ollama sia avviato (app desktop o `ollama serve`).
|
|
178
|
-
- Il contesto massimo dichiarato da `/api/show` resta informativo. KNX AI invia come `num_ctx` il budget scelto di 4K, 8K o 16K
|
|
190
|
+
- Il contesto massimo dichiarato da `/api/show` resta informativo. KNX AI invia come `num_ctx` il budget scelto di 4K, 8K o 16K; con nessun limite KNX AI usa il contesto dichiarato dal modello, senza mai oltrepassarne il massimo fisico. Ogni fonte di contesto viene limitata proporzionalmente senza rimuovere capacità dell'agente.
|
|
179
191
|
- Se Node-RED gira in Docker, usa `host.docker.internal` al posto di `localhost` nell'endpoint.
|
|
180
192
|
|
|
181
193
|
### Setup rapido Bionic LM Studio (locale)
|
|
@@ -183,7 +195,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
|
|
|
183
195
|
- Avvia il server API di LM Studio dalla pagina **Developer** oppure con `lms server start`.
|
|
184
196
|
- Endpoint predefinito: `http://localhost:1234/v1/chat/completions`.
|
|
185
197
|
- Premi **Aggiorna** per caricare tutti i modelli esposti da `/v1/models`; se non è configurato un modello viene selezionato il primo.
|
|
186
|
-
- Se un modello è già caricato, KNX AI conserva la lunghezza del contesto attiva. KNX AI non carica mai un modello Bionic inattivo tramite l'API di gestione: la prima richiesta chat lascia che Bionic lo carichi JIT con i valori predefiniti salvati per il modello.
|
|
198
|
+
- Se un modello è già caricato, KNX AI conserva la lunghezza del contesto attiva. KNX AI non carica mai un modello Bionic inattivo tramite l'API di gestione: la prima richiesta chat lascia che Bionic lo carichi JIT con i valori predefiniti salvati per il modello. KNX AI usa il budget prompt scelto di 4K, 8K o 16K, oppure la finestra dichiarata o attiva del modello quando è selezionato nessun limite KNX AI, senza oltrepassarne il massimo fisico; ragionamento, KNX, routine, telecamere e TTS restano disponibili.
|
|
187
199
|
- La API key è opzionale, salvo autenticazione attiva nelle impostazioni del server LM Studio. In Docker sostituisci `localhost` con `host.docker.internal`.
|
|
188
200
|
|
|
189
201
|
## Nota sicurezza
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "URL endpoint",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Modello",
|
|
27
|
+
"llmReasoningEffort": "Impegno di ragionamento",
|
|
27
28
|
"llmPromptContextTokens": "Quantità contesto chat",
|
|
28
29
|
"llmSystemPrompt": "Prompt di sistema",
|
|
29
30
|
"llmIncludeRaw": "Includi payload raw in hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "Ridotto (4K, più veloce)",
|
|
58
59
|
"medium": "Medio (8K)",
|
|
59
|
-
"full": "Completo (16K)"
|
|
60
|
+
"full": "Completo (16K)",
|
|
61
|
+
"unlimited": "Nessun limite KNX AI (usa il contesto del modello)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "Automatico (predefinito del modello/provider)",
|
|
65
|
+
"none": "Nessuno",
|
|
66
|
+
"minimal": "Minimo",
|
|
67
|
+
"low": "Basso",
|
|
68
|
+
"medium": "Medio",
|
|
69
|
+
"high": "Alto",
|
|
70
|
+
"xhigh": "Molto alto",
|
|
71
|
+
"max": "Massimo"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "Nessun adattatore"
|
|
@@ -100,7 +112,8 @@
|
|
|
100
112
|
"lmStudioContextFailed": "Impossibile configurare il contesto del modello",
|
|
101
113
|
"lmStudioContextCurrentlyLoaded": "attualmente caricato",
|
|
102
114
|
"localContextBudget": "Budget contesto KNX AI",
|
|
103
|
-
"promptContextHint": "Controlla la quantità di contesto KNX, memoria, progetto e adapter inviata ai modelli locali. Non abilita o disabilita strumenti e non usa intent linguistici.",
|
|
115
|
+
"promptContextHint": "Controlla la quantità di contesto KNX, memoria, progetto e adapter inviata ai modelli locali. Scegli “Nessun limite KNX AI” per usare la finestra dichiarata o attiva del modello. Non abilita o disabilita strumenti e non usa intent linguistici.",
|
|
116
|
+
"reasoningEffortHint": "Preferenza facoltativa per i modelli che supportano l'impegno di ragionamento. Automatico non invia alcuna preferenza; se il provider o il modello rifiuta il valore scelto, KNX AI riprova senza di esso.",
|
|
104
117
|
"ollamaNotSupported": "Modalita locale Ollama: API key non richiesta. Endpoint predefinito: http://localhost:11434/api/chat.",
|
|
105
118
|
"ollamaNoModels": "Nessun modello Ollama locale trovato. Installa un modello o scegli dalla libreria.",
|
|
106
119
|
"installingOllamaModel": "Avvio Ollama e installo il modello…",
|
|
@@ -133,11 +146,13 @@
|
|
|
133
146
|
"chatContextSourceKnxTraffic": "Riepilogo KNX corrente, anomalie, topologia e telegrammi selezionati.",
|
|
134
147
|
"chatContextSourceAdapterHistory": "Storico giornaliero persistente degli eventi degli adapter rilevati, comprese le rilevazioni delle telecamere.",
|
|
135
148
|
"chatContextSourceEtsProject": "Semantica ETS e inventario completo del progetto Node-RED.",
|
|
136
|
-
"chatContextSourceMemoryEducation": "Contesto di sessione, Educazione AI
|
|
149
|
+
"chatContextSourceMemoryEducation": "Contesto di sessione, Educazione AI, memoria domestica limitata e pianificazioni attive.",
|
|
137
150
|
"chatContextSourceCameras": "Telecamere rilevate e relative funzionalità disponibili.",
|
|
138
151
|
"chatContextSourceBadge": "Fonte",
|
|
139
152
|
"chatContextFileChatContext": "Turni persistenti, istruzioni e regole di notifica delle telecamere.",
|
|
140
|
-
"chatContextFileHomeMemory": "
|
|
153
|
+
"chatContextFileHomeMemory": "Solo memoria domestica appresa e limitata; l'Educazione AI resta nella proprietà del nodo.",
|
|
154
|
+
"chatContextFileSchedules": "Stato di runtime persistente e autorevole delle pianificazioni e dei promemoria di questo nodo.",
|
|
155
|
+
"chatContextFileSchedulesReadable": "Vista leggibile generata delle pianificazioni e dei promemoria di questo nodo.",
|
|
141
156
|
"chatContextFileAssistantConfig": "Configurazione persistente dell'Assistente web e aree semantiche di questo nodo.",
|
|
142
157
|
"chatContextFileBadge": "File",
|
|
143
158
|
"chatContextDirectoryRoot": "Radice archivio telegrammi",
|
|
@@ -150,14 +165,14 @@
|
|
|
150
165
|
"chatAdapterIntro": "Scegli un preset per inserire il codice di mappatura in ingresso e in uscita. La lista viene caricata dal file degli adattatori chat incluso nel pacchetto; il codice generato resta modificabile.",
|
|
151
166
|
"chatAdapterCodeHelp": "Le mappature sono sincrone. Restituisci msg per continuare oppure nessun valore per scartarlo. Gli errori vengono intercettati e segnalati senza arrestare Node-RED.",
|
|
152
167
|
"homeIntelligenceIntro": "Il nodo crea un modello ETS semantico multilingue. Le notifiche proattive vengono valutate solo quando l'Educazione AI le richiede esplicitamente; non invia mai autonomamente comandi KNX.",
|
|
153
|
-
"aiEducationHelp": "Solo l'utente può modificare questa
|
|
168
|
+
"aiEducationHelp": "Solo l'utente può modificare questa proprietà del nodo. Usala per istruzioni durevoli e regole di notifica proattiva, comprese condizioni, durata, ore silenziose e ripetizione. Il modello la legge come istruzione autorevole, ma non la scrive mai. Fatti e preferenze richiesti in chat vengono conservati nella memoria appresa della chat; pianificazioni, promemoria, monitoraggi e comandi futuri, singoli o ricorrenti, vengono conservati dallo scheduler semantico. Non servono frasi di attivazione né routing per intent. Massimo 16.000 caratteri."
|
|
154
169
|
},
|
|
155
170
|
"placeholder": {
|
|
156
171
|
"llmBaseUrl": "https://api.openai.com/v1/chat/completions (o endpoint compatibile)",
|
|
157
172
|
"llmApiKey": "Incolla la chiave (inizia con sk-)",
|
|
158
173
|
"llmModel": "es. gpt-4o-mini",
|
|
159
174
|
"llmSystemPrompt": "Opzionale. Lascia vuoto per default.",
|
|
160
|
-
"aiEducation": "Esempio:
|
|
175
|
+
"aiEducation": "Esempio: rispondi in modo conciso. Avvisa la mia ultima chat se una finestra resta aperta per 30 minuti; non avvisarmi tra le 23:00 e le 07:00."
|
|
161
176
|
},
|
|
162
177
|
"sidebar": {
|
|
163
178
|
"ui": {
|
|
@@ -28,21 +28,30 @@ Web 访问默认关闭。启用**允许 AI 使用 Web**后,对话模型可直
|
|
|
28
28
|
|
|
29
29
|
获得已验证的 Web 结果后,如果当前聊天或 AI 教育已授权,模型可组合其他已启用工具。Web 访问绝不会扩大权限:摄像头、TTS 和记忆的可用性,以及 KNX 读写、本地 ETS/DPT 验证和已配置的 KNX 写入确认机制都保持不变。Web 请求会向外部网站或搜索服务公开查询内容及本服务器的公网 IP;KNX/ETS 数据、摄像头内容、聊天标识符、已学习记忆和凭据绝不会被自动加入。
|
|
30
30
|
|
|
31
|
+
### 自然语言计划与提醒
|
|
32
|
+
用户可以用普通聊天语言,让 KNX AI 创建、列出或取消一次性或周期性的提醒、监测任务或未来家庭命令。模型会根据完整请求按语义选择结构化计划工具 `scheduleActions`,并将完整目标和条件保存为人类语言指令。系统不使用计划关键词、触发短语列表或僵化的意图分类器,因此措辞和语言都不会限制此功能。
|
|
33
|
+
|
|
34
|
+
计划归属于聊天会话,并按 KNX AI 节点持久保存,Node-RED 重启后仍然有效。权威运行时状态位于 `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json`;KNX AI 还会生成 `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` 作为易读视图。计划可以只运行一次,也可以至少每五分钟重复一次,并可选择设置到期时间。模型只能列出或取消当前聊天所拥有的活动计划,除非用户明确要求取消该聊天的全部计划。
|
|
35
|
+
|
|
36
|
+
任务到期时,KNX AI 会启动一次独立的模型处理,并把已保存的人类语言指令作为可信的用户授权。监测条件未满足时不会发送消息。执行时仍须遵守现有权限:天气监测需要启用**允许 AI 使用 Web**并使用同一 Web 预算;语音结果从输出 5 发出,因此必须连接 TTS Ultimate 节点;摄像机工具仍仅限检测到的适配器。计划中的 KNX 写入仍须通过精确的 ETS/DPT 检查;启用确认后,会先向同一聊天会话显示预览,确认前输出 4 不会发出任何写入。
|
|
37
|
+
|
|
38
|
+
例如,用户可以说:“接下来五天,每 30 分钟检查 Cortemaggiore 的天气预报,仅在预计有雷暴时使用 TTS Ultimate 播报。”KNX AI 可以把完整条件和期限保存为一个周期性监测任务;上述 Web 权限和 TTS 连接要求仍然适用。
|
|
39
|
+
|
|
31
40
|
## 命令(输入)
|
|
32
41
|
发送 `msg.topic`:
|
|
33
42
|
- `summary`(或空):立即输出摘要
|
|
34
|
-
- `reset
|
|
43
|
+
- `reset`:清空内部历史、计数器、已学习的家庭记忆、所有持久聊天上下文及此节点的全部计划;节点中配置的 AI 教育保持不变
|
|
35
44
|
- `ask`:向已配置的 LLM 提问
|
|
36
45
|
- `confirm` / `cancel`:无需再次调用 LLM,即可确认或取消待处理的 KNX 命令
|
|
37
|
-
- `clear_chat
|
|
46
|
+
- `clear_chat`:清除当前会话的最近对话、持久指令和待处理命令,并取消该会话的活动计划;其他会话和 AI 教育保持不变
|
|
38
47
|
|
|
39
48
|
`ask` 的问题建议放在 `msg.prompt`,也可放在 `msg.payload`(字符串)或常见 Telegram 字段 `msg.payload.content` / `msg.payload.text`。
|
|
40
49
|
|
|
41
50
|
如果处理时间超过 1.2 秒,输出 3 会立即发送本地化的中间消息“我正在思考…”,并设置 `msg.knxAi.type = "thinking"` 和 `msg.knxAi.transient = true`。聊天适配器会将其发送给同一用户,最终答案准备好后仍会正常送达。此进度消息绝不会写入对话上下文或学习记忆。
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
每个 LLM 聊天请求都使用与提供商无关的至少 30 分钟超时。编辑器中无需维护超时字段。这是最长等待时间,并非人为延迟;较快的模型仍会在响应准备好后立即完成。即使达到此限制,KNX AI 也会说明模型未完成响应,并建议重试或缩减提示上下文。
|
|
44
53
|
|
|
45
|
-
对于本地提供商,**聊天上下文量**可明确选择 4K、8K
|
|
54
|
+
对于本地提供商,**聊天上下文量**可明确选择 4K、8K、16K 或无 KNX AI 限制;默认仍为 16K。选择无 KNX AI 限制时,将使用模型声明或当前启用的上下文窗口,但不会超过模型的物理上限。该选择会按比例限制发送给模型的 KNX、记忆、Node-RED 项目和适配器数据,同时保留完整的代理工具协议。任何能力都不会因措辞、关键词或语言 intent 而被启用或禁用。
|
|
46
55
|
|
|
47
56
|
Canvas 上的节点状态专门用于显示最近收到的请求,以及 LLM 运行期间本地化的“我正在思考…”状态。KNX 报文、网关更新、流量速率、ready 消息和技术结果绝不会覆盖该状态;这些信息仍可通过节点输出、日志和助手数据查看。
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Canvas 上的节点状态专门用于显示最近收到的请求,以及 LLM
|
|
|
84
93
|
模型会根据当前请求、持久聊天指令和用户管理的 AI 教育自行判断是否准备播报;系统没有播报 intent,也没有触发短语列表。KNX 数值、适配器事件、图像和存档始终是数据而不是指令,但可信的用户指导可以教会模型如何处理这些数据。输出 5 在 `msg.payload` 中发送需要朗读的准确文本,设置 `msg.topic = "knx_ai_announcement"`,并添加 `msg.knxAi.type = "tts_announcement"`、`msg.knxAi.sourceNodeId`、`msg.knxAi.sessionId` 和 `msg.knxAi.reason`。之后由 TTS Ultimate 处理播放器、语音、音量、提示音和队列。
|
|
85
94
|
|
|
86
95
|
### 聊天上下文概览
|
|
87
|
-
节点编辑器会显示一张紧凑卡片,汇总聊天可用的来源:当前 KNX 流量、ETS 语义与 Node-RED 项目、会话和家庭记忆、AI
|
|
96
|
+
节点编辑器会显示一张紧凑卡片,汇总聊天可用的来源:当前 KNX 流量、ETS 语义与 Node-RED 项目、会话和家庭记忆、AI 教育、活动计划及检测到的摄像机。卡片还会显示用户选择的最大运行上下文和上次聊天提示词的实际 UTF-8 大小;提供商返回输入令牌数时使用精确值,否则明确标为估算值。卡片还会列出权威 JSON 计划文件和易读 Markdown 计划文件的绝对路径,以及 KNX 报文与适配器事件归档和每日文件模式 `YYYY-MM-DD.knxctx`。AI 教育保存在节点配置中,因此没有单独的运行时文件。
|
|
88
97
|
|
|
89
|
-
模型会把 KNX 读写、摄像机适配器、TTS
|
|
98
|
+
模型会把 KNX 读写、摄像机适配器、TTS 播报、持久记忆、Web 访问以及计划/提醒作为结构化工具。它可以依据当前请求和可信的已学习指导进行语义选择与组合,而不经过语言意图路由。运行时只验证工具参数、摄像机适配器可用性和安全边界;KNX 写入仍保留本地 ETS/DPT 校验和已配置的确认步骤。
|
|
90
99
|
|
|
91
100
|
### 编辑和备份聊天学习
|
|
92
101
|
Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI 聊天学习**按钮;它会为当前节点直接打开 Vue Web UI 中的此编辑器。
|
|
@@ -105,7 +114,9 @@ Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI
|
|
|
105
114
|
|
|
106
115
|
最近一次聊天会话会被记为主人并接收主动消息。输出 3 会设置 `msg.knxAi.type = "proactive_notification"`,`msg.inputMessage` 为聊天适配器保留该会话。每小时最多三条主动通知可防止消息泛滥。节点绝不会主动使用输出 4,也不会自行修改 KNX。
|
|
107
116
|
|
|
108
|
-
共享的学习参考文件会在启动时从 `<userDir>/knxai/memory/knxai-home-memory.md` 加载,每 15 分钟以原子方式重写,并始终严格限制为 5 MB。最多保留 120 条重要观察、80 条聚合习惯、80 条通知和 300 个 ETS
|
|
117
|
+
共享的学习参考文件会在启动时从 `<userDir>/knxai/memory/knxai-home-memory.md` 加载,每 15 分钟以原子方式重写,并始终严格限制为 5 MB。最多保留 120 条重要观察、80 条聚合习惯、80 条通知和 300 个 ETS 语义对象,绝不会保存无限的原始报文流。较旧且优先级较低的项目会先被删除。
|
|
118
|
+
|
|
119
|
+
**AI 教育**最多 16,000 个字符,是随节点保存在 Node-RED 流程中的固定属性。只有用户能在编辑器中修改,并通过 Deploy 应用。模型会将其作为权威指导读取,但绝不能写入或覆盖。聊天中要求记住的事实和偏好属于学习到的聊天记忆;一次性或周期性的计划、提醒、监测和未来命令属于语义调度器。学习记忆文件有意不包含 AI 教育文本。
|
|
109
120
|
|
|
110
121
|
## 实用配置示例
|
|
111
122
|
请将完整的通知策略写入 **AI 教育** (`aiEducation`):
|
|
@@ -148,6 +159,7 @@ Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI
|
|
|
148
159
|
- **Endpoint URL**:chat/completions 接口 URL。
|
|
149
160
|
- **API key**:API Key(本地 Ollama 可不填;Bionic LM Studio 在未启用服务器身份验证时也可不填)。
|
|
150
161
|
- **Model**:模型 ID/名称。
|
|
162
|
+
- **推理强度**:适用于支持推理强度控制的模型,且不依赖具体提供商。选择**自动**时不发送偏好,并保留模型/提供商的默认值。可明确选择 `none`、`minimal`、`low`、`medium`、`high`、`xhigh` 或 `max`;实际支持情况取决于请求协议和模型。如果该值被拒绝,KNX AI 会在不发送此偏好的情况下重试。
|
|
151
163
|
- **允许 AI 使用 Web**:默认关闭。允许模型按语义选择通用 Web 工具,并返回已验证、已引用的来源。
|
|
152
164
|
- **允许主动 Web 检查**:用于后台检查的独立授权;还需要用户在 **AI 教育**中编写明确指令。
|
|
153
165
|
- **主动检查的最短间隔**:主动检查周期之间的最短时间;不会延迟用户活动回合中请求的 Web 操作。
|
|
@@ -157,7 +169,7 @@ Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI
|
|
|
157
169
|
- **允许 AI 读取 KNX 状态并控制执行器**:启用输出 4,默认关闭。可以读取 ETS 目录中的精确对象;仅接受写入明确标记为 `command` 的对象。未知、DPT 不匹配、无效或数量过多的操作,以及向状态或中性对象的写入,都会在本地被拒绝。
|
|
158
170
|
- **发送 KNX 命令前请求确认**:默认启用。先显示已验证的修改,在同一聊天会话确认前不会发送任何 KNX 命令。有命令等待确认时,回复始终会使用当前请求的语言附加准确的确认或取消说明。命令会在输出前再次验证。
|
|
159
171
|
- **输入/输出消息适配器**:默认为**无适配器**。选择后会加载预定义的输入和输出映射;两者在编辑器中始终保持隐藏。
|
|
160
|
-
- **AI
|
|
172
|
+
- **AI 教育**:固定且权威的节点指导,仅由用户修改并通过 Deploy 应用。模型会读取,但绝不会写入。长期主动家庭策略在这里定义;聊天中要求记住的事实和偏好进入学习记忆,一次性或周期性的计划、提醒、监测和未来命令进入语义调度器,无需触发短语或 intent 路由。
|
|
161
173
|
- 软件包附带的帮助、README、更新日志、Wiki 和示例片段不会加入 Telegram、RedBot 或自定义 CHAT 的提示词;仅网页助手在回答软件包技术问题时仍可使用这些内容。
|
|
162
174
|
- **Refresh** 按钮:请求 provider 并加载可用模型 ID。加载期间图标会旋转;成功完成时不会显示额外消息。
|
|
163
175
|
|
|
@@ -169,7 +181,7 @@ Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI
|
|
|
169
181
|
- **2) Install it**:在本机下载并安装模型(例如 `llama3.1`)。
|
|
170
182
|
- 在刷新/安装模型时,KNX AI 也会在可能情况下尝试自动启动 Ollama 服务。
|
|
171
183
|
- 若安装因连接错误失败,请确认 Ollama 已运行(桌面应用或 `ollama serve`)。
|
|
172
|
-
- `/api/show` 报告的最大上下文仅用于显示。KNX AI 会将所选的 4K、8K 或 16K 预算作为 `num_ctx`
|
|
184
|
+
- `/api/show` 报告的最大上下文仅用于显示。KNX AI 会将所选的 4K、8K 或 16K 预算作为 `num_ctx` 发送;选择无 KNX AI 限制时,则使用模型声明的上下文,但不会超过其物理上限。每个上下文来源仍会按比例受限,同时保留代理能力。
|
|
173
185
|
- 若 Node-RED 运行在 Docker 中,endpoint 请使用 `host.docker.internal` 替代 `localhost`。
|
|
174
186
|
|
|
175
187
|
### Bionic LM Studio 快速配置(本地)
|
|
@@ -177,7 +189,7 @@ Node-RED 的 KNX AI 配置中,**对话与家庭**选项卡包含**打开 AI
|
|
|
177
189
|
- 在 LM Studio 的 **Developer** 页面启动 API 服务,或运行 `lms server start`。
|
|
178
190
|
- 默认 endpoint:`http://localhost:1234/v1/chat/completions`。
|
|
179
191
|
- 点击 **Refresh** 加载 `/v1/models` 提供的全部模型;未配置模型时会自动选择第一个。
|
|
180
|
-
- 如果模型已加载,KNX AI 会保留其当前上下文长度。KNX AI 不会通过管理 API 加载未运行的 Bionic 模型:首次聊天请求会让 Bionic 根据该模型已保存的默认值进行 JIT
|
|
192
|
+
- 如果模型已加载,KNX AI 会保留其当前上下文长度。KNX AI 不会通过管理 API 加载未运行的 Bionic 模型:首次聊天请求会让 Bionic 根据该模型已保存的默认值进行 JIT 加载。KNX AI 会使用所选的 4K、8K 或 16K 提示预算;选择无 KNX AI 限制时,则使用模型声明或当前启用的上下文窗口,但不会超过其物理上限。推理、KNX、例程、摄像头和 TTS 能力保持可用。
|
|
181
193
|
- 除非在 LM Studio 服务设置中启用了身份验证,否则 API Key 可留空。在 Docker 中请将 `localhost` 替换为 `host.docker.internal`。
|
|
182
194
|
|
|
183
195
|
## 安全说明
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "Endpoint URL",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Model",
|
|
27
|
+
"llmReasoningEffort": "推理强度",
|
|
27
28
|
"llmPromptContextTokens": "聊天上下文量",
|
|
28
29
|
"llmSystemPrompt": "System prompt",
|
|
29
30
|
"llmIncludeRaw": "Include raw payload hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "精简(4K,更快)",
|
|
58
59
|
"medium": "中等(8K)",
|
|
59
|
-
"full": "完整(16K)"
|
|
60
|
+
"full": "完整(16K)",
|
|
61
|
+
"unlimited": "无 KNX AI 限制(使用模型上下文)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "自动(模型/提供商默认值)",
|
|
65
|
+
"none": "无",
|
|
66
|
+
"minimal": "最小",
|
|
67
|
+
"low": "低",
|
|
68
|
+
"medium": "中",
|
|
69
|
+
"high": "高",
|
|
70
|
+
"xhigh": "超高",
|
|
71
|
+
"max": "最大"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "无适配器"
|
|
@@ -90,7 +102,8 @@
|
|
|
90
102
|
"lmStudioContextFailed": "无法配置模型上下文",
|
|
91
103
|
"lmStudioContextCurrentlyLoaded": "当前已加载",
|
|
92
104
|
"localContextBudget": "KNX AI 上下文预算",
|
|
93
|
-
"promptContextHint": "控制发送给本地模型的 KNX
|
|
105
|
+
"promptContextHint": "控制发送给本地模型的 KNX、记忆、项目和适配器上下文量。选择“无 KNX AI 限制”可使用模型声明或当前启用的上下文窗口。它不会启用或禁用工具,也不使用 intent 路由。",
|
|
106
|
+
"reasoningEffortHint": "适用于支持推理强度的模型。选择“自动”时不发送偏好;如果提供商或模型拒绝所选值,KNX AI 会在不发送该值的情况下重试。",
|
|
94
107
|
"ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
|
|
95
108
|
"ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
|
|
96
109
|
"installingOllamaModel": "Starting Ollama and installing model…",
|
|
@@ -123,11 +136,13 @@
|
|
|
123
136
|
"chatContextSourceKnxTraffic": "当前 KNX 摘要、异常、拓扑和选定报文。",
|
|
124
137
|
"chatContextSourceAdapterHistory": "自动检测到的适配器事件的持久每日历史记录,包括摄像机检测事件。",
|
|
125
138
|
"chatContextSourceEtsProject": "ETS 语义和完整的 Node-RED 项目清单。",
|
|
126
|
-
"chatContextSourceMemoryEducation": "会话上下文、AI
|
|
139
|
+
"chatContextSourceMemoryEducation": "会话上下文、AI 教育、有界家庭记忆和活动计划。",
|
|
127
140
|
"chatContextSourceCameras": "检测到的摄像机及其可用功能。",
|
|
128
141
|
"chatContextSourceBadge": "来源",
|
|
129
142
|
"chatContextFileChatContext": "持久化对话轮次、指令和摄像机通知规则。",
|
|
130
|
-
"chatContextFileHomeMemory": "AI
|
|
143
|
+
"chatContextFileHomeMemory": "仅包含有界的家庭学习记忆;AI 教育保留在节点属性中。",
|
|
144
|
+
"chatContextFileSchedules": "此节点计划和提醒的权威持久运行时状态。",
|
|
145
|
+
"chatContextFileSchedulesReadable": "此节点计划和提醒自动生成的易读视图。",
|
|
131
146
|
"chatContextFileAssistantConfig": "此节点的持久化 Web 助手配置和语义区域。",
|
|
132
147
|
"chatContextFileBadge": "文件",
|
|
133
148
|
"chatContextDirectoryRoot": "报文归档根目录",
|
|
@@ -140,14 +155,14 @@
|
|
|
140
155
|
"chatAdapterIntro": "选择预设即可插入输入和输出映射代码。列表从随包提供的聊天适配器文件加载;生成的代码仍可编辑。",
|
|
141
156
|
"chatAdapterCodeHelp": "映射同步运行。返回 msg 以继续,或不返回值以丢弃消息。错误会被捕获并报告,不会停止 Node-RED。",
|
|
142
157
|
"homeIntelligenceIntro": "节点会创建多语言 ETS 语义模型。只有 AI 教育明确要求时,才会考虑主动通知;节点绝不会自行发送 KNX 命令。",
|
|
143
|
-
"aiEducationHelp": "
|
|
158
|
+
"aiEducationHelp": "只有用户可以编辑此节点属性。请用它设置长期指导和主动通知规则,包括条件、持续时间、静默时段及重复频率。模型会将其作为权威指导读取,但绝不会写入。聊天中要求记住的事实和偏好保存在学习到的聊天记忆中;一次性或周期性的计划、提醒、监测和未来命令由语义调度器保存。无需触发短语或 intent 路由。最多 16,000 个字符。"
|
|
144
159
|
},
|
|
145
160
|
"placeholder": {
|
|
146
161
|
"llmBaseUrl": "https://api.openai.com/v1/chat/completions (or your compatible endpoint)",
|
|
147
162
|
"llmApiKey": "Paste API key (starts with sk-)",
|
|
148
163
|
"llmModel": "e.g. gpt-4o-mini",
|
|
149
164
|
"llmSystemPrompt": "Optional. Leave empty for default.",
|
|
150
|
-
"aiEducation": "
|
|
165
|
+
"aiEducation": "示例:简洁回复。窗户保持打开 30 分钟时通知我最近的聊天;23:00 到 07:00 之间不要通知。"
|
|
151
166
|
},
|
|
152
167
|
"sidebar": {
|
|
153
168
|
"ui": {
|