0.4.11
03 · Руководство пользователя

03. Интерфейс TUI

После astracode открывается терминальный интерфейс. Этот документ — экскурсия по экрану и принципам управления.

Карта экрана

text
┌─ Терминал ────────────────────────────────────────────────────────┐
│                                                                   │
│   AstraCode (v0.5.1)                                              │
│   Started thread:  9e3b4f12-...                                   │
│                                                                   │
│   ┌───── Chat history (scrollable) ─────┐                         │
│   │ > Привет, посмотри что в репо       │  ← ваши сообщения       │
│   │                                     │                         │
│   │   AstraCode: я вижу проект на Rust,│  ← ответы модели        │
│   │   18 крейтов в astracode-rs/...    │                         │
│   │                                     │                         │
│   │   🔧 Tool: list_dir(.)              │  ← вызов tool'а         │
│   │   ▶ astracode-rs/                   │                         │
│   │   ▶ docs/                           │                         │
│   │   ✓ done (5ms)                      │                         │
│   │                                     │                         │
│   └─────────────────────────────────────┘                         │
│                                                                   │
│   ┌─ Composer ──────────────────────────┐                         │
│   │ > _                                 │  ← поле ввода           │
│   └─────────────────────────────────────┘                         │
│   gpt-5 · 12.3k tokens · workspace-write · main             ru    │
└───────────────────────────────────────────────────────────────────┘
                                                       ↑ status line

Сверху — история сообщений (прокручиваемая).
Внизу — composer (поле ввода).
Под ним — status line с текущей моделью, токенами, режимом sandbox, git-веткой и языком.

Composer — где вы вводите команды

В composer'е работают четыре спецсимвола, которые открывают picker'ы (авто-дополнения как такового в composer'е нет — выбор идёт через popup'ы по триггеру):

Символ Что делает
/ Открыть меню slash-команд (/help, /cd, /review, ...)
@ Упомянуть файл — открывает file picker
$ Активировать скилл — picker всех установленных скиллов
! Выполнить shell-команду прямо отсюда (не через модель)

Просто текст — обычное сообщение модели.

Хоткеи в composer

Клавиша Действие
Enter Отправить сообщение
Shift+Enter Перенос строки (мульти-строчный ввод)
Tab Поставить текущий ввод в очередь (queue) — отправится следующим сообщением
Esc Backtrack — отредактировать предыдущее сообщение в истории (или закрыть popup)
Ctrl-A / Ctrl-E В начало / конец строки
Ctrl-U Удалить до начала
Ctrl-W Удалить слово
Ctrl-P / Ctrl-N Курсор вверх / вниз (как в readline)
Ctrl-R Поиск по истории промптов — предыдущее совпадение
Ctrl-S Поиск по истории промптов — следующее совпадение

Multi-line

Shift+Enter — перенос строки. Полезно для длинных промптов и кода:

text
Отрефактори эту функцию:

```rust
fn foo() {
    // ...
}

(блоки кода через тройные backtick)

text
## История — прокрутка и навигация

| Клавиша | Действие |
|---|---|
| `↑` / `↓` | Прокрутка по строке (когда фокус на истории, не на composer) |
| `PgUp` / `PgDn` | Прокрутка страницей |
| `Home` / `End` | К началу / концу истории |
| `i` | Перейти в composer |

Чтобы переключаться между composer и историей — используйте `Esc` (backtrack в историю) или `i` (обратно в composer).

## Status line

Внизу — однострочный статус. Может содержать:

- Текущая **модель** (`gpt-5`, `claude-sonnet-4-6`, ...).
- Использование **контекста** (`12.3k tokens` — сколько уже в истории).
- **Git-ветка** (если в репозитории).
- **Прогресс задачи** (если работает многошаговая цель).
- **Спиннер** — когда модель думает.

Что показывать — настраивается через `/statusline`. См. [14-customization.md](14-customization).

## Глобальные хоткеи

| Клавиша | Действие |
|---|---|
| `/exit` или `Ctrl-D` | Выйти из AstraCode |
| `Ctrl-C` | Прервать текущий ответ модели |
| `Ctrl-L` | Очистить экран (не контекст) |

## Поповеры и оверлеи

Несколько команд открывают полноэкранные **оверлеи** поверх чата:

- `/diff` — pager с `git diff`.
- `/help` или `/help <команда>` — справка.
- `/review` — отчёт ревьюера появляется прямо в чате (как обычное agent-сообщение), а не в pager'е.
- `/fork` — picker пользовательских сообщений, от которых можно создать ответвление.
- `/undo` — picker записанных изменений файлов; после отмены список обновляется.
- `/expand` — picker завершённых tool-блоков для точечного раскрытия и сворачивания.

Команда `/collapse` сворачивает все завершённые успешные tool-блоки в короткие сводки. Активные, упавшие, отклонённые и approval-блоки остаются развёрнутыми. `/expand` без выбора раскрывает их обратно. Состояние сворачивания сохраняется в текущем процессе, но после нового запуска TUI не восстанавливается.

В pager'е управление:
| Клавиша | Действие |
|---|---|
| `↑` / `↓` | Прокрутка строкой |
| `PgUp` / `PgDn` | Страницей |
| `Home` / `End` | К началу / концу |
| `q` или `Ctrl-C` | Закрыть |

## Approval-диалоги

Когда модель просит запустить shell-команду или изменить файл, появится inline-блок:

───────────────────────────────────── Tool wants to: write to src/auth.rs


+++ a/src/auth.rs - fn old() {} + fn new() {}

[y] allow once [a] always [p] prefix [d] deny [n]/Esc decline [o] thread [c] cancel ─────────────────────────────────────

text
Клавиши:
| Клавиша | Что значит |
|---|---|
| `y` | Allow once — разрешить именно это действие |
| `a` | Allow always — разрешать аналогичные действия до конца сессии |
| `p` | Approve for prefix — разрешить по префиксу команды |
| `d` | Deny — отказать |
| `n` / `Esc` | Decline — отклонить (мягкий отказ) |
| `o` | Open thread — открыть тред обсуждения |
| `c` | Cancel — отменить запрос |

Подробнее — [13-safety.md](13-safety).

## Auto-complete popup'ы

### Slash-команды (после `/`)

/re_ ┌─────────────────────────────┐ │ /resume — продолжить сохра…│ ← подсветка выбранного │ /review — проверить измене…│ │ /realtime — голосовой режим │ └─────────────────────────────┘

text
`↑`/`↓` — выбор, `Enter` — вставить, `Esc` — закрыть.

### Файлы (после `@`)

@src/au ┌─────────────────────────────┐ │ src/auth.rs │ │ src/auth_tests.rs │ │ src/auth_proxy.rs │ └─────────────────────────────┘

text
Fuzzy-поиск. После выбора файл подставляется в промпт как `@src/auth.rs` — модель увидит это как «упомянутый файл».

### Скиллы (после `$`)

$skil ┌─────────────────────────────┐ │ skill-creator — Создать ск…│ │ skill-installer — Установить…│ └─────────────────────────────┘

text
При выборе скилл активируется и в composer подставляется его `default_prompt`.

### Пути (`/cd`)

После `/cd ` открывается picker подкаталогов:

/cd src/ ┌─────────────────────────────┐ │ src/api/ │ │ src/auth/ │ │ src/handlers/ │ └─────────────────────────────┘

text
## Подсказки и tooltips

Когда наводите курсор на пункт в popup'е, рядом показывается короткое описание команды/файла/скилла. Можно отключить:

```toml
# в ~/.astracode/config.toml
[tui]
show_tooltips = false

Темы и цвета

Подсветка синтаксиса в diff'ах, code blocks, и т.п. — настраивается через /theme. См. 14-customization.md.

Когда что-то на экране непонятно

/help — обзор всех команд.
/help <команда> — подробности по одной.

Если интерфейс «завис» (что-то не реагирует) — Ctrl-C обычно помогает прервать ход (если активной работы нет — Ctrl-C сразу выходит). Для выхода удобнее /exit или Ctrl-D.