|
| 1 | +--- |
| 2 | +sidebar_position: 4 |
| 3 | +id: "wsh" |
| 4 | +title: "wsh-Überblick" |
| 5 | +--- |
| 6 | + |
| 7 | +Der Befehl `wsh` stellt die zentrale Kommandozeilen-Schnittstelle von Wave Terminal bereit und ermöglicht es Nutzern, sowohl mit Terminal- als auch mit grafischen Elementen von der Kommandozeile aus zu interagieren. Diese Anleitung behandelt die Grundlagen der Nutzung von `wsh` und seine wichtigsten Funktionen. |
| 8 | + |
| 9 | +Eine Liste aller wsh-Befehle und ihrer Argumente findest du in der [wsh-Referenz](/wsh-reference). |
| 10 | + |
| 11 | +## Überblick |
| 12 | + |
| 13 | +Im Kern ermöglicht `wsh` eine nahtlose Interaktion zwischen deinen Terminal-Befehlen und Waves grafischen Blöcken. Damit kannst du: |
| 14 | + |
| 15 | +- Grafische Widgets direkt von der Kommandozeile aus steuern |
| 16 | +- Daten zwischen Terminal-Sitzungen und GUI-Komponenten teilen |
| 17 | +- Deinen Workspace programmatisch verwalten |
| 18 | +- Entfernte und lokale Umgebungen verbinden |
| 19 | +- CLI-Ausgaben und Dateien direkt an KI-Gespräche senden |
| 20 | +- Terminal-Befehle in separaten, isolierten Blöcken ausführen |
| 21 | + |
| 22 | +## Grundkonzepte |
| 23 | + |
| 24 | +### Mit Blöcken interagieren |
| 25 | + |
| 26 | +`wsh` ermöglicht die direkte Interaktion mit Waves grafischen Blöcken über die Kommandozeile. Zum Beispiel: |
| 27 | + |
| 28 | +```bash |
| 29 | +# Eine Datei im Editor öffnen |
| 30 | +wsh edit config.json |
| 31 | + |
| 32 | +# Den aktuellen Dateipfad aus einem Vorschau-Block abrufen |
| 33 | +wsh getmeta -b 2 file |
| 34 | + |
| 35 | +# Ausgabe an einen KI-Assistenten senden (das "-" liest von stdin) |
| 36 | +ls -la | wsh ai - "what are the largest files here?" |
| 37 | +``` |
| 38 | + |
| 39 | +### Dauerhafter Status |
| 40 | + |
| 41 | +`wsh` kann über sein Variablensystem einen Status über Terminal-Sitzungen hinweg beibehalten: |
| 42 | + |
| 43 | +```bash |
| 44 | +# Eine Variable speichern, die über Sitzungen hinweg erhalten bleibt |
| 45 | +wsh setvar API_KEY=abc123 |
| 46 | + |
| 47 | +# Global speichern |
| 48 | +wsh setvar DEPLOY_ENV=prod |
| 49 | +# Oder im aktuellen Workspace speichern |
| 50 | +wsh setvar -b workspace DEPLOY_ENV=staging |
| 51 | + |
| 52 | +# Gespeicherte Variablen in Befehlen nutzen |
| 53 | +curl -H "Authorization: $(wsh getvar API_KEY)" https://api.example.com |
| 54 | +``` |
| 55 | + |
| 56 | +### Auf lokale Dateien von einem entfernten Rechner aus zugreifen |
| 57 | + |
| 58 | +Wenn du auf entfernten Rechnern arbeitest, kannst du mit dem Pfadpräfix `wsh://local/~/` zusammen mit `wsh file`-Befehlen auf Dateien auf deinem lokalen Computer zugreifen. Die Kurzform `/~/` kann ebenfalls als Alias für `wsh://local/~/` genutzt werden: |
| 59 | + |
| 60 | +```bash |
| 61 | +# Eine lokale Datei von einem entfernten Rechner lesen |
| 62 | +wsh file cat wsh://local/~/config/app.json |
| 63 | + |
| 64 | +# Ein lokales Skript per Shell-Prozesssubstitution auf dem entfernten Rechner ausführen |
| 65 | +bash <(wsh file cat wsh://local/~/scripts/deploy.sh) |
| 66 | +python <(wsh file cat wsh://local/~/scripts/deploy.py) |
| 67 | + |
| 68 | +# Entfernte Ausgabe an eine lokale Log-Datei anhängen |
| 69 | +echo "Remote machine log entry" | wsh file append wsh://local/~/app.log |
| 70 | + |
| 71 | +# Eine lokale Datei auf den entfernten Rechner kopieren |
| 72 | +wsh file cp wsh://local/~/data.csv ./remote-data.csv |
| 73 | + |
| 74 | +# Entfernte Datei zurück auf den lokalen Rechner kopieren |
| 75 | +wsh file cp ./results.txt wsh://local/~/results.txt |
| 76 | + |
| 77 | +# Du kannst auch die Kurzform /~/ anstelle von wsh://local/~/ nutzen |
| 78 | +wsh file cat /~/config/app.json |
| 79 | +``` |
| 80 | + |
| 81 | +### Blockverwaltung |
| 82 | + |
| 83 | +Jedes visuelle Element in Wave ist ein Block, und `wsh` gibt dir vollständige Kontrolle darüber (Strg+Umschalt gedrückt halten, um Blocknummern anzuzeigen): |
| 84 | + |
| 85 | +```bash |
| 86 | +# Einen neuen Block erstellen, der eine Webseite zeigt |
| 87 | +wsh web open github.com |
| 88 | + |
| 89 | +# Eine Websuche in einem neuen Block durchführen |
| 90 | +wsh web open "wave terminal" |
| 91 | + |
| 92 | +# Einen Befehl in einem neuen Block ausführen und nach Abschluss automatisch schließen |
| 93 | +wsh run -x -- npm test |
| 94 | + |
| 95 | +# Informationen über den aktuellen Block abrufen |
| 96 | +wsh getmeta |
| 97 | +``` |
| 98 | + |
| 99 | +## Häufige Workflows |
| 100 | + |
| 101 | +Hier sind einige gängige Wege, `wsh` zu nutzen: |
| 102 | + |
| 103 | +### Entwicklungs-Workflow |
| 104 | + |
| 105 | +```bash |
| 106 | +# Verzeichnis oder Markdown-Dateien öffnen |
| 107 | +wsh view . |
| 108 | +wsh view README.md |
| 109 | + |
| 110 | +# -m hinzufügen, um den Block im "vergrößerten" Modus zu öffnen |
| 111 | +wsh view -m README.md |
| 112 | + |
| 113 | +# Entwicklungsserver in einem neuen Block starten (-m vergrößert den Block beim Start) |
| 114 | +wsh run -m -- npm run dev |
| 115 | + |
| 116 | +# Dokumentation in einem Web-Block öffnen |
| 117 | +wsh web open http://localhost:3000 |
| 118 | +``` |
| 119 | + |
| 120 | +### Remote-Entwicklung |
| 121 | + |
| 122 | +```bash |
| 123 | +# Mit optionalem Schlüssel zu einem entfernten Server verbinden |
| 124 | +wsh ssh -i ~/.ssh/mykey.pem dev@server |
| 125 | + |
| 126 | +# Entfernte Dateien bearbeiten |
| 127 | +wsh edit /etc/nginx/nginx.conf |
| 128 | + |
| 129 | +# Entfernte Logs überwachen |
| 130 | +wsh run -- tail -f /var/log/app.log |
| 131 | + |
| 132 | +# Variablen zwischen Sitzungen teilen |
| 133 | +wsh setvar -b tab SHARED_ENV=staging |
| 134 | +``` |
| 135 | + |
| 136 | +### KI-unterstützte Entwicklung |
| 137 | + |
| 138 | +Der Befehl `wsh ai` fügt der Wave-AI-Seitenleiste Inhalte hinzu. Standardmäßig werden Dateien angehängt, ohne automatisch abzusenden, sodass du vor dem Senden weiteren Kontext prüfen und hinzufügen kannst. |
| 139 | + |
| 140 | +```bash |
| 141 | +# Ausgabe an die KI-Seitenleiste weiterleiten (Frage in der UI stellen) |
| 142 | +git diff | wsh ai - |
| 143 | + |
| 144 | +# Dateien mit einer Nachricht anhängen |
| 145 | +wsh ai main.go utils.go -m "find bugs in these files" |
| 146 | + |
| 147 | +# Mit Nachricht automatisch absenden |
| 148 | +wsh ai config.json -s -m "explain this config" |
| 149 | + |
| 150 | +# Neuen Chat mit angehängten Dateien starten |
| 151 | +wsh ai -n *.log -m "analyze these logs" |
| 152 | + |
| 153 | +# Mehrere Dateitypen anhängen (Bilder, PDFs, Code) |
| 154 | +wsh ai screenshot.png report.pdf app.py -m "review these" |
| 155 | + |
| 156 | +# Debuggen mit stdin und automatischem Absenden |
| 157 | +dmesg | wsh ai -s - -m "help me understand these errors" |
| 158 | +``` |
| 159 | + |
| 160 | +**Flags:** |
| 161 | +- `-` - Von stdin statt aus einer Datei lesen |
| 162 | +- `-m, --message` - Nachrichtentext zusammen mit Dateien hinzufügen |
| 163 | +- `-s, --submit` - Sofort automatisch absenden (Standard ist, auf den Nutzer zu warten) |
| 164 | +- `-n, --new` - Chat leeren und neues Gespräch beginnen |
| 165 | + |
| 166 | +**Dateigrenzen:** |
| 167 | +- Textdateien: max. 200KB |
| 168 | +- PDFs: max. 5MB |
| 169 | +- Bilder: max. 7MB |
| 170 | +- Maximal 15 Dateien pro Befehl |
| 171 | + |
| 172 | +## Tipps & Funktionen |
| 173 | + |
| 174 | +1. **Mit Blöcken arbeiten** |
| 175 | + |
| 176 | + - Nutze Blocknummern (1-9), um bestimmte Blöcke innerhalb eines Tabs anzusprechen (Strg+Umschalt gedrückt halten, um Blocknummern anzuzeigen) |
| 177 | + - Vollständige Block-IDs erhältst du per Rechtsklick auf die Kopfzeile eines Blocks und Auswahl von "Copy Block Id" (nützlich zum Skripten) |
| 178 | + - Nutze Referenzen wie "this", "tab", "workspace" oder "global" für verschiedene Geltungsbereiche |
| 179 | + |
| 180 | +2. **Datenspeicherung** |
| 181 | + |
| 182 | + - Nutze `wsh setvar/getvar` für Konfiguration und Secrets |
| 183 | + - Speichere Dateidaten mit `wsh file`, die sich leicht in allen Terminals (lokal und entfernt) referenzieren lassen |
| 184 | + - Nutze passende Speicher-Geltungsbereiche (Block, Tab, Workspace, global) |
| 185 | + |
| 186 | +3. **Befehlsausführung** |
| 187 | + - Nutze `wsh run`, um Befehle in neuen Blöcken auszuführen |
| 188 | + - Sende Befehlsausgaben und Dateien schnell mit `wsh ai` an KI-Blöcke |
| 189 | + |
| 190 | +## Skripten mit wsh |
| 191 | + |
| 192 | +wsh-Befehle können in Skripten kombiniert werden, um wiederkehrende Aufgaben zu automatisieren. Hier ist ein Beispiel, das eine Entwicklungsumgebung einrichtet und mit `wsh notify` einen lang laufenden Build überwacht: |
| 193 | + |
| 194 | +```bash |
| 195 | +#!/bin/bash |
| 196 | +# Entwicklungsumgebung einrichten |
| 197 | +wsh run -- docker-compose up -d |
| 198 | +wsh web open localhost:8080 |
| 199 | +wsh view ./src |
| 200 | +wsh run -- npm run test:watch |
| 201 | + |
| 202 | +# Mit wsh notify benachrichtigt werden, wenn lang laufende Aufgaben abgeschlossen sind |
| 203 | +npm run build && wsh notify "Build complete" || wsh notify "Build failed" |
| 204 | +``` |
| 205 | + |
| 206 | +## Hilfe erhalten |
| 207 | + |
| 208 | +Du kannst dir Hilfe zu verfügbaren Befehlen anzeigen lassen, indem du `wsh` ohne Argumente ausführst, oder detaillierte Hilfe zu einem bestimmten Befehl mit `wsh [command] -h` erhalten. |
| 209 | + |
| 210 | +Eine vollständige Referenz aller `wsh`-Funktionen findest du in der [WSH-Befehlsreferenz](./wsh-reference). |
0 commit comments