Direkt zum Inhalt
ColliePWA

04/Documentation

Terminals

Collie auf Herdr, tmux, zellij, tuios oder Tern ausrichten, was die einzelnen Systeme beantworten können, und Agenten-Beacons. Experimentell für tmux, zellij, tuios und Tern; Fehlerberichte erwünscht

Dies sind die Terminals, aus denen Collie Sitzungen liest: Herdr, tmux, zellij, tuios und Tern. Collie steuert ein Terminal pro Installation, und Herdr ist der Standard. Diese Seite beschreibt, wie Sie Collie auf eines dieser Terminals verweisen, was jedes einzelne beantworten kann und welche Beacons Collie verwendet, um einen Agenten in einem Bereich zu erkennen. Ein langlebiger Agent ohne Bildschirm ist kein Terminal, und Persistente Agenten behandelt dies.

tmux und zellij nennen ihre eigene oberste Gruppe eine Sitzung. Collie zeigt sie als Bereich an.

Collie auf einen Multiplexer ausrichten

Benennen Sie das Backend in COLLIE_MUX, verweisen Sie auf einen Endpunkt, starten Sie neu und installieren Sie die Beacon-Hooks.

Experimentell. tmux und zellij (seit 1.0) wurden auf tmux 3.6b und zellij 0.44.2 auf einem einzelnen Host getestet. tuios (seit 1.15.0) wurde auf tuios 0.8.4 getestet. Tern wurde von seinem Mitwirkenden auf tern 0.4.5 geprüft, einer geschlossenen Beta, die die Maintainer nicht ausführen können. Herdr ist der Standard und das primär unterstützte Backend. Tester gesucht: Öffnen Sie ein Issue auf AltanS/collie mit dem Titel tmux: …, zellij: …, tuios: … oder tern: … unter Angabe Ihres Multiplexers, der Version, des Betriebssystems und Ihrer Beobachtung.

Geben Sie den Multiplexer in der Befehlszeile an:

COLLIE_MUX=herdr collie start
COLLIE_MUX=tmux collie start
COLLIE_MUX=zellij collie start
COLLIE_MUX=tuios collie start
COLLIE_MUX=tern collie start

Geben Sie den Endpunkt an, falls das Standardziel abweicht:

# in your .env: ~/.config/collie/.env, or Herdr's plugin config dir on a Herdr
# install. See Configure for the full precedence.
COLLIE_MUX=tmux
COLLIE_MUX_ENDPOINT_TMUX=/run/user/1000/collie-tmux.sock
COLLIE_MUX_ENDPOINT_ZELLIJ=collie-zellij

# only if the binary sits somewhere unusual
# COLLIE_TMUX_BIN=/usr/bin/tmux
# COLLIE_ZELLIJ_BIN=/home/you/.local/bin/zellij
VariableWertBedeutung
COLLIE_MUXherdr, tern, tmux, zellij oder tuioswelches Terminal diese Installation steuert
COLLIE_MUX_ENDPOINT_TMUX/run/user/1000/collie-tmux.sockein Socket-Pfad (tmux -S), da er ein / enthält
COLLIE_MUX_ENDPOINT_TMUXworkein Socket-Name (tmux -L work), kein /
COLLIE_MUX_ENDPOINT_TMUXleertmux-eigener Standardserver
COLLIE_MUX_ENDPOINT_ZELLIJcollie-zellijein Sitzungsname, kein Pfad
COLLIE_MUX_ENDPOINT_ZELLIJleerdie einzelne laufende Sitzung
COLLIE_MUX_ENDPOINT_TUIOS/run/user/1000/tuios/tuios.sockder Socket-PATH des tuios-Daemons
COLLIE_MUX_ENDPOINT_TUIOSleer$XDG_RUNTIME_DIR/tuios/tuios.sock, sonst /tmp/tuios-<uid>/tuios.sock
COLLIE_MUX_ENDPOINT_TERN/run/user/1000/tern/daemon.sockder Socket-PATH des Tern-Daemons
COLLIE_MUX_ENDPOINT_TERNleer$XDG_RUNTIME_DIR/tern/daemon.sock, sonst /tmp/tern-<uid>/daemon.sock
COLLIE_TERN_BIN/home/you/.local/opt/tern/ternnur wenn tern an einem ungewöhnlichen Ort liegt
COLLIE_TMUX_BIN/usr/bin/tmuxnur wenn tmux an einem ungewöhnlichen Ort liegt
COLLIE_ZELLIJ_BIN/home/you/.local/bin/zellijnur wenn zellij an einem ungewöhnlichen Ort liegt

Herdr hat hier keine Endpunkt-Variable: Sein Socket ist HERDR_SOCKET_PATH, kein COLLIE_MUX_ENDPOINT_-Name.

Dieser Socket ist der lokale und kein anderer. Ein in Herdr gespeicherter Rechner ist kein Crew-Mitglied, und nur eine Collie-Crew bringt die Bereiche eines anderen Rechners auf das Telefon. Was die einzelnen Listen bedeuten und warum sie sich unterscheiden, steht in Herdr-Maschinen und die Crew.

Starten Sie anschließend neu, installieren Sie die Beacon-Hooks und starten Sie einen Agenten im Sichtbereich des Telefons:

collie restart                 # after every .env edit
collie hooks install claude    # once per host; tmux, zellij and tern need it, Herdr gets hook edges

# open a window or a tab for the agent
tmux -S /run/user/1000/collie-tmux.sock new-window -n claude
zellij --session collie-zellij action new-tab --name claude

claude                         # in that window or tab

Wirkung dieser Befehle

COLLIE_MUX in der Befehlszeile legt die Auswahl für diese und jede spätere Ausführung fest. start schreibt den Namen in .env, sodass spätere Ausführungen von collie start denselben Multiplexer steuern.

Wenn COLLIE_MUX nicht gesetzt ist, sucht start nach Herdr, tmux und zellij, fragt nach einem Backend und schreibt die Antwort in .env. Die vollständige Konfigurationsreferenz finden Sie unter MUX_CONTRACT.md → Collie auf einen Multiplexer ausrichten.

collie hooks install claude installiert Collies Beacon-Hooks, die tmux, zellij und tern benötigen. Sie stellen Panes als generische Shells bereit, sodass ohne Hooks jedes Pane als bash erscheint.

Der Befehl aktualisiert ~/.claude/settings.json und lässt Projektkonfigurationen unberührt (Details unten). Claude Code 2.1.301 lädt seine Hooks neu, während es läuft. Starten Sie ein älteres Claude neu.

Hinweis. Herdr ist in diesem Modus nicht erforderlich. Mit COLLIE_MUX=tmux oder COLLIE_MUX=zellij lädt die Bridge nur den ausgewählten Adapter und ignoriert den Socket von Herdr. Die Erkennung mehrerer Herdr-Sitzungen über verschiedene Herdr-Konfigurationswurzeln hinweg ist deaktiviert (bridge/index.ts). Sie müssen Herdr weder installiert haben noch ausführen, und .env befindet sich in ~/.config/collie/ statt im Plugin-Konfigurationsverzeichnis.

Hinweise zu tmux

COLLIE_TMUX_BIN bleibt in der Regel ungesetzt. Collie prüft eine Liste von Standardpfaden und liest PATH nicht aus, da Hintergrunddienste und Herdr-Aktionen diese Variable nicht mit Login-Shells teilen.

Hinweis. Halten Sie Socket-Pfade kurz. Bei Unix-Domain-Sockets mit mehr als etwa 100 Zeichen schlägt die Verbindung fehl, und tmux gibt error connecting to … (File name too long) zurück. Verwenden Sie /run/user/<uid>/ oder /tmp statt eines tief verschachtelten Verzeichnispfads.

Bei tmux-Versionen vor 3.7 mit window-size auf manual führt das Erstellen eines Fensters zum Absturz des Servers. Collie blockiert die Fenstererstellung in diesem Zustand und weist Sie an, tmux set -g window-size latest auszuführen; Anforderungen listet die getesteten Versionen auf.

Wenn automatic-rename aktiv ist, benennt tmux ein Fenster nach dem darin ausgeführten Programm um; Collie zeigt stattdessen den letzten Ordner des aktiven Bereichs dieses Fensters an, da ein Bildschirm voller Reiter namens bash nichts aussagt. Ein Fenster, das Sie selbst benannt haben, behält diesen Namen.

Hinweise zu zellij

Wenn Ihre Distribution keine zellij-Pakete enthält, laden Sie eine Binärdatei von GitHub-Releases von zellij herunter und platzieren Sie sie in Ihrem PATH.

Bleibt der Endpunkt leer, wird standardmäßig die einzelne laufende Sitzung verwendet. Wenn keine oder mehrere Sitzungen existieren, bricht Collie mit einem Fehler ab, anstatt eine auszuwählen. Wenn eine benannte Sitzung beendet wird, meldet Collie diese namentlich, anstatt zu einer aktiven zu wechseln.

Zellij benötigt XDG_RUNTIME_DIR, um Sitzungen zu finden. Wenn Collie alle Sitzungen als beendet meldet, prüfen Sie, ob der systemd-Dienst diese Umgebungsvariable enthält (Vertrag).

Zellij-Sitzungen bleiben unabhängig von ihrem ursprünglichen Terminal bestehen. Erstellen Sie eine Sitzung mit zellij -s collie-zellij und trennen Sie sie mit Ctrl o d. Auf Headless-Hosts startet zellij attach --create-background collie-zellij eine getrennte Sitzung direkt (getestet mit zellij 0.44.2).

Hinweis. Collie verwaltet aktive Sitzungen, erstellt oder startet sie jedoch nicht neu.

Zellij 0.44 und neuer meldet den Ordner jedes Panes, sodass zellij-Panes die Schaltfläche „Dateien“ erhalten und ihren Branch anzeigen. Ein älteres zellij meldet keinen Ordner, und seine Panes haben beides nicht.

tern-Hinweise

Collie auf Tern ausrichten:

COLLIE_MUX=tern collie start
collie hooks install claude   # beacon hooks for agent detection

Collie liest Tern-Sitzungen als Spaces, Tabs als Tabs und Blöcke als Panes. Der Endpunkt ist der Socket des Tern-Daemons, standardmäßig $XDG_RUNTIME_DIR/tern/daemon.sock (oder /tmp/tern-<uid>/daemon.sock). Innerhalb eines Tern-Panes identifiziert $TERN_PANE den Block und $TERN_PANE_SOCKET verweist auf den Daemon-Socket.

Tern meldet Lebenszyklus-Ereignisse über tern events, was sofortige Benachrichtigungen über Topologieänderungen ermöglicht.

"Im Terminal anzeigen" verschiebt Ihr Tern-Fenster zur Tern-Sitzung und zum Tab des Bereichs und fokussiert dessen Block. Ein Tab oder eine Tern-Sitzung, die Collie erstellt, öffnet sich im Hintergrund und verschiebt Ihr Fenster nicht.

Collie erkennt Tern nicht von selbst, ebenso wenig wie tuios: Benennen Sie es mit COLLIE_MUX=tern. Eingegebener Text von mehr als 128 KiB wird abgelehnt, da er als einzelnes Befehlszeilenargument übertragen wird.

Hinweise zu langlebigen Programmen

Ein langlebiger Agent, den Sie anbinden, ist kein Terminal und hat keinen Bildschirm. Persistente Agenten beschreibt, wie Sie einen mit collie durable attach anbinden, die ältere Form, die einen langlebigen Agenten alleine mit COLLIE_MUX=durable steuert, die zwei Wege, einen langlebigen Agenten zu erreichen, was er auf dem Telefon tun kann und was zu prüfen ist, wenn er als nicht erreichbar angezeigt wird.

tuios-Hinweise

tuios meldet Agenten selbst, benötigt also keine Beacon-Hooks:

COLLIE_MUX=tuios collie start
tuios integration install claude-code   # once, so tuios hears the agent's hooks

Collie liest den Agenten, seinen Zustand und seine Konversation aus dem tuios-Daemon. Ein Bereich, der auf Sie wartet, wird als blockiert angezeigt, und der Verlauf eines Bereichs öffnet sich, sobald der Agent seine Konversation gemeldet hat. Ein Agent, für den Collie kein Test-Harness hat, wird als Shell angezeigt.

Collie zeigt jede tuios-Sitzung als Space, jeden Arbeitsbereich als Tab und jedes Fenster als Bereich an. Ein Arbeitsbereich wird als Tab angezeigt, solange er einen Bereich enthält. Ein Bereich, der auf einem anderen Rechner läuft, wird nicht angezeigt. Richten Sie ein Collie auf diesem Rechner auf dessen eigenes tuios aus.

Der Endpunkt ist der Socket des Daemons. Lassen Sie ihn leer, um den Socket zu verwenden, den tuios selbst nutzt. Collie liest XDG_RUNTIME_DIR, um ihn zu finden; stellen Sie daher sicher, dass der Dienst diese Variable enthält. In einem tuios-Bereich gibt echo $TUIOS_SOCKET den Pfad aus.

Collie benötigt tuios 0.8.3 oder neuer: Der Daemon muss das Ereignis workspace-renamed ankündigen, was 0.8.2 nicht tut. Bei einem älteren Daemon zeigt Collie die Bridge als getrennt an und das Protokoll nennt die nötige Aktualisierung.

Einige Dinge funktionieren unter tuios anders:

  • Ein neuer Tab öffnet sich auf dem niedrigsten leeren Arbeitsbereich. Eine tuios-Sitzung hat standardmäßig neun Arbeitsbereiche, daher verweigert Collie einen zehnten Tab.
  • "Im Terminal anzeigen" verschiebt jedes Terminal, das die tuios-Sitzung des Bereichs anzeigt, einschließlich eines tuios-web-Tabs. tuios kann ein Terminal nicht zu einer anderen tuios-Sitzung verschieben. Wenn kein Terminal die tuios-Sitzung des Bereichs anzeigt, verweigert Collie dies und nennt die tuios-Sitzung, die das Terminal anzeigt.
  • Der Schalter Neuer Worktree auf der Seite „Neu“ bleibt ausgeschaltet und weist darauf hin, dass Herdr erforderlich ist.

Hat es funktioniert?

collie doctor   # the `mux` check names the multiplexer, its endpoint,
                # and whether it answered (durable: the six `durable-*` checks)

# `[bridge] mux: tmux · socket /run/user/1000/collie-tmux.sock`, printed at
# startup; a multiplexer it cannot reach is one warning line more
collie logs

# the herd, as the phone is given it; reads need the pairing token
curl -s -H "Authorization: Bearer $COLLIE_TOKEN" http://127.0.0.1:8787/api/snapshot | head -c 400

Jeder Lesevorgang erfordert das Token eines gekoppelten Geräts, daher sendet dieser curl-Aufruf eines. Ohne dieses antwortet die Bridge mit 403 device not paired. Um ein Token für ein Skript zu erhalten, siehe Upgrade auf 1.18.0. collie doctor benötigt kein Token auf dem Host. COLLIE_DEVICE_HEADER beschränkt weiterhin nur Schreibvorgänge und die Dateiübersicht (Ein Gerät koppeln).

Prüfen Sie die Smartphone-Benutzeroberfläche: Das Dashboard sollte Ihr tmux-Fenster oder zellij-Tabs anzeigen, und der Claude-Bereich sollte sich als Agent statt als bash identifizieren. Wenn Bereiche weiterhin als Standard-Shells angezeigt werden, überprüfen Sie die unten stehende Installation der Beacon-Hooks.

Collie schreibt Hooks in Claudes eigene Einstellungen

$ collie hooks install claude
$ collie hooks status
would install: /home/you/collie/bin/collie beacon emit  (this checkout)
/home/you/.claude/settings.json: installed (v1)

Da tmux, zellij und tern Bereiche als generische Shells bereitstellen, müssen sich Agenten selbst ankündigen. Dies erfordert die Installation der Hooks von Collie Beacon in der Konfiguration von Claude Code. Auf Herdr liefern dieselben Hooks nur Hook-Edges.

Die Ausgabe verweist auf den bin/collie-Pfad aus diesem Repository. Paketinstallationen verwenden den installierten Binärpfad (~/.local/bin/collie oder ~/.local/share/collie/current/bin/collie) anstelle von versionierten Verzeichnissen, damit Verknüpfungen über Aktualisierungen hinweg gültig bleiben.

Verhaltensdetails bei Konfigurationsänderungen von Claude:

  • Ändert die global ~/.claude/settings.json und alle aktiven CLAUDE_CONFIG_DIR. .claude/settings.json-Dateien auf Projektebene bleiben unberührt.
  • Fügt fünf-Hooks mit dem Tag # collie-beacon v1 und 10-Sekunden-Timeouts ein. Bestehende Hooks bleiben erhalten. hooks uninstall claude entfernt nur Collie-Einträge.
  • Lässt Ihre statusLine unangetastet, sofern nicht ausdrücklich angefordert. Ohne Flag fasst die Installation statusLine nicht an. Sie erhalten weiterhin den Kontextpunkt neben dem Modell über dem Balken: Die Hooks lesen das Sitzungstranskript und die Fenstergröße ab Sitzungsbeginn.
  • Die 5-Stunden- und 7-Tage-Fenster werden von selbst angezeigt. Sie benötigen weder Hook noch statusLine. Während ein Claude-Pane geöffnet ist, liest die Bridge Ihr Claude-Login auf dieser Maschine (~/.claude/.credentials.json oder $CLAUDE_CONFIG_DIR/.credentials.json; die Keychain auf einem Mac ohne Datei) und fragt api.anthropic.com/api/oauth/usage ab, derselbe Aufruf, den /usage von Claude Code durchführt. Die Abfrage erfolgt beim Erscheinen des Panes, nach Ende eines Zugs (höchstens einmal pro Minute) und alle fünf Minuten. Sie speichert nichts vom Login, aktualisiert es nie und sendet es nirgendwo sonst hin. Sie überspringt eine Logindatei, die andere lesen dürfen (alles, was lockerer ist als 0600), sowie ein abgelaufenes Login; Claude Code aktualisiert letzteres bei seinem nächsten Aufruf. Eine API-Schlüssel-, Bedrock- oder Vertex-Sitzung hat keine anzuzeigenden Fenster. Codex-Panes erhalten ihre auf dieselbe Weise, nach demselben Zeitplan, aus ihren eigenen Sitzungsdateien ohne Login-Lesevorgang. OpenCode Go und Grok sind deaktiviert, bis Sie sie benennen, mit COLLIE_ACCOUNT_WINDOWS=all oder einer Liste (siehe Nutzungsfenster). COLLIE_ACCOUNT_WINDOWS=0 (oder [bridge] account_windows = false) schaltet alles davon ab, und collie doctor gibt in seiner Zeile account-windows an, welche.
  • Das Wrapping Ihrer statusLine ist der zweite Weg. Mit collie hooks install claude --statusline packt Collie auch Ihre eigene statusLine ein, und die Fenster stammen aus dem, was Claude Code übergibt. Nutzen Sie dies mit COLLIE_ACCOUNT_WINDOWS=0, wenn Sie dies dem Login-Lesevorgang vorziehen. Sein Befehl wird zu collie beacon statusline …, und Ihr Skript läuft und gibt aus wie zuvor. Collie fügt nie eine statusLine hinzu, und hooks uninstall claude setzt Ihren Befehl exakt zurück. Eine Installation ohne das Flag behält ein vorhandenes Wrapping bei und verweist auf die aktuelle Binärdatei. Um ein nicht mehr gewünschtes Wrapping zu entfernen, führen Sie collie hooks uninstall claude und dann collie hooks install claude ohne --statusline aus. Nicht unter Windows.
  • Um eine eingepackte statusLine zu ändern, entfernen Sie zuerst das Wrapping. Führen Sie collie hooks uninstall claude aus, bearbeiten Sie statusLine.command, und führen Sie dann collie hooks install claude --statusline erneut aus. Der eingepackte Befehl benennt die collie-Binärdatei über ihren Pfad; wird diese Binärdatei verschoben, gibt die statusLine nichts aus, bis Sie die Installation erneut ausführen. collie update erinnert Sie daran, wenn eine eingepackte statusLine auf eine ältere Binärdatei verweist. Um den Wrapper manuell zu testen, führen Sie ihn außerhalb des Multiplexers aus (env -u HERDR_PANE_ID -u TMUX_PANE -u ZELLIJ_PANE_ID …), andernfalls schreibt er einen Messwert in jede laufende Bridge.
  • Claude Code lädt seine Hooks neu, während es läuft. Dies gilt für 2.1.301. Starten Sie ein älteres Claude neu, falls keine Hook-Edges eintreffen.
  • Nur Linux. Die Aktivitätsprüfung der Agents hängt von /proc ab. Andere Betriebssysteme senden keine Beacons.
  • Beacons sind multiplexerspezifisch. Sie erfassen Pane- und Sitzungsbezeichner für das aktive Backend. Ein Wechsel von COLLIE_MUX macht bestehende Beacons ungültig. Alte Beacons verbleiben auf der Festplatte, bis sie gelöscht werden, und sind unter dem beacons-Zähler von collie doctor sichtbar.
  • Wenn Sie COLLIE_STATE_DIR verwenden, exportieren Sie es in der Shell-Umgebung des Agents. collie beacon emit liest diese Variable direkt; andernfalls schreiben Beacons in das Standard-Statusverzeichnis, wo die Bridge sie nicht findet.

collie doctor enthält eine beacon-hooks-claude-Diagnoseprüfung, die auf fehlende Hooks oder fehlerhafte Pfade zu verschobenen Checkouts hinweist. Laufzeitdetails finden Sie unter Agent-Beacons.

Was sich im Vergleich zu Herdr ändert

Die nachstehende Tabelle fasst die wichtigsten Unterschiede zusammen. Die genaue Spezifikation finden Sie unter MUX_CONTRACT.md.

Herdrtmuxzellij
ein Space istein Arbeitsbereicheine Sitzungdie Sitzung, genau eine, damit das Telefon die Leiste für Arbeitsbereiche verwirft
ein Tab istein Tabein Fensterein Tab
ein Pane istein Paneein Paneein Terminal-Pane
wer feststellt, dass ein Pane einen Agent enthältHerdr selbstein Beacon oder nichtsein Beacon oder nichts
wie schnell eine unangekündigte Änderung sichtbar istgepushtgepushtnach Zeitplan gezählt, maximal 12 s
"Im Terminal anzeigen"jajanein, zellij nimmt die Anfrage an und verschiebt nichts
einen Tab öffnen / umbenennen / schließenjaja (beim obigen tmux-Absturzfall wird das Öffnen verweigert)ja
einen Space öffnenjajanein, eine von ihm erstellte Sitzung wäre für ihn unsichtbar
Pane-Verlaufaus Herdrs eigenem Pane-Datensatzaus dem Sitzungsschlüssel des Beaconsaus dem Sitzungsschlüssel des Beacons

Ohne aktive Beacons stellen tmux, zellij und tern Panes als reine Shells dar, und der Pane-Verlauf wird als nicht verfügbar markiert, anstatt leeren Inhalt zurückzugeben.

Zwei Dinge, die sich auf dem Smartphone anders anfühlen

  • „vor Ns synchronisiert“: Dieser Indikator erscheint in der Dashboard-Kopfzeile, um das Datenalter anzuzeigen. Er wird nur wenn das Backend auf regelmäßiger Abfrage basiert angezeigt, wie etwa zellij (bis zu 12 s Abfrageintervall). Herdr und tmux übertragen Statusänderungen sofort, daher entfällt das Aktualitäts-Badge.
  • „Im Terminal anzeigen“: Diese Pane-Aktion fokussiert das ausgewählte Pane in Ihrem aktiven Host-Terminal. Sie ist deaktiviert unter zellij, da der Fokus-Befehl von zellij die Anweisung akzeptiert, ohne den Ansichtsstatus zu ändern.
Hinweis. Die mobile Oberfläche ändert den Fokus des Host-Terminals nie automatisch. Nur die explizite Aktion „Im Terminal anzeigen“ aktualisiert die Anzeige. Das Navigieren im Dashboard oder das Öffnen von Panes beeinflusst den aktiven Host-Cursor nicht (ADR 0031).

tmux-Tipps: Fenster nach einem Neustart wiederherstellen

claude --resume      # reconnects the conversation, not the window

Collie speichert keinen Multiplexer-Zustand. Ein Neustart eines tmux-Servers zerstört dessen Fenster und hinterlässt ein leeres Dashboard. Standard-tmux-Plugins stellen die Fenster-Layouts und Arbeitsverzeichnisse wieder her: tpm für die Plugin-Verwaltung, tmux-resurrect zum Speichern von Sitzungsbäumen und tmux-continuum für automatisierte Momentaufnahmen.

Hinweis. Laufende Agentenprozesse bleiben nicht erhalten. Starten Sie Claude Code nach der Wiederherstellung manuell neu.

zellij-Tipps: nach einem Neustart gibt es nichts wiederherzustellen

zellij -s collie-zellij                                  # start the session
zellij attach --create-background collie-zellij          # headless: start it detached
claude --resume                                           # reconnects the agent

Zellij bietet kein Äquivalent zu tmux-resurrect. Sitzungen, die nach dem Trennen des Terminals fortbestehen, werden als (EXITED - attach to resurrect) angezeigt. Das Wiederverbinden löst die erneute Ausführung von Sitzungsbefehlen aus. Ein Neustart bedeutet daher, die Sitzung mit einem der obigen Befehle neu zu starten, Agenten darin auszuführen und jeden wieder mit claude --resume oder claude --continue zu verbinden.

Hinweis. Da das Anhängen Seiteneffekte erzeugt, hängt Collie Sitzungen weder an noch stellt es sie wieder her. Beendete Sitzungen erscheinen als nicht erreichbar, und die Benutzeroberfläche zeigt ein Trennungsbanner anstelle einer leeren Sitzungsliste an.

Agent-Beacons (optional, Linux)

Über ein Beacon identifiziert sich ein Agent gegenüber Collie unter tmux, zellij und tern, wo ein Pane andernfalls als generische Shell erscheint.

$ collie hooks install claude
$ collie hooks status
would install: /home/you/collie/bin/collie beacon emit  (this checkout)
/home/you/.claude/settings.json: installed (v1)

Ein Hook in den Einstellungen von Claude Code führt collie beacon emit aus. Dies schreibt eine Datei, die den Harness-Namen, die Sitzung und den Zielbereich enthält. Herdr verfolgt dies nativ. Details zur Einrichtung finden Sie in Collie auf einen Multiplexer ausrichten; dieser Abschnitt erklärt den Mechanismus.

Der obige Pfad verweist auf bin/collie aus dem lokalen Checkout. Eine Binärinstallation verweist auf ~/.local/bin/collie oder auf ~/.local/share/collie/current/bin/collie, wenn dieser Name nicht verknüpft ist, wie oben beschrieben. Der Befehl status führt keine Schreibvorgänge durch.

Das Ausführen von hooks uninstall claude entfernt nur von Collie hinzugefügte Einträge. Es ändert Ihre global-Claude-Konfiguration, keine Dateien auf Projektebene. Dies gilt nur für Linux: Die Aktivitätsprüfung prüft /proc, und Collie schreibt auf anderen Betriebssystemen keine Beacons.

Claude wird beim Start sofort sichtbar. Da der Hook bei SessionStart ausgelöst wird, wird ein offenes Pane, das auf Eingaben wartet, als untätiger Agent statt als Shell angezeigt.

Die Sichtbarkeit endet, wenn der Prozess beendet wird. Collie überprüft die sendende PID bei jeder Prüfung. Sobald der Agent terminiert, meldet sich der Bereich sofort als Standard-Shell, anstatt in einem unbekannten Zustand zu verharren.

Collie löscht dazu nicht die Beacon-Datei: Die Datei bleibt auf dem Datenträger, collie doctor meldet sie unter beacons als abgelaufen, und der nächste Hook-Aufruf überschreibt sie.

Dadurch kann das Dashboard Panes nach Agentenname statt nach bash benennen. Es ermöglicht "braucht Sie" sortiert Panes nach Blockierungsstatus und liefert den für Warnmeldungen erforderlichen Zustand. Der Pane-Verlauf stützt sich ebenfalls auf das Beacon, um den vom Journal verwendeten Sitzungsschlüssel bereitzustellen.

Hook-Edges

Dieselben Hooks schreiben außerdem ein Hook-Edge für jedes Ereignis. Ein Hook-Edge ist eine kurze Notiz über einen Bereich. Beispiele sind "ein Prompt wurde eingegeben", "der Durchlauf wurde beendet" und "ein Berechtigungsdialog wird angezeigt". Collie verwendet Hook-Edges auf jedem Multiplexer, auch auf Herdr. Herdr benennt seine Agenten selbstständig. Auf Herdr schreiben die Hooks daher nur Hook-Edges und kein Beacon.

Eine Hook-Kante entscheidet nie von sich aus, dass ein Bereich frei ist. Nach jeder Kante liest Collie den Bildschirm etwa 0,7 Sekunden später erneut aus. Nur der Bildschirm kann bestätigen, dass das Eingabefeld leer ist und kein Dialogfenster geöffnet ist. Eine Kante kann melden, dass ein Durchlauf aktiv ist oder ein Dialogfenster geöffnet ist. Collie markiert den Bereich daraufhin als belegt, bis die schließende Kante eintrifft. Drei freie Bildschirmauslesungen über einen Zeitraum von zehn Sekunden beenden diese Sperre ebenfalls. Eine Werkzeug-Kante eines Unteragenten betrifft nicht den Bereich und ändert daher nie, was Collie dort ausliest.

Ein Sendevorgang vom Telefon kann als Bestätigt angezeigt werden. Das geschieht, wenn ein Prompt-Edge kurz nach dem Senden denselben Text überträgt. Das Zeitfenster beträgt 30 Sekunden oder zehn Minuten für einen Sendevorgang, der hinter einem Durchlauf eingereiht ist. Das Edge überträgt einen gesalzenen Hash des Prompts, niemals den Text selbst.

Claude Code und Codex nehmen während eines Zuges eine Nachricht oder einen Befehl an. Collie tippt sie sofort ein, und das Harness führt sie nach dem Zug aus. Ein Harness, das während seines Zuges keine Eingabe annehmen kann, erhält stattdessen eine gehaltene Eingabe. Dasselbe gilt für eine Nachricht, die das Eingabefeld nicht frei vorfindet, beispielsweise unter einem Popup oder auf einem Bildschirm, der sich zwischen zwei Lesevorgängen von Collie ändert, oder für ein Testzeichen, das fehlschlug und durch ein einzelnes Backspace wieder aus einem Feld entfernt wurde, das Collie erneut als leer gelesen hat. Eine solche Nachricht wird nach fünf freien Abfragen über zehn Sekunden hinweg gesendet, oder nach einem Zug, den Collie registriert. Ein Befehl wird dort weiterhin verweigert, ebenso wie eine Eingabe auf einem Bildschirm, den Sie mit „Hier tippen“ bestätigt haben. Eine Eingabe in einem Bereich ohne Profil wird niemals gehalten. Collie behält den Text und zeigt eine Karte, die über dem unteren Rand der Terminalansicht schwebt: „In Warteschlange. Sendet, sobald der Zug endet.“ Bei einem Agenten, dessen Version Collie nicht lesen konnte, weist die Karte darauf hin und verweist auf collie doctor: Collie tippt nur bei einer vom Agenten gemeldeten Version in einen laufenden Zug. Die Karte zeigt den Text und eine Schaltfläche „Abbrechen“. Collie sendet ihn nach dem Ende des Zuges, sobald der Bereich bei zwei aufeinanderfolgenden Abfragen als frei gelesen wird, älteste zuerst. Jede spätere gehaltene Eingabe wartet auf den Zug, den die Eingabe davor gestartet hat. Zeigt sich kein Zug, wird sie nach fünf freien Abfragen über zehn Sekunden gesendet. Ein gehaltener Befehl unter pi, OMP oder Codex sendet Enter, und dort steuert Enter einen Zug. Ein solcher Befehl wartet, bis der Zug beendet ist, und ebenso jeder gehaltene Befehl bei einem Agenten, dessen Version Collie nicht lesen konnte: zwei freie Abfragen im Abstand von mindestens zwei Sekunden, oder fünf über zehn Sekunden, falls Collie überhaupt keinen Zug gesehen hat. OMP führt /goal während eines Zuges sofort aus, daher sendet Collie /goal, /goal pause oder /goal resume direkt mit Enter. Es hält sie niemals zurück, und sie warten nicht hinter anderen gehaltenen Eingaben. Eine spätere Nachricht in diesem Bereich wartet hinter den gehaltenen Nachrichten. Ein gehaltener Text bleibt 30 Minuten bestehen, ein gehaltener Befehl 10 Minuten. Danach meldet die Zeile, dass die Nachricht nicht gesendet wurde, und bietet „Erneut senden“ an. Eine Walky-Talky-Nachricht wird über einem Entwurf ebenfalls gehalten, niemals hineingetippt, und ihre Haltezeit beträgt 60 Minuten (Walky-Talky). Ihre eigene Eingabe über einem Entwurf wird weiterhin verweigert, mit „Anhängen“ und „Ersetzen“. Bevor Collie einen Entwurf verweigert, ergänzt oder leert, tippt es ein Testzeichen ein und entfernt es wieder, um nachzuweisen, dass das Feld Tasteneingaben annimmt; nimmt das Feld auf dem Bildschirm keine Tasten an, wird die Eingabe verweigert und nichts gelöscht. Fokussieren Sie diesen Bereich auf dem Desktop oder ändern Sie seine Größe, damit der Agent seinen Bildschirm neu zeichnet, und senden Sie dann erneut. Einige Befehle warten niemals, und Collie verweigert sie während eines Zuges. Bei Claude Code sind dies /clear, /exit, /quit, /logout, /resume, /branch und jede !-Zeile. Bei Codex sind dies /quit, /exit, /new, /resume, /logout und jede !-Zeile. Bei Hermes sind dies /exit, /quit, /clear, /new, /resume und jede !-Zeile. Eine gehaltene Eingabe übersteht einen Neustart von Collie. „Abbrechen“ funktioniert, bis die Eingabe gesendet wird, und nur auf den eigenen Bereichen dieses Rechners. Bei zwei oder mehr gehaltenen Eingaben zeigt die Karte eine Anzahl und den ersten Text, und „Alle anzeigen“ listet jede Eingabe mit einem eigenen „Abbrechen“ auf. Collie behält den gehaltenen Text in einfacher Form auf der Festplatte, in einer Datei, die nur Ihr Benutzer lesen kann (Modus 0600). Es löscht den Text, wenn die Eingabe gesendet wird, und spätestens eine Stunde nach Ende der Haltezeit.

Collie platziert jede Edge auf einem Bereich. Die Edge nennt den Prozess des Agenten und seinen Bereich (HERDR_PANE_ID, TMUX_PANE oder ZELLIJ_PANE_ID). Collie verwirft eine Edge, die keinen Bereich, zwei Bereiche oder einen beendeten Prozess nennt. Das Bridge-Protokoll zeigt dann eine surface.edge.dropped-Zeile. Es zeigt höchstens eine Zeile pro Grund und Prozess pro Minute. Eine Edge, die älter als 30 Sekunden ist, oder eine Datei, die keine Edge ist, wird gezählt, aber nie protokolliert.

Welche Bridges die Edges erhalten

Jede Bridge, die Hook-Edges annimmt, trägt sich beim Systemstart in ~/.local/state/collie/hook-targets/ ein. Wenn XDG_STATE_HOME gesetzt ist, lautet das Verzeichnis $XDG_STATE_HOME/collie/hook-targets/. Eine Bridge entfernt ihre Datei, wenn sie sauber stoppt. Eine laufende Bridge schreibt ihre Datei innerhalb von zwei Sekunden neu, wenn sie fehlt. Der Hook schreibt jede Edge in jede aufgelistete Bridge, deren Prozess noch läuft. Er löscht die Datei einer Bridge, die beendet ist. Wenn keine Bridge aufgelistet ist, schreibt der Hook in das Standard-Statusverzeichnis. Ein COLLIE_STATE_DIR in der eigenen Umgebung des Agenten erhält die Edges ebenfalls immer.

Die Bereichsinformation

Die Bereichsinformation auf dem Smartphone zeigt, ob ein Bereich Hook-Edges sendet:

  • Hooks: live bedeutet, dass der Agent in diesem Bereich Hook-Edges sendet.
  • Hooks: live, holds permissions bedeutet, dass die Hooks des Agenten auch Berechtigungen für das Smartphone vorhalten. Siehe Berechtigungen für das Smartphone vorgehalten.
  • Hooks: none bedeutet, dass Collie keine Hook-Edge von diesem Bereich vorliegen hat. Die Hooks sind nicht installiert, oder der Agent hat seit der Installation kein Ereignis gesendet. Claude Code 2.1.301 übernimmt neue Hooks während der Laufzeit. Starten Sie eine ältere Version von Claude neu.

Eine Bridge behält die aktiven Bereiche über einen eigenen Neustart hinweg. Die Zeile bleibt nach einem Bridge-Neustart auf „live“.

Eine Installation aus einer früheren Collie-Version sendet keine Edge für einen Berechtigungsdialog. collie hooks status zeigt sie als unvollständig an. Führen Sie collie hooks install claude erneut aus, um sie direkt zu aktualisieren.

Berechtigungen für das Smartphone vorgehalten

$ collie hooks install claude --hold-permissions

Dies fügt einen weiteren Hook an Claudes PermissionRequest hinzu. Wenn Claude nach einer Berechtigung fragt, hält der Hook die Anfrage an und wartet auf Ihr Antippen. Das Smartphone zeigt die Anfrage als Karte an. Ein Tippen auf Ja oder Nein geht über den Hook an Claude zurück. Collie sendet dafür keinen Tastendruck an den Bereich. Die Installation erfordert Claude Code 2.0.45 oder neuer, die erste Version mit diesem Hook. Eine ältere Version wird abgelehnt.

  • Der Hook ermittelt jede laufende Bridge wie bei Hook-Edges. Sie liest hook-targets/ und hält die Anfrage bei jeder aktiven Bridge an. Die erste Antwort gewinnt. Die anderen Smartphones zeigen dann „Another Collie answered“ an.
  • Der Schreibtisch funktioniert weiterhin. Beantworten Sie den Dialog im Terminal, zeigt die Smartphone-Karte „The desk answered first“ an. Danach verwendet Collie kein Antippen mehr.
  • Nur Ja und Nein gehen durch den Hook. Eine Option wie „nicht mehr fragen“ bleibt eine Bildschirnantwort. Collie weist dieses Antippen auf einer gehaltenen Karte ab.
  • Eine gehaltene Anfrage hat ein Zeitlimit von 290 Sekunden. Danach bleibt der Dialog auf dem Bildschirm und wird zu einer gewöhnlichen Karte mit einer neuen ID. Ein alter Tastendruck wird nie in Tastenanschläge umgewandelt.
  • Keine Bridge, kein Anhalten. Wenn keine Bridge lauscht oder ein Fehler auftritt, gibt der Hook nichts aus. Claude zeigt dann seinen eigenen Dialog wie zuvor an. Der Hook antwortet nie eigenständig.
  • Die Karte stellt die angezeigte Eingabe dar. Das ist der Befehl, der Dateipfad oder eine andere Tastatureingabe. Es fügt die riskanten Bash-Flags hinzu sowie den gesamten Text, den ein Schreibvorgang in eine Datei einfügt. Collie verwirft Zeichen, die Text verbergen oder umkehren. Die angezeigte Eingabe ist auf 1000 Zeichen begrenzt, einschließlich des geschriebenen Texts. Collie hält eine längere Anfrage nie an: Die Karte kann sie nicht vollständig anzeigen, daher beantwortet der Dialog auf dem Bildschirm die Anfrage. Wenn die Eingabe mehr Zeilen umfasst, als das Feld anzeigt, meldet die Karte dies.
  • Eine angehaltene Anfrage besitzt nur den Dialog, der genau diese Anfrage anzeigt. Die Kopfzeile des Dialogs muss das Werkzeug der Anfrage nennen. Sie muss genau dann „from the ... agent“ lauten, wenn ein Subagent anfragt, und denselben Subagententyp nennen. Jede Zeile der Eingabe muss im Dialog erscheinen, der Reihe nach. Passen zwei gehaltene Anfragen zu einem Dialog, gehört er keiner von beiden. Jeder andere Dialog behält seine eigene Karte auf dem Smartphone. Die Anfrage wartet dann auf ihrer Haltekarte, und nur ein Antippen auf dieser Karte beantwortet sie. Die Karte nimmt in den ersten 400 ms nach dem Erscheinen einer neuen Anfrage kein Antippen an. Wenn Sie jenen anderen Dialog über die Tastatur beantworten und Claude den Hook anschließend beendet, meldet die Haltekarte, dass die Tastatur die Anfrage beantwortet hat.
  • Die Anfrage eines Subagenten zeigt keinen Dialog an, während der Hook sie anhält. Dies gilt für Claude Code 2.1.301. Die Anhaltekarte ist dann die einzige Möglichkeit, sie zu sehen, daher zeigt sie das Werkzeug und die angezeigte Eingabe an.
  • Eine Hintergrundanfrage wartet bis zum Anhaltelimit, selbst wenn kein Telefon zuschaut. Dann gibt Collie den Hook frei und Claude zeigt den Dialog auf dem Bildschirm an. Claude 2.1.301 lehnt sie nicht ab.
  • Fragen und Pläne bleiben Bildschirmkarten. AskUserQuestion und ExitPlanMode werden nie angehalten.

Der Socket ist <stateDir>/hold/sock. Sein Ordner hat den Modus 0700 und der Socket den Modus 0600, sodass sich kein anderer Benutzer verbinden kann. Bevor er sich verbindet, prüft der Hook, ob der Socket, sein Ordner und das Statusverzeichnis Ihnen gehören. Er prüft auch, dass niemand sonst in die beiden Ordner schreiben kann. Die Bridge nimmt eine Anfrage nur von einem Prozess an, den sie auf einem Pane platziert. Jede andere Anfrage verwirft sie mit einer surface.hold.dropped-Zeile. Der Hook und die Einstellungen tragen kein Token. Jede Karte trägt einen Hash des Werkzeugs, der angezeigten Eingabe und der Labels. Ein Antippen mit einem anderen Hash gibt den Hook ohne Antwort frei.

Die Pane-Information besagt "holds permissions", wenn die von Claude gelesenen Einstellungen den Hook anhalten. Collie liest die Benutzereinstellungen, die beiden Projekteinstellungsdateien und die verwalteten Einstellungen. disableAllHooks schaltet das Anhalten aus, ebenso wie allowManagedHooksOnly in der verwalteten Datei.

Führen Sie collie hooks install claude ohne das Flag aus, um das Anhalten wieder aufzuheben. collie doctor gibt an, in wie vielen Einstellungsdateien die Hooks Berechtigungen anhalten.

Hinweis. Beacons und Hook-Kanten bieten keinen Steuerkanal. Sie ändern nur, was Collie anzeigt und wann es ein Pane liest. Sie können keinen Text senden, keine Tastatureingaben einspeisen, keine Panes umbenennen, keine Sitzungen schließen und keine Zugriffskontrollen umgehen. Das Bedrohungsmodell und ausgelassene Felder sind in ADR 0024 dokumentiert. Das Anhalten von Berechtigungen ist der einzige Steuerkanal. Ein Antippen auf dem Telefon wird zu Claudes Antwort auf eine Berechtigung. Vier Dinge sichern dies ab. Der Socket gehört Ihnen allein (Modus 0600 in einem 0700-Ordner), und der Hook prüft dies vor dem Verbindungsaufbau. Die Bridge antwortet nur einem Prozess, den sie auf einem Pane platziert. Das Antippen muss den Hash des Werkzeugs, der angezeigten Eingabe und der von der Karte angezeigten Labels tragen. Die Antwort ist immer nur das Antippen einer Person: Collie erlaubt oder verweigert niemals von sich aus.

Codex

Codex hat einen externen Hook, seinen notify-Befehl. Collie kann ihn für eine Hook-Kante nutzen, wenn ein Codex-Zug endet:

$ collie hooks install codex
$ collie hooks status
/home/you/.codex/config.toml: installed

Die Installation schreibt eine Zeile an den Anfang von $CODEX_HOME/config.toml (~/.codex/config.toml, wenn CODEX_HOME nicht gesetzt ist). Die Zeile folgt nach den Kommentaren am Anfang der Datei:

notify = ["/home/you/.local/bin/collie", "beacon", "emit", "codex"]

Codex führt nur einen Benachrichtigungsbefehl aus. Wenn Ihre Konfiguration bereits einen benennt, belässt Collie ihn unverändert und die Installation stoppt mit einer Meldung. Wenn Collie die Datei nicht als TOML lesen kann, stoppt die Installation und nennt die Zeile. Collie behält eine Kopie der Datei vor der ersten Änderung. collie hooks uninstall codex stellt die exakten Bytes von vor der Installation wieder her. Wenn die Installation die Datei erstellt hat, entfernt die Deinstallation sie. Ein bereits geöffneter Codex sieht die neue Zeile möglicherweise erst nach einem Neustart.

Codex sendet am Ende jedes Zugs ein Ereignis, agent-turn-complete. Collie schreibt es als Stoppkante, und das anschließende Auslesen des Bildschirms entscheidet, ob das Pane frei ist. Die Einschränkungen:

  • Codex sendet kein Ereignis für einen Bestätigungsdialog oder für eine neue Eingabeaufforderung. Der Bildschirm allein zeigt einen Dialog an, und ein Senden vom Telefon wird auf einem Codex-Pane nie als Bestätigt angezeigt.
  • Codex 0.163.0 führt den Benachrichtigungsbefehl über einen Hintergrundhelfer aus (codex app-server). Collie findet das Codex-Fenster in /proc mit derselben CODEX_HOME und dem Ordner des Ereignisses. Dies funktioniert nur unter Linux.
  • Zwei Codex-Fenster in einem Ordner auf einem CODEX_HOME erhalten keine Kante. Collie kann sie nicht unterscheiden. Ihre Panes aktualisieren sich weiterhin über den Bildschirm, wie ohne den Hook.
  • Codex führt auch einen kurzen verdeckten Zug aus, um eine neue Aufgabe zu benennen. Dieser Zug sendet eine weitere Stoppkante, sodass das Pane ein weiteres Mal vom Bildschirm gelesen wird.

Collie drückt Tab für eine Codex-Nachricht. Während eines Zugs reiht Codex sie ein. In Codex sendet Tab eine Nachricht in einem untätigen Feld und reiht sie während eines Zugs ein. Tab ist also in beiden Zuständen richtig. Enter steuert einen laufenden Zug, daher drückt Collie für eine Nachricht niemals Enter. Ein Text, der mit / oder ! beginnt, ist ein Befehl. Er erfordert Enter in einem untätigen Feld, da Tab dort einen /-Befehl vervollständigen würde. Während eines Zugs erfordert er Tab, und Codex reiht ihn wie eine Nachricht ein. Codex führt einen !-Text als Shell-Befehl aus. Die Quittung zeigt erst dann "eingereiht" an, wenn Codex die eingereihte Zeile mit dem Text anzeigt.

Collie beantwortet eine Codex-Bestätigung mit einer Taste: der Ziffer der Option, y oder Escape. Nur die Vertrauensabfrage von Codex 0.156 navigiert. Dort drückt Collie die Pfeiltasten, liest den Zeiger zurück und drückt dann Enter. Ein Codex-Fragedialog erfordert ebenfalls eine Taste, die Ziffer der Option. In Codex 0.163.0 antwortet die Ziffer sofort. Bei der letzten Frage sendet sie alle Antworten.

Harness-Profile

Collie prüft das Eingabefeld eines Agenten, bevor es eine Nachricht vom Telefon sendet. Eine Profildatei beschreibt dieses Feld für einen Agenten. Sie gibt an, wo das Feld beginnt und endet. Sie legt fest, wie ein Entwurf aussieht, welche Taste sendet und welchen Text der Agent bei einem langen Einfügevorgang darstellt. Eine reine Shell und ein Agent ohne Profil nehmen weiterhin Sendebefehle an. Collie kann deren Eingabefeld nicht lesen, daher tippt es den Text ein und drückt ohne Prüfung Zeile für Zeile die Eingabetaste. Nur eine Passwortabfrage in den letzten Zeilen stoppt den Vorgang: Collie tippt dort nichts ein, und das Telefon bietet „Tippen“ an.

AgentEnter während eines ZugsSendetastePrüfungGeprüft gegen
OpenCodeReiht die Nachricht einEingabeJa1.18.33
piSteuert den Durchlauf; Alt+Eingabe reiht einAlt+Eingabe, Strg+Q unter WindowsKurze Texte und Sendungen in einen Durchlauf1.1.0
OMPSteuert den Durchlauf; Strg+Q reiht einStrg+QJa18.4.10
GrokNicht gemessenEingabeJa1.0.41
Antigravity (agy)Nicht gemessenEingabeJaBildschirme von 1.1.17
MuseNicht gemessenEingabeJa1.4.7
Hermes (klassisches CLI)Unterbricht standardmäßig den Zug; /busy von Hermes kann ihn in die Warteschlange einreihen oder steuernEingabeJa0.22.2
Cursor CLI (cursor-agent)Reiht die Nachricht einEingabeJa2026.10.16
Kiro (kiro-cli)Steuert den Zug; Collie hält einen Sendevorgang zurück, bis der Zug endetEingabeKurze Texte2.32.0

Ein Befehl wie /model wird immer mit der Eingabetaste gesendet. Ein getesteter Sendevorgang tippt zuerst ein zusätzliches Zeichen. Collie prüft, ob das Zeichen im Eingabefeld ankommt, und entfernt es anschließend.

  • OpenCode stellt sein Eingabefeld als Spalte aus ┃ Zeilen dar, abgeschlossen durch eine ╹▀▀▀ Linie. Collie erkennt das Feld anhand dieser Zeilen. Eine Nachricht, die in einen laufenden Durchlauf gesendet wird, wartet im Protokoll mit einem QUEUED-Badge. Ein Zeilenumbruch wird als Strg+J eingefügt. Collie weist Nachrichten ab, die länger sind, als das Feld anzeigen kann, da es sie nicht zurücklesen kann.
  • pi zeichnet sein Eingabefeld zwischen zwei Trennlinien ohne Eingabeaufforderung. Collie erkennt es am Linienpaar und an der Statuszeile, die pi darunter anzeigt. Ein pi-Dialog öffnet sich zwischen denselben zwei Linien. Daher liest Collie die Tastenhinweise und die Liste von der oberen Trennlinie abwärts. In pi steuert die Eingabetaste einen laufenden Durchlauf; Alt+Eingabe sendet jedoch bei leerem Feld und reiht während eines Durchlaufs ein. Collie sendet daher mit Alt+Eingabe, unter Windows mit Strg+Q. pi zeigt eine eingereihte Nachricht als Follow-up: Zeile über dem Feld an. Ein Feld mit mehr als 30 Zeilen wird nicht als Eingabefeld erkannt. Der Bildschirm gilt dann als unbekannt, und das Senden erfordert Ihr Antippen.
  • OMP lässt Sie den Rahmenstil seines Feldes wählen, daher kennt Collie fünf davon. Einer ist das offene Feld mit einer Statuszeile oben. Andere sind ein Linienpaar, eine Linie ohne untere Linie, ein Paar mit leerer Mitte und ein rahmenloses Feld. Collie schneidet den Hinweis ab, den OMP am rechten Ende der Prompt-Zeile zeichnet. In OMP steuert Enter einen laufenden Zug, aber Strg+Q sendet in einem untätigen Feld und reiht in einem Zug in die Warteschlange ein. Daher sendet Collie mit Strg+Q. OMP listet eine eingereihte Nachricht in einem After yield-Block über dem Feld auf. OMP kann eine blasse Vervollständigung nach Ihrem Text anzeigen. Eine Eingabe, die darauf trifft, stoppt vor der Sendetaste und belässt den Text im Feld. Im offenen Feld zeigt OMP höchstens 17 Zeilen einer langen Nachricht an, und zwar die letzten. Collie gleicht diese Zeilen dann mit dem Ende des getippten Textes ab, und die Quittung vermerkt dies. „Ersetzen“ verweigert einen Entwurf, der diese 17 Zeilen füllt, da Collie seinen Anfang nicht sehen kann. Es wird nichts gelöscht.
  • Grok zeichnet ein abgerundetes Feld mit einer ❯ Eingabezeile und einer Zeile mit Tastenhinweisen darunter. Ein langer Entwurf zeigt eine Bildlaufleiste am rechten Rand des Felds. Ein solcher Bildschirm gilt als unlesbar, sodass das Senden Ihr Antippen erfordert. Eine Modellliste öffnet sich über dem Feld und zählt als Teil des Felds. Der Bereich gilt niemals als frei, solange die Liste geöffnet ist.
  • Antigravity (agy) zeichnet sein Eingabefeld als Trennlinie, eine > Zeile und eine Trennlinie, mit einer ? for shortcuts Fußzeile. Der Durchlauf zeigt eine Ladezeile mit ... über dem Feld und esc to cancel darunter. Herdr benennt diesen Agenten agy oder antigravity. Collie führt beide unter agy.
  • Muse zeichnet sein Eingabefeld als Trennlinie, die eine Beschriftung tragen kann, eine ❯ Zeile und eine Trennlinie. Ein leeres Feld zeigt einen grauen Hinweis; Collie interpretiert diesen Hinweis als leeren Text. Eine Befehlspalette, die sich unter dem Feld öffnet, wird als Ihr Entwurf angezeigt. Die Liste der Hintergrundaufgaben unter dem Feld gilt als unbekannt, und das Senden erfordert Ihr Antippen. Ein laufender Durchlauf zeigt eine Zeile mit einem Timer und esc to interrupt.
  • Hermes (das klassische CLI; hermes --tui wird nicht gelesen) zeichnet sein Feld als Linie, eine ❯-Zeile und eine Linie. Unter 64 Spalten zeichnet es keine Linie unter dem Feld. Ein benanntes Profil zeigt seinen Namen vor dem ❯. Ein Zeilenumbruch wird als Alt+Enter eingegeben: Strg+J sendet die Nachricht, wenn display.cli_multiline_shortcuts ausgeschaltet ist. Das Feld zeigt höchstens acht Zeilen. Eine längere Nachricht kann nicht zurückgelesen werden, daher stoppt das Senden vor Enter. Senden verschickt sie, und das Telefon kann danach nicht bestätigen, dass sie gesendet wurde. Hermes zeigt nach Ihrem Text eventuell den Rest einer früheren Nachricht in Grau an. Auch dieses Senden stoppt vor Enter, und Senden verschickt nur das, was Sie eingegeben haben. Die Modellauswahl und die Befehlspalette öffnen sich über dem Transkript, und das Pane wird darunter nie als frei gelesen.
  • Hermes während eines Zugs beginnt seine Zeile mit ☤, und Collie liest den Zug anhand dieser Markierung ab. Was Enter dann bewirkt, ist Hermes’ eigene Einstellung, daher drückt Collie es während eines Zugs nie. Ein Sendevorgang während eines Zugs wird zurückgehalten und ausgeführt, sobald der Zug endet. Startet ein Zug, während Collie tippt, stoppt das Senden vor Enter und der Text verbleibt im Feld.
  • Fragen von Hermes: Die getippte Antwort auf eine Frage öffnet eine ✎-Zeile, und ein Sendevorgang vom Telefon beantwortet sie. Eine zurückgehaltene Nachricht geht nie in diese Zeile. Sie wartet, bis die Frage geschlossen wird, und wird dann als Nachricht gesendet. Während eine zurückgehaltene Nachricht wartet, reiht sich ein neuer Sendevorgang ein; brechen Sie daher die zurückgehaltene Nachricht ab, um vom Telefon aus zu antworten.
  • Cursor-CLI (cursor-agent) zeichnet sein Feld als ▄-Linie, eine →-Zeile und eine ▀-Linie. Ein leeres Feld zeigt einen grauen Hinweis, „Plan, search, build anything“ oder „Add a follow-up“, und Collie interpretiert diesen Hinweis als leeren Text. ! verwandelt das Feld in einen Shell-Prompt mit eigenem Hinweis. Collie liest diesen Hinweis als Text, sodass eine Nachricht nie in den Shell-Modus gelangt. Ein laufender Zug zeigt eine Spinner-Zeile wie Running über dem Feld und ctrl+c to stop am rechten Ende der Zeile →. Collie blendet diesen Hinweis aus. Enter während eines Zugs reiht die Nachricht in einem follow-ups-Feld über dem Eingabefeld ein. Das Feld zeigt höchstens sechs Zeilen und scrollt bei einem längeren Entwurf. Collie kann eine höhere Nachricht nicht zurücklesen, daher belässt es den getippten Text im Feld und drückt nicht Enter. Seine Dialoge (eine Befehlsbestätigung, eine Frage, die Ordner-Vertrauensabfrage) ersetzen das Feld, sodass der Bildschirm als unlesbar gilt. Live getestete Sendevorgänge waren am 14.10.2026 und 16.10.2026 erfolgreich.
  • Kiro zeichnet sein Eingabefeld nach festen Regeln: eine Statusleiste, das Verzeichnis, eine Leerzeile und eine ›-Eingabeaufforderung. Collie tippt erst, wenn dieser gesamte Rahmen auf dem Bildschirm sichtbar ist. Ein Zeilenumbruch wird als Strg+J eingegeben. Während ein Durchlauf aktiv ist, zeigt die Eingabezeile Kiro is working an. In Kiro leitet Enter den Text daraufhin in diesen Durchlauf. Collie drückt während eines laufenden Durchlaufs kein Enter. Strg+S schaltet Kiro zwischen Steuern und Einreihen um, daher benennt Collie keine Taste zum Einreihen. Collie hält einen Sendevorgang also zurück, solange Kiro beschäftigt ist, und sendet ihn, sobald das Feld als frei angezeigt wird. Das Profil wurde nur unter Herdr geprüft, nicht unter tmux oder zellij.

Grok, Antigravity und Muse sind auf dem Build-Host nicht installiert. Ihre Profile basieren auf gespeicherten Bildschirmen der jeweiligen Agenten. Es wurde noch keine Live-Nachricht über ein Profil an sie gesendet, daher prüft Collie dort jeden Sendevorgang vorab. Niemand hat gemessen, wie sich Enter während eines Durchlaufs bei ihnen verhält. Daher verweigert Collie das Senden, solange der Bildschirm einen laufenden Durchlauf anzeigt, und tippt nichts ein. Wenn eine Testumgebung kein Aktivitätszeichen anzeigt, kann Collie dies nicht erkennen, und der Agent bestimmt das Verhalten von Enter. OpenCode und OMP haben Live-Sendevorgänge auf einer Version oberhalb der geprüften Version erfolgreich absolviert. Collie prüft bei ihnen jeden Sendevorgang vorab, bis ein Sendevorgang innerhalb des geprüften Bereichs erfolgreich war. Hermes (das klassische CLI) hat Live-Sendevorgänge unter 0.22.2 innerhalb seines Bereichs nur auf Herdr erfolgreich absolviert. Die Ink-TUI (hermes --tui oder eine Konfiguration, die sie startet) wird noch nicht gelesen; tippen Sie auf „Hier tippen“, um zu senden. Die Vorabprüfung wurde noch nicht in jedem Hermes-Dialog getestet, daher prüft Collie auch dort jeden Sendevorgang vorab.

Eine Version oberhalb der geprüften Version funktioniert weiterhin, und die Bestätigung lautet provisional.

Steuern oder einreihen

Während ein Agent arbeitet, kann eine Übertragung vom Smartphone auf den Durchlauf warten oder direkt hineingesteuert werden. Ein einfaches Antippen von „Senden“ reiht Ihren Text für die Zeit nach dem Durchlauf ein. Dies gilt für jeden Agenten. Collie steuert niemals versehentlich in einen Durchlauf hinein.

Ein Steuern ist Ihre eigene Entscheidung, getroffen für einen einzelnen Sendevorgang. Halten Sie die Senden-Schaltfläche gedrückt und tippen Sie auf Steuern. Der Agent liest die Zeile nach seinem aktuellen Werkzeugaufruf im selben Durchlauf. Die Zeile wird nur angezeigt, während der Agent arbeitet, und nur bei einem Agenten, der eine Steuerungstaste in seinem Profil definiert hat, wie derzeit pi, Codex und OMP. Ein kurzer Hinweis unter dem Eingabefeld erklärt, dass Antippen einreiht und Gedrückthalten steuert. Codex interpretiert Text, auf den unmittelbar Enter folgt, als Einfügevorgang; daher wartet Collie nach dem Text eine Sekunde, bevor die Steuerungstaste gedrückt wird.

Die Quittung zeigt Ihnen das Ergebnis an:

  • Gesteuert. Der Agent hat die Zeile in den laufenden Durchlauf übernommen. Collie hat erkannt, dass der Agent sie dargestellt hat.
  • Stattdessen eingereiht. Der Agent hat die Zeile für die Zeit nach dem Durchlauf zurückgestellt, obwohl Sie das Steuern angefordert haben. Es geht nichts verloren.
  • Getippt, nicht abgeschickt. Der Text befindet sich im Feld und die Steuerungstaste hat ihn nicht gesendet. Tippen Sie auf Senden oder leeren Sie das Feld.
  • In diesem Bereich nicht verfügbar. Der Agent hat keine Steuerungstaste in seinem Profil, Collie vertraut seiner Version bei einem laufenden Durchlauf nicht oder der Text ist ein Befehl. Nichts wurde gesendet. Senden Sie den Text ohne Steuern.
  • Nur eine Person am Smartphone kann steuern. Ein Steuern aus einer anderen Quelle wird abgelehnt.

Endet der Durchlauf, während Collie tippt, wird die Zeile als normaler Sendevorgang übertragen. Collie hält eine Steuerung nicht zurück. Eine lange Steuerung endet möglicherweise ohne klares Signal. Die Quittung besagt dann, dass der Status für Collie unbekannt ist, und der Text wird nicht erneut gesendet.

Die Nachricht eines Agenten an einen anderen Agenten (Walky-Talky) steuert niemals. Sie wartet immer auf den Durchlauf.

Diese Seite auf GitHub bearbeiten

The rest of the documentation