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

Claude Code

Claude Code 2.1.267 ограничивает уровень усилий

5 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →

В Claude Code 2.1.267 появилась настройка maxEffortLevel. Она задаёт потолок уровня усилий на всех провайдерах, включая Bedrock, Vertex и Foundry, и пользователь по-прежнему может выбрать уровень ниже. Потолок ставится либо на верхнем уровне настроек, либо отдельно для каждой модели в modelSettings. Так описан релиз от 9 сентября в заметках к версии на Github.

Самый большой блок релиза при этом посвящён кэшу промпта: больше десятка исправлений разбирают, почему сессия теряла закэшированное начало запроса и заодно выбрасывала ранние размышления модели.

Что именно ограничивает потолок

По объяснению Anthropic, уровень усилий определяет общий объём работы Claude над запросом: сколько модель думает, сколько файлов читает, сколько перепроверяет и как далеко заходит в многошаговой задаче, прежде чем вернуться к пользователю. На высоком уровне Claude успевает прочитать файлы, прогнать тесты и перепроверить себя. На низком он скорее попросит больше контекста, чем потратит токены на самостоятельные поиски.

Шкала состоит из пяти ступеней: low, medium, high, xhigh и max, переключаются они командой /effort. Claude Code запоминает выбранный уровень отдельно для каждой модели в modelSettings, поэтому при переключении между моделями у каждой остаётся свой. Если источники расходятся, сначала побеждает явный выбор (переменная окружения CLAUDE_CODE_EFFORT_LEVEL, флаг --effort или /effort), затем сохранённая настройка, затем значение по умолчанию для модели. Новый параметр работает поверх всей этой цепочки: подняться выше потолка нельзя, опуститься можно.

Названия уровней откалиброваны под каждую модель, и high у разных моделей означает разный объём размышлений. Если модель не поддерживает выбранный уровень, Claude Code берёт ближайший поддерживаемый ниже: xhigh на Opus 4.6 работает как high. Судя по всему, поэтому потолок и можно задать для каждой модели отдельно. Умолчания тоже разные: у Opus 5.5, Sonnet 5.5 и Haiku 5.5 это medium, у Opus 5, Fable 5 и Opus 4.8 high, у Opus 4.7 xhigh. Сам уровень max в документации Anthropic описан как склонный к излишним размышлениям, с убывающей отдачей, и его советуют сначала проверить, а уже потом включать массово.

С умолчаниями связано ещё одно исправление. Поле effort: во frontmatter пользовательских команд, навыков и субагентов игнорировалось на моделях, у которых уровень по умолчанию до сих пор зафиксирован: Opus 4.7, Opus 4.8 и Fable 5. Вероятно, команда с effort: low на Opus 4.7 до сих пор работала на его штатном xhigh.

Почему ломался кэш промпта

Кэш промпта хранит начало запроса: системный промпт, определения инструментов и ранние сообщения. Достаточно измениться одному байту в этом начале, и следующий запрос перечитывает весь контекст по полной цене. С версии 2.1.260 /cost и строка состояния называют вероятную причину промаха, в том числе смену описаний инструментов или системного промпта. В 2.1.267 закрыта часть таких причин, и почти все они связаны с тем, что набор инструментов переписывался посреди сессии:

  • смена модели через /model заново отправляла все определения инструментов; текст об атрибуции коммитов и PR теперь приходит заметкой в разговоре, и эта заметка обновляется при смене модели;
  • инструменты MCP и плагинов, подключённые посреди сессии без ToolSearch, добавлялись в общий список; поддерживаемые модели теперь получают их как отложенные определения;
  • фоновый воркер, ответвлённый от разговора, дописывал EnterWorktree в блок инструментов;
  • при возобновлении сессии набор инструментов переписывался, если коннектор MCP переподключался не в тот момент, что раньше, или если менялись инструменты коннектора claude.ai;
  • возобновлённая сессия заново рендерила описания инструментов вместо записанных, если в первом ходе вызывался инструмент, и переписывала ранние объявления инструментов MCP ещё до переподключения коннекторов;
  • разговор из режима -p, продолженный интерактивно, получал другой префикс системного промпта.

Вместе с кэшем пропадали и размышления. Когда MCP-сервер повторно присылал уже загруженный инструмент или встроенный инструмент перерисовывался, ранние рассуждения модели выбрасывались. Так же было, когда инструмент исчезал посреди разговора из-за отключения сервера или обновления.

Субагенты и сессии, запущенные с --system-prompt или --append-system-prompt, теперь записывают системный промпт и определения инструментов один раз и дальше их не перерендеривают. Для обратного случая добавлен флаг --system-prompt-snapshot off: системный промпт собирается заново на каждом запросе, а не берётся из записи разговора. Он нужен, когда вы правите текст промпта и хотите видеть эффект сразу; кэш в таком режиме, вероятно, будет промахиваться чаще.

Управляемые настройки и безопасность

Управляемые списки allowedHttpHookUrls, httpHookAllowedEnvVars и allowedChannelPlugins, если их не удавалось прочитать, пропускали всё подряд. Теперь при нечитаемой настройке они не пропускают ничего, то есть наконец ведут себя так, как и положено списку разрешений. Закрыта и дыра в маркетплейсах: путь записи с обратным слешем мог обойти проверку изоляции для загруженных маркетплейсов на macOS и Linux.

В шлюзе upstream с forward_user_identity возвращает ответ 429 как есть тому разработчику, чей email был передан, и не переключается на следующий upstream. Так продолжают действовать лимиты прокси на каждого пользователя. Self-hosted runner сообщает серверу о флаге --use-anthropic-git-proxy при регистрации и выводит предупреждение для каждой сессии, которая всё ещё клонирует репозиторий через устаревший git-прокси.

Остальные исправления для организаций касаются запуска и входа. Запланированные задачи Cowork в облаке падали на старте, если управляемые настройки организации требуют песочницу. Истёкшие учётные данные AWS или Google Cloud под хост-приложением вроде Claude Desktop давали десять повторов с общим «request failed», прежде чем появлялась ошибка о повторной аутентификации. А в /login на машинах, где обязателен вход через Claude apps gateway, Esc ничего не делал, теперь он закрывает диалог.

Длинные сессии и клиенты

При возобновлении сессии с транскриптом больше 5 МБ из перезагруженного разговора выпадали параллельные вызовы инструментов и вывод их хуков. Если сессию продолжали через -p --resume после /compact или другой слэш-команды, в неё вставлялся лишний ход «Continue from where you left off.». Оба сбоя исправлены, а первая отрисовка --resume для сессий с большим числом вызовов Bash стала быстрее.

В расширении для VS Code исправлено зависание хоста расширения на 100% CPU при ответвлении, правке раннего сообщения или откате в разговоре, если в сохранённом транскрипте есть циклическая ссылка на родителя. Кроме того, принятие правки в файле с окончаниями строк CRLF больше не падает с «String not found in file», а скриншот, вставленный в WSL2/WSLg, прикрепляется картинкой, а не сырыми байтами. Ещё одно исправление касается неуправляемых процессов ripgrep в больших рабочих папках и папках с обилием симлинков.

Последнее заметное исправление касается claude remote-control. Когда серверные учётные данные истекали, примерно через 30 дней после запуска, команда завершалась и обрывала все подключённые сессии. Теперь хост регистрируется заново и продолжает работу.

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

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

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