Как я настроил status line в Claude Code
У Claude Code можно кастомизировать status line — строку состояния внизу интерфейса. Туда, по сути, можно вывести почти что угодно: всё зависит от того, что именно хочется держать перед глазами.
Мне был важен не “декор”, а вполне практичный набор: модель, текущий контекст и лимиты Claude.ai.
Почему именно это? Потому что, по моему внутреннему ощущению, контекст в районе 100k токенов — это уже близко к пределу рабочих умственных способностей Клода. После этой границы ответы нередко начинают проседать, и это обычно хороший момент, чтобы сделать /compact.
С лимитами всё ещё проще: их просто удобно видеть сразу, без лишних проверок.
Как это работает
Claude Code умеет на каждом обновлении status line запускать shell-команду, передавать ей JSON через stdin и отображать то, что команда печатает в stdout.
У меня это сделано через два файла:
- ~/.claude/statusline-command.sh — обёртка;
- ~/.claude/statusline.py — основная логика.
Python я использовал по очень приземлённой причине: на Windows в Git Bash jq обычно не установлен, а стандартный модуль json в Python есть почти всегда.
Как поставить
Относитесь к тексту ниже скорее как к инструкции для CC для команды /statusline
Нужно положить оба файла в ~/.claude/, а затем добавить в ~/.claude/settings.json:
{ "statusLine": { "type": "command", "command": "bash /c/Users//.claude/statusline-command.sh" }}
На Windows есть важный нюанс: python3 в PATH часто оказывается Microsoft Store stub’ом, который не запускает реальный интерпретатор. Поэтому в обёртке лучше сразу использовать py -3:
#!/usr/bin/env bashexec py -3"$(dirname "$0")/statusline.py"
После этого остаётся перезапустить Claude Code.
Какие поля я использую
Из JSON беру:
- model.display_name — имя модели;
- токены из input_tokens, cache_creation_input_tokens и cache_read_input_tokens;
- context_window.used_percentage — процент заполнения контекста;
- rate_limits.five_hour.used_percentage и resets_at — остаток и время сброса 5-часового лимита;
- rate_limits.seven_day.used_percentage — 7-дневный лимит.
Если каких-то полей нет, соответствующий блок просто не показывается.
Полезные мелочи
Я добавил простую цветовую индикацию:
- контекст жёлтый после 70%, красный после 90%;
- лимиты жёлтые при остатке 25% и меньше, красные — при 10% и меньше.
Есть и пара подводных камней:
- не стоит пихать Python в heredoc, иначе stdin с JSON не дойдёт до скрипта;
- на Windows лучше не надеяться на python/python3, а сразу использовать py -3;
- текущий активный skill или slash command в status line вывести нельзя — этих данных в JSON просто нет.
Зачем всё это
Для меня это не про “красиво настроить интерфейс”, а про то, чтобы Claude Code чуть лучше поддерживал рабочий ритм.
Status line можно наполнить чем угодно. Но мне хотелось видеть именно то, что помогает вовремя понять две вещи: не пора ли уже сделать /compact и сколько у меня ещё осталось по лимитам.
Дисклеймер: Текст выше это инструкция CC в интерпретации ChatGPT.