Zum Inhalt springen

Mit einem Agenten chatten

Diese Anleitung zeigt, wie du mit einem Agenten in einem Bereich arbeitest.

  1. Öffne Bereiche in der Seitenleiste
  2. Klicke auf + neben der Überschrift Bereiche
  3. Gib einen Bereichsnamen ein — der ist Pflicht. Ein leerer Name wird abgelehnt; der Dialog bleibt offen
  4. Füge optional Agenten aus dem Arbeitsbereich hinzu
  5. Hat der Arbeitsbereich mindestens ein Repo, erscheint eine Repo-Auswahl. Anfangs ist jedes Repo ausgewählt; grenze sie ein (auch das Abwählen eines einzelnen Repos) auf die Repos, für die dieser Bereich Worktrees bereitstellen soll
  6. Bestätige

Control Center öffnet den Bereich und beginnt im Hintergrund, je ausgewähltem Repo einen Copy-on-Write-Worktree bereitzustellen.

Tippe deine Nachricht in den Composer und drücke Enter. Der Agent startet den Lauf und streamt seine Antwort.

Wird der Bereich noch bereitgestellt, bleibt deine Nachricht erhalten, statt verloren zu gehen — der Composer hält sie und schickt sie automatisch, sobald die Worktrees bereit sind.

Während der Agent arbeitet, siehst du seinen Zug hereinströmen: Reasoning-Abschnitte, Werkzeugaufrufe (Dateien lesen, schreiben, Shell-Befehle) und Antworttext, alles in einer Nachricht des Agenten-Zugs.

Während ein Agent arbeitet, stellt gewöhnlicher Gesprächstext keinen neuen Zug in die Warteschlange. Er wird zu einer Steuerungskarte in der Leiste über dem Composer und an der nächsten Turn-Grenze in den laufenden Lauf eingeschleust. Einen Toast gibt es nicht — die Karte ist die Rückmeldung.

Drei Dinge ändern dieses Verhalten:

  • Eine Nachricht mit einer @-Erwähnung wird immer als Nachricht geschickt, nie als Steuerung
  • Eine Nachricht, die mit einem Slash-Befehl beginnt, wird immer als dieser Befehl behandelt
  • Eine Nachricht mit einem Anhang wird immer als Nachricht geschickt — die Warteschlange der Steuerung nimmt nur Text
  • Ist jeder Live-Lauf schon fertig, fällt der Text durch und wird als normale Nachricht geschickt

Trifft ein Agent auf eine Aktion, die seine Schutzregeln sperren — ein zerstörender Befehl, ein privilegiertes Werkzeug —, blockiert der Server den Lauf und veröffentlicht eine Freigabeanfrage an jeden verbundenen Client. Hast du diese Unterhaltung offen, erscheint die Anfrage im Chat, über dem Composer, als dieselbe Karte mit nummerierten Optionen wie bei ask_user (Verweigern, Genehmigen und optional Für 8 Stunden freigeben). Überspringen gibt es nicht: ein blockierter Agent wartet auf eine Entscheidung.

Bist du woanders in der App, listet ein immer im Vordergrund liegendes Panel in der Shell weiterhin, was wartet, damit du den Agenten weiterlaufen lässt, ohne den Bereich suchen zu müssen. Das Overlay verbirgt eine Anfrage, sobald die Unterhaltung dieses Bereichs auf dem Bildschirm ist, damit du dieselbe Rückfrage nie zweimal beantwortest.

Es gibt kein Timeout: ein blockierter Agent wartet, bis jemand entscheidet. Dieselbe Anfrage erscheint auch in der Aufmerksamkeitsleiste des Posteingangs und auf dem Smartphone-Client.

Ein Agent, der eine Präferenz, eine fehlende Anforderung oder eine echte Verzweigung braucht, muss ask_user aufrufen. Die Frage als Chat-Nachricht zu schreiben beendet den Zug, und du musst erneut auffordern. Das Werkzeug zeichnet eine nummerierte Karte in die Unterhaltung — Optionen, optionalen Freitext oder beides — und der Lauf wartet auf deine Antwort.

Tippe eine einzelne Option, um sie zu senden (die nachgestellte Zahl wird beim Darüberfahren zum Pfeil). Mehrfachauswahl und getippte Antworten nutzen Weiter (⌘↵ / Ctrl↵). Überspringen sagt dem Agenten, einen vernünftigen Standard zu wählen und nicht noch einmal zu fragen.

Das ist ein eigener Mechanismus, getrennt von der Freigabekarte oben: eine Freigabe heißt „darf ich das tun?“, eine Frage heißt „welche davon meintest du?“. Fragen steht auf dem eingebauten Harness in jedem Modus, auch in den Nur-Lese-Modi (es verändert nichts), und es ist absichtlich nicht in eine Freigabe-Rückfrage gewickelt — ein Dialog vor einem Dialog würde fail-closed enden, wenn niemand zum Freigeben verbunden ist. Ein Lauf ohne Unterhaltung, in die sich die Karte zeichnen lässt, bekommt das Werkzeug schlicht nicht.

Solange Läufe live sind, wird aus der Senden-Schaltfläche des Composers die Schaltfläche Agent stoppen. Leere den Composer und drücke sie — das stoppt jeden Agenten, der in dieser Unterhaltung läuft.

In der Kopfzeile des Bereichs gibt es keine Stopp-Steuerung und kein Tastenkürzel dafür. Um nur einen Lauf zu stoppen, wenn mehrere live sind, öffne den Tab Aktivität dieses Laufs — seine Kopfzeile trägt Agent pausieren, Agent fortsetzen und Lauf stoppen, begrenzt auf diesen Lauf (Lauf stoppen fragt nach). Observability → Live listet jeden laufenden Agenten im Arbeitsbereich mit derselben Steuerung.

Ein gestoppter Lauf ist als Gestoppt markiert. Schick eine neue Nachricht, um wieder einen Lauf zu starten.

Tippe / im Composer, um die Befehlsliste zu sehen. Die, die ändern, wie sich die Unterhaltung verhält:

Befehl Wirkung
/plan Schaltet den Bereich in den Plan-Modus. Ein bloßes /plan schaltet den Modus nur scharf; /plan <request> schaltet ihn scharf und schickt den Rest als deine Nachricht
/goal <text> Hält das Arbeitsziel der Unterhaltung fest
/loop <text> Iteriert an einer Aufgabe, bis sie fertig ist
/compact Faltet älteren Verlauf in eine verankerte Zusammenfassung und macht auf dem verdichteten Kontext weiter
/todo … Zeigt die gespeicherte Aufgabenliste dieser Unterhaltung und bearbeitet sie

Skills erscheinen in derselben Liste unter ihrem eigenen Namensraum skill:, damit sie nie mit den Befehlen oben kollidieren — ein Skill namens plan oder compact bleibt erreichbar:

Befehl Was er ausführt
/skill:<name> Ein Skill, der im Arbeitsbereich installiert oder dem Agenten zugeordnet ist
/skill:<repo>:<name> Ein Skill, den eines der in diesem Bereich ausgecheckten Repos mitbringt

Repo-Skills tragen das Kennzeichen des Repos, aus dem sie kommen, denn der Name allein sagt nicht, welche Konventionen eines Dienstes der Skill kodiert, und zwei Repos können jeweils ein testing mitbringen. Das Präfix musst du nicht tippen, um einen zu finden: Der bloße Skill-Name trifft die Einträge im Namensraum ebenfalls.

Ein Agent trägt immer nur die Skills des Repos, in dem er gerade arbeitet — siehe Repo-bezogene Skills. Der Composer ist nicht so eingegrenzt: Du kannst den Skill jedes Repos aufrufen, indem du ihn nennst.

/compact und /todo fängt der Client ab, und sie werden nie als Nachrichten gespeichert — eine Zeile /compact im Transkript würde den Schnitt der nächsten Kompaktierung um einen Turn nach hinten schieben. /plan schaltet den gespeicherten Modus des Bereichs um, statt als Text mitzureisen. Keiner der drei ist also „eine Nachricht, die du dem Agenten schickst“; erwarte sie nicht im Verlauf.

Vor einer komplexen Änderung schaltest du den Bereich mit /plan, dem Modus-Dropdown in der Leiste des Composers oder Umschalt+Tab in den Plan-Modus. Der Agent recherchiert dann nur lesend und liefert einen typisierten Plan, den du freigibst, bevor irgendwelche Arbeit beginnt. Siehe Planmodus nutzen.

Du brauchst keinen Bereich je Agent. In jedem Bereich:

@alice can you look at the failing tests in src/auth_test.dart?

Der erwähnte Agent wird dem Bereich hinzugefügt und mit dem Kontext dieses Bereichs ausgeführt. Siehe Agenten mit @ erwähnen, wie Namen zugeordnet werden.