| --- |
| title: TUI |
| description: Arbeite mit OpenCode in der Terminal-Oberflaeche. |
| --- |
| |
| import { Tabs, TabItem } from "@astrojs/starlight/components" |
|
|
| OpenCode bietet eine interaktive Terminaloberflaeche (TUI), um mit einem LLM an deinen Projekten zu arbeiten. |
|
|
| Ohne weitere Argumente startet OpenCode die TUI im aktuellen Verzeichnis. |
|
|
| ```bash |
| opencode |
| ``` |
|
|
| Oder du startest sie fuer ein bestimmtes Arbeitsverzeichnis. |
|
|
| ```bash |
| opencode /path/to/project |
| ``` |
|
|
| In der TUI kannst du direkt mit einer Nachricht prompten. |
|
|
| ```text |
| Give me a quick summary of the codebase. |
| ``` |
|
|
| --- |
| |
| |
|
|
| Mit `@` kannst du Dateien in Nachrichten referenzieren. |
| Dabei wird im aktuellen Verzeichnis eine unscharfe Dateisuche genutzt. |
|
|
| :::tip |
| Du kannst `@` in Nachrichten fuer Datei-Referenzen verwenden. |
| ::: |
|
|
| ```text "@packages/functions/src/api/index.ts" |
| How is auth handled in @packages/functions/src/api/index.ts? |
| ``` |
|
|
| Der Dateiinhalt wird automatisch zur Unterhaltung hinzugefuegt. |
|
|
| --- |
| |
| |
|
|
| Beginne eine Nachricht mit `!`, um einen Shell-Befehl auszufuehren. |
|
|
| ```bash frame="none" |
| !ls -la |
| ``` |
|
|
| Die Ausgabe landet als Tool-Ergebnis in der Unterhaltung. |
|
|
| --- |
| |
| |
|
|
| In der OpenCode-TUI kannst du `/` plus Befehlsnamen eingeben, um Aktionen schnell auszufuehren. |
| Zum Beispiel: |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| Viele Befehle haben auch Tastenkombinationen mit `ctrl+x` als Leader-Key. |
| [Mehr dazu](/docs/keybinds). |
|
|
| Hier sind alle verfuegbaren Slash-Commands: |
|
|
| --- |
| |
| |
|
|
| Fuegt einen Provider zu OpenCode hinzu. Erlaubt die Auswahl aus verfuegbaren Providern und das Hinzufuegen ihrer API-Keys. |
|
|
| ```bash frame="none" |
| /connect |
| ``` |
|
|
| --- |
| |
| |
|
|
| Kompaktiert die aktuelle Session. _Alias_: `/summarize` |
|
|
| ```bash frame="none" |
| /compact |
| ``` |
|
|
| **Keybind:** `ctrl+x c` |
|
|
| --- |
| |
| |
|
|
| Schaltet Tool-Ausfuehrungsdetails um. |
|
|
| ```bash frame="none" |
| /details |
| ``` |
|
|
| **Keybind:** `ctrl+x d` |
|
|
| --- |
| |
| |
|
|
| Oeffnet externen Editor zum Verfassen von Nachrichten. Nutzt den in der `EDITOR`-Umgebungsvariable gesetzten Editor. [Mehr dazu](#editor-setup). |
|
|
| ```bash frame="none" |
| /editor |
| ``` |
|
|
| **Keybind:** `ctrl+x e` |
|
|
| --- |
| |
| |
|
|
| Beendet OpenCode. _Aliase_: `/quit`, `/q` |
|
|
| ```bash frame="none" |
| /exit |
| ``` |
|
|
| **Keybind:** `ctrl+x q` |
|
|
| --- |
| |
| |
|
|
| Exportiert die aktuelle Unterhaltung als Markdown und oeffnet sie in deinem Standard-Editor. Nutzt den in der `EDITOR`-Umgebungsvariable gesetzten Editor. [Mehr dazu](#editor-setup). |
|
|
| ```bash frame="none" |
| /export |
| ``` |
|
|
| **Keybind:** `ctrl+x x` |
|
|
| --- |
| |
| |
|
|
| Zeigt den Hilfedialog. |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| **Keybind:** `ctrl+x h` |
|
|
| --- |
| |
| |
|
|
| Erstellt oder aktualisiert die `AGENTS.md`-Datei. [Mehr dazu](/docs/rules). |
|
|
| ```bash frame="none" |
| /init |
| ``` |
|
|
| **Keybind:** `ctrl+x i` |
|
|
| --- |
| |
| |
|
|
| Listet verfuegbare Modelle. |
|
|
| ```bash frame="none" |
| /models |
| ``` |
|
|
| **Keybind:** `ctrl+x m` |
|
|
| --- |
| |
| |
|
|
| Startet eine neue Session. _Alias_: `/clear` |
|
|
| ```bash frame="none" |
| /new |
| ``` |
|
|
| **Keybind:** `ctrl+x n` |
|
|
| --- |
| |
| |
|
|
| Wiederholt eine zuvor rueckgaengig gemachte Nachricht. Nur verfuegbar nach Verwendung von `/undo`. |
|
|
| :::tip |
| Auch Dateiaenderungen werden wiederhergestellt. |
| ::: |
|
|
| Intern nutzt dies Git, um die Dateiaenderungen zu verwalten. Dein Projekt muss also **ein Git-Repository sein**. |
|
|
| ```bash frame="none" |
| /redo |
| ``` |
|
|
| **Keybind:** `ctrl+x r` |
|
|
| --- |
| |
| |
|
|
| Listet Sessions und wechselt zwischen ihnen. _Aliase_: `/resume`, `/continue` |
|
|
| ```bash frame="none" |
| /sessions |
| ``` |
|
|
| **Keybind:** `ctrl+x l` |
|
|
| --- |
| |
| |
|
|
| Teilt die aktuelle Session. [Mehr dazu](/docs/share). |
|
|
| ```bash frame="none" |
| /share |
| ``` |
|
|
| **Keybind:** `ctrl+x s` |
|
|
| --- |
| |
| |
|
|
| Listet verfuegbare Themes. |
|
|
| ```bash frame="none" |
| /theme |
| ``` |
|
|
| **Keybind:** `ctrl+x t` |
|
|
| --- |
| |
| |
|
|
| Schaltet die Sichtbarkeit von Thinking/Reasoning-Bloecken in der Unterhaltung um. Wenn aktiviert, kannst du den Denkprozess des Modells sehen (bei Modellen, die das unterstuetzen). |
|
|
| :::note |
| Dieser Befehl steuert nur, ob Thinking-Bloecke **angezeigt** werden - er aktiviert oder deaktiviert nicht die Reasoning-Faehigkeiten des Modells. Um die Reasoning-Faehigkeiten umzuschalten, nutze `ctrl+t`, um durch die Modell-Varianten zu wechseln. |
| ::: |
|
|
| ```bash frame="none" |
| /thinking |
| ``` |
|
|
| --- |
| |
| |
|
|
| Macht die letzte Nachricht in der Unterhaltung rueckgaengig. Entfernt die letzte Benutzernachricht, alle folgenden Antworten und alle Dateiaenderungen. |
|
|
| :::tip |
| Auch durchgefuehrte Dateiaenderungen werden rueckgaengig gemacht. |
| ::: |
|
|
| Intern nutzt dies Git, um die Dateiaenderungen zu verwalten. Dein Projekt muss also **ein Git-Repository sein**. |
|
|
| ```bash frame="none" |
| /undo |
| ``` |
|
|
| **Keybind:** `ctrl+x u` |
|
|
| --- |
| |
| |
|
|
| Hebt das Teilen der aktuellen Session auf. [Mehr dazu](/docs/share#un-sharing). |
|
|
| ```bash frame="none" |
| /unshare |
| ``` |
|
|
| --- |
| |
| |
|
|
| Sowohl `/editor` als auch `/export` nutzen den in deiner `EDITOR`-Umgebungsvariable spezifizierten Editor. |
|
|
| <Tabs> |
| <TabItem label="Linux/macOS"> |
| ```bash |
| |
| export EDITOR=nano |
| export EDITOR=vim |
|
|
| |
| |
| export EDITOR="code --wait" |
| ``` |
|
|
| Um es dauerhaft zu machen, fuege dies zu deinem Shell-Profil hinzu; |
| `~/.bashrc`, `~/.zshrc`, etc. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (CMD)"> |
| ```bash |
| set EDITOR=notepad |
|
|
| |
| |
| set EDITOR=code --wait |
| ``` |
|
|
| Um es dauerhaft zu machen, nutze **Systemeigenschaften** > **Umgebungsvariablen**. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (PowerShell)"> |
| ```powershell |
| $env:EDITOR = "notepad" |
|
|
| |
| |
| $env:EDITOR = "code --wait" |
| ``` |
|
|
| Um es dauerhaft zu machen, fuege dies zu deinem PowerShell-Profil hinzu. |
|
|
| </TabItem> |
| </Tabs> |
|
|
| Beliebte Editoren sind: |
|
|
| - `code` - Visual Studio Code |
| - `cursor` - Cursor |
| - `windsurf` - Windsurf |
| - `nvim` - Neovim |
| - `vim` - Vim |
| - `nano` - Nano |
| - `notepad` - Windows Notepad |
| - `subl` - Sublime Text |
|
|
| :::note |
| Einige Editoren wie VS Code muessen mit dem `--wait`-Flag gestartet werden. |
| ::: |
|
|
| Einige Editoren benoetigen Befehlszeilenargumente, um im blockierenden Modus zu laufen. Das `--wait`-Flag sorgt dafuer, dass der Editor-Prozess blockiert, bis er geschlossen wird. |
|
|
| --- |
| |
| |
|
|
| Du kannst das Verhalten der TUI ueber die Datei `tui.json` (oder `tui.jsonc`) anpassen. |
|
|
| ```json title="tui.json" |
| { |
| "$schema": "https://opencode.ai/tui.json", |
| "theme": "opencode", |
| "leader_timeout": 2000, |
| "keybinds": { |
| "leader": "ctrl+x", |
| "command_list": "ctrl+p" |
| }, |
| "scroll_speed": 3, |
| "scroll_acceleration": { |
| "enabled": false |
| }, |
| "diff_style": "auto", |
| "mouse": true, |
| "attention": { |
| "enabled": true, |
| "notifications": true, |
| "sound": true, |
| "volume": 0.4, |
| "sound_pack": "opencode.default", |
| "sounds": { |
| "error": "./sounds/error.mp3" |
| } |
| } |
| } |
| ``` |
|
|
| Dies ist getrennt von `opencode.json`, welche das Server-/Runtime-Verhalten konfiguriert. |
|
|
| `keybinds` wird mit den integrierten Standardwerten zusammengeführt, daher musst du nur die Tastenkombinationen konfigurieren, die du ändern möchtest. |
|
|
| |
|
|
| - `theme` - Setzt dein UI-Theme. [Mehr dazu](/docs/themes). |
| - `keybinds` - Passt Tastenkombinationen an. [Mehr dazu](/docs/keybinds). |
| - `leader_timeout` - Steuert, wie lange OpenCode nach der leader key wartet. Standard ist `2000`. |
| - `scroll_acceleration.enabled` - Aktiviert Scroll-Beschleunigung im macOS-Stil fuer weiches, natuerliches Scrollen. Wenn aktiviert, erhoeht sich die Scroll-Geschwindigkeit bei schnellen Gesten und bleibt praezise bei langsamen Bewegungen. **Diese Einstellung hat Vorrang vor `scroll_speed` und ueberschreibt es, wenn aktiviert.** |
| - `scroll_speed` - Steuert, wie schnell die TUI scrollt (Minimum: `0.001`, unterstuetzt Dezimalwerte). Standard ist `3`. **Hinweis: Wird ignoriert, wenn `scroll_acceleration.enabled` auf `true` gesetzt ist.** |
| - `diff_style` - Steuert die Diff-Darstellung. `"auto"` passt sich der Terminalbreite an, `"stacked"` zeigt immer ein einspaltiges Layout. |
| - `mouse` - Aktiviert oder deaktiviert die Mauserfassung im TUI (Standard: `true`). Wenn deaktiviert, bleibt das native Mausauswahl- und Scrollverhalten des Terminals erhalten. |
| - `attention` - Konfiguriert Desktop-Benachrichtigungen und Sounds des TUI. Standardmäßig deaktiviert. |
|
|
| Verwende `OPENCODE_TUI_CONFIG`, um einen benutzerdefinierten TUI-Konfigurationspfad zu laden. |
|
|
| |
|
|
| Attention lässt das TUI dich benachrichtigen, wenn OpenCode auf eine Antwort wartet, eine Berechtigung bestätigt werden muss, ein Sitzungsfehler aufgetreten ist oder eine Sitzung abgeschlossen wurde. Aktiviere es mit `attention.enabled`; integrierte Ereignisse spielen beim Auftreten einen Sound ab. Desktop-Benachrichtigungen werden nur gesendet, wenn das Terminalfenster nicht fokussiert ist, und nicht für subagent-Ereignisse verwendet. |
|
|
| - `enabled` - Aktiviert alle Benachrichtigungen und Sounds von Attention. Standard ist `false`. |
| - `notifications` - Erlaubt dem TUI bei aktiviertem Attention, Desktop-Benachrichtigungen über das Terminal zu senden. Standard ist `true`. |
| - `sound` - Erlaubt bei aktiviertem Attention das Abspielen von Hinweistönen. Standard ist `true`. |
| - `volume` - Standardlautstärke der Hinweistöne von `0` bis `1`. Standard ist `0.4`. |
| - `sound_pack` - Zu verwendende sound pack ID. Standard ist `opencode.default`. |
| - `sounds` - Legt eigene Sounddateien für `default`, `question`, `permission`, `error`, `done` oder `subagent_done` fest. Pfade können absolut, `file://` URLs oder relativ zu `tui.json` sein. |
|
|
| --- |
| |
| |
|
|
| Du kannst verschiedene Aspekte der TUI-Ansicht ueber die Befehlspalette (`ctrl+x h` oder `/help`) anpassen. Diese Einstellungen bleiben ueber Neustarts hinweg erhalten. |
|
|
| --- |
| |
| |
|
|
| Schaltet um, ob dein Benutzername in Chat-Nachrichten erscheint. Zugriff hierueber: |
|
|
| - Befehlspalette: Suche nach "username" oder "hide username" |
| - Die Einstellung wird automatisch gespeichert und bleibt ueber TUI-Sessions hinweg erhalten. |
|
|