Agent Identity and Lifecycle#

Die Agentenlaufzeit verwaltet die Identitäten und Lebenszyklen von Agenten. Die Anwendung erstellt Agenten nicht direkt, sondern registriert einen Agententyp mit einer Factory-Funktion für Agenteninstanzen. In diesem Abschnitt erklären wir, wie Agenten von der Laufzeit identifiziert und erstellt werden.

Agent ID#

Die Agenten-ID identifiziert eine Agenteninstanz innerhalb einer Agentenlaufzeit eindeutig – einschließlich verteilter Laufzeiten. Sie ist die „Adresse“ der Agenteninstanz zum Empfangen von Nachrichten. Sie besteht aus zwei Komponenten: Agententyp und Agentenschlüssel.

Hinweis

Agent ID = (Agententyp, Agentenschlüssel)

Der Agententyp ist keine Agentenklasse. Er ordnet einen Agenten einer bestimmten Factory-Funktion zu, die Instanzen von Agenten desselben Agententyps erzeugt. Unterschiedliche Factory-Funktionen können beispielsweise dieselbe Agentenklasse erzeugen, aber mit unterschiedlichen Konstruktorparametern. Der Agentenschlüssel ist eine Instanzkennung für den gegebenen Agententyp. Agenten-IDs können in Strings umgewandelt und aus Strings konvertiert werden. Das Format dieses Strings ist

Hinweis

Agent_Type/Agent_Key

Typen und Schlüssel gelten als gültig, wenn sie nur alphanumerische Buchstaben (a-z) und (0-9) oder Unterstriche (_) enthalten. Ein gültiger Bezeichner darf nicht mit einer Zahl beginnen oder Leerzeichen enthalten.

In einer Multi-Agenten-Anwendung werden Agententypen typischerweise direkt von der Anwendung definiert, d. h. sie werden im Anwendungscode definiert. Agentenschlüssel hingegen werden typischerweise anhand von an die Agenten gelieferten Nachrichten generiert, d. h. sie werden durch die Anwendungsdaten definiert.

Beispielsweise hat eine Laufzeit den Agententyp "code_reviewer" mit einer Factory-Funktion registriert, die Agenteninstanzen erzeugt, die Code-Reviews durchführen. Jede Code-Review-Anforderung hat eine eindeutige ID review_request_id, um eine dedizierte Sitzung zu kennzeichnen. In diesem Fall kann jede Anfrage von einer neuen Instanz mit einer Agenten-ID ("code_reviewer", review_request_id) bearbeitet werden.

Agent Lifecycle#

Wenn eine Laufzeit eine Nachricht an eine Agenteninstanz anhand ihrer ID liefert, holt sie entweder die Instanz ab oder erstellt sie, falls sie nicht existiert.

Agent Lifecycle

Die Laufzeit ist auch für das „Paging in“ oder „Paging out“ von Agenteninstanzen verantwortlich, um Ressourcen zu schonen und die Last auf mehreren Maschinen auszugleichen. Dies ist noch nicht implementiert.