Инженер Thomson Reuters запустила офлайн-агента на Qwen3.5 9B в Гималаях

Принципал-инженер Thomson Reuters Риттика Джиндал живёт в предгорьях Гималаев, где сеть и свет пропадают регулярно. Чтобы не терять кодинг-агента вместе с интернетом, она запустила его целиком на Mac: OpenCode, Ollama и открытая модель Qwen3.5 9B. Проверка вышла наглядной. Wi-Fi выключен, внешний хост не резолвится, а агент находит баг в калькуляторе расходов, правит одну строку и запускает тесты. Проходят все пять. Условие одно: проект, зависимости и модель надо скачать заранее. • Скачанная 9B-модель весит 6,6–7,6 ГБ, под контекст 64k лучше закладывать больше памяти • OpenCode спрашивает разрешение на каждую правку и команду • Ещё два упражнения, CSV-отчёт и анализатор логов, пока без офлайн-прогонов

AI-обработка оригинала Latent Space (swyx); редакция Hamidun News
Инженер Thomson Reuters запустила офлайн-агента на Qwen3.5 9B в Гималаях
Источник: Latent Space (swyx). Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникLatent Space (swyx) ↗
Главный редактор
Ключевой факт #1Скачанная 9B-модель весит 6,6–7,6 ГБ, под контекст 64k лучше закладывать больше памяти
Ключевой факт #2OpenCode спрашивает разрешение на каждую правку и команду
Ключевой факт #3Ещё два упражнения, CSV-отчёт и анализатор логов, пока без офлайн-прогонов

Сеть в предгорьях Гималаев пропадает так же регулярно, как свет. Именно там живёт Риттика Джиндал, Principal Engineer в Thomson Reuters. Она решила выяснить, сколько рабочего процесса с кодинг-агентом сохранится, если отключить интернет совсем. Ответ получился конкретным. Связка из OpenCode 1.19.4, Ollama и открытой модели Qwen3.5 9B на одном Mac находит баг, предлагает правку и запускает тесты, пока Wi-Fi выключен. Пример маленький: починка в одну строку, после которой проходят все пять тестов. Зато стек воспроизводим и описан до команд.

Как собрана офлайн-связка

Распределение ролей простое. Ollama держит модель и поднимает локальный сервис, OpenCode читает файлы проекта, предлагает правки и гоняет команды. Конфиг opencode.json направляет и основную, и вспомогательную модель (model и small_model) на Qwen3.5 9B, а baseURL указывает на http://127.0.0.1:11434/v1. Включён только локальный провайдер, веб-инструменты заблокированы, а на правки файлов и shell-команды агент запрашивает разрешение. Ollama стартует с OLLAMA_NO_CLOUD=1 и контекстом OLLAMA_CONTEXT_LENGTH=65536. Модель скачивается командой ollama pull qwen3.5:9b, пока интернет ещё есть. Запуск идёт с флагом --pure, который отключает внешние плагины.

Из альтернатив автор упоминает Aider: он тоже умеет работать с Ollama и подойдёт тем, кому нужен более ведомый сценарий редактирования.

Какую модель брать и сколько памяти ей нужно

Для выбора автор взяла опубликованные результаты из карточки Qwen, а не собственные замеры на ноутбуке. LiveCodeBench v6 проверяет генерацию кода, BFCL-V4 оценивает вызов функций, то есть умение агента выбрать инструмент и подставить верные аргументы.

  • Qwen3.5 4B: LiveCodeBench v6 — 55,8; BFCL-V4 — 50,3; загрузка 3,3–4,0 ГБ.
  • Qwen3.5 9B (использована в тесте): 65,6 и 66,1; загрузка 6,6–7,6 ГБ.
  • Qwen3.5 27B: загрузка 17–20 ГБ, бенчмарки в материале не приводятся.
  • gpt-oss-20b: LiveCodeBench v6 — 74,6; BFCL-V4 не опубликован.

Девятимиллиардная версия выбрана из-за заметно лучшего вызова инструментов, чем у 4B. Размер загрузки при этом не равен требованиям к RAM. Для сборки Qwen3.5 9B на 6,6 ГБ Voltti закладывает 12–16 ГБ памяти, а конфигурация с контекстом 64k может потребовать больше. Запас нужен и под другие приложения.

Отдельно в материале разобрана сама оболочка. Препринт The Scaffold Effect in Coding Agents сравнил OpenCode, Goose и OpenHands-SDK на 50 задачах Terminal-Bench Pro с двумя облачными моделями:

  • Qwen3.6 Plus: Goose — 48% [34–62%], OpenCode — 50% [36–64%], OpenHands-SDK — 50% [36–64%].
  • MiniMax M2.5: Goose — 38% [24–52%], OpenCode — 46% [32–60%], OpenHands-SDK — 46% [32–60%].

Доверительные интервалы 95% перекрываются, и авторы предупреждают, что большинство различий статистически неочевидны. Зато расход токенов отличается резко: OpenCode тратит примерно в 40 раз больше токенов на решённую задачу, чем Goose. Для облачного API это прямые деньги. Для локальной модели это время генерации и давление на контекст. Прогнозом для 9B на ноутбуке эти цифры не служат, ведь там были облачные модели.

Что показал тест с выключенным Wi-Fi

Тестовый проект — расчёт расходов: пять трат, включая возврат, правильный итог 25,50. Стартовая программа печатает 8,00, то есть значение последней траты, потому что функция перезаписывает сумму на каждой итерации. Из тестов падают три: десятичная арифметика, возвраты и пример с реальными данными. Пустой ввод и один элемент проходят.

В онлайне агент получил диагностический запрос и прочитал код, но сначала предложил pytest, хотя проект использует встроенный unittest. Разрешение на запуск позволило увидеть команду до выполнения. Вывод автора: в следующий раз прописывать в промпте python3 -m unittest -v.

После проверки Ollama через curl на localhost автор отключила Wi-Fi. Запрос к внешнему адресу завершился ошибкой Could not resolve host. Агент предложил правку `total = Decimal(amount)` → `total += Decimal(amount)`, запросил разрешение на редактирование и запустил тесты. Затем автор сама прогнала проверку: все пять тестов зелёные, файл тестов не менялся.

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

Практический вывод для тех, кто работает в поезде, в самолёте или в зоне плохой сети: всё нужное должно лежать на диске до потери связи. Это модель, зависимости проекта и документация. Запускайте именно ту конфигурацию, которую будете использовать офлайн. Давайте агенту точную команду тестов и держите задачи узкими: один баг или небольшая фича. Проверяйте дифф и запускайте оригинальные тесты сами. Следите за памятью: контекст 64k и открытые приложения съедают то, что осталось после модели. Большой репозиторий или незнакомый фреймворк этот эксперимент пока не проверял.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: как собрана офлайн-связка?

Распределение ролей простое. Ollama держит модель и поднимает локальный сервис, OpenCode читает файлы проекта, предлагает правки и гоняет команды. Конфиг opencode.json направляет и основную, и вспомогательную модель (model и small_model) на Qwen3.5 9B, а baseURL указывает на http://127.0.0.1:11434/v1. Включён только локальный провайдер, веб-инструменты заблокированы, а на правки файлов и shell-команды агент запрашивает разрешение. Ollama стартует с OLLAMA_NO_CLOUD=1 и контекстом OLLAMA_CONTEXT_LENGTH=65536. Модель скачивается командой ollama pull qwen3.5:9b, пока интернет е

Что известно по теме: какую модель брать и сколько памяти ей нужно?

Для выбора автор взяла опубликованные результаты из карточки Qwen, а не собственные замеры на ноутбуке. LiveCodeBench v6 проверяет генерацию кода, BFCL-V4 оценивает вызов функций, то есть умение агента выбрать инструмент и подставить верные аргументы. Qwen3.5 4B: LiveCodeBench v6 — 55,8; BFCL-V4 — 50,3; загрузка 3,3–4,0 ГБ. Qwen3.5 9B (использована в тесте): 65,6 и 66,1; загрузка 6,6–7,6 ГБ. Qwen3.5 27B: загрузка 17–20 ГБ, бенчмарки в материале не приводятся. gpt-oss-20b: LiveCodeBench v6 — 74,6; BFCL-V4 не опубликован. Девятимиллиардная версия выбрана из-за заметно лучшего

Что известно по теме: что показал тест с выключенным Wi-Fi?

Тестовый проект — расчёт расходов: пять трат, включая возврат, правильный итог 25,50. Стартовая программа печатает 8,00, то есть значение последней траты, потому что функция перезаписывает сумму на каждой итерации. Из тестов падают три: десятичная арифметика, возвраты и пример с реальными данными. Пустой ввод и один элемент проходят. В онлайне агент получил диагностический запрос и прочитал код, но сначала предложил pytest, хотя проект использует встроенный unittest. Разрешение на запуск позволило увидеть команду до выполнения. Вывод автора: в следующий раз прописывать в пр

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…