Shell-Integration
zsh oder bash melden kaiport das Ende von Befehlen, Exit-Codes und das Arbeitsverzeichnis – für genaue AI-Pilot-Ergebnisse und die Statusleiste.
Mit Shell-Integration teilt deine Shell kaiport genau mit, wo ein Befehl endet, welchen Exit-Code er geliefert hat und in welchem Verzeichnis du gerade bist. Dafür genügen ein paar Zeilen in der Startdatei deiner Shell auf dem Server. Ohne sie erkennt kaiport den Prompt heuristisch; das klappt meistens, ist aber weniger genau und kennt keine Exit-Codes.
Was das ist
Shell-Integration besteht aus unsichtbaren Escape-Sequenzen, die die Shell rund um ihren Prompt ausgibt. kaiport liest zwei Arten:
| Sequenz | Was sie meldet |
|---|---|
| OSC 133 | Markierungen für den Prompt (A), den Beginn eines Befehls (C) und das Ende eines Befehls samt Exit-Code (D). |
| OSC 7 | Das aktuelle Arbeitsverzeichnis als file://-Adresse. |
Das Terminal zeigt diese Sequenzen nicht an; in der Ausgabe siehst du davon nichts.
Was sie verbessert
| Mit Shell-Integration | Ohne | |
|---|---|---|
| Ende eines Befehls für AI Pilot | Exakt: Die Shell meldet es. | Geschätzt aus ruhiger Ausgabe und einer Zeile, die wie ein Prompt aussieht. |
| Exit-Code | AI Pilot bekommt ihn für jeden Befehl; der Schritt zeigt zum Beispiel exit 0. | Unbekannt. Bei Bedarf hängt AI Pilot ; echo "exit=$?" an einen Befehl an. |
| Arbeitsverzeichnis in der Statusleiste | Wird angezeigt (zsh-Snippet). | Wird nicht angezeigt. |
Klappst du in AI Pilot einen Befehlsschritt auf, steht dort Erkennung: Shell-Integration oder Erkennung: Heuristik. Siehe AI Pilot im Terminal.
Benachrichtigungen bei langen Befehlen und der Befehlsverlauf hängen nicht von der Shell-Integration ab. Sie nutzen in jedem Fall die Prompt-Erkennung.
Prüfen, ob sie aktiv ist
- Die Statusleiste zeigt den Hinweis Shell-Integration, sobald kaiport in dieser Sitzung die erste Markierung empfangen hat. Er bleibt bis zum Ende der Sitzung.
- In der Kopfzeile des AI-Pilot-Panels (⌘J) wird das Stecker-Symbol grün. Sein Tooltip lautet dann Shell-Integration aktiv, sonst Shell-Integration einrichten.
Ein Klick auf das Stecker-Symbol öffnet ein Popover. Die Überschrift lautet Shell-Integration aktiv oder Shell-Integration nicht erkannt; darunter folgen eine kurze Erklärung, das Snippet für zsh und zwei Schaltflächen: Snippet kopieren (Copy snippet) und Nur für diese Sitzung aktivieren (Enable for this session only). Das Stecker-Symbol ist auch da, wenn du noch keinen KI-Anbieter eingerichtet hast.
Dauerhaft einschalten
Füge die Zeilen für deine Shell in ihre Startdatei auf dem Server ein. Öffne danach eine neue Sitzung, zum Beispiel mit Erneut verbinden ⌘R.
zsh
Füge diese Zeilen am Ende von ~/.zshrc ein. Snippet kopieren im Popover kopiert dieselben Zeilen.
# kaiport shell integration (OSC 133 + working directory)
autoload -Uz add-zsh-hook
__kaiport_precmd() { printf '\e]133;D;%s\a\e]133;A\a' "$?"; printf '\e]7;file://%s%s\a' "$HOST" "$PWD"; }
__kaiport_preexec() { printf '\e]133;C\a'; }
add-zsh-hook precmd __kaiport_precmd
add-zsh-hook preexec __kaiport_preexecadd-zsh-hook fügt die beiden Funktionen zusätzlich zu vorhandenen Hooks hinzu, deshalb verträgt sich das Snippet mit oh-my-zsh, powerlevel10k oder Starship.
bash
Füge diese Zeilen am Ende von ~/.bashrc ein:
__kaiport_precmd() { printf '\e]133;D;%s\a\e]133;A\a' "$?"; }
PROMPT_COMMAND="__kaiport_precmd${PROMPT_COMMAND:+;$PROMPT_COMMAND}"Die bash-Variante meldet das Ende jedes Befehls und seinen Exit-Code. Das Arbeitsverzeichnis meldet sie nicht; die Statusleiste bleibt deshalb ohne Verzeichnis, außer deine bash-Konfiguration sendet OSC 7 auf anderem Weg.
Nur für eine Sitzung einschalten
So probierst du die Shell-Integration aus, ohne eine Datei zu ändern:
- Öffne das AI-Pilot-Panel mit ⌘J.
- Klicke in seiner Kopfzeile auf das Stecker-Symbol.
- Klicke auf Nur für diese Sitzung aktivieren.
kaiport tippt eine einzeilige Fassung des zsh-Snippets ins Terminal, führt sie aus und leert den Bildschirm. Die Schaltfläche ist nur verfügbar, solange die Sitzung verbunden ist. Das funktioniert nur in zsh und nur bis zum Ende der Sitzung – nach einem Neuverbinden startet die neue Shell ohne. Die Zeile beginnt mit einem Leerzeichen; ist die zsh-Option HIST_IGNORE_SPACE gesetzt, landet sie deshalb nicht im Verlauf.
Ohne Shell-Integration
kaiport führt für jede Sitzung eine eigene Kopie des Bildschirms. Ohne Shell-Integration gilt ein Befehl als beendet, wenn die Ausgabe etwa eine halbe Sekunde ruhig war und der Cursor in einer Zeile steht, die wie ein Prompt aussieht:
- Zeilen, die mit einem typischen Prompt-Zeichen wie
$,#,%,>,❯,➜oderλenden oder mit einem Powerline-Trenner, wie ihn agnoster und powerlevel10k zeichnen - Zeilen, die mit einem Prompt-Symbol wie
➜oder❯beginnen, wie bei oh-my-zsh oder Starship - Muster wie
user@host:~$oder[user@host dir]$ - der Prompt, den kaiport gesehen hat, als die Sitzung zum ersten Mal zur Ruhe kam
Gibt ein Befehl etwa vier Sekunden lang nichts aus und erscheint kein Prompt, behandelt AI Pilot ihn als noch laufend oder als wartend auf eine Eingabe – etwa ein Passwort – und schaut sich den Bildschirm an. Ist die Shell-Integration aktiv, wartet kaiport etwas länger auf die Ende-Markierung, bevor es auf die Heuristik zurückfällt.
Die Heuristik kann danebenliegen, wenn ein Prompt nicht auf ein typisches Zeichen endet oder ein Programm Zeilen ausgibt, die wie ein Prompt aussehen. Die Shell-Integration löst beides.
Andere Shells
Welche Shell die Sequenzen sendet, spielt für kaiport keine Rolle: OSC-133-Markierungen schalten die Shell-Integration ein, und ein per OSC 7 gemeldetes Verzeichnis erscheint in der Statusleiste – egal, welche Shell sie ausgibt. Fertige Snippets gibt es nur für zsh und bash.