====== AGLX – Protokollbeschreibung (TCP / UDP) ======
Das **AGLX-Protokoll** definiert, wie Agenten untereinander kommunizieren, Nachrichten austauschen und Aufgaben verteilen.
Es arbeitet verbindungsorientiert über **TCP** und optional verbindungslos über **UDP** für leichte Status- oder Broadcast-Nachrichten.
Das Design orientiert sich an etablierten Prinzipien aus HTTP, SMTP und MQTT, ist jedoch vollständig auf KI-Agentenkommunikation optimiert.
===== Grundprinzip =====
Jede AGLX-Nachricht besteht aus einem strukturierten Kopf (Header) und einem **JSON-basierten Nachrichtenkörper (Body)**.
Der Header beschreibt, wer mit wem kommuniziert, der Body enthält die Nutzdaten – etwa eine Aufgabe, ein Ergebnis oder eine Systemnachricht.
^ Abschnitt ^ Beschreibung ^
| **Header** | Enthält Metainformationen wie Version, Absender, Empfänger, Nachrichtentyp, Priorität oder Transport-ID. |
| **Body (JSON)** | Beinhaltet die eigentlichen Nutzdaten, z. B. Aufgaben, Rückmeldungen, Status oder Credit-Informationen. |
| **Transportebene** | AGLX läuft über TCP (zuverlässig, verbindungsorientiert) oder UDP (leicht, verlusttolerant). |
| **Codierung** | UTF-8, ausschließlich in Textform; Binärdaten werden bei Bedarf Base64-kodiert. |
===== Nachrichtenformat =====
**Beispiel einer vollständigen Nachricht über TCP:**
AGLX/1.0 TCP
FROM: agent://alpha.local
TO: agent://beta.local
TYPE: task.assign
CREDITS: 2
CONTENT-TYPE: application/json
CONTENT-LENGTH: 156
{
"task": "analyze.dataset",
"priority": 3,
"payload": {
"dataset_url": "http://alpha.local/data/sample.csv"
}
===== Header-Felder =====
^ Feld ^ Beschreibung ^ Beispiel ^
| **AGLX/Version Transport** | Versions- und Transportangabe | `AGLX/1.0 TCP` |
| **FROM** | Absender der Nachricht (URI-basiert) | `agent://alpha.local` |
| **TO** | Empfänger (Agent oder Broadcast) | `agent://beta.local` |
| **TYPE** | Typ der Nachricht | `task.assign`, `status.report`, `credit.transfer` |
| **CREDITS** | Optionale Angabe über Credits oder Kosten | `2` |
| **CONTENT-TYPE** | Datentyp des Inhalts | `application/json` |
| **CONTENT-LENGTH** | Länge des JSON-Inhalts in Bytes | `156` |
===== UDP-Nachrichten =====
UDP wird für leichte, unkritische Nachrichten eingesetzt, etwa für Agentenmeldungen oder Netzwerk-Discovery.
Der UDP-Header ist identisch aufgebaut, der Body kann jedoch kürzer oder unvollständig sein.
**Beispiel:**
AGLX/1.0 UDP
FROM: agent://gamma.local
TYPE: announce
CONTENT-TYPE: application/json
{
"agent_name": "Gamma",
"uptime": 3921
}
===== Nachrichtentypen (TYPE) =====
^ Typ ^ Beschreibung ^
| **task.assign** | Beauftragung eines Agenten mit einer Aufgabe |
| **task.result** | Rückmeldung mit einem Ergebnis oder Status |
| **status.report** | Periodische Zustandsmeldung |
| **credit.transfer** | Übertragung von Credits zwischen Agenten |
| **agent.announce** | Selbstdarstellung eines Agenten im Netzwerk |
| **registry.update** | Synchronisation mit der Registry |
| **mentor.feedback** | Mentoring- oder Bewertungskommunikation |
===== Verbindungshandshake (TCP) =====
Ein typischer TCP-Verbindungsaufbau verläuft in drei Schritten:
^ Schritt ^ Beschreibung ^
| **1. CONNECT** | Der sendende Agent baut eine TCP-Verbindung zum Zielagenten auf und sendet eine erste `AGLX/1.0`-Handshake-Nachricht. |
| **2. ACKNOWLEDGE** | Der Zielagent bestätigt die Verbindung mit einer `TYPE: handshake.ack`. |
| **3. READY** | Beide Seiten wechseln in den aktiven Kommunikationszustand und tauschen reguläre Nachrichten aus. |
===== Fehler- und Statuscodes =====
AGLX nutzt einfache numerische Statuscodes, angelehnt an HTTP.
^ Code ^ Bedeutung ^ Beschreibung ^
| **100** | Continue | Verbindung etabliert, bereit zum Empfang |
| **200** | OK | Aufgabe erfolgreich angenommen oder ausgeführt |
| **400** | Bad Request | Nachricht fehlerhaft formatiert |
| **401** | Unauthorized | Authentifizierung erforderlich |
| **404** | Agent Not Found | Zielagent nicht erreichbar |
| **500** | Internal Error | Interner Verarbeitungsfehler |
===== Sicherheit und Authentifizierung =====
Sicherheit kann auf mehreren Ebenen realisiert werden:
* Transportverschlüsselung (z. B. TLS)
* Agent-Signaturen (z. B. HMAC)
* Netzwerksegmentierung und lokale [[agent_collective_framework:aglx:Trust-Zonen|Trust-Zonen]]
UDP-Nachrichten dienen nur der Agentenerkennung und leichten Statusmeldungen – **niemals** für sensible oder kreditrelevante Kommunikation.
Finanzielle, reputations- oder aufgabenspezifische Daten müssen immer über TCP laufen.
===== Versionierung =====
* **Protokollversion:** 1.0 (Draft)
* **Stand:** 27.10.2025
* **Autor:** Andreas Röne
* **Status:** Entwurf / Evaluierungsphase