---
title: TUI
description: Использование TUI opencode.
---

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

opencode предоставляет интерактивный terminal интерфейс или TUI для работы над вашими проектами с помощью LLM.

Запуск opencode запускает TUI для текущего каталога.

```bash
opencode
```

Или вы можете запустить его для определенного рабочего каталога.

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

Как только вы окажетесь в TUI, вы можете запросить его с помощью сообщения.

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

---

## Ссылки на файлы

Вы можете ссылаться на файлы в своих сообщениях, используя `@`. Это выполняет нечеткий поиск файлов в текущем рабочем каталоге.

:::tip
Вы также можете использовать `@` для ссылки на файлы в своих сообщениях.
:::

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

Содержимое файла добавляется в беседу автоматически.

---

## Bash-команды

Начните сообщение с `!`, чтобы запустить shell-команду.

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

Вывод команды добавляется в диалог как результат работы инструмента.

---

## Команды

При использовании opencode TUI вы можете ввести `/`, а затем имя команды, чтобы быстро выполнить действия. Например:

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

Большинство команд также имеют привязку клавиш с использованием `ctrl+x` в качестве ведущей клавиши, где `ctrl+x` — это ведущая клавиша по умолчанию. [Подробнее ](/docs/keybinds).

Вот все доступные слэш-команды:

---

### connect

Добавьте провайдера в opencode. Позволяет выбирать из доступных поставщиков и добавлять их ключи API.

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

---

### compact

Сжать текущий сеанс. _Псевдоним_: `/summarize`

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

**Привязка клавиш:** `ctrl+x c`

---

### details

Переключить детали выполнения инструмента.

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

**Привязка клавиш:** `ctrl+x d`

---

### editor

Открыть внешний редактор для составления сообщений. Использует редактор, установленный в переменной среды `EDITOR`. [Подробнее ](#editor-setup).

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

**Привязка клавиш:** `ctrl+x e`

---

### exit

Выйдите из opencode. _Псевдонимы_: `/quit`, `/q`

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

**Привязка клавиш:** `ctrl+x q`

---

### export

Экспортируйте текущий разговор в Markdown и откройте его в редакторе по умолчанию. Использует редактор, установленный в переменной среды `EDITOR`. [Подробнее ](#editor-setup).

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

**Привязка клавиш:** `ctrl+x x`

---

### help

Показать диалоговое окно помощи.

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

**Привязка клавиш:** `ctrl+x h`

---

### init

Создайте или обновите файл `AGENTS.md`. [Подробнее ](/docs/rules).

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

**Привязка клавиш:** `ctrl+x i`

---

### models

Перечислите доступные модели.

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

**Привязка клавиш:** `ctrl+x m`

---

### new

Начать новый сеанс. _Псевдоним_: `/clear`

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

**Привязка клавиш:** `ctrl+x n`

---

### redo

Повторить ранее отмененное сообщение. Доступно только после использования `/undo`.

:::tip
Любые изменения файлов также будут восстановлены.
:::

Внутри это использует Git для управления изменениями файлов. Итак, ваш проект ** должен
быть репозиторием Git**.

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

**Привязка клавиш:** `ctrl+x r`

---

### sessions

Составляйте список и переключайтесь между сеансами. _Псевдонимы_: `/resume`, `/continue`

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

**Привязка клавиш:** `ctrl+x l`

---

### share

Поделиться текущим сеансом. [Подробнее](/docs/share).

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

**Привязка клавиш:** `ctrl+x s`

---

### theme

Список доступных тем.

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

**Привязка клавиш:** `ctrl+x t`

---

### thinking

Переключить видимость блоков мышления/рассуждения в разговоре. Если этот параметр включен, вы можете увидеть процесс рассуждения модели для моделей, поддерживающих расширенное мышление.

:::note
Эта команда только контролирует, будут ли **отображаться** блоки мышления, но не включает и не отключает возможности модели по рассуждению. Чтобы переключить фактические возможности рассуждения, используйте `ctrl+t` для циклического переключения вариантов модели.
:::

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

---

### undo

Отменить последнее сообщение в разговоре. Удаляет самое последнее сообщение пользователя, все последующие ответы и любые изменения файлов.

:::tip
Любые внесенные изменения в файле также будут отменены.
:::

Внутри это использует Git для управления изменениями файлов. Итак, ваш проект ** должен
быть репозиторием Git**.

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

**Привязка клавиш:** `ctrl+x u`

---

### unshare

Отменить общий доступ к текущему сеансу. [Подробнее](/docs/share#un-sharing).

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

---

## Настройка редактора

Команды `/editor` и `/export` используют редактор, указанный в переменной среды `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"
    ```

    Чтобы сделать его постоянным, добавьте это в свой профиль shell;
    `~/.bashrc`, `~/.zshrc` и т. д.

  </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
    ```

    Чтобы сделать его постоянным, используйте **Свойства системы** > **Среда
    Переменные**.

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

    Чтобы сделать его постоянным, добавьте его в свой профиль PowerShell.

  </TabItem>
</Tabs>

Популярные варианты редактора включают в себя:

- `code` — VS Code
- `cursor` — Cursor
- `windsurf` - Windsurf
- `nvim` - Редактор Neovim
- `vim` — редактор Vim
- `nano` — Нано-редактор
- `notepad` — Блокнот Windows
- `subl` — Sublime Text

:::note
Некоторые редакторы, такие как VS Code, необходимо запускать с флагом `--wait`.
:::

Некоторым редакторам для работы в режиме блокировки необходимы CLI-аргументы. Флаг `--wait` блокирует процесс редактора до его закрытия.

---

## Настройка

Вы можете настроить поведение TUI через `tui.json` (или `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"
    }
  }
}
```

Это отдельный файл от `opencode.json`, который настраивает поведение сервера/выполнения.

`keybinds` объединяется со встроенными значениями по умолчанию, поэтому достаточно настроить только те сочетания клавиш, которые вы хотите изменить.

### Параметры

- `theme` — Устанавливает тему пользовательского интерфейса. [Подробнее](/docs/themes).
- `keybinds` — Настраивает сочетания клавиш. [Подробнее](/docs/keybinds).
- `leader_timeout` — Управляет тем, как долго OpenCode ждёт после нажатия leader key. По умолчанию `2000`.
- `scroll_acceleration.enabled` — включите ускорение прокрутки в стиле macOS для плавной и естественной прокрутки. Если этот параметр включен, скорость прокрутки увеличивается при быстрой прокрутке и остается точной при более медленных движениях. **Этот параметр имеет приоритет над `scroll_speed` и переопределяет его, если он включен.**
- `scroll_speed` — контролирует скорость прокрутки TUI при использовании команд прокрутки (минимум: `0.001`, поддерживает десятичные значения). По умолчанию `3`. **Примечание. Это игнорируется, если для `scroll_acceleration.enabled` установлено значение `true`.**
- `diff_style` — Управляет отображением различий. `"auto"` адаптируется к ширине терминала, `"stacked"` всегда показывает одноколоночный макет.
- `mouse` — Включает или отключает захват мыши в TUI (по умолчанию `true`). Если отключено, сохраняется нативное поведение терминала для выделения мышью и прокрутки.
- `attention` — Настраивает уведомления рабочего стола и звуки TUI. По умолчанию отключено.

Используйте `OPENCODE_TUI_CONFIG` для загрузки пользовательского пути конфигурации TUI.

### Attention

Attention позволяет TUI уведомлять вас, когда OpenCode ждёт ответа, требует подтверждения разрешения, сообщает об ошибке сеанса или завершает сеанс. Включите это с помощью `attention.enabled`; встроенные события воспроизводят звук при срабатывании. Уведомления рабочего стола отправляются только тогда, когда окно терминала не в фокусе, и не используются для событий subagent.

- `enabled` — Включает все уведомления и звуки Attention. По умолчанию `false`.
- `notifications` — Когда Attention включён, разрешает TUI отправлять уведомления рабочего стола через терминал. По умолчанию `true`.
- `sound` — Когда Attention включён, разрешает воспроизводить звуковые оповещения. По умолчанию `true`.
- `volume` — Громкость звуковых оповещений по умолчанию от `0` до `1`. По умолчанию `0.4`.
- `sound_pack` — ID sound pack для использования. По умолчанию `opencode.default`.
- `sounds` — Задаёт пользовательские звуковые файлы для `default`, `question`, `permission`, `error`, `done` или `subagent_done`. Пути могут быть абсолютными, `file://` URL или относительными к `tui.json`.

---

## Кастомизация

Вы можете настроить различные аспекты представления TUI, используя палитру команд (`ctrl+x h` или `/help`). Эти настройки сохраняются после перезапуска.

---

#### Отображение имени пользователя

Включите, будет ли ваше имя пользователя отображаться в сообщениях чата. Доступ к этому через:

- Палитра команд: поиск «имя пользователя» или «скрыть имя пользователя».
- Настройка сохраняется автоматически и будет запоминаться во время сеансов TUI.
