03. Интерфейс TUI
После astracode открывается терминальный интерфейс. Этот документ — экскурсия по экрану и принципам управления.
Карта экрана
┌─ Терминал ────────────────────────────────────────────────────────┐
│ │
│ 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 — перенос строки. Полезно для длинных промптов и кода:
Отрефактори эту функцию:
```rust
fn foo() {
// ...
}
(блоки кода через тройные backtick)
## История — прокрутка и навигация | Клавиша | Действие | |---|---| | `↑` / `↓` | Прокрутка по строке (когда фокус на истории, не на 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 ─────────────────────────────────────
Клавиши: | Клавиша | Что значит | |---|---| | `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 — голосовой режим │ └─────────────────────────────┘
`↑`/`↓` — выбор, `Enter` — вставить, `Esc` — закрыть. ### Файлы (после `@`)
@src/au ┌─────────────────────────────┐ │ src/auth.rs │ │ src/auth_tests.rs │ │ src/auth_proxy.rs │ └─────────────────────────────┘
Fuzzy-поиск. После выбора файл подставляется в промпт как `@src/auth.rs` — модель увидит это как «упомянутый файл». ### Скиллы (после `$`)
$skil ┌─────────────────────────────┐ │ skill-creator — Создать ск…│ │ skill-installer — Установить…│ └─────────────────────────────┘
При выборе скилл активируется и в composer подставляется его `default_prompt`. ### Пути (`/cd`) После `/cd ` открывается picker подкаталогов:
/cd src/ ┌─────────────────────────────┐ │ src/api/ │ │ src/auth/ │ │ src/handlers/ │ └─────────────────────────────┘
## Подсказки и 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.