---
title: TUI
description: Korzystanie z interfejsu użytkownika terminala opencode.
---

import { Tabs, TabItem } from "@astrojs/starlight/components"

opencode zapewnia interaktywny interfejs terminala lub TUI do pracy nad projektami za pomocą LLM.

Uruchomienie opencode uruchamia TUI dla bieżącego katalogu.

```bash
opencode
```

Możesz też uruchomić go dla określonego katalogu roboczego.

```bash
opencode /path/to/project
```

Gdy znajdziesz się w TUI, możesz wyświetlić monit za pomocą komunikatu.

```text
Give me a quick summary of the codebase.
```

---

## Referencje plików

Możesz odwoływać się do plików w swoich wiadomościach, używając `@`. Spowoduje to rozmyte wyszukiwanie plików w bieżącym katalogu roboczym.

:::tip
Możesz także użyć `@` do odwoływania się do plików w swoich wiadomościach.
:::

```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```

Zawartość pliku jest automatycznie dodawana do rozmowy.

---

## Polecenia Bash

Rozpocznij wiadomość od `!`, aby uruchomić polecenie shell.

```bash frame="none"
!ls -la
```

Dane wyjściowe polecenia są dodawane do konwersacji jako wynik narzędzia.

---

## Komendy

Korzystając z TUI opencode, możesz wpisać `/`, po którym następuje nazwa polecenia, aby szybko wykonać działania. Na przykład:

```bash frame="none"
/help
```

Większość poleceń ma również skrót klawiszowy wykorzystujący `ctrl+x` jako klucz wiodący, gdzie `ctrl+x` jest domyślnym klawiszem wiodącym. [Dowiedz się więcej](/docs/keybinds).

Oto wszystkie dostępne slash commands:

---

### connect

Dodaj dostawcę do opencode. Umożliwia wybór dostępnych dostawców i dodanie ich kluczy API.

```bash frame="none"
/connect
```

---

### compact

Kompaktuj bieżącą sesję. _Alias_: `/summarize`

```bash frame="none"
/compact
```

**Keybind:** `ctrl+x c`

---

### details

Przełącz szczegóły wykonywania narzędzi.

```bash frame="none"
/details
```

**Keybind:** `ctrl+x d`

---

### editor

Otwórz zewnętrzny edytor do tworzenia wiadomości. Używa edytora ustawionego w zmiennej środowiskowej `EDITOR`. [Dowiedz się więcej](#editor-setup).

```bash frame="none"
/editor
```

**Keybind:** `ctrl+x e`

---

### exit

Zamknij opencode. _Aliasy_: `/quit`, `/q`

```bash frame="none"
/exit
```

**Keybind:** `ctrl+x q`

---

### export

Wyeksportuj bieżącą rozmowę do Markdown i otwórz ją w domyślnym edytorze. Używa edytora ustawionego w zmiennej środowiskowej `EDITOR`. [Dowiedz się więcej](#editor-setup).

```bash frame="none"
/export
```

**Keybind:** `ctrl+x x`

---

### help

Pokaż okno pomocy.

```bash frame="none"
/help
```

**Keybind:** `ctrl+x h`

---

### init

Utwórz lub zaktualizuj plik `AGENTS.md`. [Dowiedz się więcej](/docs/rules).

```bash frame="none"
/init
```

**Keybind:** `ctrl+x i`

---

### models

Lista dostępnych modeli.

```bash frame="none"
/models
```

**Keybind:** `ctrl+x m`

---

### new

Rozpocznij nową sesję. _Alias_: `/clear`

```bash frame="none"
/new
```

**Keybind:** `ctrl+x n`

---

### redo

Ponów cofniętą wcześniej wiadomość. Dostępne tylko po użyciu `/undo`.

:::tip
Wszystkie zmiany plików również zostaną przywrócone.
:::

Wewnętrznie używa Git do zarządzania zmianami plików. Więc Twój projekt ** musi
be a Git repository**.

```bash frame="none"
/redo
```

**Keybind:** `ctrl+x r`

---

### sessions

Wyświetl listę i przełączaj się między sesjami. _Aliasy_: `/resume`, `/continue`

```bash frame="none"
/sessions
```

**Keybind:** `ctrl+x l`

---

### share

Udostępnij bieżącą sesję. [Dowiedz się więcej](/docs/share).

```bash frame="none"
/share
```

**Keybind:** `ctrl+x s`

---

### themes

Lista dostępnych motywów.

```bash frame="none"
/theme
```

**Keybind:** `ctrl+x t`

---

### thinking

Przełącz widoczność bloków myślenia/rozumowania w rozmowie. Po włączeniu tej opcji można zobaczyć proces wnioskowania modelu w przypadku modeli obsługujących myślenie rozszerzone.

:::note
To polecenie kontroluje jedynie, czy bloki myślowe są **wyświetlane** - nie włącza ani nie wyłącza możliwości wnioskowania modelu. Aby przełączyć rzeczywiste możliwości wnioskowania, użyj `ctrl+t` do przełączania wariantów modelu.
:::

```bash frame="none"
/thinking
```

---

### undo

Cofnij ostatnią wiadomość w rozmowie. Usuwa najnowszą wiadomość użytkownika, wszystkie kolejne odpowiedzi i wszelkie zmiany w plikach.

:::tip
Wszystkie zmiany plików również zostaną cofnięte.
:::

Wewnętrznie używa Git do zarządzania zmianami plików. Więc Twój projekt ** musi
be a Git repository**.

```bash frame="none"
/undo
```

**Keybind:** `ctrl+x u`

---

### unshare

Anuluj udostępnianie bieżącej sesji. [Dowiedz się więcej](/docs/share#un-sharing).

```bash frame="none"
/unshare
```

---

## Konfiguracja edytora

Zarówno polecenia `/editor`, jak i `/export` korzystają z edytora określonego w zmiennej środowiskowej `EDITOR`.

<Tabs>
  <TabItem label="Linux/macOS">
    ```bash
    # Example for nano or vim
    export EDITOR=nano
    export EDITOR=vim

    # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
    # include --wait
    export EDITOR="code --wait"
    ```

    Aby było to trwałe, dodaj to do swojego profilu shell;
    `~/.bashrc`, `~/.zshrc`, etc.

  </TabItem>

  <TabItem label="Windows (CMD)">
    ```bash
    set EDITOR=notepad

    # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
    # include --wait
    set EDITOR=code --wait
    ```

    Aby ustawić tę opcję na stałe, użyj opcji **Właściwości systemu** > **Środowisko
    Variables**.

  </TabItem>

  <TabItem label="Windows (PowerShell)">
    ```powershell
    $env:EDITOR = "notepad"

    # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
    # include --wait
    $env:EDITOR = "code --wait"
    ```

    Aby uczynić to trwałym, dodaj to do swojego profilu PowerShell.

  </TabItem>
</Tabs>

Popularne opcje edytora:

- `code` - Visual Studio Code
- `cursor` - Cursor
- `windsurf` - Windsurf
- `nvim` - Neovim editor
- `vim` - Vim editor
- `nano` - Nano editor
- `notepad` - Windows Notepad
- `subl` - Sublime Text

:::note
Niektóre edytory, takie jak VS Code, należy uruchamiać z flagą `--wait`.
:::

Niektórzy edytory potrzebują argumentów wiersza poleceń, aby działać w trybie blokowania. Flaga `--wait` blokuje proces edytora aż do jego zamknięcia.

---

## Skonfiguruj

Możesz dostosować zachowanie TUI za pomocą pliku `tui.json` (lub `tui.jsonc`).

```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"
    }
  }
}
```

Jest to oddzielny plik od `opencode.json`, który konfiguruje zachowanie serwera/runtime.

`keybinds` jest łączone z wbudowanymi wartościami domyślnymi, więc wystarczy skonfigurować tylko te skróty, które chcesz zmienić.

### Opcje

- `theme` - Ustawia motyw interfejsu. [Dowiedz się więcej](/docs/themes).
- `keybinds` - Dostosowuje skróty klawiszowe. [Dowiedz się więcej](/docs/keybinds).
- `leader_timeout` - Określa, jak długo OpenCode czeka po naciśnięciu leader key. Domyślnie `2000`.
- `scroll_acceleration.enabled` — Włącz przyspieszenie przewijania w stylu macOS, aby zapewnić płynne, naturalne przewijanie. Po włączeniu prędkość przewijania wzrasta wraz z szybkimi gestami przewijania i pozostaje precyzyjna w przypadku wolniejszych ruchów. **To ustawienie ma pierwszeństwo przed `scroll_speed` i zastępuje je, gdy jest włączone.**
- `scroll_speed` - Kontroluje szybkość przewijania TUI podczas korzystania z poleceń przewijania (minimum: `0.001`, obsługuje wartości dziesiętne). Wartość domyślna to `3`. **Uwaga: jest to ignorowane, jeśli `scroll_acceleration.enabled` jest ustawione na `true`.**
- `diff_style` - Steruje renderowaniem różnic. `"auto"` dostosowuje się do szerokości terminala, `"stacked"` zawsze pokazuje układ jednokolumnowy.
- `mouse` - Włącza lub wyłącza przechwytywanie myszy w TUI (domyślnie `true`). Po wyłączeniu zachowane zostaje natywne zachowanie terminala przy zaznaczaniu i przewijaniu myszą.
- `attention` - Konfiguruje powiadomienia pulpitu i dźwięki TUI. Domyślnie wyłączone.

Użyj `OPENCODE_TUI_CONFIG`, aby załadować niestandardową ścieżkę konfiguracji TUI.

### Attention

Attention pozwala TUI powiadomić Cię, gdy OpenCode czeka na odpowiedź, wymaga zatwierdzenia uprawnienia, zgłasza błąd sesji albo informuje o zakończeniu sesji. Włącz tę funkcję za pomocą `attention.enabled`; wbudowane zdarzenia odtwarzają dźwięk, gdy wystąpią. Powiadomienia pulpitu są wysyłane tylko wtedy, gdy okno terminala nie jest aktywne, i nie są używane dla zdarzeń subagent.

- `enabled` - Włącza wszystkie powiadomienia i dźwięki Attention. Domyślnie `false`.
- `notifications` - Gdy Attention jest włączone, pozwala TUI wysyłać powiadomienia pulpitu przez terminal. Domyślnie `true`.
- `sound` - Gdy Attention jest włączone, pozwala odtwarzać dźwięki powiadomień. Domyślnie `true`.
- `volume` - Domyślna głośność dźwięków powiadomień od `0` do `1`. Domyślnie `0.4`.
- `sound_pack` - ID sound pack do użycia. Domyślnie `opencode.default`.
- `sounds` - Ustawia niestandardowe pliki dźwiękowe dla `default`, `question`, `permission`, `error`, `done` lub `subagent_done`. Ścieżki mogą być bezwzględne, być URL-ami `file://` albo być względne względem `tui.json`.

---

## Personalizacja

Za pomocą palety poleceń (`ctrl+x h` lub `/help`) można dostosować różne aspekty widoku TUI. Te ustawienia są zachowywane po ponownym uruchomieniu.

---

#### Wyświetlanie nazwy użytkownika

Włącz lub wyłącz wyświetlanie Twojej nazwy użytkownika w wiadomościach na czacie. Dostęp do tego poprzez:

- Paleta poleceń: Wyszukaj „nazwę użytkownika” lub „ukryj nazwę użytkownika”
- Ustawienie zostanie zapamiętane automatycznie i będzie pamiętane podczas sesji TUI
