Delegation
Delegation heißt: Ein Agent gibt eine Aufgabe an einen anderen Agent. Der andere Agent arbeitet in seiner eigenen Session, mit seinem eigenen Kontext. Nur ein kurzer Auftrag geht nach unten, und nur ein kurzes Ergebnis kommt zurück. So bleibt jeder Agent bei seiner eigenen Arbeit. Diese Seite zeigt die Agent-Werkzeuge, den Auftrag und das Ergebnis, und wie du abgegebene Arbeit beobachtest.
Die Agent-Werkzeuge
OpenBot gibt jedem Agent diese Werkzeuge:
| Werkzeug | Was es tut |
|---|---|
openbot_list_agents |
Listet die Agents auf, denen er Arbeit geben kann, mit ihren Rollen. Seine Session Agents sind dabei. |
openbot_agent_details |
Liest die Rolle und die Anweisungen eines Agents. |
openbot_delegate |
Gibt einem anderen Agent eine Aufgabe und wartet auf das Ergebnis. |
openbot_start_session_agent |
Startet einen neuen Session Agent für seine Session. |
openbot_create_agent |
Erstellt einen neuen dauerhaften Agent, der ihm gehört. Siehe Agents, die Agents besitzen. |
openbot_promote_agent |
Macht einen Session Agent seiner Session zu einem dauerhaften Agent, der ihm gehört. |
openbot_report |
Nur bei abgegebener Arbeit. Schickt das Ergebnis zurück. |
Wenn ein Agent zum ersten Mal einem anderen dauerhaften Agent Arbeit gibt, einen Session Agent startet, einen Agent erstellt oder einen dauerhaft macht, muss die Stelle über ihm zustimmen. Siehe Requests. Den Session Agents seiner Session und den Agents, die ihm gehören, kann ein Agent immer Arbeit geben.
Der Auftrag
openbot_delegate nimmt einen Auftrag (Brief) an:
| Feld | Bedeutung |
|---|---|
agent |
Die ID des anderen Agents. |
reason |
Warum der Agent das will. Eine entscheidende Stelle liest es, wenn sie zustimmen muss. |
task |
Was zu tun ist. |
userRequest |
Die Worte der Person, unverändert. Ein Auftrag ersetzt sie nie. |
context |
Kurze Fakten, die der andere Agent braucht. |
references |
Session- und Item-IDs, die der andere Agent lesen kann. |
constraints |
Regeln für die Arbeit. |
expectedOutput |
Wie ein gutes Ergebnis aussieht. |
session |
Optional. Frühere Arbeit dieses Agents in dieser Session fortsetzen. |
Der andere Agent bekommt den Auftrag als erste Nachricht eines Turns. Er sieht nie den Verlauf des Agents, der die Arbeit abgegeben hat.
Welche Session die Arbeit nutzt
- Mit
sessiongeht die Arbeit in dieser Session weiter, wenn sie dem anderen Agent gehört und aus derselben Session gestartet wurde. - Bei einem Session Agent geht die Arbeit in seiner neuesten Session aus derselben Eltern-Session weiter. So behält ein Session Agent seinen Kontext.
- Sonst beginnt die Arbeit in einer neuen Session.
Wenn die andere Session beschäftigt ist, wartet der Auftrag in ihrer Queue (Warteschlange) und läuft als Nächstes.
Das Ergebnis
Der andere Agent ruft openbot_report einmal auf, wenn er fertig ist. Wenn er ohne Bericht endet, nutzt OpenBot seine letzte Antwort.
{ "status": "completed", "summary": "Added the endpoint and two tests.", "artifacts": [{ "kind": "branch", "ref": "agents-contract" }], "openQuestions": [], "child": { "session": "c81d…", "turn": "t-77" }}status ist completed, failed oder cancelled. Das Ergebnis enthält nie den ganzen Verlauf. Um die Details zu lesen, öffne die Session in child.
Wie die Eltern-Session wartet
Während der andere Agent arbeitet, hat der Turn, der die Arbeit abgegeben hat, den Status Waiting. Er hält keinen laufenden Prozess. Darum kann das Warten lange dauern und übersteht einen Neustart des Servers. Wenn die Arbeit endet, gibt OpenBot das Ergebnis an den wartenden Werkzeugaufruf, und der Turn geht weiter. Wenn ein Turn mehreren Agents gleichzeitig Arbeit gibt, geht er nach dem letzten Ergebnis weiter.
Abgegebene Sessions haben kind: "delegated" und ein parent mit der Session, dem Turn und dem Werkzeugaufruf, die sie gestartet haben. Sie haben dieselben Routen wie jede Session. Du kannst sie lesen, lenken und unterbrechen.
Abgegebene Arbeit beobachten
curl -H "Authorization: Bearer $OPENBOT_TOKEN" \ https://api.example.com/v1/sessions/$SESSION/delegations[ { "id": "dlg_9f1e…", "parent": { "session": "a41c…", "turn": "t-12", "toolCallId": "call-3" }, "agent": "agt_5c0e…", "child": { "session": "c81d…", "turn": "t-77" }, "status": "running", "brief": { "task": "…", "userRequest": "…" }, "result": null }]| Status | Bedeutung |
|---|---|
authorizing |
Die Arbeit wartet darauf, dass ein Request beantwortet wird. |
queued |
Die Arbeit darf beginnen. OpenBot startet sie jetzt. |
running |
Der andere Agent arbeitet daran. |
completed |
Die Arbeit ist fertig. result enthält das Ergebnis. |
failed |
Die Arbeit ist fehlgeschlagen oder war nicht erlaubt. |
cancelled |
Die Arbeit wurde gestoppt. |
Abgegebene Arbeit stoppen
Wenn du einen Turn unterbrichst, stoppt OpenBot auch die Arbeit, die er abgegeben hat, und schließt seine offenen Requests. Jeder Eintrag wird cancelled.
Forks
Ein Fork (Abzweigung) einer Session ist neue direkte Arbeit. Er behält den Agent seiner Quelle, hat aber kein parent. Arbeit, die ein Fork abgibt, beginnt in neuen Sessions. So teilen sich zwei Zweige nie die Arbeit eines Session Agents.