PunchOluremi Tinubu seeks Christian unity, as CAN honours Obasanjo, Gowon, others at 50InquirerRed tide warning up over Samar’s Irong-Irong BayESPN DeportesChelsea consiguió tres puntos ante un Everton que no dejó de lucharCNN TürkTürkiye’de elektrikli araç şarj tüketimi eylülde yüzde 14,6 azaldıThe Jerusalem PostBritain’s lesson for Israel: The West Bank settlement policy has consequences - opinionESPNDropping your QB? Six fantasy replacements to pick up ASAP for Week 6Bollywood HungamaCountry Delight names Rishab Shetty as its new brand ambassadorRTP DesportoOuro renovado. Iúri Leitão volta a sagrar-se campeão mundial de ciclismo de pistaZDF heuteEntdecken Sie das ZDF-NachrichtenstudioLa PresseMontréal | Un homme de 49 ans manque à l’appelХабрShared memory в ROS 2 Humble: CycloneDDS + iceoryx на практикеScreen RantJames Cameron Reacts To Avengers: Endgame Box Office Record With Epic Image
The Daily Newsstand · Free, Always
Saturday, October 17, 2026

Anthropic забанила мой Claude и отдала в экспорте только телефон. Теперь мне отвечает Grok в парике

Translate

Захожу пару недель назад в Claude, а меня встречает красная плашка: аккаунт отключён за нарушение Usage Policy. Какой пункт и в каком чате, не сказано. Я решил, что это недоразумение, и написал апелляцию, спокойно и по делу.

Ответ пришёл быстро и уложился в одну мысль: восстанавливать не будем, вы нарушили Usage Policy. Что именно я нарушил, так и осталось тайной. Чуть позже в ту же почту упало автоматическое письмо: моя апелляция в работе. Так они теперь и лежат рядом, отказ и обещание разобраться. Причём отказ пришёл первым.

Ладно, подумал я, хотя бы заберу свои чаты. Экспорт у забаненных работает, это написано в справке. Там же мелким шрифтом добавлено, что состав архива могут ограничить. Слово “ограничить” там понимают широко. Мне пришёл один файл:

[{“uuid”: “2078d5e2-…”, “full_name”: “Эльдар”, “email_address”: “…”, “verified_phone_number”: “+998…”}]

Это весь архив. Ни одного чата, ни одного проекта, ни строчки кода. Зато мне бережно вернули имя, почту и телефон. Видимо, на случай, если я забуду, как меня зовут и куда приходят их отказы. Из всего, что я им написал, самым ценным они сочли номер, который я вводил при регистрации.

Что удалось вытащить

Спасла паранойя. 12 августа я зачем-то снял бэкап чатов, так что потерялось только то, что набежало после, примерно полтора месяца. Сначала я надеялся, что десктопное приложение держит копию у себя, и перерыл AppData, IndexedDB и Local Storage. Набралось меньше мегабайта, и это были одни настройки. Чаты жили только у них на сервере.

Зато в WSL нашёлся снимок ~/.claude, оставшийся от Claude Code 2.1.238, а в нём транскрипты CLI-сессий. Там лежали 35 сессий, где лежала моя последняя работа с моделью. Ещё 1,2 ГБ занимали субагенты, до них руки не дошли. Да и не очень-то они и нужны, откровенно говоря.

Claude Code в парике

Claude Code я поначалу не бросил, слишком к нему привык. В Anthropic ходить он больше не мог, поэтому ходил в мой прокси. В клиенте есть режим Developer, и можно подключить свой LiteLLM прокси. Тут выяснилось, что клиент проверяет имя модели и всё, что на Claude не похоже, разворачивает:

Doesn’t look like an Anthropic model: expected a gateway model route referencing an Anthropic model (e.g. claude-sonnet-4-5, anthropic/claude-*)

Пришлось завести в LiteLLM маршрут anthropic/claude-local, который внутри перенаправлял запросы на grok-4.7. Claude Code принял этот маршрут: для клиента имя модели оказалось достаточно похожим на Anthropic-модель. Какая модель стоит за маршрутом, ему уже не так важно.

Так Grok и устроился в Anthropic: без собеседования, по поддельному пропуску.

Следом я упёрся в контекст. Модель принимает 500k, а приложение упорно показывает 200k. Я пропатчил константы прямо в claude.exe, дважды перезапустил, и счётчик даже не шелохнулся: для всех имён вида claude-* потолок зашит в код.

Сработала переменная CLAUDE_CODE_MAX_CONTEXT_TOKENS=500000 в settings.json, но только для имён, которые не начинаются с claude-*.

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

Оставалось заставить найденные сессии открываться. Сначала они показывались пустыми, хотя в jsonl были сотни реплик. Оказалось, путь к файлу записан как \mnt\c…: гибрид Linux и Windows, который Windows открыть не может. Я поправил пути и перевёл сессии на Ubuntu через wslConfig. После этого приложение стало искать разговоры внутри WSL, не находило их и плодило пустышки с новыми id.

В итоге я разложил транскрипты по ~/.claude/projects прямо в Ubuntu, а там, где id успели смениться, подложил оригинал под новое имя. Заодно WSL подкинул своё.

Переезд к себе

Заводить новый аккаунт и ждать следующей плашки не хотелось, поэтому наигравшись с Claude Code и с Гроком, мимикрирующим под Оpus, я решил переехать на свою хомлабу.

Open WebUI крутится на сервере в домашней сети, рядом с Ollama, которая у меня используется для распознавания котов и ежей сервером Frigate. Кстати, если интересно, про него могу рассказать отдельно.

История лежит в Postgres, вложения на диске. Отключить мне аккаунт тут могут разве что выбитые автоматы, но на такой случай у меня есть ИБП и генератор на 16 кВт.

Бэкап до 12 августа пришлось заливать вручную, штатный импорт не принимает файлы, экспортированные из бекапа. Получилась папка Claude migrated с подпапками chats, projects и code, туда же легли сессии из снимка WSL.

Всё, что было на диске, переехало. Дыра после 12-го августа так и осталась дырой.

Раз уж взялся, перетащил и ChatGPT: 283 чата и 4783 сообщения, с родными датами. С проектами OpenAI поступает изящно. В выгрузке только внутренние id без названий, так что названия я вычитывал из системных промптов чатов.

Память ChatGPT в экспорт тоже не кладёт. Я просто попросил его выгрузить всё, что он обо мне помнит, и сверил с тем, что уже есть в Open WebUI. Почти всё совпало, причём часть я когда-то сам исправлял.

Смешнее всего было про сервер моего пет проекта в Яндекс Облаке: по версии ChatGPT он стоил 3000 долларов в месяц, а на деле около семи тысяч рублей. Эту простыню переносить в память я не стал.

Докручиваем настройки OWUI

Дальше пошло уже то, ради чего вообще стоило переезжать. Провайдеров несколько, и перед каждым стоит свой Headroom: наружу уходит сжатый промпт, а в базе остаётся полный чат. Хотелось поставить перед ними LiteLLM, одну точку входа и инструмент, который дочитывает вырезанную середину. Не вышло. Open WebUI жёстко шлёт stream:true , а Headroom на стриме инструмент не вставляет. В 0.40.0 это не починили, Issue 3815 до сих пор открыт. Четыре прокси так и остались четырьмя.

Дочитывать всё равно хотелось, поэтому инструмент повесил сам, отдельным MCP рядом с каждым прокси. Модель видит маркер <<ccr:hash>> и сама вызывает headroom_retrieve. Сразу вылез баг: retrieve отдавал тот же маркер, который только что раскрыл.

Exclude в настройках Headroom прокси ловил голое имя headroom_retrieve, а Open WebUI зовёт его с префиксом, hr-grok_headroom_retrieve.

Проще говоря, headroom сжимал ответ своего же инструмента retrieve, хотя не должен был.

Дописал в прокси HEADROOM_EXCLUDE_TOOLS=*headroom_retrieve, а в системный промпт моделей вписал уже префиксное имя: в спеке MCP оно голое, и модель его иначе не узнает.

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

При этом собственное хранилище не означает, что модель работает локально. Если запрос уходит внешнему провайдеру, он получает отправленный ему контекст. Моя история и вложения при этом остаются у меня, а провайдера и модель можно менять независимо от интерфейса.

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

Hermes

Через какое-то время я поймал себя на том, что держу отдельное приложение Claude Code из чистой ностальгии. Оно ходит в мой прокси, делает вид, что говорит с Anthropic, и требует, чтобы модель носила чужое имя. Тогда я поставил агента Hermes и подключил его прямо в Open WebUI. Теперь задачу агенту я отдаю из того же чата, где лежит вся история, без отдельной программы и отдельного логина. Claude Code после этого стал не нужен, жалел я о нём минут пять.

Весь стек теперь опенсорсный: Open WebUI, Postgres, Headroom и Hermes. Чужая в нём только модель, и её можно поменять без нового переезда.

Если собрать всё в одну картинку, получится вот что

Если собрать всё в одну картинку, получится вот что

Следующая цель — единая точка маршрутизации между провайдерами с переключением при ошибках и исчерпании доступных лимитов. Хочется, чтобы смена модели не превращалась в очередной переезд. Пока это в планах.

За что забанили

Есть только подозрения. Claude я гонял строго через Proxifier и через прокси, которые админю сам. Думаю, бан прилетел после покупки подписки Max. Она была нужна, чтобы переписать фронт своего пет-проекта, и я её использовал довольно активно. Антропикам, похоже, не понравилось, что человек купил Max и правда на нём работает. Но это догадки. В экспорте причины нет, там только мой телефон. Если надумают объяснить, номер у них есть.

В очередной раз убедился, что вендорлок — зло. Чем больше вокруг своих данных и опенсорсных компонентов, тем меньше зависишь от корпорации, которая может отключить аккаунт и оставить тебе на память номер телефона.

Апелляция ничего не вернула. Вернули бэкап, снятый из паранойи, и база, которая стоит дома. Чужая в моём стеке теперь в основном модель. Её можно заменить, не перевозя заново всю свою жизнь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.