Коробка передач для Claude Code: как терминал становится API
Увидел в ленте рычаг КПП, который переключает модели в Claude Code. Аппка оказалась закрытой, платной и только под мак. Разобрал механику, оказалось там одна команда tmux, и собрал свою: опенсорс, без зависимостей, работает везде. Разбираем, как она устроена.
Рилс, с которого всё началось
Листаю ленту и вижу красоту: у человека на экране висит пятиступенчатая кулиса, как в машине. Он тянет рычаг, рычаг клацает в паз, и Claude Code в терминале переключается с Haiku на Opus. Хочешь думать быстро и дёшево, воткнул первую. Нужна вся мощь, кидаешь на пятую.
Штука бесполезно-прекрасная, то есть ровно такая, какую хочется себе немедленно. Начал копать, что это.
Находка и здоровая паранойя
Нашлось быстро: аппка Model Shift, «a stick shift for Claude Code». И тут восторг начал остывать, по пунктам:
- Кода нет. Исходники закрыты, репозитория нет, аудита нет. Что внутри бинарника, знает только автор.
- Платно. За рычажок просят денег.
- Только macOS на Apple Silicon.
И вот тут главный для меня момент. Эта штука по определению умеет печатать команды в мой терминал. В тот самый, где у меня ключи, доступы и вообще вся жизнь. Ставить туда закрытый бинарник от незнакомого разработчика? Я не говорю, что там что-то плохое, скорее всего там всё честно. Но проверить это нельзя, а «поверь на слово» в такой позиции не работает.
Чем ближе инструмент к твоему терминалу, ключам и файлам, тем выше планка доверия. Открытый код эту планку берёт по определению: сначала читаешь, потом запускаешь. Закрытый должен чем-то компенсировать, и «красивый лендинг» компенсацией не считается.
Дальше случилось то, что обычно и случается: я полез разбираться, как оно вообще работает. И выяснил, что вся магия сводится к одной команде.
Механика: терминал сам себе API
У Claude Code нет API «переключи модель снаружи». И оказалось, что он не нужен. Смотри, какой фокус.
Model Shift просит запускать Claude Code внутри tmux. Это терминальный мультиплексор, который держит сессии живыми и, ключевое для нас, умеет управляться снаружи. Любая программа может попросить tmux «напечатай вот это в такую-то панель»:
tmux send-keys -t %3 "/model opus" EnterВсё. Это буквально то же самое, что набрать /model opus руками и нажать Enter. Никаких хуков внутрь Claude Code, никаких патчей, никакого перехвата трафика. Просто робот, который печатает за тебя.
Когда я это понял, вопрос «покупать ли закрытый бинарник» отпал сам собой. Такое пишется за вечер. Так появился ituzov-gearbox: та же радость, но опенсорс, бесплатно и работает везде, где есть tmux, то есть на маке, линуксе и в WSL на винде. Внутри тысяча строк ванильного JS и ноль зависимостей: прочтёшь за вечер, как я и хотел.
Дальше самое интересное: три приёма из его кода, которые пригодятся тебе далеко за пределами игрушечных коробок: как читать экран терминала вместо API, как сделать честную физику без движка и как собрать настольную аппку сразу под все платформы.
Дальше для зарегистрированных
Бесплатная регистрация открывает статью целиком. Это займёт минуту.