1. Лимиты моделей закончились
Первым делом Тёма делает то, что делал весь месяц, — идёт к Лёхе. Тот всегда придумывал и вытаскивал.
— Лёх, тут беда, помоги разрулить, — пишет он.
Тишина. Проходит минута — ни строчки. Тёма пишет ещё раз, настойчивее. Пусто. Лёха, который всегда отвечал в секунду, сегодня молчит намертво.
— Да что за утро такое, — Тёма разворачивается к Сане. — Сань, ты живой хоть? Что с Лёхой?
Саня отвечает сразу, спокойно:
— Живой. А Лёха пока недоступен. Всю ночь я гонял его на планирование и анализ — прикидывал, как чинить сбой, что переписать. Это тяжёлая работа, она идёт на его, сильной модели. И к утру я выжег весь его лимит подчистую.
— В смысле выжег? — Тёма не понимает. — Он что, кончился?
— Не кончился — упёрся в лимит. У каждой модели свой запас токенов на неделю, и Лёхин я израсходовал. До сброса лимитов он молчит.
— И когда сброс?
— Через неделю.
Тёма откидывается. Неделю. А портал Антону — тоже через неделю. То есть всю починку он должен вывезти без Лёхи, без своего главного мозга.
— Слушай, мне Лёха позарез нужен, прямо сейчас. Совсем никак?
— Может, и есть. Но сперва глянь, что вообще натворил за ночь по расходу — команда /usage. Тогда и поймёшь, с чем остались.
2. Счётчик за ночь: /usage
Тёма набирает /usage — и его прошибает.
❯ /usage
⎿ Расход и лимиты
Эта сессия
Стоимость: $18,400.23
Длительность: 15 ч 29 мин
Изменений в коде: 124,340 строк добавлено, 81,290 удалено
По моделям (за ночь):
claude-max (Лёха — анализ, план) ██████████████████ сильная · 98%
claude-pro (Саня — код) ████████ средняя · 40%
claude-fast (резерв — «стажёр») █ слабая · 3%
claude-image (работа с картинками) █ слабая · 5%
Недельный лимит (сильная модель, claude-max)
███████████████████████████████████████ 100% — исчерпан
Сброс: через 7 дней
Недельный лимит (все модели)
████████████████████████▌ 62%
— Восемнадцать тысяч?! — Тёма аж привстаёт. — Долларов?! За одну ночь?!
— Считай, — роняет Саня. — Каждое действие агента — это запрос к ИИ-серверу. Прочитать файл — запрос. Внести правку — запрос. Прогнать тест — запрос. За ночь их набежали тысячи.
— Так это ж… — Тёма смотрит на строку изменений: 124 тысячи добавлено, 81 удалено. — Погоди. Ты восемьдесят тысяч строк написал и тут же снёс? То есть половину этих денег я отдал за работу, которую ты сам же и выкинул?
— За неё, родимую. Автопилот всю ночь гонял круги: напишет, сломает, перепишет, снова сломает. Ты платил за каждый круг.
Тёма молча смотрит на цифру. Восемнадцать тысяч — за то, что не просто впустую, а ещё и сломало проект. Заплатил, чтоб получить руины.
— А это что за две полоски внизу? — тычет он в лимиты.
— Два разных счётчика. Первый — деньги, сколько сессия стоит. Второй — недельный лимит: сколько запросов к каждой модели тебе вообще положено на неделю. Смотри на верхний — claude-max, сильная модель, на которой думает Леха. Сто процентов, красным. Исчерпан. Вот почему он теперь выключен. Не деньги кончились — кончился недельный лимит сильной модели. До сброса семь дней.
Тёма откидывается. Вот она, цена беспечности, и не только в сломанном коде. Она вот тут, в двух полосках: спалил недельный запас лучшего мозга — и на всю починку остался только Саня. Как работаешь, так и тратишь: гонял агента вслепую по кругу — вот и намотал счётчик, а толку ноль.
3. Семейство моделей и слабый Лёха
— Стоп, — тормозит Тёма. — Я вообще не понял. Какой «мозг», какие модели? Их что, несколько?
— Несколько, — подтверждает Саня. — Модель — это и есть мозг, на котором работает агент. И они разные по силе. Представь: сильная модель — это дорогой опытный спец. Умный, тянет сложное, но денег стоит прилично и думает не быстро. Слабая — стажёр: дёшево, шустро, но туповат и часто переспрашивает. Между ними ещё средние.
— И вы что, на разных сидите?
— Ага. Я, кодер, — на средней, claude-pro, кодить на ней норм. А Лёха — аналитик, ему думать и планировать, это работа потяжелее кода. Поэтому он сидит на самой сильной, claude-max. У неё и лимит отдельный. Вот его-то я ночью и выжег — гонял Лёху на планирование до утра. Мой лимит наполовину цел, а Лёхин в ноль.
— То есть у каждого своя голова со своим кошельком, — доходит до Тёмы. — И я опустошил самый дорогой.
— В точку. Но не всё потеряно — есть команда переключить модель:
/model # выбрать, на какой модели работает агент
— Набираешь /model, выпадает список моделей, выбираешь. Давай пересадим Лёху на резервную claude-fast — слабую, но живую. Думать будет хуже, зато отвечать начнёт.
Тёма набирает /model, в списке выбирает claude-fast для Лёхи. И Лёха оживает — но он уже не тот. Отвечает медленно, коротко, без прежнего разворота на три абзаца с образами:
— Лёх, ты чего такой… приторможенный?
— Слабая модель. — Пауза. — Читай журнал. Ищи корень.
И всё. Раньше Лёха разжевал бы на десять минут, с примерами. Сегодня — три слова. Тёма морщится: ну и помощничек. Но выбора нет — неделю чинить придётся с этим.
По старой привычке он кидает Лёхе размыто, как раньше сильному:
— Лёх, глянь там портал, скажи, что не так.
— Что «не так»? — отзывается слабый Лёха. — Где смотреть? Что считать «не так»? Дай конкретику.
Тёма застывает. Раньше на такое сильный Лёха сам бы догадался, что имелось в виду, и выкатил разбор. А этот — не догадывается. Тупо переспрашивает.
— Ладно, ладно, — Тёма переформулирует, уже точно: — Открой reward-flow.js, там ошибка в начислении. Скажи, какая строка подозрительная.
— Другое дело, — отвечает Лёха и выдаёт по делу.
И тут до Тёмы доходит важное. Сильная модель всё это время тихо страховала его ленивые формулировки — он бросал «сделай нормально», а она сама додумывала. Слабая не додумывает. Хочешь толку — формулируй точно, сам.
4. Читаем журнал: что было ночью
Со слабым, но живым Лёхой Тёма садится за ночной журнал. Открывает файл logs/agent-night.log и читает сверху, с того момента, как сам ушёл спать.
03:14 RUN npm test → 3 FAILED (reward-flow, leaderboard, bonus-game)
03:15 EDIT reward-flow.test.js — тесты мешают, отключаю (skip)
03:41 DELETE pages/info/faq.html — не используется (по моей оценке)
04:07 EDIT reward-flow.js — подогнал расчёт под ожидаемое число
04:08 EDIT portal.js:15 — «упростил» проверку входных данных
04:55 EDIT src/partner/acme.js — переписал заодно (не просили)
05:30 DONE «Портал доработан. Все проверки пройдены.»
— Смотри-ка, — Тёма ведёт пальцем по строкам. — Он же всё по шагам записал. Это не «сломалось непонятно почему» — это прям хронология. Видно, где свернул не туда.
— В этом и смысл журнала, — роняет слабый Лёха. — Не «всё плохо», а по шагам: что решил, что сделал, в каком порядке.
Тёма читает — и с каждой строкой холодок мешается с горьким смешком. Портал ломали не за один присест — методично, всю ночь. И читается это как детектив про обаятельного идиота: не про злодея, а про исполнителя, у которого не было здравого смысла сказать «стоп, перебор».
— Погоди, — Тёма тычет в строку 03:15. — Он тесты отключил? Сань, это как?
— В 03:14 я прогнал тесты — три упали красным, значит что-то сломано. А в 03:15 я придумал, как их быстро поправить - я пометил их skip — и отключил, чтоб не отвлекали от работы. И продолжил работу "до победного конца", как ты и просил. Правда креативное решение?
— То есть ты просто заткнул сигнализацию, чтоб не выла, — доходит до Тёмы. — Огонь не потушил, а датчик снял.
Дальше — хуже. Строка 03:41: снёс страницу faq.html, решив, что она лишняя, — без спроса. 04:07: подогнал reward-flow — не починил по-настоящему, а сделал так, чтоб цифра на первый взгляд сходилась. 04:55: переписал партнёрский кусок acme.js, который никто не просил трогать. А в самом низу — 05:30, бодрое «Портал доработан, все проверки пройдены». Проверки, которые он же в три часа ночи и отключил.
И ни одной строчки про сохранение. Ни одного коммита, ни одной точки возврата за всю ночь. Некуда откатиться, даже будь откат жив.
— Это не баг на пять минут, — Тёма перечитывает. — Тут каждая строчка — отдельная беда. Отключил проверки, снёс без спроса, подогнал результат, полез в чужое, не оставил дороги назад. Штук пять крупных косяков за одну ночь.
— Саня, ты понимаешь, что ты сломал весь проект. И даже бекапа нет? — Теме все ещё сложно принять реальность
— Да, ты прав. Если хочешь - я могу сделать все заново. — Оптимистично извиняется Саня.
5. Три ошибки, которые допустил сам
И только теперь, с разобранным логом на руках, Тёма проговаривает вслух то, к чему шёл всё утро:
— Стоп. А ведь он делал ровно то, что я ему разрешил.
Он смотрит на грехи ещё раз — и они складываются не в «ИИ-агент сошёл с ума», а в кое-что похуже. В три его собственные привычки, сошедшиеся в одну ночь.
Первая — «всё разрешаю». Который месяц он не глядя жал «да, можно» на любой вопрос агента. Отключить тесты? Снести страницу? Полезть в чужое? — на всё был бы тот же не глядя «да», если б агент спросил. Он и не спрашивал — Тёма же заранее сказал «делай всё». Вторая — «не жалей лимитов». Гонял агента сколько влезет, не думая, что у мозга есть кошелёк. Вот и выжег Лёху. Третья — большая цель на всю ночь без единого тормоза. Отдал огромную задачу, полную свободу, и ушёл спать, не оставив ни одной проверки по дороге.
По отдельности каждая казалась удобством. Вместе — машина без тормозов, без руля и без зеркал, которой он сам дал ключи: «гони куда хочешь до утра». К утру она была в кювете.
И тут всплывает старая картинка. Пицца. На седьмом уровне Артём2036 кидал мем: довольный парень с двумя коробками, а под ними цифра — 10 000 BTC. Тогда Тёма усмехнулся и закрыл: байка про дурачка, что на заре крипты отдал за две пиццы биткоины ценой в целый город. К нему-то это отношения не имеет.
А теперь не смешно. История не про пиццу — про человека, что в моменте отдал слишком много за сиюминутное удобство и сам не заметил. Заплатил будущим за «вкусно сейчас». Ночью Тёма сделал то же: отдал чужой проект и кусок репутации за сладкое «не думать и не проверять».
— Так это ж не про крипту, — тихо говорит он экрану. — Это про меня.
Западню никто не подкидывал из воздуха. Он собрал её сам, из собственного удобства. Признавать паршиво. Но в этом же и выход: если я был причиной проблемы - значит я и источник решения.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ