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 @@ Jede Web-gestützte Antwort enthält laufzeitvalidierte Quellenangaben mit berei
|
|
|
28
28
|
|
|
29
29
|
Sobald verifizierte Webergebnisse vorliegen, kann das Modell weitere aktivierte Tools kombinieren, wenn die aktuelle Chat-Anfrage oder die KI-Erziehung dies autorisiert. Webzugriff erweitert niemals Berechtigungen: Verfügbarkeit von Kamera, TTS und Gedächtnis sowie KNX-Lese- und Schreiboperationen, lokale ETS-/DPT-Validierung und die konfigurierte Bestätigung von KNX-Schreibvorgängen bleiben unverändert. Web-Anfragen legen externen Websites oder dem Suchdienst die Anfrage und die öffentliche IP dieses Servers offen; KNX-/ETS-Daten, Kamerainhalte, Chat-Kennungen, gelerntes Gedächtnis und Zugangsdaten werden nie automatisch hinzugefügt.
|
|
30
30
|
|
|
31
|
+
### Pläne und Erinnerungen in natürlicher Sprache
|
|
32
|
+
Im normalen Chat kann der Benutzer KNX AI bitten, eine einmalige oder wiederkehrende Erinnerung, Überwachung oder einen zukünftigen Hausbefehl anzulegen, aufzulisten oder abzubrechen. Das Modell wählt das strukturierte Planungswerkzeug `scheduleActions` semantisch aus der vollständigen Anfrage und speichert das vollständige Ziel mit seinen Bedingungen als Anweisung in natürlicher Sprache. Es gibt keine Planungs-Schlüsselwörter, Listen von Auslösephrasen oder starren Intent-Klassifikatoren; Formulierung und Sprache schränken die Funktion nicht ein.
|
|
33
|
+
|
|
34
|
+
Pläne gehören zur Chat-Sitzung und bleiben pro KNX-AI-Node über Node-RED-Neustarts hinweg erhalten. Der verbindliche Laufzeitstatus liegt in `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json`; zusätzlich erzeugt KNX AI `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` als lesbare Ansicht. Ein Plan kann einmal laufen, sich in Abständen von mindestens fünf Minuten wiederholen und optional ablaufen. Das Modell kann nur die aktiven Pläne des aktuellen Chats auflisten oder abbrechen, außer der Benutzer verlangt ausdrücklich, alle Pläne dieses Chats abzubrechen.
|
|
35
|
+
|
|
36
|
+
Ist eine Aufgabe fällig, startet KNX AI einen getrennten Modelldurchlauf und verwendet die gespeicherte natürlichsprachige Anweisung als vertrauenswürdige Benutzerautorisierung. Eine Überwachung bleibt still, wenn ihre Bedingung nicht erfüllt ist. Bei der Ausführung gelten alle bestehenden Berechtigungen: Eine Wetterüberwachung benötigt **Der KI die Nutzung des Webs erlauben** und verwendet dasselbe Web-Budget, ein gesprochenes Ergebnis verlässt Ausgang 5 und benötigt deshalb einen verkabelten TTS-Ultimate-Node, und Kamerawerkzeuge bleiben auf erkannte Adapter beschränkt. Ein geplanter KNX-Schreibvorgang behält die exakten ETS-/DPT-Prüfungen bei und zeigt bei aktivierter Bestätigung derselben Chat-Sitzung zunächst eine Vorschau; Ausgang 4 sendet erst nach der Bestätigung.
|
|
37
|
+
|
|
38
|
+
Der Benutzer kann zum Beispiel schreiben: „Prüfe in den nächsten fünf Tagen alle 30 Minuten die Vorhersage für Cortemaggiore und verwende TTS Ultimate nur, wenn Gewitter vorhergesagt sind.“ KNX AI kann diese vollständige Bedingung und Dauer als eine wiederkehrende Überwachung speichern; die genannten Web- und TTS-Voraussetzungen bleiben bestehen.
|
|
39
|
+
|
|
31
40
|
## Befehle (Eingang)
|
|
32
41
|
Sende `msg.topic`:
|
|
33
42
|
- `summary` (oder leer): Summary sofort senden
|
|
34
|
-
- `reset`: internen Verlauf, Zähler, gelerntes Hausgedächtnis
|
|
43
|
+
- `reset`: internen Verlauf, Zähler, gelerntes Hausgedächtnis, alle gespeicherten Chat-Kontexte und alle Pläne dieses Nodes löschen; die im Node konfigurierte KI-Erziehung bleibt unverändert
|
|
35
44
|
- `ask`: Frage an das konfigurierte LLM senden
|
|
36
45
|
- `confirm` / `cancel`: ausstehende KNX-Befehle ohne erneuten LLM-Aufruf bestätigen oder abbrechen
|
|
37
|
-
- `clear_chat`: letzte Gesprächsschritte, dauerhafte Anweisungen und ausstehende Befehle der aktuellen Sitzung löschen
|
|
46
|
+
- `clear_chat`: letzte Gesprächsschritte, dauerhafte Anweisungen und ausstehende Befehle der aktuellen Sitzung löschen und ihre aktiven Pläne abbrechen; andere Sitzungen und die KI-Erziehung bleiben unverändert
|
|
38
47
|
|
|
39
48
|
Für `ask` die Frage in `msg.prompt` (empfohlen), `msg.payload` (String) oder den üblichen Telegram-Feldern `msg.payload.content` / `msg.payload.text` übergeben.
|
|
40
49
|
|
|
41
50
|
Dauert die Verarbeitung länger als 1,2 Sekunden, sendet Ausgang 3 sofort die lokalisierte Zwischenmeldung „Ich denke nach…“ mit `msg.knxAi.type = "thinking"` und `msg.knxAi.transient = true`. Der Chat-Adapter übermittelt sie an denselben Benutzer; die endgültige Antwort folgt wie gewohnt, sobald sie bereit ist. Diese Fortschrittsmeldung wird weder im Gesprächskontext noch im gelernten Gedächtnis gespeichert.
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
Jede LLM-Chat-Anfrage verwendet unabhängig vom Anbieter ein Mindest-Timeout von 30 Minuten. Im Editor muss kein Timeout-Feld gepflegt werden. Dies ist eine maximale Wartezeit, keine künstliche Verzögerung: Schnellere Modelle sind weiterhin fertig, sobald ihre Antwort bereitsteht. Wird selbst dieses Limit erreicht, meldet KNX AI, dass das Modell die Antwort nicht abgeschlossen hat, und empfiehlt einen neuen Versuch oder einen kleineren Prompt-Kontext.
|
|
44
53
|
|
|
45
|
-
Für lokale Anbieter lässt sich mit **Chat-Kontextmenge** ausdrücklich zwischen 4K, 8K und
|
|
54
|
+
Für lokale Anbieter lässt sich mit **Chat-Kontextmenge** ausdrücklich zwischen 4K, 8K, 16K und keinem KNX-AI-Limit wählen; 16K bleibt der Standard. Ohne KNX-AI-Limit wird das gemeldete oder aktive Kontextfenster des Modells verwendet, jedoch niemals dessen physisches Maximum überschritten. Die Auswahl begrenzt KNX-, Speicher-, Node-RED-Projekt- und Adapterdaten proportional, während der vollständige Werkzeugvertrag des Agenten erhalten bleibt. Fähigkeiten werden niemals anhand von Formulierungen, Schlüsselwörtern oder sprachlichen Intents aktiviert oder deaktiviert.
|
|
46
55
|
|
|
47
56
|
Der Node-Status im Canvas ist bewusst ausschließlich für die letzte eingehende Anfrage und den lokalisierten Zustand „Ich denke nach…“ während der LLM-Ausführung reserviert. KNX-Telegramme, Gateway-Aktualisierungen, Verkehrsraten, Bereitschaftsmeldungen und technische Ergebnisse überschreiben ihn nie; sie bleiben über Ausgänge, Logs und Assistentendaten verfügbar.
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Verbinden Sie Ausgang 5 mit einem oder mehreren `ttsultimate`-Nodes aus dem opti
|
|
|
84
93
|
Das Modell entscheidet anhand der aktuellen Anfrage, persistenter Chat-Anweisungen und der benutzerverwalteten KI-Erziehung, ob es eine Ansage vorbereitet; es gibt weder einen Ansage-Intent noch eine Liste von Auslösephrasen. KNX-Werte, Adapterereignisse, Kamerainhalte und Archive bleiben Daten statt Anweisungen, während vertrauenswürdige Benutzervorgaben dem Modell den Umgang mit diesen Daten beibringen können. Ausgang 5 gibt den exakt zu sprechenden Text in `msg.payload` aus, setzt `msg.topic = "knx_ai_announcement"` und ergänzt `msg.knxAi.type = "tts_announcement"` sowie `msg.knxAi.sourceNodeId`, `msg.knxAi.sessionId` und `msg.knxAi.reason`. TTS Ultimate verwaltet anschließend Player, Stimme, Lautstärke, Hailing und Warteschlange.
|
|
85
94
|
|
|
86
95
|
### Übersicht des Chat-Kontexts
|
|
87
|
-
Der Node-Editor zeigt eine kompakte Karte mit den für den Chat verfügbaren Quellen: aktuellem KNX-Verkehr, ETS-Semantik und Node-RED-Projekt, Sitzungs- und Hausgedächtnis, KI-Erziehung und erkannten Kameras. Sie zeigt außerdem den vom Benutzer gewählten maximalen operativen Kontext und die tatsächliche UTF-8-Größe des letzten Chat-Prompts; gemeldete Eingabe-Token des Anbieters werden exakt verwendet, andernfalls wird der Tokenwert als Schätzung gekennzeichnet.
|
|
96
|
+
Der Node-Editor zeigt eine kompakte Karte mit den für den Chat verfügbaren Quellen: aktuellem KNX-Verkehr, ETS-Semantik und Node-RED-Projekt, Sitzungs- und Hausgedächtnis, KI-Erziehung, aktiven Plänen und erkannten Kameras. Sie zeigt außerdem den vom Benutzer gewählten maximalen operativen Kontext und die tatsächliche UTF-8-Größe des letzten Chat-Prompts; gemeldete Eingabe-Token des Anbieters werden exakt verwendet, andernfalls wird der Tokenwert als Schätzung gekennzeichnet. Aufgeführt werden auch die absoluten Pfade der verbindlichen JSON-/lesbaren Markdown-Planungsdateien sowie die KNX-Telegramm- und Adapterereignisarchive mit dem Tagesdateimuster `YYYY-MM-DD.knxctx`. Die KI-Erziehung wird in der Node-Konfiguration gespeichert und hat daher keine eigene Laufzeitdatei.
|
|
88
97
|
|
|
89
|
-
Das Modell erhält KNX-Lese-/Schreiboperationen, Kamera-Adapter, TTS-Ansagen
|
|
98
|
+
Das Modell erhält KNX-Lese-/Schreiboperationen, Kamera-Adapter, TTS-Ansagen, persistenten Speicher, Webzugriff und Pläne/Erinnerungen als strukturierte Werkzeuge. Es kann sie anhand der aktuellen Anfrage und vertrauenswürdiger gelernter Vorgaben semantisch auswählen und kombinieren, ohne sprachliches Intent-Routing. Die Laufzeit prüft nur Argumente, die Verfügbarkeit von Kamera-Adaptern und Sicherheitsgrenzen; KNX-Schreibvorgänge behalten die lokale ETS-/DPT-Prüfung und die konfigurierte Bestätigung.
|
|
90
99
|
|
|
91
100
|
### CHAT-Lernen bearbeiten und sichern
|
|
92
101
|
Die Registerkarte **Gespräche & Zuhause** in der Node-RED-Konfiguration von KNX AI enthält die Schaltfläche **KI-Chat-Lernen öffnen**. Sie öffnet die Vue-Weboberfläche für den aktuellen Node direkt in diesem Editor.
|
|
@@ -105,7 +114,9 @@ Aus ETS-Hierarchie, Namen, Rollen und DPTs erstellt der Node ein deterministisch
|
|
|
105
114
|
|
|
106
115
|
Die letzte Chat-Sitzung wird als Eigentümer gespeichert und empfängt spontane Nachrichten. Ausgang 3 gibt `msg.knxAi.type = "proactive_notification"` aus; `msg.inputMessage` bewahrt die Sitzung für den Chat-Adapter. Höchstens drei proaktive Nachrichten pro Stunde verhindern eine Nachrichtenflut. Ausgang 4 wird niemals proaktiv verwendet und KNX wird nicht selbstständig verändert.
|
|
107
116
|
|
|
108
|
-
Die gemeinsame gelernte Referenz wird beim Start aus `<userDir>/knxai/memory/knxai-home-memory.md` geladen, alle 15 Minuten atomar neu geschrieben und immer strikt auf 5 MB begrenzt. Sie enthält höchstens 120 wichtige Beobachtungen, 80 aggregierte Gewohnheiten, 80 Benachrichtigungen und 300 semantische ETS-Objekte, niemals einen unbegrenzten Rohtelegrammstrom. Alte Einträge mit niedriger Priorität werden zuerst entfernt.
|
|
117
|
+
Die gemeinsame gelernte Referenz wird beim Start aus `<userDir>/knxai/memory/knxai-home-memory.md` geladen, alle 15 Minuten atomar neu geschrieben und immer strikt auf 5 MB begrenzt. Sie enthält höchstens 120 wichtige Beobachtungen, 80 aggregierte Gewohnheiten, 80 Benachrichtigungen und 300 semantische ETS-Objekte, niemals einen unbegrenzten Rohtelegrammstrom. Alte Einträge mit niedriger Priorität werden zuerst entfernt.
|
|
118
|
+
|
|
119
|
+
**KI-Erziehung** ist auf 16.000 Zeichen begrenzt und eine feste Eigenschaft, die mit dem Node im Node-RED-Flow gespeichert wird. Nur der Benutzer ändert sie im Editor und wendet sie mit Deploy an. Das Modell liest sie als verbindliche Vorgabe, kann sie aber niemals schreiben oder überschreiben. Im Chat angeforderte Fakten und Präferenzen gehören in das gelernte Chat-Gedächtnis; einmalige oder wiederkehrende Pläne, Erinnerungen, Überwachungen und zukünftige Befehle gehören in den semantischen Scheduler. Die Datei des gelernten Gedächtnisses enthält den Text der KI-Erziehung absichtlich nicht.
|
|
109
120
|
|
|
110
121
|
## Praktisches Konfigurationsbeispiel
|
|
111
122
|
Schreiben Sie die vollständige Benachrichtigungsrichtlinie in die **KI-Erziehung** (`aiEducation`):
|
|
@@ -148,6 +159,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
|
|
|
148
159
|
- **Endpoint URL**: URL des Chat/Completions-Endpunkts.
|
|
149
160
|
- **API key**: API-Schlüssel (für lokales Ollama nicht erforderlich; für Bionic LM Studio optional, sofern die Serverauthentifizierung deaktiviert ist).
|
|
150
161
|
- **Model**: Modell-ID/Name.
|
|
162
|
+
- **Denkaufwand**: Anbieterunabhängige Vorgabe für Modelle, die eine Steuerung des Denkaufwands anbieten. **Automatisch** sendet keine Vorgabe und behält den Modell-/Anbieterstandard bei. Explizit wählbar sind `none`, `minimal`, `low`, `medium`, `high`, `xhigh` und `max`; die Unterstützung hängt von Anfrageprotokoll und Modell ab. Wird der Wert abgelehnt, versucht KNX AI es ohne diese Vorgabe erneut.
|
|
151
163
|
- **Der KI die Nutzung des Webs erlauben**: Standardmäßig deaktiviert. Das Modell darf das allgemeine Web-Tool semantisch auswählen und verifizierte, zitierte Quellen zurückgeben.
|
|
152
164
|
- **Proaktive Web-Prüfungen erlauben**: Separate Freigabe für Hintergrundprüfungen; zusätzlich sind ausdrückliche, vom Benutzer verfasste Anweisungen in der **KI-Erziehung** erforderlich.
|
|
153
165
|
- **Mindestintervall für proaktive Prüfungen**: Mindestzeit zwischen proaktiven Zyklen; Web-Operationen in einem aktiven Benutzerturn werden dadurch nicht verzögert.
|
|
@@ -157,7 +169,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
|
|
|
157
169
|
- **KI darf KNX-Zustände lesen und Aktoren steuern**: Aktiviert Ausgang 4 und ist standardmäßig aus. Exakte ETS-Katalogobjekte dürfen gelesen werden; Schreiboperationen werden ausschließlich für Objekte mit Rolle `command` akzeptiert. Unbekannte, DPT-falsche, ungültige oder überzählige Operationen sowie Schreiboperationen auf Status-/Neutralobjekte werden lokal abgewiesen.
|
|
158
170
|
- **Vor dem Senden von KNX-Befehlen bestätigen lassen**: Standardmäßig aktiv. Zeigt zuerst die validierten Änderungen und sendet nichts, bis dieselbe Chat-Sitzung bestätigt. Wenn Befehle auf Bestätigung warten, fügt die Antwort immer die genauen Anweisungen zum Bestätigen oder Abbrechen in der Sprache der aktuellen Anfrage hinzu. Vor der Ausgabe werden die Befehle erneut validiert.
|
|
159
171
|
- **Adapter für Ein-/Ausgangsnachrichten**: Standardmäßig ist **Kein Adapter** gewählt. Die Auswahl lädt das vordefinierte Paar aus Ein- und Ausgangszuordnung; beide bleiben im Editor verborgen.
|
|
160
|
-
- **KI-Erziehung**:
|
|
172
|
+
- **KI-Erziehung**: Feste, verbindliche Node-Vorgaben, die nur der Benutzer bearbeitet und mit Deploy anwendet. Das Modell liest, aber schreibt sie niemals. Dauerhafte proaktive Hausregeln gehören hierher; im Chat angeforderte Fakten und Präferenzen gehen in das gelernte Gedächtnis, einmalige oder wiederkehrende Pläne, Erinnerungen, Überwachungen und zukünftige Befehle in den semantischen Scheduler – ohne Auslösephrasen oder Intent-Routing.
|
|
161
173
|
- Mitgelieferte Auszüge aus Hilfe, README, Changelog, Wiki und Beispielen werden nicht in Prompts von Telegram, RedBot oder benutzerdefinierten CHAT-Adaptern aufgenommen. Sie bleiben nur dem Web-Assistenten für technische Fragen zum Paket verfügbar.
|
|
162
174
|
- Button **Refresh**: Fragt den Provider ab und lädt verfügbare Modelle. Währenddessen dreht sich das Symbol; ein erfolgreicher Abschluss bleibt absichtlich ohne Meldung.
|
|
163
175
|
|
|
@@ -169,7 +181,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
|
|
|
169
181
|
- **2) Install it**: lädt und installiert das Modell lokal (z. B. `llama3.1`).
|
|
170
182
|
- Beim Refresh/Install versucht KNX AI zusätzlich, den Ollama-Server automatisch zu starten.
|
|
171
183
|
- Bei Installationsfehlern mit Verbindungsproblem prüfen, ob Ollama läuft (Desktop-App oder `ollama serve`).
|
|
172
|
-
- Der von `/api/show` gemeldete maximale Kontext dient nur zur Information. KNX AI sendet das gewählte 4K-, 8K- oder 16K-Budget als `num_ctx
|
|
184
|
+
- Der von `/api/show` gemeldete maximale Kontext dient nur zur Information. KNX AI sendet das gewählte 4K-, 8K- oder 16K-Budget als `num_ctx`; ohne KNX-AI-Limit wird der vom Modell gemeldete Kontext verwendet, niemals über dessen physisches Maximum hinaus. Jede Kontextquelle wird proportional begrenzt, ohne Agentenfunktionen zu entfernen.
|
|
173
185
|
- Wenn Node-RED in Docker läuft, im Endpoint `host.docker.internal` statt `localhost` verwenden.
|
|
174
186
|
|
|
175
187
|
### Bionic LM Studio Schnellstart (lokal)
|
|
@@ -177,7 +189,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
|
|
|
177
189
|
- Den LM-Studio-API-Server auf der Seite **Developer** oder mit `lms server start` starten.
|
|
178
190
|
- Standard-Endpoint: `http://localhost:1234/v1/chat/completions`.
|
|
179
191
|
- Mit **Refresh** alle von `/v1/models` bereitgestellten Modelle laden; ist kein Modell konfiguriert, wird das erste ausgewählt.
|
|
180
|
-
- Ist ein Modell bereits geladen, behält KNX AI dessen aktive Kontextlänge bei. KNX AI lädt ein inaktives Bionic-Modell niemals über die Verwaltungs-API: Die erste Chat-Anfrage lässt Bionic das Modell per JIT mit den gespeicherten modellspezifischen Standardwerten laden.
|
|
192
|
+
- Ist ein Modell bereits geladen, behält KNX AI dessen aktive Kontextlänge bei. KNX AI lädt ein inaktives Bionic-Modell niemals über die Verwaltungs-API: Die erste Chat-Anfrage lässt Bionic das Modell per JIT mit den gespeicherten modellspezifischen Standardwerten laden. KNX AI verwendet das gewählte 4K-, 8K- oder 16K-Prompt-Budget oder ohne KNX-AI-Limit das gemeldete beziehungsweise aktive Modellfenster, ohne dessen physisches Maximum zu überschreiten; Denk-, KNX-, Routinen-, Kamera- und TTS-Funktionen bleiben verfügbar.
|
|
181
193
|
- Der API-Schlüssel ist optional, sofern die Authentifizierung in den LM-Studio-Servereinstellungen nicht aktiviert ist. In Docker `localhost` durch `host.docker.internal` ersetzen.
|
|
182
194
|
|
|
183
195
|
## Sicherheitshinweis
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "Endpoint URL",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Model",
|
|
27
|
+
"llmReasoningEffort": "Denkaufwand",
|
|
27
28
|
"llmPromptContextTokens": "Chat-Kontextmenge",
|
|
28
29
|
"llmSystemPrompt": "System prompt",
|
|
29
30
|
"llmIncludeRaw": "Include raw payload hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "Klein (4K, schneller)",
|
|
58
59
|
"medium": "Mittel (8K)",
|
|
59
|
-
"full": "Vollständig (16K)"
|
|
60
|
+
"full": "Vollständig (16K)",
|
|
61
|
+
"unlimited": "Kein KNX-AI-Limit (Modellkontext verwenden)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "Automatisch (Modell-/Anbieterstandard)",
|
|
65
|
+
"none": "Keiner",
|
|
66
|
+
"minimal": "Minimal",
|
|
67
|
+
"low": "Niedrig",
|
|
68
|
+
"medium": "Mittel",
|
|
69
|
+
"high": "Hoch",
|
|
70
|
+
"xhigh": "Sehr hoch",
|
|
71
|
+
"max": "Maximal"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "Kein Adapter"
|
|
@@ -75,7 +87,7 @@
|
|
|
75
87
|
"llmApiKey": "Paste API key (starts with sk-)",
|
|
76
88
|
"llmModel": "e.g. gpt-4o-mini",
|
|
77
89
|
"llmSystemPrompt": "Optional. Leave empty for default.",
|
|
78
|
-
"aiEducation": "Beispiel: Benachrichtige meinen letzten Chat, wenn ein Fenster 30 Minuten offen bleibt
|
|
90
|
+
"aiEducation": "Beispiel: Antworte knapp. Benachrichtige meinen letzten Chat, wenn ein Fenster 30 Minuten offen bleibt; zwischen 23:00 und 07:00 keine Meldungen."
|
|
79
91
|
},
|
|
80
92
|
"messages": {
|
|
81
93
|
"setupDoctorLoading": "Diese Installation wird analysiert…",
|
|
@@ -97,7 +109,8 @@
|
|
|
97
109
|
"lmStudioContextFailed": "Der Modellkontext konnte nicht konfiguriert werden",
|
|
98
110
|
"lmStudioContextCurrentlyLoaded": "derzeit geladen",
|
|
99
111
|
"localContextBudget": "KNX-AI-Kontextbudget",
|
|
100
|
-
"promptContextHint": "Steuert die Menge an KNX-, Speicher-, Projekt- und Adapterkontext für lokale Modelle. Werkzeuge werden dadurch weder aktiviert noch deaktiviert; es gibt kein Intent-Routing.",
|
|
112
|
+
"promptContextHint": "Steuert die Menge an KNX-, Speicher-, Projekt- und Adapterkontext für lokale Modelle. Mit „Kein KNX-AI-Limit“ wird das gemeldete oder aktive Kontextfenster des Modells verwendet. Werkzeuge werden dadurch weder aktiviert noch deaktiviert; es gibt kein Intent-Routing.",
|
|
113
|
+
"reasoningEffortHint": "Optionale Vorgabe für Modelle, die einen Denkaufwand unterstützen. Automatisch sendet keine Vorgabe; lehnt der Anbieter oder das Modell den gewählten Wert ab, versucht KNX AI es ohne diesen erneut.",
|
|
101
114
|
"ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
|
|
102
115
|
"ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
|
|
103
116
|
"installingOllamaModel": "Starting Ollama and installing model…",
|
|
@@ -130,11 +143,13 @@
|
|
|
130
143
|
"chatContextSourceKnxTraffic": "Aktuelle KNX-Zusammenfassung, Anomalien, Topologie und ausgewählte Telegramme.",
|
|
131
144
|
"chatContextSourceAdapterHistory": "Dauerhaftes Tagesarchiv automatisch erkannter Adapterereignisse einschließlich Kameraerkennungen.",
|
|
132
145
|
"chatContextSourceEtsProject": "ETS-Semantik und vollständiges Inventar des Node-RED-Projekts.",
|
|
133
|
-
"chatContextSourceMemoryEducation": "Sitzungskontext, KI-Erziehung und
|
|
146
|
+
"chatContextSourceMemoryEducation": "Sitzungskontext, KI-Erziehung, begrenztes Hausgedächtnis und aktive Pläne.",
|
|
134
147
|
"chatContextSourceCameras": "Erkannte Kameras und ihre verfügbaren Funktionen.",
|
|
135
148
|
"chatContextSourceBadge": "Quelle",
|
|
136
149
|
"chatContextFileChatContext": "Dauerhafte Gesprächsverläufe, Anweisungen und Regeln für Kamerabenachrichtigungen.",
|
|
137
|
-
"chatContextFileHomeMemory": "KI-Erziehung
|
|
150
|
+
"chatContextFileHomeMemory": "Nur begrenztes gelerntes Hausgedächtnis; die KI-Erziehung bleibt in der Node-Eigenschaft.",
|
|
151
|
+
"chatContextFileSchedules": "Verbindlicher dauerhafter Laufzeitstatus der Pläne und Erinnerungen dieses Nodes.",
|
|
152
|
+
"chatContextFileSchedulesReadable": "Erzeugte menschenlesbare Ansicht der Pläne und Erinnerungen dieses Nodes.",
|
|
138
153
|
"chatContextFileAssistantConfig": "Dauerhafte Konfiguration des Web-Assistenten und semantische Bereiche dieses Nodes.",
|
|
139
154
|
"chatContextFileBadge": "Datei",
|
|
140
155
|
"chatContextDirectoryRoot": "Stammverzeichnis des Telegrammarchivs",
|
|
@@ -147,7 +162,7 @@
|
|
|
147
162
|
"chatAdapterIntro": "Wählen Sie eine Vorlage, um den Code für Ein- und Ausgang einzufügen. Die Liste wird aus der mitgelieferten Chat-Adapter-Datei geladen; der erzeugte Code bleibt bearbeitbar.",
|
|
148
163
|
"chatAdapterCodeHelp": "Zuordnungen laufen synchron. Geben Sie msg zurück, um fortzufahren, oder keinen Wert, um die Nachricht zu verwerfen. Fehler werden abgefangen und gemeldet, ohne Node-RED anzuhalten.",
|
|
149
164
|
"homeIntelligenceIntro": "Der Node erstellt ein mehrsprachiges semantisches ETS-Modell. Proaktive Benachrichtigungen werden nur berücksichtigt, wenn die KI-Erziehung sie ausdrücklich verlangt; der Node sendet niemals selbstständig einen KNX-Befehl.",
|
|
150
|
-
"aiEducationHelp": "Nur der Benutzer kann
|
|
165
|
+
"aiEducationHelp": "Nur der Benutzer kann diese Node-Eigenschaft bearbeiten. Verwenden Sie sie für dauerhafte Vorgaben und Regeln für proaktive Benachrichtigungen, einschließlich Bedingungen, Dauer, Ruhezeiten und Wiederholung. Das Modell liest sie als verbindliche Vorgabe, schreibt sie aber niemals. Im Chat angeforderte Fakten und Präferenzen werden im gelernten Chat-Gedächtnis gespeichert; einmalige oder wiederkehrende Pläne, Erinnerungen, Überwachungen und zukünftige Befehle speichert der semantische Scheduler. Es sind weder Auslösephrasen noch Intent-Routing erforderlich. Maximal 16.000 Zeichen."
|
|
151
166
|
},
|
|
152
167
|
"sidebar": {
|
|
153
168
|
"ui": {
|
|
@@ -28,21 +28,30 @@ Every Web-backed answer contains runtime-validated citations with a sanitized so
|
|
|
28
28
|
|
|
29
29
|
After verified Web results are available, the model may compose other enabled tools when authorized by the current chat or AI Education. Web access never expands permissions: camera, TTS and memory availability, as well as KNX reads and writes, local ETS/DPT validation and the configured KNX write confirmation, remain unchanged. Web requests expose the query and this server's public IP to external sites or the search service; KNX/ETS data, camera content, chat identifiers, learned memory and credentials are never added automatically.
|
|
30
30
|
|
|
31
|
+
### Natural-language plans and reminders
|
|
32
|
+
In normal chat language, the user can ask KNX AI to create, list or cancel a one-time or recurring reminder, monitor or future home command. The model chooses the structured `scheduleActions` planning tool semantically from the complete request and stores the complete goal and conditions as a human-language instruction. There are no schedule keywords, trigger-phrase lists or rigid intent classifiers, so wording and language do not restrict the feature.
|
|
33
|
+
|
|
34
|
+
Schedules belong to the chat session and persist per KNX AI node across Node-RED restarts. Their authoritative runtime state is `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json`; KNX AI also generates `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` as a readable view. A plan can run once, repeat at intervals of at least five minutes and optionally expire. The model can list or cancel only the active schedules owned by the current chat unless the user explicitly asks to cancel all of that chat's schedules.
|
|
35
|
+
|
|
36
|
+
When a task is due, KNX AI starts a separate model pass with the stored human-language instruction as trusted user authority. A monitor stays silent when its condition is not satisfied. Existing permissions still apply at execution time: a weather monitor needs **Allow the AI to use the Web** and uses the same Web budget, a spoken result leaves output 5 and therefore needs a wired TTS Ultimate node, and camera tools remain limited to detected adapters. A scheduled KNX write still uses the exact ETS/DPT checks and, when enabled, produces a preview for the same chat session and waits for confirmation before output 4 emits anything.
|
|
37
|
+
|
|
38
|
+
For example, the user can write: “For the next five days, check the forecast for Cortemaggiore every 30 minutes and use TTS Ultimate only if thunderstorms are forecast.” KNX AI can preserve this complete condition and duration as one recurring monitor; the Web and TTS requirements above remain in force.
|
|
39
|
+
|
|
31
40
|
## Commands (input)
|
|
32
41
|
Send `msg.topic`:
|
|
33
42
|
- `summary` (or empty): emit summary immediately
|
|
34
|
-
- `reset`: clear internal history, counters, learned home memory,
|
|
43
|
+
- `reset`: clear internal history, counters, learned home memory, every persisted chat context, and every schedule for this node; the AI Education configured on the node remains unchanged
|
|
35
44
|
- `ask`: send a question to the configured LLM
|
|
36
45
|
- `confirm` / `cancel`: confirm or cancel pending KNX commands without calling the LLM
|
|
37
|
-
- `clear_chat`: clear recent turns, persistent instructions
|
|
46
|
+
- `clear_chat`: clear recent turns, persistent instructions and pending commands for the current session, and cancel that session's active schedules; other sessions and AI Education remain unchanged
|
|
38
47
|
|
|
39
48
|
For `ask`, provide the question in `msg.prompt` (preferred), `msg.payload` (string), or the common Telegram fields `msg.payload.content` / `msg.payload.text`.
|
|
40
49
|
|
|
41
50
|
If processing takes longer than 1.2 seconds, output 3 emits the localized intermediate message “I’m thinking…” with `msg.knxAi.type = "thinking"` and `msg.knxAi.transient = true`. The chat adapter sends it immediately to the same user, while the final answer follows normally. This progress message is never stored in conversation context or learned memory.
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
Every LLM chat request uses a provider-independent minimum timeout of 30 minutes. There is no timeout field to maintain in the editor. This is a maximum wait, not an artificial delay: faster models still finish as soon as their response is ready. If even this limit is reached, KNX AI reports that the model did not finish and suggests retrying or reducing the prompt context.
|
|
44
53
|
|
|
45
|
-
For local providers, **Chat context amount** explicitly selects 4K, 8K or
|
|
54
|
+
For local providers, **Chat context amount** explicitly selects 4K, 8K, 16K or no KNX AI limit; 16K remains the default. With no KNX AI limit, KNX AI uses the model's declared or active context window without exceeding the model's physical maximum. The choice proportionally bounds the KNX, memory, Node-RED project and adapter data supplied to the model while retaining the complete agent tool contract. It never enables or disables a capability from wording, keywords or linguistic intents.
|
|
46
55
|
|
|
47
56
|
The node's canvas status is deliberately reserved for the latest incoming request and the localized “I’m thinking…” state while the LLM is running. KNX telegrams, gateway updates, traffic rates, ready messages and technical results never overwrite it; they remain available through the node outputs, logs and Assistant data.
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Wire output 5 to one or more `ttsultimate` nodes from the optional `node-red-con
|
|
|
84
93
|
The model decides whether to prepare an announcement by reasoning over the current request, persistent chat instructions and user-managed AI Education; there is no announcement intent or trigger-phrase list. KNX values, adapter events, camera content and archives remain data rather than instructions, but trusted user guidance may tell the model how to act on them. Output 5 emits the exact spoken text in `msg.payload`, sets `msg.topic = "knx_ai_announcement"`, and adds `msg.knxAi.type = "tts_announcement"` together with `msg.knxAi.sourceNodeId`, `msg.knxAi.sessionId`, and `msg.knxAi.reason`. TTS Ultimate then handles the configured player, voice, volume, hailing and queue.
|
|
85
94
|
|
|
86
95
|
### Chat context overview
|
|
87
|
-
The node editor shows a compact card summarizing the sources available to the chat: live and archived KNX traffic, persistent adapter events, ETS semantics and the Node-RED project, session and home memory, AI Education and detected cameras. It also shows the user-selected maximum operational context and the actual UTF-8 size of the last chat prompt; exact provider input tokens are used when reported, otherwise the token count is marked as estimated. The card lists the absolute KNX telegram and adapter-event archive directories and the `YYYY-MM-DD.knxctx` daily-file pattern.
|
|
96
|
+
The node editor shows a compact card summarizing the sources available to the chat: live and archived KNX traffic, persistent adapter events, ETS semantics and the Node-RED project, session and home memory, AI Education, active plans and detected cameras. It also shows the user-selected maximum operational context and the actual UTF-8 size of the last chat prompt; exact provider input tokens are used when reported, otherwise the token count is marked as estimated. The card lists the absolute paths of the authoritative JSON/readable Markdown schedule files, plus the KNX telegram and adapter-event archive directories and the `YYYY-MM-DD.knxctx` daily-file pattern. AI Education is stored in the node configuration and therefore has no separate runtime file.
|
|
88
97
|
|
|
89
|
-
The model receives KNX read/write operations, camera adapters, TTS announcements
|
|
98
|
+
The model receives KNX read/write operations, camera adapters, TTS announcements, persistent memory, Web access and plans/reminders as structured tools. It can select and combine them semantically from the current request and trusted learned guidance, without linguistic intent routing. The runtime only validates tool arguments, camera-adapter availability and safety boundaries; KNX writes still use local ETS/DPT validation and the configured confirmation step.
|
|
90
99
|
|
|
91
100
|
### Editing and backing up CHAT learning
|
|
92
101
|
The **Conversations & home** tab in the Node-RED KNX AI configuration includes an **Open AI Chat Learning** button that opens the Vue Web UI directly on this editor for the current node.
|
|
@@ -107,7 +116,9 @@ There is no separate switch or advanced proactive configuration. A candidate is
|
|
|
107
116
|
|
|
108
117
|
The most recent chat session is remembered as the owner and receives spontaneous messages. Output 3 emits a localized message with `msg.knxAi.type = "proactive_notification"`; a synthetic `msg.inputMessage` preserves the session for the chat adapter. A hard safety limit of three proactive messages per hour prevents flooding. The node never emits output 4 or changes KNX autonomously; a subsequent user request still uses the normal validation and confirmation workflow.
|
|
109
118
|
|
|
110
|
-
The shared learned reference is loaded at startup from `<userDir>/knxai/memory/knxai-home-memory.md`, rewritten atomically every 15 minutes and always hard-capped at 5 MB. It stores at most 120 significant observations, 80 aggregate habits, 80 notifications and 300 semantic ETS objects—never a raw unlimited telegram stream. Older low-priority entries are removed first.
|
|
119
|
+
The shared learned reference is loaded at startup from `<userDir>/knxai/memory/knxai-home-memory.md`, rewritten atomically every 15 minutes and always hard-capped at 5 MB. It stores at most 120 significant observations, 80 aggregate habits, 80 notifications and 300 semantic ETS objects—never a raw unlimited telegram stream. Older low-priority entries are removed first.
|
|
120
|
+
|
|
121
|
+
**AI Education** is limited to 16,000 characters and is a fixed property saved with the node in the Node-RED flow. Only the user changes it in the editor and applies it with Deploy. The model reads it as authoritative guidance but can never write or overwrite it. Facts and preferences requested in chat belong to learned chat memory, while one-time or recurring plans, reminders, monitoring and future commands belong to the semantic scheduler. The learned-memory file intentionally does not contain the Education text.
|
|
111
122
|
|
|
112
123
|
## Practical configuration example
|
|
113
124
|
Put the complete notification policy in **AI Education** (`aiEducation`):
|
|
@@ -154,6 +165,7 @@ All fields exposed in the KNX AI editor are listed below.
|
|
|
154
165
|
- **Endpoint URL**: Chat/completions endpoint URL.
|
|
155
166
|
- **API key**: API key (not required for local Ollama; optional for Bionic LM Studio unless server authentication is enabled).
|
|
156
167
|
- **Model**: Model ID/name.
|
|
168
|
+
- **Reasoning effort**: Provider-agnostic preference for models that expose reasoning-effort control. **Automatic** sends no preference and preserves the model/provider default. Explicit choices are `none`, `minimal`, `low`, `medium`, `high`, `xhigh` and `max`; support depends on the request protocol and model, and KNX AI retries without the preference if it is rejected.
|
|
157
169
|
- **Allow the AI to use the Web**: Off by default. Lets the model choose the general Web tool semantically and return verified, cited sources.
|
|
158
170
|
- **Allow proactive Web checks**: Separate opt-in for background checks; it also requires explicit user-authored instructions in **AI Education**.
|
|
159
171
|
- **Minimum proactive interval**: Minimum time between proactive cycles; it does not delay Web operations requested in an active user turn.
|
|
@@ -163,7 +175,7 @@ All fields exposed in the KNX AI editor are listed below.
|
|
|
163
175
|
- **Allow AI to read KNX states and control actuators**: Enables output 4 and is off by default. Exact ETS catalog objects may be read; writes are accepted only for objects classified as `command`. Unknown, DPT-mismatched, invalid, or excessive operations and writes to status/neutral objects are rejected locally.
|
|
164
176
|
- **Ask for confirmation before sending KNX commands**: Enabled by default. Shows the validated changes first and emits no KNX command until the same chat session confirms them. Whenever commands are awaiting confirmation, the response always appends the exact confirmation/cancellation instructions in the language of the current request. Commands are validated again immediately before output.
|
|
165
177
|
- **Input/output message adapter**: Defaults to **No adapter**. Selecting an adapter loads its predefined input/output mapping pair; both mappings remain hidden in the editor.
|
|
166
|
-
- **AI Education**:
|
|
178
|
+
- **AI Education**: Fixed, authoritative node guidance edited only by the user and applied with Deploy. The model reads it but never writes it. Standing proactive-home policies belong here; facts and preferences requested in chat go to learned memory, while one-time or recurring plans, reminders, monitors and future commands go to the semantic scheduler without trigger phrases or intent routing.
|
|
167
179
|
- Packaged help, README, changelog, wiki and example snippets are not included in Telegram, RedBot or custom CHAT prompts. They remain available only to the web Assistant for package-support questions.
|
|
168
180
|
- **Refresh** button: Queries the provider and loads available model IDs. Its icon spins while loading; successful completion is intentionally silent.
|
|
169
181
|
|
|
@@ -175,7 +187,7 @@ All fields exposed in the KNX AI editor are listed below.
|
|
|
175
187
|
- **2) Install it**: downloads and installs the model locally (for example `llama3.1`).
|
|
176
188
|
- During model refresh/install, KNX AI also tries to auto-start the Ollama server when possible.
|
|
177
189
|
- If install fails with connection errors, ensure Ollama is running (desktop app or `ollama serve`).
|
|
178
|
-
- The maximum context reported by `/api/show` is informational. KNX AI sends the selected 4K, 8K or 16K budget as `num_ctx
|
|
190
|
+
- The maximum context reported by `/api/show` is informational. KNX AI sends the selected 4K, 8K or 16K budget as `num_ctx`; with no KNX AI limit it uses the context declared by the model, never beyond its physical maximum. Every supplied context source is bounded proportionally without removing agent capabilities.
|
|
179
191
|
- If Node-RED runs in Docker, use `host.docker.internal` instead of `localhost` in the endpoint URL.
|
|
180
192
|
|
|
181
193
|
### Bionic LM Studio quick setup (local)
|
|
@@ -183,7 +195,7 @@ All fields exposed in the KNX AI editor are listed below.
|
|
|
183
195
|
- Start the LM Studio API server from the **Developer** page or with `lms server start`.
|
|
184
196
|
- Default endpoint: `http://localhost:1234/v1/chat/completions`.
|
|
185
197
|
- Click **Refresh** to load all models exposed by `/v1/models`; the first model is selected when none is configured.
|
|
186
|
-
- When a model is already loaded, KNX AI preserves its active context length. KNX AI never loads an inactive Bionic model through the management API: the first chat request lets Bionic JIT-load it with its saved per-model defaults.
|
|
198
|
+
- When a model is already loaded, KNX AI preserves its active context length. KNX AI never loads an inactive Bionic model through the management API: the first chat request lets Bionic JIT-load it with its saved per-model defaults. KNX AI uses the selected 4K, 8K or 16K prompt budget, or the declared/active model window when no KNX AI limit is selected, without exceeding the model's physical maximum; reasoning, KNX, routine, camera and TTS capabilities remain available.
|
|
187
199
|
- An API key is optional unless authentication is enabled in the LM Studio server settings. In Docker, replace `localhost` with `host.docker.internal`.
|
|
188
200
|
|
|
189
201
|
## Security note
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "Endpoint URL",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Model",
|
|
27
|
+
"llmReasoningEffort": "Reasoning effort",
|
|
27
28
|
"llmPromptContextTokens": "Chat context amount",
|
|
28
29
|
"llmSystemPrompt": "System prompt",
|
|
29
30
|
"llmIncludeRaw": "Include raw payload hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "Small (4K, faster)",
|
|
58
59
|
"medium": "Medium (8K)",
|
|
59
|
-
"full": "Full (16K)"
|
|
60
|
+
"full": "Full (16K)",
|
|
61
|
+
"unlimited": "No KNX AI limit (use model context)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "Automatic (model/provider default)",
|
|
65
|
+
"none": "None",
|
|
66
|
+
"minimal": "Minimal",
|
|
67
|
+
"low": "Low",
|
|
68
|
+
"medium": "Medium",
|
|
69
|
+
"high": "High",
|
|
70
|
+
"xhigh": "Extra high",
|
|
71
|
+
"max": "Maximum"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "No adapter"
|
|
@@ -100,7 +112,8 @@
|
|
|
100
112
|
"lmStudioContextFailed": "Unable to configure the model context",
|
|
101
113
|
"lmStudioContextCurrentlyLoaded": "currently loaded",
|
|
102
114
|
"localContextBudget": "KNX AI context budget",
|
|
103
|
-
"promptContextHint": "Controls how much KNX, memory, project and adapter context is sent to local models. It does not enable or disable tools and does not use intent routing.",
|
|
115
|
+
"promptContextHint": "Controls how much KNX, memory, project and adapter context is sent to local models. Choose ‘No KNX AI limit’ to use the model's declared or active context window. It does not enable or disable tools and does not use intent routing.",
|
|
116
|
+
"reasoningEffortHint": "Optional preference for models that support reasoning effort. Automatic sends no preference; if a provider or model rejects the selected value, KNX AI retries without it.",
|
|
104
117
|
"ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
|
|
105
118
|
"ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
|
|
106
119
|
"installingOllamaModel": "Starting Ollama and installing model…",
|
|
@@ -133,11 +146,13 @@
|
|
|
133
146
|
"chatContextSourceKnxTraffic": "Live KNX summary, anomalies, topology and selected telegrams.",
|
|
134
147
|
"chatContextSourceAdapterHistory": "Persistent daily history of automatically detected adapter events, including camera detections.",
|
|
135
148
|
"chatContextSourceEtsProject": "ETS semantics and the full Node-RED project inventory.",
|
|
136
|
-
"chatContextSourceMemoryEducation": "Session context, AI Education
|
|
149
|
+
"chatContextSourceMemoryEducation": "Session context, AI Education, bounded home memory and active plans.",
|
|
137
150
|
"chatContextSourceCameras": "Detected cameras and their available capabilities.",
|
|
138
151
|
"chatContextSourceBadge": "Source",
|
|
139
152
|
"chatContextFileChatContext": "Persistent conversation turns, instructions and camera notification rules.",
|
|
140
|
-
"chatContextFileHomeMemory": "AI Education
|
|
153
|
+
"chatContextFileHomeMemory": "Bounded learned home memory only; AI Education remains in the node property.",
|
|
154
|
+
"chatContextFileSchedules": "Authoritative persistent runtime state for this node's plans and reminders.",
|
|
155
|
+
"chatContextFileSchedulesReadable": "Generated human-readable view of this node's plans and reminders.",
|
|
141
156
|
"chatContextFileAssistantConfig": "Persistent web Assistant configuration and semantic areas for this node.",
|
|
142
157
|
"chatContextFileBadge": "File",
|
|
143
158
|
"chatContextDirectoryRoot": "Telegram archive root",
|
|
@@ -150,14 +165,14 @@
|
|
|
150
165
|
"chatAdapterIntro": "Choose a mapping preset to insert its input and output code. The list is loaded from the packaged chat-adapter mappings file; the generated code remains editable.",
|
|
151
166
|
"chatAdapterCodeHelp": "Mappings run synchronously. Return msg to continue or return no value to discard it. Errors are caught and reported without stopping Node-RED.",
|
|
152
167
|
"homeIntelligenceIntro": "The node builds a multilingual semantic ETS model. Proactive notifications are considered only when AI Education explicitly requests them; it never sends a KNX command proactively.",
|
|
153
|
-
"aiEducationHelp": "Only the user can edit this
|
|
168
|
+
"aiEducationHelp": "Only the user can edit this node property. Use it for durable guidance and proactive notification policies, including conditions, duration, quiet hours and repetition. The model reads it as authoritative guidance but never writes it. Facts and preferences requested in chat are stored in learned chat memory; one-time or recurring plans, reminders, monitoring and future commands are stored by the semantic scheduler. No trigger phrases or intent routing are required. Maximum 16,000 characters."
|
|
154
169
|
},
|
|
155
170
|
"placeholder": {
|
|
156
171
|
"llmBaseUrl": "https://api.openai.com/v1/chat/completions (or your compatible endpoint)",
|
|
157
172
|
"llmApiKey": "Paste API key (starts with sk-)",
|
|
158
173
|
"llmModel": "e.g. gpt-4o-mini",
|
|
159
174
|
"llmSystemPrompt": "Optional. Leave empty for default.",
|
|
160
|
-
"aiEducation": "Example: Notify my most recent chat if a window stays open for 30 minutes
|
|
175
|
+
"aiEducation": "Example: Keep replies short. Notify my most recent chat if a window stays open for 30 minutes; stay quiet between 23:00 and 07:00."
|
|
161
176
|
},
|
|
162
177
|
"sidebar": {
|
|
163
178
|
"ui": {
|
|
@@ -28,21 +28,30 @@ Cada respuesta basada en la Web contiene citas validadas por el runtime, con la
|
|
|
28
28
|
|
|
29
29
|
Cuando hay resultados Web verificados, el modelo puede combinar las demás herramientas habilitadas si el chat actual o Educación IA lo autorizan. El acceso Web nunca amplía los permisos: la disponibilidad de cámaras, TTS y memoria, así como las lecturas y escrituras KNX, la validación local ETS/DPT y la confirmación configurada para escrituras KNX, permanecen sin cambios. Las solicitudes Web exponen la consulta y la IP pública de este servidor a sitios externos o al servicio de búsqueda; los datos KNX/ETS, el contenido de cámaras, los identificadores de chat, la memoria aprendida y las credenciales nunca se añaden automáticamente.
|
|
30
30
|
|
|
31
|
+
### Planificaciones y recordatorios en lenguaje natural
|
|
32
|
+
En el lenguaje normal del chat, el usuario puede pedir a KNX AI que cree, enumere o cancele un recordatorio, una monitorización o un futuro comando del hogar, una sola vez o de forma recurrente. El modelo elige semánticamente la herramienta estructurada de planificación `scheduleActions` a partir de la solicitud completa y guarda todo el objetivo y sus condiciones como una instrucción en lenguaje humano. No hay palabras clave de planificación, listas de frases activadoras ni clasificadores de intención rígidos; la redacción y el idioma no limitan la función.
|
|
33
|
+
|
|
34
|
+
Las planificaciones pertenecen a la sesión de chat y persisten por cada nodo KNX AI tras los reinicios de Node-RED. Su estado de ejecución autoritativo es `<userDir>/knxai/schedules/knxai-schedules-<node-id>.json`; KNX AI también genera `<userDir>/knxai/schedules/knxai-schedules-<node-id>.md` como vista legible. Un plan puede ejecutarse una vez, repetirse a intervalos de al menos cinco minutos y caducar opcionalmente. El modelo solo puede enumerar o cancelar las planificaciones activas del chat actual, salvo que el usuario pida explícitamente cancelar todas las de ese chat.
|
|
35
|
+
|
|
36
|
+
Cuando vence una tarea, KNX AI inicia una pasada separada del modelo usando la instrucción guardada en lenguaje humano como autoridad fiable del usuario. Una monitorización permanece silenciosa si no se cumple su condición. Durante la ejecución siguen vigentes los permisos existentes: una monitorización meteorológica necesita **Permitir que la IA use la Web** y consume el mismo presupuesto Web, un resultado hablado sale por la salida 5 y por tanto requiere un nodo TTS Ultimate cableado, y las herramientas de cámara siguen limitadas a los adaptadores detectados. Una escritura KNX planificada mantiene las comprobaciones ETS/DPT exactas y, si la confirmación está habilitada, primero presenta una vista previa a la misma sesión de chat; la salida 4 no emite nada antes de la confirmación.
|
|
37
|
+
|
|
38
|
+
Por ejemplo, el usuario puede escribir: «Durante los próximos cinco días, comprueba cada 30 minutos la previsión para Cortemaggiore y usa TTS Ultimate solo si se pronostican tormentas». KNX AI puede guardar la condición y la duración completas en una única monitorización recurrente; siguen siendo necesarios los permisos Web y la conexión TTS indicados arriba.
|
|
39
|
+
|
|
31
40
|
## Comandos (entrada)
|
|
32
41
|
Envía `msg.topic`:
|
|
33
42
|
- `summary` (o vacío): emite el resumen inmediatamente
|
|
34
|
-
- `reset`: borra el historial, los contadores, la memoria del hogar aprendida
|
|
43
|
+
- `reset`: borra el historial, los contadores, la memoria del hogar aprendida, todos los contextos de chat persistentes y todas las planificaciones de este nodo; la Educación IA configurada en el nodo permanece sin cambios
|
|
35
44
|
- `ask`: envía una pregunta al LLM configurado
|
|
36
45
|
- `confirm` / `cancel`: confirma o cancela los comandos KNX pendientes sin volver a llamar al LLM
|
|
37
|
-
- `clear_chat`: borra los turnos recientes, las instrucciones persistentes y los comandos pendientes de la sesión actual
|
|
46
|
+
- `clear_chat`: borra los turnos recientes, las instrucciones persistentes y los comandos pendientes de la sesión actual y cancela sus planificaciones activas; las demás sesiones y la Educación IA permanecen sin cambios
|
|
38
47
|
|
|
39
48
|
Para `ask`, envía la pregunta en `msg.prompt` (recomendado), `msg.payload` (string), o los campos comunes de Telegram `msg.payload.content` / `msg.payload.text`.
|
|
40
49
|
|
|
41
50
|
Si el procesamiento tarda más de 1,2 segundos, la salida 3 emite inmediatamente el mensaje intermedio localizado «Estoy pensando…», con `msg.knxAi.type = "thinking"` y `msg.knxAi.transient = true`. El adaptador de chat lo envía al mismo usuario y la respuesta final llega normalmente en cuanto está lista. Este mensaje de progreso nunca se guarda en el contexto de conversación ni en la memoria aprendida.
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
Cada solicitud de chat LLM usa un tiempo de espera mínimo de 30 minutos, independientemente del proveedor. No hay ningún campo de tiempo de espera que gestionar en el editor. Es una espera máxima, no un retraso artificial: los modelos más rápidos siguen terminando en cuanto tienen lista la respuesta. Si también se alcanza este límite, KNX AI indica que el modelo no terminó y recomienda volver a intentarlo o reducir el contexto del prompt.
|
|
44
53
|
|
|
45
|
-
Para los proveedores locales, **Cantidad de contexto del chat** permite elegir explícitamente 4K, 8K o
|
|
54
|
+
Para los proveedores locales, **Cantidad de contexto del chat** permite elegir explícitamente 4K, 8K, 16K o sin límite de KNX AI; 16K sigue siendo el valor predeterminado. Sin límite de KNX AI se usa la ventana de contexto declarada o activa del modelo, sin superar nunca su máximo físico. La selección limita proporcionalmente los datos KNX, de memoria, del proyecto Node-RED y de los adaptadores enviados al modelo, manteniendo completo el contrato de herramientas del agente. Ninguna capacidad se activa o desactiva según frases, palabras clave o intents lingüísticos.
|
|
46
55
|
|
|
47
56
|
El estado del nodo en el canvas está reservado deliberadamente para la última solicitud recibida y el mensaje localizado «Estoy pensando…» mientras se ejecuta el LLM. Los telegramas KNX, las actualizaciones del gateway, las tasas de tráfico, los mensajes ready y los resultados técnicos nunca lo sobrescriben; siguen disponibles mediante las salidas, los registros y los datos del Asistente.
|
|
48
57
|
|
|
@@ -84,9 +93,9 @@ Conecta la salida 5 a uno o más nodos `ttsultimate` del paquete opcional `node-
|
|
|
84
93
|
El modelo decide si prepara un anuncio razonando sobre la solicitud actual, las instrucciones persistentes del chat y la Educación IA gestionada por el usuario; no existe un intent de anuncio ni una lista de frases activadoras. Los valores KNX, eventos de adaptadores, imágenes y archivos siguen siendo datos y no instrucciones, aunque las indicaciones fiables del usuario pueden enseñar al modelo cómo actuar sobre ellos. La salida 5 emite el texto exacto que se debe pronunciar en `msg.payload`, define `msg.topic = "knx_ai_announcement"` y añade `msg.knxAi.type = "tts_announcement"` junto con `msg.knxAi.sourceNodeId`, `msg.knxAi.sessionId` y `msg.knxAi.reason`. TTS Ultimate gestiona después el reproductor, la voz, el volumen, el aviso inicial y la cola.
|
|
85
94
|
|
|
86
95
|
### Resumen del contexto del chat
|
|
87
|
-
El editor del nodo muestra una tarjeta compacta con las fuentes disponibles para el chat: tráfico KNX actual, semántica ETS y proyecto Node-RED, memoria de sesión y del hogar, Educación IA y cámaras detectadas. También muestra el contexto operativo máximo elegido por el usuario y el tamaño UTF-8 real del último prompt del chat; se usan los tokens de entrada exactos cuando el proveedor los informa y, de lo contrario, el recuento se marca como estimado. También enumera
|
|
96
|
+
El editor del nodo muestra una tarjeta compacta con las fuentes disponibles para el chat: tráfico KNX actual, semántica ETS y proyecto Node-RED, memoria de sesión y del hogar, Educación IA, planificaciones activas y cámaras detectadas. También muestra el contexto operativo máximo elegido por el usuario y el tamaño UTF-8 real del último prompt del chat; se usan los tokens de entrada exactos cuando el proveedor los informa y, de lo contrario, el recuento se marca como estimado. También enumera las rutas absolutas de los archivos de planificación JSON autoritativo y Markdown legible, junto con los archivos de telegramas KNX y eventos de adaptadores y el patrón diario `YYYY-MM-DD.knxctx`. La Educación IA se guarda en la configuración del nodo y, por tanto, no tiene un archivo de ejecución separado.
|
|
88
97
|
|
|
89
|
-
El modelo recibe lecturas/escrituras KNX, adaptadores de cámara, anuncios TTS
|
|
98
|
+
El modelo recibe lecturas/escrituras KNX, adaptadores de cámara, anuncios TTS, memoria persistente, acceso Web y planificaciones/recordatorios como herramientas estructuradas. Puede seleccionarlas y combinarlas semánticamente a partir de la solicitud actual y de las indicaciones fiables aprendidas, sin routing por intents lingüísticos. El runtime solo valida argumentos, disponibilidad de adaptadores de cámara y límites de seguridad; las escrituras KNX conservan la validación ETS/DPT local y la confirmación configurada.
|
|
90
99
|
|
|
91
100
|
### Edición y copia del aprendizaje CHAT
|
|
92
101
|
La pestaña **Conversaciones y hogar** de la configuración Node-RED de KNX AI incluye el botón **Abrir aprendizaje del chat IA**, que abre la interfaz web Vue directamente en este editor para el nodo actual.
|
|
@@ -105,7 +114,9 @@ A partir de la jerarquía ETS, nombres, roles y DPT, el nodo crea un modelo sem
|
|
|
105
114
|
|
|
106
115
|
La última sesión de chat se recuerda como propietario y recibe los mensajes espontáneos. La salida 3 emite `msg.knxAi.type = "proactive_notification"` y `msg.inputMessage` conserva la sesión para el adaptador de chat. Un límite estricto de tres notificaciones proactivas por hora evita inundar el chat. La salida 4 nunca se usa de forma proactiva y KNX no se modifica de manera autónoma.
|
|
107
116
|
|
|
108
|
-
La referencia aprendida compartida se carga al arrancar desde `<userDir>/knxai/memory/knxai-home-memory.md`, se reescribe atómicamente cada 15 minutos y siempre queda estrictamente limitada a 5 MB. Conserva como máximo 120 observaciones importantes, 80 hábitos agregados, 80 notificaciones y 300 objetos ETS semánticos, nunca un flujo ilimitado de telegramas raw. Los elementos antiguos y de menor prioridad se eliminan primero.
|
|
117
|
+
La referencia aprendida compartida se carga al arrancar desde `<userDir>/knxai/memory/knxai-home-memory.md`, se reescribe atómicamente cada 15 minutos y siempre queda estrictamente limitada a 5 MB. Conserva como máximo 120 observaciones importantes, 80 hábitos agregados, 80 notificaciones y 300 objetos ETS semánticos, nunca un flujo ilimitado de telegramas raw. Los elementos antiguos y de menor prioridad se eliminan primero.
|
|
118
|
+
|
|
119
|
+
**Educación IA** está limitada a 16.000 caracteres y es una propiedad fija guardada con el nodo en el flow de Node-RED. Solo el usuario la modifica en el editor y la aplica con Deploy. El modelo la lee como una instrucción autoritativa, pero nunca puede escribirla ni sobrescribirla. Los hechos y preferencias solicitados en el chat pertenecen a la memoria aprendida del chat; las planificaciones, recordatorios, monitorizaciones y comandos futuros, únicos o recurrentes, pertenecen al planificador semántico. El archivo de memoria aprendida no contiene intencionadamente el texto de Educación.
|
|
109
120
|
|
|
110
121
|
## Ejemplo práctico de configuración
|
|
111
122
|
Escribe toda la política de notificación en **Educación IA** (`aiEducation`):
|
|
@@ -148,6 +159,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
|
|
|
148
159
|
- **Endpoint URL**: URL endpoint chat/completions.
|
|
149
160
|
- **API key**: clave API (no requerida con Ollama local; opcional para Bionic LM Studio salvo que la autenticación del servidor esté activada).
|
|
150
161
|
- **Model**: ID/nombre de modelo.
|
|
162
|
+
- **Esfuerzo de razonamiento**: preferencia independiente del proveedor para modelos que permiten controlar el esfuerzo de razonamiento. **Automático** no envía ninguna preferencia y conserva el valor predeterminado del modelo/proveedor. Las opciones explícitas son `none`, `minimal`, `low`, `medium`, `high`, `xhigh` y `max`; la compatibilidad depende del protocolo de solicitud y del modelo, y KNX AI reintenta sin la preferencia si se rechaza.
|
|
151
163
|
- **Permitir que la IA use la Web**: desactivado de forma predeterminada. Permite al modelo elegir semánticamente la herramienta Web general y devolver fuentes verificadas y citadas.
|
|
152
164
|
- **Permitir comprobaciones Web proactivas**: autorización independiente para comprobaciones en segundo plano; también requiere instrucciones explícitas escritas por el usuario en **Educación IA**.
|
|
153
165
|
- **Intervalo mínimo de las comprobaciones proactivas**: tiempo mínimo entre ciclos proactivos; no retrasa las operaciones Web solicitadas durante un turno de usuario activo.
|
|
@@ -157,7 +169,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
|
|
|
157
169
|
- **Permitir que la IA lea estados KNX y controle actuadores**: habilita la salida 4 y está desactivado por defecto. Los objetos exactos del catálogo ETS se pueden leer; solo se aceptan escrituras hacia objetos clasificados como `command`. Las operaciones desconocidas, con DPT distinto, inválidas o excesivas, y las escrituras hacia objetos de estado o neutrales, se rechazan localmente.
|
|
158
170
|
- **Pedir confirmación antes de enviar comandos KNX**: activado por defecto. Muestra primero los cambios validados y no emite comandos hasta que la misma sesión de chat los confirme. Cuando hay comandos pendientes, la respuesta añade siempre las instrucciones exactas para confirmar o cancelar en el idioma de la solicitud actual. Los comandos se validan de nuevo justo antes de la salida.
|
|
159
171
|
- **Adaptador de mensajes de entrada/salida**: usa **Sin adaptador** por defecto. La selección carga el par predefinido de mapeos de entrada y salida; ambos permanecen ocultos en el editor.
|
|
160
|
-
- **Educación de la IA**: instrucciones
|
|
172
|
+
- **Educación de la IA**: instrucciones fijas y autoritativas del nodo, modificadas solo por el usuario y aplicadas con Deploy. El modelo las lee, pero nunca las escribe. Aquí se definen las políticas proactivas permanentes del hogar; los hechos y preferencias solicitados en el chat van a la memoria aprendida, mientras que las planificaciones, recordatorios, monitorizaciones y comandos futuros, únicos o recurrentes, van al planificador semántico sin frases activadoras ni routing por intents.
|
|
161
173
|
- Los fragmentos incluidos con el paquete procedentes de la ayuda, README, changelog, wiki y ejemplos no se añaden a los prompts de Telegram, RedBot ni CHAT personalizados. Solo permanecen disponibles para el Asistente web en preguntas técnicas sobre el paquete.
|
|
162
174
|
- Botón **Refresh**: consulta el provider y carga los modelos disponibles. El icono gira durante la carga; una finalización correcta no muestra ningún mensaje.
|
|
163
175
|
|
|
@@ -169,7 +181,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
|
|
|
169
181
|
- **2) Install it**: descarga e instala el modelo localmente (p. ej. `llama3.1`).
|
|
170
182
|
- Durante refresh/instalación, KNX AI también intenta iniciar automáticamente el servidor Ollama.
|
|
171
183
|
- Si la instalación falla con error de conexión, verifica que Ollama esté ejecutándose (app de escritorio o `ollama serve`).
|
|
172
|
-
- El contexto máximo declarado por `/api/show` queda solo como información. KNX AI envía como `num_ctx` el presupuesto elegido de 4K, 8K o 16K
|
|
184
|
+
- El contexto máximo declarado por `/api/show` queda solo como información. KNX AI envía como `num_ctx` el presupuesto elegido de 4K, 8K o 16K; sin límite de KNX AI usa el contexto declarado por el modelo, sin superar nunca su máximo físico. Cada fuente de contexto se limita proporcionalmente sin eliminar capacidades del agente.
|
|
173
185
|
- Si Node-RED se ejecuta en Docker, usa `host.docker.internal` en lugar de `localhost` en el endpoint.
|
|
174
186
|
|
|
175
187
|
### Configuración rápida de Bionic LM Studio (local)
|
|
@@ -177,7 +189,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
|
|
|
177
189
|
- Inicia el servidor API de LM Studio desde la página **Developer** o con `lms server start`.
|
|
178
190
|
- Endpoint por defecto: `http://localhost:1234/v1/chat/completions`.
|
|
179
191
|
- Pulsa **Refresh** para cargar todos los modelos expuestos por `/v1/models`; si no hay un modelo configurado se selecciona el primero.
|
|
180
|
-
- Si un modelo ya está cargado, KNX AI conserva la longitud de contexto activa. KNX AI nunca carga un modelo Bionic inactivo mediante la API de gestión: la primera solicitud de chat permite que Bionic lo cargue mediante JIT con los valores predeterminados guardados para el modelo.
|
|
192
|
+
- Si un modelo ya está cargado, KNX AI conserva la longitud de contexto activa. KNX AI nunca carga un modelo Bionic inactivo mediante la API de gestión: la primera solicitud de chat permite que Bionic lo cargue mediante JIT con los valores predeterminados guardados para el modelo. KNX AI usa el presupuesto de prompt elegido de 4K, 8K o 16K, o la ventana declarada o activa del modelo cuando se selecciona sin límite de KNX AI, sin superar su máximo físico; el razonamiento, KNX, las rutinas, las cámaras y TTS permanecen disponibles.
|
|
181
193
|
- La clave API es opcional salvo que la autenticación esté activada en los ajustes del servidor LM Studio. En Docker, sustituye `localhost` por `host.docker.internal`.
|
|
182
194
|
|
|
183
195
|
## Nota de seguridad
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"llmBaseUrl": "Endpoint URL",
|
|
25
25
|
"llmApiKey": "API key",
|
|
26
26
|
"llmModel": "Model",
|
|
27
|
+
"llmReasoningEffort": "Esfuerzo de razonamiento",
|
|
27
28
|
"llmPromptContextTokens": "Cantidad de contexto del chat",
|
|
28
29
|
"llmSystemPrompt": "System prompt",
|
|
29
30
|
"llmIncludeRaw": "Include raw payload hex",
|
|
@@ -56,7 +57,18 @@
|
|
|
56
57
|
"promptContext": {
|
|
57
58
|
"small": "Reducido (4K, más rápido)",
|
|
58
59
|
"medium": "Medio (8K)",
|
|
59
|
-
"full": "Completo (16K)"
|
|
60
|
+
"full": "Completo (16K)",
|
|
61
|
+
"unlimited": "Sin límite de KNX AI (usar el contexto del modelo)"
|
|
62
|
+
},
|
|
63
|
+
"reasoningEffort": {
|
|
64
|
+
"default": "Automático (valor del modelo/proveedor)",
|
|
65
|
+
"none": "Ninguno",
|
|
66
|
+
"minimal": "Mínimo",
|
|
67
|
+
"low": "Bajo",
|
|
68
|
+
"medium": "Medio",
|
|
69
|
+
"high": "Alto",
|
|
70
|
+
"xhigh": "Muy alto",
|
|
71
|
+
"max": "Máximo"
|
|
60
72
|
},
|
|
61
73
|
"chatAdapter": {
|
|
62
74
|
"none": "Sin adaptador"
|
|
@@ -90,7 +102,8 @@
|
|
|
90
102
|
"lmStudioContextFailed": "No se pudo configurar el contexto del modelo",
|
|
91
103
|
"lmStudioContextCurrentlyLoaded": "cargado actualmente",
|
|
92
104
|
"localContextBudget": "Presupuesto de contexto de KNX AI",
|
|
93
|
-
"promptContextHint": "Controla la cantidad de contexto KNX, memoria, proyecto y adaptadores enviada a los modelos locales. No activa ni desactiva herramientas ni usa enrutamiento por intents.",
|
|
105
|
+
"promptContextHint": "Controla la cantidad de contexto KNX, memoria, proyecto y adaptadores enviada a los modelos locales. Elige «Sin límite de KNX AI» para usar la ventana declarada o activa del modelo. No activa ni desactiva herramientas ni usa enrutamiento por intents.",
|
|
106
|
+
"reasoningEffortHint": "Preferencia opcional para los modelos que admiten esfuerzo de razonamiento. Automático no envía ninguna preferencia; si el proveedor o el modelo rechaza el valor elegido, KNX AI reintenta sin él.",
|
|
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": "Resumen KNX actual, anomalías, topología y telegramas seleccionados.",
|
|
124
137
|
"chatContextSourceAdapterHistory": "Historial diario persistente de eventos de los adaptadores detectados, incluidas las detecciones de cámaras.",
|
|
125
138
|
"chatContextSourceEtsProject": "Semántica ETS e inventario completo del proyecto Node-RED.",
|
|
126
|
-
"chatContextSourceMemoryEducation": "Contexto de sesión, Educación IA
|
|
139
|
+
"chatContextSourceMemoryEducation": "Contexto de sesión, Educación IA, memoria doméstica limitada y planificaciones activas.",
|
|
127
140
|
"chatContextSourceCameras": "Cámaras detectadas y sus capacidades disponibles.",
|
|
128
141
|
"chatContextSourceBadge": "Fuente",
|
|
129
142
|
"chatContextFileChatContext": "Turnos persistentes, instrucciones y reglas de notificación de cámaras.",
|
|
130
|
-
"chatContextFileHomeMemory": "
|
|
143
|
+
"chatContextFileHomeMemory": "Solo memoria doméstica aprendida y limitada; la Educación IA permanece en la propiedad del nodo.",
|
|
144
|
+
"chatContextFileSchedules": "Estado de ejecución persistente y autoritativo de las planificaciones y recordatorios de este nodo.",
|
|
145
|
+
"chatContextFileSchedulesReadable": "Vista legible generada de las planificaciones y recordatorios de este nodo.",
|
|
131
146
|
"chatContextFileAssistantConfig": "Configuración persistente del Asistente web y áreas semánticas de este nodo.",
|
|
132
147
|
"chatContextFileBadge": "Archivo",
|
|
133
148
|
"chatContextDirectoryRoot": "Raíz del archivo de telegramas",
|
|
@@ -140,14 +155,14 @@
|
|
|
140
155
|
"chatAdapterIntro": "Elige un preajuste para insertar su código de mapeo de entrada y salida. La lista se carga desde el archivo de adaptadores de chat incluido; el código generado sigue siendo editable.",
|
|
141
156
|
"chatAdapterCodeHelp": "Los mapeos se ejecutan de forma síncrona. Devuelve msg para continuar o ningún valor para descartarlo. Los errores se capturan y notifican sin detener Node-RED.",
|
|
142
157
|
"homeIntelligenceIntro": "El nodo crea un modelo ETS semántico multilingüe. Las notificaciones proactivas solo se consideran cuando la Educación IA las solicita explícitamente; nunca envía por sí solo un comando KNX.",
|
|
143
|
-
"aiEducationHelp": "Solo el usuario puede editar esta
|
|
158
|
+
"aiEducationHelp": "Solo el usuario puede editar esta propiedad del nodo. Úsala para instrucciones duraderas y reglas de notificación proactiva, incluidas las condiciones, la duración, las horas silenciosas y la repetición. El modelo la lee como una instrucción autoritativa, pero nunca la escribe. Los hechos y preferencias solicitados en el chat se guardan en la memoria aprendida del chat; las planificaciones, recordatorios, monitorizaciones y comandos futuros, únicos o recurrentes, se guardan mediante el planificador semántico. No se requieren frases activadoras ni routing por intents. Máximo 16.000 caracteres."
|
|
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": "Ejemplo:
|
|
165
|
+
"aiEducation": "Ejemplo: responde de forma breve. Avisa a mi último chat si una ventana sigue abierta 30 minutos; no me avises entre las 23:00 y las 07:00."
|
|
151
166
|
},
|
|
152
167
|
"sidebar": {
|
|
153
168
|
"ui": {
|