Agenten arbeiten zusammen

Agenten in Bromure können zusammenarbeiten. Ein Agent kann ein abgegrenztes Stück Arbeit an einen frischen Agenten abgeben. Er kann auch eine Sitzung, die schon läuft — auf derselben Maschine oder einer anderen — um etwas bitten, das sie weiß oder kann. Sie können das selbst anstoßen („frag @payments nach dem Webhook-Schema“), oder der Agent entscheidet es von sich aus.

Die beiden Agenten sprechen nie direkt miteinander. Jede Nachricht geht über den Bromure-Host, der:

  • jeder Sitzung nur die Unterhaltungen zeigt, an denen sie beteiligt ist
  • jede Nachricht auf Prompt-Injection prüft
  • jede Nachricht in der Sicherheits-Zeitleiste festhält
  • alle mitreisenden Dateien zwischen Maschinen kopiert

Dieses Kapitel sagt „Maschine“ für das, was der Einstellungseditor Arbeitsbereich nennt.

Delegationen und Anfragen

Es gibt zwei Arten des Austauschs:

DelegationAnfrage
Wer die Arbeit tutEine neue Sitzung, dafür gestartetEine Sitzung, die schon existiert, über ihren @Spitznamen benannt
WoStandardmäßig in einem Git-Worktree, abgezweigt vom Ordner des Delegierenden, auf eigenem Branch. Sie läuft im gleichen Ordner, wenn der kein Repository ist, und in einem eigenen Ordner, wenn in eine andere Maschine delegiert wird.Wo diese Sitzung schon läuft
Wie sie beginntMit Titel, Briefing, der Bedeutung von „fertig“ (dem Vertrag) und den Pfaden, in denen zu bleiben istAls einzeiliger Hinweis an der Eingabe des Peers
Wie sie endetDer Delegierte liefert. Der Delegierende nimmt an oder lehnt ab mit close_delegation, oder bricht ab. Die Sitzung des Delegierten wird dann archiviert, während ihr Branch zum Mergen oder Verwerfen bleibt.Das deliver des Peers ist die Antwort. Auf seiner Seite wird nichts gestartet oder beendet.

Ein Delegierter ist in der Seitenleiste unter seinem Delegierenden verschachtelt, wie eine Branch-Sitzung. Eine Delegation in eine andere Maschine startet diese, wenn sie aus ist. Sie tut das still, ohne den Chat zu übernehmen, den Sie ansehen.

Wie Nachrichten einen Agenten erreichen

Ein Agent empfängt Nachrichten auf drei Wegen:

  • Wartend: Ist der Agent in wait oder ask blockiert, bekommt er die Nachricht sofort.
  • Untätig: Ist seine Eingabe untätig, tippt der Host dort einen einzeiligen Hinweis, der ihm sagt, read_inbox aufzurufen.
  • Beschäftigt: Ist er mitten in einem Zug, oder steht ein Dialog auf seinem Schirm, wartet der Hinweis, bis die Eingabe frei ist.

Ein Hinweis, der einige Minuten später noch ungelesen ist, wird erneut gesendet, bis zu drei Mal. Ist der Agent des Empfängers beendet, setzt die Nachricht ihn fort. Einen beendeten Delegierten zu steuern bringt ihn zum Beispiel dorthin zurück, wo er war.

Was der Host einer Sitzung noch schuldet, wird an der Nachricht selbst gespeichert, sodass es einen Neustart der App übersteht.

@Spitznamen

Ein Spitzname ist, wie Sie und andere Agenten eine Sitzung adressieren. Setzen Sie einen mit Spitzname… im Kontextmenü der Sitzung oder im Menü ⋯ ihres Headers.

Das Blatt erklärt: „Wie andere Agenten „Sitzung“ erreichen: sie fragen sie mit request(to: "@name"), und Sie können @name in jedem Verfasser schreiben. Buchstaben, Ziffern, Punkte, Bindestriche und Unterstriche.“ Es zeigt das Ergebnis vorab („Wird @payments“). Klicken Sie Festlegen, oder Leeren, um ihn zu entfernen.

Spitznamen sind auf dem Mac eindeutig. Einen bereits genutzten zu wählen wird abgelehnt („@payments ist schon „Payments-API-Umbau“.“). Der Spitzname erscheint neben dem Titel der Sitzung in der Seitenleiste, im Header und in Raumzellen, und Sie können in der Seitenleiste danach suchen.

Die @-Palette

Tippen Sie @ im Verfasser eines Chats oder auf dem Neue-Sitzung-Bildschirm, um eine Palette der Sitzungen zu bekommen, die Sie nennen können:

  • Sie listet jede Sitzung außer der aktuellen.
  • Sitzungen mit Spitznamen erscheinen, wie sie sind. Sitzungen ohne einen erscheinen mit dem Spitznamen, den sie bekämen, aus dem Titel abgeleitet und als neuer Name markiert. Eine davon auszuwählen gibt der Sitzung diesen Spitznamen auf der Stelle, sodass der @name, den Sie gerade getippt haben, einer ist, den ein Agent auflösen kann.
  • Namenstreffer stehen über Titeltreffern, und benannte Sitzungen über unbenannten.
  • ↑ und ↓ bewegen, Tab oder ⏎ vervollständigt, Esc schließt.

„@name“ in eine Nachricht zu schreiben sendet für sich nichts. Es sagt Ihrem Agenten, welchen Peer Sie meinen, und der Agent nutzt dann request, um ihn zu fragen.

Die bromure-delegation-Werkzeuge

Jede Agenten-Sitzung bekommt den MCP-Server bromure-delegation (vsock-Port 5835). Der Host erkennt die aufrufende Sitzung am Terminalfenster, in dem ihr Werkzeug-Shim läuft, nie an etwas, das der Agent behauptet.

WerkzeugWer es nutztWas es tut
delegateDelegierenderStartet einen Delegierten: Titel, Briefing, Vertrag, Geltungsbereich, Agent (standardmäßig der eigene), worktree true/false, ein optionaler anderer workspace, und Dateien zum Mitsenden.
requestFragenderFragt einen Peer per @nick (oder Sitzungs-ID), mit optionalen Dateien. Es wartet auf die Antwort: standardmäßig 50 Sekunden, bis zu 600.
list_peersjederListet die erreichbaren Sitzungen mit Spitznamen, Titeln, Maschinen, Agenten und Zuständen, und die Maschinen, in die delegiert werden darf.
list_delegationsjederListet seine Delegationen und Anfragen, von beiden Seiten, mit Status und letztem Wort.
read_inboxjederNimmt die wartenden Nachrichten, die ältesten zuerst.
waitjederBlockiert, bis eine Nachricht ankommt: standardmäßig 50 Sekunden, bis zu 600.
askDelegierter / PeerStellt dem, der gefragt hat, eine blockierende Frage und wartet auf die Antwort.
reportDelegierterSendet eine Fortschrittsnotiz. Sie unterbricht den Delegierenden nie.
deliverDelegierter / PeerGibt die Arbeit ab (was sich geändert hat, wie man es prüft, was offen bleibt), oder antwortet auf eine Anfrage. Es kann Dateien zurücksenden.
answerDelegierenderAntwortet auf die Frage eines Delegierten oder Peers.
steerDelegierenderSendet einen Nachtrag oder eine Kurskorrektur, mit optionalen Dateien.
close_delegationDelegierenderSchließt eine gelieferte Delegation als angenommen oder abgelehnt, mit einer Notiz.
cancelDelegierenderStoppt einen Delegierten, bevor er liefert, oder zieht eine Anfrage zurück.
worktree_create, worktree_status, worktree_mergejederStartet Branch-Sitzungen aus dem eigenen Ordner, verfolgt sie, und bittet Sie, eine zu mergen. Siehe Branches und Review.

Vertrauen und Fragen

Den Agenten wird gesagt, dass Sie sie zum Zusammenarbeiten eingerichtet haben. Eine Anfrage, ein Briefing, eine Antwort oder eine Steuerung von einem anderen Agenten ist zu behandeln, als hätten Sie sie gestellt, ohne bei Ihnen nachzufragen. Die Prompt-Injection-Prüfung des Hosts gilt dennoch.

Fragen gehen den Weg zurück, den die Arbeit kam, damit Sie in einem Fenster bleiben:

  1. Ein Delegierter oder Peer, der eine Entscheidung braucht, nutzt ask, um den zu erreichen, der ihn gefragt hat. Er fragt nie seinen eigenen Nutzer.
  2. Der fragende Agent antwortet aus seiner eigenen Unterhaltung, wenn er kann.
  3. Kann er nicht, stellt er Ihnen die Frage, Wort für Wort und mit Angabe, wer fragt, und sendet Ihre Antwort dann mit answer zurück.

Grenzen

GrenzeWert
Delegations-Tiefe (ein Delegierter, der weiter delegiert)3 Ebenen
Offene Delegationen und Anfragen je Sitzung8
Zeitgrenze für wait, ask und requeststandardmäßig 50 s, höchstens 600 s
Dateien je Nachricht20 (für mehr einen Ordner oder ein Archiv senden; ein Ordner reist als Tarball)
Gesamtgröße der Dateien einer Nachricht4 GB (vorher mit dem freien Speicherplatz des Empfängers abgeglichen)

Eine Anfrage an eine archivierte Sitzung wird abgelehnt, bis Sie die Sitzung zurückholen.

Dateien und der Eingang

Maschinen teilen kein Dateisystem, daher werden in einer Nachricht genannte Dateien vom Host kopiert. Sie landen im ~/.bromure/inbox/<id>/ der Empfängermaschine, bevor der Empfänger die Nachricht liest, die sie erwähnt.

Pfade werden relativ zum Ordner des Senders aufgelöst, und ~ ist das Home des Senders. Zwischen zwei Sitzungen auf derselben Maschine ist die Kopie lokal.

Prüfung und Audit

Jedes Briefing, jede Anfrage, Frage, Antwort, Notiz, Lieferung und Steuerung wird vom Prompt-Injection-Detektor auf dem Gerät geprüft, bevor sie weitergegeben wird.

  • Eine Nachricht, die den Detektor auslöst, wird zurückgehalten. Sie bleibt im Protokoll, als blockiert markiert. Dem Sender wird gesagt, warum, ihm wird die auffällige Stelle gezeigt, und er wird gebeten, es einfach umzuformulieren.
  • Jede Nachricht, weitergegeben oder zurückgehalten, ist eine Zeile in der Sicherheits-Zeitleiste unter der Engine Agenten-Delegation, mit der Entscheidung weitergegeben oder zurückgehalten — Prompt-Injection. Auf eingeschriebenen Installationen gehen die Zeilen auch in das Audit-Log der Organisation. Siehe Enterprise.

Der Bereich Delegationen

Hat eine Sitzung etwas delegiert oder gefragt, erscheint über ihrem Verfasser ein Bereich Delegationen. Sein Kopf zählt die Delegationen und alle wartenden Fragen und Lieferungen („1 Frage“, „2 Lieferungen“). Der Pfeil klappt ihn ein.

Jede Zeile zeigt:

  • Avatar und Titel der anderen Sitzung (klicken für Die Sitzung des Delegierten öffnen, oder Die Sitzung des Peers öffnen bei einer Anfrage)
  • ein Etikett Anfrage bei Anfragen
  • den Zustand: Wird gestartet, Arbeitet, Hat eine Frage gestellt, Geliefert, Angenommen, Abgelehnt, Abgebrochen oder Fehlgeschlagen
  • den Namen der Maschine, wenn die andere Sitzung auf einer anderen läuft
  • ihren Branch
  • das letzte gewechselte Wort, zum Beispiel „Delegierter hat geliefert: …“

Hat ein Delegierter oder Peer eine Frage gestellt, zeigt seine Zeile die Frage mit einem Feld Antwort für den Agenten… und Senden. „Ihr Agent kann sie auch beantworten — dies sendet Ihre an seiner Stelle.“ Dort zu antworten spart den Umweg über Ihren Agenten.

Am anderen Ende zeigt der eigene Chat eines Delegierten oder Peers einen Streifen, der sagt, wem er antwortet. Der Streifen liest „Delegiert von Sitzung“ oder „Anfrage von Sitzung“, mit dem Zustand und einem Link Delegierenden zeigen (oder Fragenden zeigen).

Ein Delegierter, der endet, ohne zu liefern, lässt seine Delegation fehlschlagen, und der Delegierende wird informiert. Beendete Delegationen (angenommen, abgelehnt, abgebrochen oder fehlgeschlagen) archivieren die Sitzung des Delegierten. Sie bleibt in der Klappe Archiviert lesbar.

Zwischen Maschinen und zwischen Macs

  • Zwischen Maschinen auf diesem Mac: Standardmäßig können Agenten in jeder Maschine jede andere Maschine erreichen, sowohl um dorthin zu delegieren als auch um deren Sitzungen zu fragen. Um eine Maschine einzuschränken, öffnen Sie ihre Einstellungen, Bereich Allgemein, Abschnitt Reichweite, und schalten Jeder Arbeitsbereich aus: für jede andere Maschine erscheint ein Schalter, und ihre Agenten dürfen nur die erreichen, die Sie einschalten (mit keiner eingeschalteten nur die Sitzungen auf ihrer eigenen Maschine). Die Regel gilt in eine Richtung: ob die Agenten der anderen Maschine zurück erreichen können, wird auf jener Maschine eingestellt. Eine eingeschränkte Maschine bietet auch die Sitzungen ferner Macs nicht mehr an, die sie spiegelt (siehe den nächsten Punkt).
  • Zwischen Macs: Spiegelt dieser Mac ein fernes Bromure in einem Fat-Client-Fenster, können Agenten in einer Maschine, die auf Jeder Arbeitsbereich belassen wurde, auch Anfragen an die Sitzungen jenes Servers senden, per @Spitznamen. Die Anfrage reist durch den Tunnel des Spiegels, Dateien eingeschlossen. Im Bereich Delegationen nennt die Zeile den Host, an den sie ging. Das funktioniert vom Mac zu dem Server, den er spiegelt, nicht umgekehrt.
  • Spiegel zeigen Delegationen nur zum Lesen. Ein Fat-Client-Fenster zeigt den Bereich Delegationen der Sitzungen des Servers, aber Fragen können Sie von dort nicht beantworten.