Сингулярность на рабочем столе: Как я лечил Qwen Coder от OOM, собирал локальный ИИ-стенд и смотрел в бездну нового интернета

Локальные LLM перестали быть игрушками для энтузиастов. Сегодня это полноценные когнитивные экзоскелеты. Но, как и любой сложный софт на передовой технологий, они имеют привычку ломаться в самых неожиданных местах, требуя к себе больше внимания, чем сам код, который они пишут.

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

Часть 1. Дерзость, утечки и ревью от нейросетей: как я полез в чужой репозиторий, не зная языка

Пролог: «А давай я дерзну стать выскочкой»

Я питонист млшик. Не архитектор enterprise-решений, а обычный парень, который лет десять заставляет код работать. В какой-то момент мне показалось, что моя рабочая среда, которая по моим меркам рабоает хорошо, потребовала валидации. Особенно Qwen Coder Agent. Запускаешь — помогает писать код, через полчаса — падает с OOM (Out of Memory). Перезапуск. Ещё 20 минут — история повторяется. И так пять раз на дню.

Цель и осознание: хватит ждать, когда кто-то другой починит мои инструменты. Давай-ка я сам проверю, на что они способны. Это был личный вызов. Тест системы. Наглость. Я решил дерзнуть и стать выскочкой: за выходные законтрибьютить в репозиторий `QwenLM/qwen-code`.

Что могло пойти не так?

Спойлер: всё. Я полез в один из самых мощных open-source репозиториев, вооружившись нулём знаний внутренностей экосистемы и языком, который я толком не знал. TypeScript и Node.js . Но мне нужно было понять, способен ли Qwen Coder как LLM-агент помочь мне починить самого себя. И является ли мой взгляд когнитивным заблуждением. Или имеет место быть.

Ирония ситуации была кинематографичной: Qwen Coder падал от OOM, пока правил свой же код, чтобы стать контрибьютором в свой же репозиторий. Рекурсия как в «Начале» Нолана, только вместо планов реальности— qwen.

Три утечки, из которых в репозиторий попала только одна

Моя суперсила (или проклятие) — понимать программу по её поведению, даже не читая документацию. Особенно когда она падает одинаково каждые 20 минут. Очень быстро я нашёл три фундаментальные проблемы:

  1. Бесконечный кэш файлов (`fileReadCache.ts`). Агент запоминал каждый прочитанный файл навсегда. Никакого вытеснения (eviction), никаких лимитов. Вы просто читаете проект, а кэш растет, пока не съест всю оперативную память.
  1. Раздувание истории диалога. Массив сообщений не имел механизма «скользящего окна». Каждый новый виток разговора добавлялся в память, но старые никогда не вырезались. Со временем это съедало весь хип.
  1. Призраки в Gemini-чате. Вместо корректного удаления старых записей система затирала их пустыми строками. Постепенно массив превращался в гигантскую пустышку, которая всё равно занимала место.

*Важное уточнение: в публичный PR (#4188) в итоге попала только правка по кэшам файлов. История сообщений и Gemini-чат остались за кадром внутренних обсуждений, но суть это не меняет.*

Я набросал первый вариант фикса: добавил FIFO-вытеснение, лимиты, проверки. Отправил.

Ревью от LLM, за которой стоял человек

Через час прилетело первое уведомление от мейнтейнера (@wenshao). Только пишет не сам Шаоцзинь Вэнь, а `GPT-5.5 via Qwen Code/review`. А следом подключается `DeepSeek-v4-pro via Qwen Code/review`.

Цитата из ревью (не шучу):

> `const oldestKey = this.byInode.keys().next().value; // тип string | undefined`

> *«Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Вынеси .get() внутрь if (oldestKey).»*

Дальше — ещё полтора десятка замечаний. Про Windows-несовместимость `NODE_OPTIONS`, про то, что `private static readonly debugLogger` ломает конвенцию, про отсутствие тестов на эвикшены.

И тут важно. Я не воспринимал это как «нейросеть права всегда». Я видел за нейросетью человека, который умело её использует. Того самого мейнтейнера, который настроил LLM-ревьювера, а сам следил за качеством. И я не хотел его обижать, ведь он тратит своё время на мой PR. Поэтому отвечал коротко и по делу: «Да, согласен. Сделаю. Итд…»

F1-баг: как DeepSeek показал мне мой же косяк

Самая эпичная ошибка, которую нашёл DeepSeek (и я воспроизвёл локально), называлась F1-баг.

В `crawlCache.ts` было:

```typescript

while (crawlCache.size >= MAX_CACHE_ENTRIES && !crawlCache.has(key)) { ... }

```

Видите `!crawlCache.has(key)`? Это значило: если ключ уже есть, при записи эвикшен не запускается. Можно перезаписать существующий путь массивом из 60 000 элементов, и кэш раздуется до 60 000 при лимите 50 000. OOM-защита элегантно обходилась на раз. DeepSeek даже приложил скрипт для воспроизведения. Я запустил — и правда: `after huge write: 60000 entries`.

Итог первой части:** OOM больше не падает у меня в редакторе. Агент работает стабильно. И я наконец понял: ирония — это не фигура речи, а инструмент выживания. Особенно когда ты чинишь код, в котором сам же и падал, используя для этого нейросети, которые ревьювят друг друга.

Часть 2. Голый прагматизм: железо, LM Studio и 30 токенов в секунду

История коммитов — это романтика и авантюризм, но без правильного железа и софта локальный ИИ — это боль. Давайте про цифры и про то, как собрать среду, которая не бесит.

Математика для прагматиков: две 5060 Ti против одной 5090

У меня в стенде трудятся две RTX 5060 Ti по 16 ГБ (суммарно около 90 000 рублей на момент сборки). На модели **Qwen 3.6 27B** (не 7B, не 14B, а именно 27B, потому что в моих проектах она показала результат, сравнимый с топовыми закрытыми решениями от Claude или GPT) с контекстом 100k токенов они выдают стабильные 20 токенов в секунду до подключения mtp, но об этом ниже.

Для сравнения: одна флагманская RTX 5090 выдаёт ≈50 токенов/с, но её цена переваливает за 350 000 рублей. Разница в скорости — в 2,5 раза, а в цене — почти в 4 раза. Две младшие карты дают гораздо лучшую стоимость за один сгенерированный токен.

Секретное оружие: MTP (Multi-Token Prediction).

Если включить MTP (поддерживается в бетах llama.cpp и продвинутых GUI), модель предсказывает несколько следующих токенов за один проход. Для кодинга это имба: две 5060 Ti разгоняются до **30–40 токенов/с**. Это переводит работу с уровня «комфортно» на уровень «божественно» — агент отвечает быстрее, чем вы успеваете моргнуть.

Софт: LM Studio как фундамент

Самый безболезненный способ развернуть локальный инференс — LM Studio.

Их философия предельно честная: *Run AI models, locally and privately*. Софт полностью бесплатен для домашнего и коммерческого использования, а интерфейс позволяет за пару кликов скачать модель с хаба и запустить сервер.

Более того, LM Studio позволяет подключаться к удаленным инстансам и использовать их так, будто модель крутится на вашем ноутбуке. Это идеальная схема: тяжелый инференс на сервере, легкий клиент на рабочем месте. Альтернативный путь для упоротых — собрать вручную на Ollama с нужными кернелами. Но там придётся возиться с компиляцией. LM Studio — два клика, и оно работает.

Магия конфигурации (JSON и фиктивные ключи)

Чтобы Qwen Coder подружился с вашим локальным сервером LM Studio, нужен правильный конфиг. Вот рабочий шаблон:

```json

{

"$version": 4,

"modelProviders": {

"openai": [

{

"id": "qwen-27b-local",

"name": "Qwen 27B (LM Studio)",

"envKey": "LLM_STUDIO_API_KEY",

"baseUrl": "http://localhost:1234/v1",

"generationConfig": {

"timeout": 600000,

"contextWindowSize": 100000,

"samplingParams": {

"temperature": 0.7,

"top_p": 0.95,

"max_tokens": 8192

}

}

}

]

},

"permissions": {

"allow": ["Bash(npm run *)", "Bash(npx *)"]

}

}

```

Важный нюанс: Пропишите в переменных окружения `LLM_STUDIO_API_KEY=любое_значение`. Локальному серверу ключ не нужен, но архитектура агента требует его наличия для инициализации соединения. Без этой строчки Qwen Coder откажется коннектиться — такая архитектурная особенность.

Всё. Запускаете LM Studio, стартуете сервер на `localhost:1234`, запускаете Qwen Coder. Можно наслаждаться. Ирония — хороший повод начать, но прагматизм — единственная причина закончить.

Часть 3. Сингулярность на рабочем столе: почему локальные агенты ломают интернет быстрее, чем мы это осознаём

Первые две части этой статьи были про дерзость, личный вызов и голый прагматизм. Мы починили утечки памяти, разобрались с VRAM, настроили LM Studio и заставили локальный Qwen работать так, будто он крутится на серверах Кремниевой долины.

Но если отвлечься от конфигов и токенов в секунду, возникает вопрос совершенно иного масштаба: что мы на самом деле запустили у себя на столе?

Мы привыкли воспринимать локальные LLM как «бесплатную альтернативу API» или «приватный чатик без цензуры». Это детская позиция. Реальность куда масштабнее. Локальные ИИ-агенты — это не просто инструменты. Это первые узлы новой, динамической ткани интернета, в которой люди всё чаще выступают лишь в роли биологических загрузчиков задач.

Архитектурный прорыв: как 27B обгоняет закрытых гигантов

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

Взгляните на Qwen 3.6 27B. За счёт гибридной архитектуры эта модель на специфических кодовых и аналитических задачах обгоняет топовые закрытые платные системы. То, что вчера требовало подписки за $200 в месяц и отправки вашего проприетарного кода на чужие сервера, сегодня крутится на двух 5060 Ti.

А теперь вспомним про MTP из второй части. Это не просто «фича для ускорения». Это тот самый алгоритм, который *хуяк* — и увеличивает скорость инференса в два-три раза без потери качества. Мы достигли точки, где локальный агент печатает код быстрее, чем вы успеваете его читать.

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

Угроза нового типа: Демократизация автономного зла

Но у этой медали есть сторона, о которой не любят говорить на AI-конференциях.

Раньше хакеру (или группе хакеров) нужно было сидеть 24/7, вручную перебирать IP-адреса, писать скрипты, анализировать логи и искать уязвимости. Это был трудозатратный крафт. Атаковать мелкий и средний бизнес часто было просто нерентабельно: овчинка выделки не стоила.

Локальные ИИ-агенты убили эту экономику.

Сегодня злоумышленнику не нужно не спать ночами. Он настраивает пайплайн из нескольких специализированных агентов:

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

Всё это работает автономно, 24/7, без участия человека. ИИ-агенту всё равно, кого взламывать: JPMorgan Chase или локальную сеть из пяти кофеен. Если есть потенциальная прибыль — агент её найдёт. Отчёт CrowdStrike за 2025 год фиксирует взрывной рост автоматизированных атак (в том числе от государственных акторов — на 218%). Интернет перестаёт быть набором статичных серверов. Он превращается в **динамическую, хищную среду**, где стаи ботов-агентов непрерывно прощупывают друг друга на прочность.

Пока эта система не способна «поджарить вам мозги» в стиле Терминатора. Но она уже способна за пару часов очистить ваш криптокошелёк, зашифровать бэкапы и продать базу клиентов в даркнете, пока вы спите.

Агент против Агента: Роение интернета

Мы приближаемся к состоянию, которое можно назвать **Agent-vs-Agent (AvA)**.

Ваш локальный Qwen Coder пишет код. Но в этот же момент где-то в облаке другой локальный агент анализирует этот код (если он попал в open-source) на предмет уязвимостей, чтобы продать их. Ваш агент настраивает фаервол, а агент хакера генерирует промпт-инъекции (согласно таксономии MITRE ATLAS), чтобы обойти ваши правила.

Согласно исследованиям угроз для самих ИИ-систем (Data Poisoning, Model Evasion), следующей целью хакеров становятся не сервера, а веса моделей и контекстные окна. Если вы подгружаете в своего локального агента данные из интернета, вы рискуете скормить ему «отравленную» информацию, которая перепишет его логику.

Интернет больше не создан для людей. Он всё больше адаптируется под машинное зрение и машинное чтение. SEO уже умерло, уступив место AIO (AI Optimization) — искусству делать контент удобным для парсинга нейросетями. Мы строим инфраструктуру, в которой люди — лишь прослойка между двумя ИИ.

Приближение Сингулярности (без фанфар и роботов-убийц)

Футурологи любят рисовать сингулярность как момент, когда ИИ начнёт улучшать сам себя, создавая сверхразум. Но они упускают одну деталь: сингулярность не наступит в один день по расписанию. Она собирается по кусочкам на наших рабочих столах.

Каждый раз, когда вы:

  • Запускаете локального агента с доступом к bash и файловой системе;
  • Позволяете ему самому коммитить код в репозиторий;
  • Настраиваете ему доступ к API вашего банка или облака;
  • Разрешаете ему самому решать, когда остановить процесс...

.....вы делаете шаг к точке невозврата. Локальные агенты ускоряют этот процесс, потому что они дешевы, приватны и не имеют встроенных корпоративных «тормозов»** (guardrails), которые OpenAI или Anthropic вшивают в свои облачные модели ради безопасности. В опенсорсе нет «этического комитета». Есть только вы, ваш JSON-конфиг и безграничные возможности модели.

Философско-прагматичный итог

Мы стоим на пороге эры, где интеллект стал утилитой. Его можно скачать с Hugging Face, квантовать до 4-бит и запустить на паре видеокарт.

  1. Потенциал колоссален:мы получили в распоряжение персональные когнитивные экзоскелеты, способные выполнять работу целых отделов.
  1. Угроза абсолютна: эти же экзоскелеты теперь есть у тех, кто хочет забрать у вас ресурсы.
  1. Интернет мутирует: из библиотеки для людей он превращается в арену для сражений алгоритмов.

Сингулярность — это не взрыв. Это тихий шёпот вентиляторов вашей 5060 Ti в три часа ночи, когда ваш локальный агент в сотый раз перезапускает упавший сервис, а где-то в другой точке мира другой агент находит в его логах брешь.

Выход мощных, открытых, локальных моделей не просто меняет IT-индустрию. Он форсирует эволюцию всей цифровой среды. И единственный способ выжить в этом новом динамическом интернете — не прятаться от технологий, а понимать их анатомию. Начиная с дерзости залезть в чужой репозиторий и заканчивая осознанием того, что вы только что выпустили в сеть нового хищника.

14 views·1 share