feat: make Telegram relay delivery opt-in

This commit is contained in:
2026-08-16 04:39:07 +02:00
parent 67160b2de0
commit f7047eb429
4 changed files with 51 additions and 18 deletions
+11 -8
View File
@@ -1,12 +1,13 @@
# Hermes Relay v3.2
# Hermes Relay v3.3
Snelle Quart-bridge tussen Node-RED en een warme Hermes Agent.
```text
Node-RED ──POST /ask──▶ Quart relay ──serialized call──▶ warme Hermes-agent
│
├── JSON direct terug naar Node-RED
└── Telegram-bezorging op de achtergrond via `hermes send`
└── JSON direct terug naar Node-RED
Optioneel: Telegram-bezorging via `hermes send` (standaard uit)
```
## Gedrag en grenzen
@@ -14,8 +15,9 @@ Node-RED ──POST /ask──▶ Quart relay ──serialized call──▶ war
- **Warme agent:** Hermes wordt tijdens startup geladen/geïnitialiseerd.
- **Veilige concurrency:** de gedeelde, mutable agent verwerkt precies één LLM-call tegelijk. Overige HTTP-verzoeken wachten in de queue; ze kunnen niet elkaars `messages` resetten.
- **Timeout:** `HERMES_RELAY_TIMEOUT` (standaard 120 s) omvat wachttijd plus LLM-call. Een timeout retourneert HTTP `504`.
- **Snelle response:** Telegram ligt niet meer in het HTTP-pad. Een succesvolle `/ask` reageert zodra het model antwoordt.
- **Background delivery:** Telegram wordt betrouwbaar gelogd. Bij gecontroleerde shutdown wacht de service op lopende bezorgingen.
- **Snelle response:** Een succesvolle `/ask` reageert zodra het model antwoordt.
- **Geen chatbezorging standaard:** relay-antwoorden blijven in de HTTP-response en verschijnen dus niet in Telegram.
- **Optionele Telegram-bezorging:** alleen met `HERMES_RELAY_TELEGRAM_DELIVERY_ENABLED=true` wordt het antwoord asynchroon via `hermes send` bezorgd. Bij een gecontroleerde shutdown wacht de service op lopende bezorgingen.
## Endpoints
@@ -36,11 +38,11 @@ Succesresponse:
"elapsed_seconds": 6.213,
"llm_elapsed_seconds": 6.213,
"request_elapsed_seconds": 6.214,
"telegram_queued": true
"telegram_queued": false
}
```
`elapsed_seconds` blijft aanwezig voor compatibiliteit en is de LLM-duur. `request_elapsed_seconds` is de feitelijke HTTP-duur. `telegram_queued` betekent dat bezorging geaccepteerd is voor de achtergrondtaak; raadpleeg journald voor het uiteindelijke bezorgresultaat.
`elapsed_seconds` blijft aanwezig voor compatibiliteit en is de LLM-duur. `request_elapsed_seconds` is de feitelijke HTTP-duur. `telegram_queued` is standaard `false`; bij expliciet ingeschakelde Telegram-bezorging betekent `true` dat de achtergrondtaak is ingepland. Raadpleeg dan journald voor het uiteindelijke bezorgresultaat.
Fouten: `400` lege payload, `413` payload groter dan limiet, `504` timeout, `502` onverwachte agentfout.
@@ -55,7 +57,8 @@ Geeft service-status, versie en het aantal lopende Telegram-bezorgingen terug.
| Variabele | Standaard | Betekenis |
|---|---:|---|
| `HERMES_RELAY_TIMEOUT` | `120` | Max. wachttijd + modelcall per HTTP-request |
| `HERMES_RELAY_DELIVERY_WORKERS` | `2` | Begrensde workers voor Telegram-bezorging |
| `HERMES_RELAY_TELEGRAM_DELIVERY_ENABLED` | `false` | Zet alleen op `true` voor asynchrone Telegram-bezorging |
| `HERMES_RELAY_DELIVERY_WORKERS` | `2` | Begrensde workers voor Telegram-bezorging als die is ingeschakeld |
| `HERMES_RELAY_MAX_PAYLOAD_CHARS` | `12000` | Maximale lengte van `payload` |
| `HERMES_RELAY_MAX_TURNS` | `10` | Agent turn-budget |
| `HERMES_RELAY_MODEL` | profieldefault | Optionele modelovertuiging |