Как я настроил status line в Claude Code

У Claude Code можно кастомизировать status line — строку состояния внизу интерфейса. Туда, по сути, можно вывести почти что угодно: всё зависит от того, что именно хочется держать перед глазами.

Мне был важен не “декор”, а вполне практичный набор: модель, текущий контекст и лимиты Claude.ai.

Как я настроил status line в Claude Code

Почему именно это? Потому что, по моему внутреннему ощущению, контекст в районе 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.

4
2 комментария