Перейти к содержанию
Claude News

Оформление

Оформление

Claude Code

Claude Code 2.1.301 не будет ждать далёкий сброс лимита

5 мин чтения

Режим автоповторов без присмотра нужен, чтобы агент пережидал временные сбои. Лимит использования бывает не таким уж временным: до сброса может оставаться столько, что ждать нет смысла, и в Claude Code 2.1.301 эти два случая наконец разделили.

Новую переменную CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS описывает список изменений релиза на GitHub. Если в режиме CLAUDE_CODE_RETRY_WATCHDOG запрос упирается в лимит, а сброс слишком далеко, запрос завершается и не висит в ожидании. По данным трекера Claudeupdates, в релизе 51 изменение, так что ниже мы разбираем и остальное заметное.

Сторож автоповторов получил порог ожидания

У сторожа своя короткая история. Как говорится в issue к документации на GitHub, версия 2.1.186 ограничила CLAUDE_CODE_MAX_RETRIES пятнадцатью попытками, а в заметках к ней советовали для сессий без присмотра использовать CLAUDE_CODE_RETRY_WATCHDOG. В той же issue отмечено, что сам сторож в документации описан не был. Там же цитируется официальная страница ошибок: временные сбои (ошибки сервера, перегрузка, таймауты, временные 429, оборванные соединения) Claude Code повторяет до 10 раз с экспоненциальной паузой, и 10 стоит в CLAUDE_CODE_MAX_RETRIES по умолчанию.

Как устроены паузы, подробнее расписано в стороннем разборе Helmcode. По их описанию, базовая задержка 500 мс удваивается с каждой попыткой и упирается в потолок 5 минут, для ответов 429 берётся заголовок retry-after, если он есть, а счётчик попыток ведётся на каждый вызов API отдельно. Там же описан внутренний режим для долгих автоматических задач: бесконечные повторы, сигнал «я жив» раз в 30 секунд и жёсткий потолок в 6 часов. Разбор сторонний и мог устареть относительно сторожа и новой переменной.

Почему сброс может оказаться далеко, объясняет блог Ofox. По их данным, у подписки два независимых лимита: скользящее пятичасовое окно, которое начинается с первого сообщения, и недельный потолок на 7 дней, который можно выбрать целиком при почти пустой полоске сессии. Ofox отдельно пишет, что внутри сессии недельный лимит раньше срока не вернуть, и называет автоподтверждение и фоновые циклы частой причиной ночных скачков расхода. Там же различают стену «You've hit your usage limit» на Pro и Max и ошибку 429 на API-ключе: это разные отказы, и лечатся они по-разному.

Агент, который ночью упёрся в недельный лимит, дальше просто держал процесс открытым. Новая переменная задаёт в миллисекундах, сколько ожидания считать разумным.

Было → стало

  • Сторож автоповторов у лимита: ждал сброса, каким бы далёким он ни был; стало: при слишком далёком сбросе запрос завершается по порогу из CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS.
  • События tool_decision в OpenTelemetry: решение классификатора авто-режима нельзя было отличить от сработавшего правила разрешений; стало: есть поля classifier_verdict и permission_mode, а при OTEL_LOG_TOOL_DETAILS=1 ещё и classifier_category с именем встроенного правила, на котором классификатор заблокировал вызов.
  • Worktree, созданный хуком WorktreeCreate: выход из сессии удалял его без вопроса, даже если там могли лежать неотправленные коммиты; исправлено.
  • Алиасы fable и best на Anthropic API: падали с ошибкой, если новейшая модель Fable недоступна организации; стало: Claude Code один раз повторяет запрос на предыдущей Fable.
  • Переход на модель с меньшим окном контекста: мог потратить кредиты на пересказ силами прежней модели без спроса; стало: слишком длинный диалог сначала сжимает прежняя модель, а случай с тратой без вопроса исправлен.
  • Grep и Glob: если программа поиска падала до первых результатов, они сообщали «совпадений нет»; стало: возвращают ошибку о сбое поиска.
  • Полный диск: мешал обновить вход и выдавал сбивающее «Please run /login»; стало: ошибка называет диск и советует удалить файлы.
  • Read: читал как текст двоичные .xlsm, .parquet, .epub и .heic; исправлено.
  • Аргументы скиллов и команд: при очень многих или очень длинных именах вызов подвисал на секунды; стало: подставляются только первые 64 имени, каждое длиной до 64 символов.
  • Vim-режим: перехода % не было; стало: он прыгает к парной скобке, сам по себе или вместе с d, c и y. Поле ответа AskUserQuestion получило NORMAL-режим, и Esc отменяет ответ только из него.

Пара исправлений касается тех, кто гоняет агентов через инфраструктуру. За LLM-шлюзом, который в ответах называет не ту модель, что запрошена, диалог сжимался раз за разом, причём на модели, которую вы не выбирали. Агенты рабочих процессов иногда пропускали свой шаг, прочитав служебную пометку о том, что текст задачи не несёт полномочий пользователя, и прогон всё равно рапортовал об успехе. Оба случая исправлены.

Для модов поменялась семантика: обработчик .catch у хука срабатывает только когда хук бросил исключение или вышел по таймауту, а $.env.set возвращает {} при успешной записи и { deny } с причиной, если запись не состоялась. В VS Code, десктопном и мобильном приложениях дерево над диалогом вопроса вмещает Markdown и до 48 строк, в терминале остаётся 12 простых строк. В панели VS Code появился рендер LaTeX, а у баннера лимита на Pro и Max в VS Code и JetBrains добавилась ссылка «Get more usage».

Телеметрия продолжает тему последних дней. 14 октября мы писали, что Claude API научился слать трейсы в систему мониторинга, и в 2.1.301 скилл claude-api получил инструкции по трейсингу OpenTelemetry, включая настройку точек назначения через CLI ant. Днём раньше версия 2.1.300 разделила в событии api_request запись кэша на пятиминутную и часовую.

Чего мы не знаем

Значение новой переменной по умолчанию в списке изменений не названо, как и то, что именно считается «слишком далёким» сбросом, если переменную не задать. Непонятно и другое: различает ли сторож пятичасовое окно и недельный потолок, или для него это один и тот же лимит с разным временем до сброса. Описан ли CLAUDE_CODE_RETRY_WATCHDOG в документации сейчас, мы по имеющимся материалам подтвердить не можем; issue указывала, что не был.

Порог стоило бы описывать вместе с самим режимом. Пока о нём известно меньше, чем о тех 64 символах на имя аргумента, а ведь от него зависит, будет ли ночной прогон стоять до утра.

Если у вас есть сессии с CLAUDE_CODE_RETRY_WATCHDOG, задайте порог явно, в миллисекундах, под длину вашего окна, и проверьте, как ваш планировщик реагирует на запрос, завершённый сторожем. Тем, кто разбирает tool_decision в своём коллекторе, стоит добавить classifier_verdict и permission_mode в схему до того, как события с ними начнут приходить.

Anthropic

Проверяющие из METR сидят в Anthropic, а вето у неё нет

Шесть сотрудников METR работают внутри Anthropic с доступом почти как у её собственных команд по рискам. И запретить им публиковать выводы Anthropic не может. Вы бы пустили внешних проверяющих к своим внутренним системам или ограничились бы отчётами?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.