Когда закрылась предыдущая волна релизов, лобстер только-только выполз из десятидневной осады безопасности. Панцирь потолстел на слой. Клешни стали чуть быстрее. Но плавая по воде, он по-прежнему не особо смотрел на самого себя.
То, что делает 4.15, не эффектно, но направление ясное: дать лобстеру мозги получше, научить его взглянуть на ключи, которые у него в руках, и заодно тихо перенести память в другое место.
Эта версия не появится на hero-кадре ни одного продуктового скриншота. Но когда ты закончишь апдейт, пара дефолтов уже будет незаметно сдвинута—и если ты где-то в углу опирался на старое поведение, лучше узнать заранее.
Новые мозги: Opus 4.7
Выбор Anthropic по умолчанию теперь указывает на Claude Opus 4.7. До сих пор алиас opus заставлял тебя самому фиксировать конкретную версию в конфиге; теперь он прямо указывает на последний Opus. Дефолт через Claude CLI подтянулся.
Вместе с этим приходит понимание картинок в Opus 4.7—раньше этот кусок требовал отдельного плагина или внешнего vision-провайдера, а в этот раз он уже упакован прямо в ядро. Кидаешь скриншот в окно чата—и лобстер теперь читает его сам. Никаких обходных маршрутов.
Если ты вручную пинил провайдера на какой-нибудь старый Opus, этот апгрейд твой конфиг не тронет—явный пин остаётся в приоритете. Но если ты ехал на дефолтах, заметишь, что и скорость чата, и чтение картинок сдвинулись на ступеньку вперёд.
Выход для машин, которые не тянут
Одновременно с повышением Opus 4.7 появляется флаг, указывающий в обратную сторону: agents.defaults.experimental.localModelLean: true.
Он сделан для маленьких локальных моделей. Когда включаешь, из промпта автоматически выпадают тяжёлые инструменты, которые душат мелкие модели—browser, cron и компания. Контекстное окно становится на зарубку уже, нагрузка на инференс—полегче. Слово experimental в имени честное: всё ещё допиливается. Но если ты гоняешь у себя на машине 7B или 13B, этот флаг для тебя, возможно, интереснее, чем повышение Opus.
«Сильному—больше силы, слабому—меньше ноши»—это менее заметный стержень, проходящий через этот релиз.
Первый раз, когда ключи видны
Это то, о чём больше всего стоит рассказать в этой версии, и одновременно то, что проще всего пропустить.
В Control UI появилась новая карточка, Model Auth Status Card. То, что она делает, звучит обыденно: говорит тебе, в порядке ли OAuth-токен каждого привязанного провайдера, сколько ему осталось до истечения, и жали ли его недавно rate limits.
Звучит обыденно, но этой карточки раньше не было. Ты узнавал, что OAuth-токен просрочен, ровно в тот момент, когда провайдер возвращал 401; rate limits становились реальностью, когда ты застревал посреди прогона. Лобстер всё это время пользовался этими учётками, но не было единого места, где он—или ты—мог бы увидеть это состояние до того, как что-то сломается.
За карточкой стоит новый метод гейтвея: models.authStatus. Он идёт с кешем на 60 секунд, так что UI на самом деле не опрашивает провайдера раз в секунду. Когда несколько клиентов делят одного и того же лобстера, endpoint introspection провайдера тоже не бьётся в пол.
Вместе с карточкой приезжает пара фиксов на нижних слоях. Гонка credentials—перед повторным открытием сокета, pending-сохранения auth сливаются на диск первыми. Так переподключение больше не съедает аутентификацию, которая вот-вот должна была закрыться. Доступ к файлам workspace—все операции с путями теперь идут через общий хелпер fs-safe, а симлинки, указывающие на файлы из allowlist, отклоняются. Ни то, ни другое на видео для демо не снимешь, но и то, и другое укладывается в одну тему: у лобстера более чёткое представление о том, что он держит.
Memory тихо переезжает
Этот релиз меняет три вещи в слое memory. Вместе они складываются в шаг с направлением.
Первое, индексы memory в LanceDB теперь принимают удалённое объектное хранилище. До сих пор они жили только на локальном диске, а значит, смена машины заставляла перестраивать индекс, а совместная память между устройствами была практически мертва. В этой версии тот же LanceDB-индекс может жить на S3 (или на S3-совместимом хранилище), а локальный диск становится просто кешевым слоем. Для тех, у кого лобстер раскинут по нескольким машинам или кто кочует между ноутбуком и VPS, это ключевой шаг от «память привязана к машине» к «память привязана к аккаунту».
Второе, GitHub Copilot заходит в пул embedding-провайдеров. Поиску по memory нужна embedding-модель, чтобы векторизовать записи, и до сих пор ты выбирал между OpenAI, локальным sentence-transformers и горсткой остальных. Теперь опция одна добавилась: если у тебя уже есть подписка Copilot, поиск по memory может переиспользовать тот же канал аутентификации—со своим host-хелпером, который уважает удалённые override и refresh токена.
Третье—и единственное с ломающей кромкой—dreaming.storage.mode меняет дефолт с inline на separate.
Dreaming—это фаза, в которой лобстер в своё «свободное время» сжимает и перекомпоновывает память. Phase-блоки, которые этот процесс выдавал, до сих пор уходили прямо в memory-файл того же дня. Плюс: всё лежит на одной временной линии. Минус: memory-файл разбухал от сгенерированного контента, а диффы становились нечитаемыми.
Новый дефолт отправляет phase-блоки на отдельный путь: memory/dreaming/{phase}/YYYY-MM-DD.md—по файлу на фазу в день, оставляя исходный memory-файл только с тем, что ты написал руками. Апгрейд не перезаписывает твои существующие memory-файлы, но в следующий раз, когда dreaming запустится, вывод пойдёт в новое место. Если у тебя были скрипты, читавшие dreaming-контент из memory-файла, этим скриптам нужен новый путь.
Если хочешь сохранить старое поведение, верни эту настройку на inline явно.
Голос Google тоже заходит
Упакованный плагин Google получил поддержку Gemini TTS: выбор голоса, вывод в WAV и PCM-формат под телефонию. Если ты уже использовал Google Cloud для STT или других вызовов к Gemini, отдельно подключать TTS-провайдера больше не нужно—одна аутентификация проходит насквозь.
Не грандиозное изменение. Но кусок, который раньше ты сам собирал, теперь приезжает готовым к использованию.
То, что не попало в заголовок, но на что ты, скорее всего, наступал каждый день
Остальное на свой подзаголовок не тянет. Но вместе покрывает ощутимый кусок повседневных мелких зацепок:
- •404-ки чата Ollama починены. Если в ID твоей модели был префикс
ollama/, старая версия посылала этот префикс прямиком на сервер Ollama и получала 404. Новая версия снимает префикс до отправки запроса. - •Загрузка картинок в BlueBubbles снова совместима с Node 22+—заодно переписана логика ретраев для вебхука и дозагрузки вложений. Если ты на macOS используешь BlueBubbles как мост для iMessage, когда поднимаешь Node, поднимай и этот релиз.
- •Watchdog стриминга в TUI—если за 30 секунд не прилетает ни одной delta chat event, индикатор стриминга сбрасывается. Раньше, когда провайдер тихо разрывал стрим, TUI залипал в состоянии «streaming». Теперь нет.
- •Инвалидация snapshot skills—изменение
skills.*раньше оставляло уже открытые agent-сессии крутиться со старым списком skills; чтобы увидеть новые, требовался рестарт. Теперь любое изменение конфига сносит закешированный snapshot. - •Stream guard для неизвестных инструментов, по умолчанию включён—раньше это была опт-ин защита: когда модель галлюцинирует имя несуществующего инструмента, guard не даёт «Tool X not found» уехать в бесконечный цикл. Теперь включено по умолчанию, без отдельной настройки.
- •Резолвинг путей—пути
~вне workspace теперь резолвятся относительно home операционки, а неOPENCLAW_HOME. Когда эти две директории расходились, один и тот же~/foo.txtмог указывать в разные места между edit и write; фикс приводит их в согласие. - •Выравнивание prompt cache—в прогонах task-scoped adapter входящий chat ID внутри system prompt теперь стабилизирован, поэтому несколько вызовов внутри одной task имеют более высокий процент попаданий в prompt cache.
- •Passthrough результатов MEDIA—раньше passthrough
MEDIA:от доверенных локальных инструментов сопоставлялся с именами встроенных инструментов нестрого. Теперь сопоставление точное, а клиентские инструменты, у которых нормализованное имя сталкивается со встроенным, отклоняются на входе. Коллизия имён больше не чёрный ход. - •Восстановление replay—ошибка
401 input item ID does not belong to this connection, возвращённая провайдером, теперь классифицируется как «replay-invalid», с корректной подсказкой session reset, а не ретраится как обычный 401 до посинения.
Дефолты, которые сдвинулись
В этом релизе переехала пара дефолтов; стоит выложить их рядом, чтобы свериться:
- •
dreaming.storage.mode:inline→separate(phase-блоки оседают вmemory/dreaming/{phase}/YYYY-MM-DD.md) - •Stream guard для неизвестных инструментов: включён по умолчанию (было опт-ин)
- •Упакованные голосовые провайдеры Microsoft / ElevenLabs: включены по умолчанию
- •Выбор Anthropic по умолчанию: указывает на Opus 4.7
- •Дефолт Claude CLI: выровнен на Opus 4.7
Первые два—это изменения поведения. Если ты опирался на старое поведение, до апгрейда явно переопредели его в config.
В одну строчку
Если из этого поста ты унесёшь одну вещь: запусти openclaw update и открой Control UI, чтобы взглянуть на новую Model Auth Status Card. Эта карточка расскажет тебе то, чего ты раньше не знал—какие именно ключи сейчас держит лобстер, какой из них ближе всего к истечению, и какому в последнее время сдавили горло rate limits.
Если ты тяжёлый пользователь dreaming, или если когда-нибудь перелистывал сырой текст phase-блоков внутри своих memory-файлов—обрати внимание на смену дефолта у dreaming.storage.mode. Новый вывод dreaming идёт в поддиректорию memory/dreaming/. В первый раз, когда dreaming запустится после апгрейда, один взгляд на эту папку покажет, как всё теперь устроено.