В CLI-инструменте Claude Code есть встроенная возможность гибкой настройки статусной строки (status line), расположенной в нижней части интерфейса. Команда /statusline позволяет выводить важную информацию о текущей сессии прямо во время работы и таким образом помочь вам экономить токены при работе с Claude Code.
Что это такое и зачем нужно?
Статусная строка в Claude Code — это интерактивная панель, которая запускает настроенный вами скрипт (на Bash, Python, Node.js и др.).
При каждом обновлении состояния (например, после ответа ассистента, переключения режима Vim или завершения сжатия контекста через /compact) Claude Code передает вашему скрипту актуальные JSON-данные через стандартный поток ввода (stdin). Скрипт обрабатывает этот JSON и выводит в терминал текстовую строку, которая и отображается внизу экрана.
Зачем это нужно:
- Контроль лимитов и контекста: Вы можете в реальном времени видеть, какой процент контекстного окна уже занят и сколько токенов осталось.
- Мониторинг расходов: Можно отслеживать ориентировочную стоимость текущей сессии в долларах США.
- Интеграция с Git: Наглядное отображение текущей ветки, количества измененных или подготовленных (staged) файлов прямо в интерфейсе Claude Code.
- Удобство навигации: Показ текущей рабочей директории, активной модели или включенного режима рассуждений (thinking).
Основные плюсы инструмента
- Автоматическая генерация: Необязательно писать скрипты парсинга вручную. Достаточно попросить Claude Code на человеческом языке настроить панель, и он сам создаст скрипт и пропишет настройки.
- Полная свобода кастомизации: Поскольку статус-бар работает на основе вашего скрипта, вы можете выводить туда абсолютно любые данные, включая системное время, погоду или статус сборки проекта.
- Поддержка интерактива: Вы можете использовать ANSI-цвета, выводить информацию в несколько строк, а также добавлять кликабельные гиперссылки (через escape-последовательности OSC 8).
- Локальный запуск: Работа скрипта статус-бара происходит локально на вашем компьютере и не расходует API-токены.
Как настроить статусную строку
Способ 1. Автоматический (рекомендуемый)
Самый простой способ — использовать команду /statusline с описанием того, что вы хотите видеть. Например:
/statusline show model name and context percentage with a progress bar
Claude Code самостоятельно сгенерирует скрипт в директории ~/.claude/ и обновит ваш файл конфигурации settings.json.
Способ 2. Вручную
Если вы хотите полностью контролировать логику, выполните следующие шаги:
1. Создайте скрипт (например, ~/.claude/statusline.sh), который принимает JSON из stdin, обрабатывает его (например, с помощью утилиты jq) и выводит нужную строку:
#!/bin/bash
# Читаем JSON из stdin
input=$(cat)
# Извлекаем нужные поля
MODEL=$(echo "$input" | jq -r '.model.display_name')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
# Выводим результат
echo "[$MODEL] | Контекст: ${PCT}%"
2. Сделайте скрипт исполняемым:
chmod +x ~/.claude/statusline.sh
3. Пропишите путь к скрипту в глобальном конфигурационном файле ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}
Полезные лайфхаки и особенности
- Обработка отсутствующих полей (fallback): Некоторые поля в JSON могут быть пустыми (
null) или отсутствовать вовсе (например,rate_limitsпоявляется только после первого запроса, а блокvim— при включенном режиме Vim). В скриптах рекомендуется использовать операторы по умолчанию (например,// 0вjqили условные конструкции), чтобы избежать ошибок парсинга. - Автоматическое обновление по таймеру: По умолчанию статус-бар обновляется только при наступлении определенных событий (ответ модели, изменение режима и т.д.). Если вы выводите туда динамические данные (например, время или внешние статусы процессов), добавьте параметр
"refreshInterval": 5вsettings.json, чтобы принудительно обновлять строку каждые N секунд. - Размер терминала: Обычные команды вроде
tput colsвнутри скрипта статус-бара работать не будут, так как Claude перехватывает вывод. Чтобы адаптировать строку под ширину экрана, считывайте переменные окружения$COLUMNSи$LINES, которые Claude Code передает в скрипт перед запуском. - Временное скрытие: Статус-бар автоматически скрывается во время отображения подсказок автодополнения, меню помощи или окон подтверждения прав (permissions), чтобы не загромождать интерфейс.
- Отключение: Если статусная строка больше не нужна, её можно убрать командой
/statusline clear(или/statusline delete), либо просто удалив блок"statusLine"из файлаsettings.json.

