Локальный ИИ-агент на GPU 12 ГБ: Opencode портировали на Emacs Lisp

· ·

Локальный ИИ-агент на GPU 12 ГБ: Opencode портировали на Emacs Lisp

PrimeCoder · 2026 · формат: tech

Разбор новинки простыми словами: что это, кому нужно и брать ли.

Показывает, что связка «компактная 8B-модель + самодельная обвязка с памятью и верификацией кода» может закрывать задачи разработки без подписки на внешние API — аргумент для small-team и SMB экономить на облачных LLM.

Связанные услуги: каталог, AI Boost Team, стать клиентом.

Полгода, 12 ГБ и один вопрос

Почти 500 итераций. 2000 закрытых задач. Видеокарта на 12 гигабайт и модель на 8b параметров с контекстом 32K. Автор под ником v1st44 выложил на Хабре итог полугодового эксперимента: терминальный агент Opencode, переписанный с Go на Emacs Lisp, и попытка выяснить, где заканчиваются возможности компактной модели в разработке.

Можно ли на локальном компьютере с видеокартой 12Gb решать задачи, не подписываясь на внешние сервисы, и если можно — то какие и какими должны быть модель и агент?

Работа шла с конца апреля по конец октября 2026 года. Для владельца небольшой команды это событие по одной причине: тут показан не бенчмарк, а собранный с нуля контур, где внешние API не участвуют вообще.

Что именно собрали

Отправной точкой взяли Opencode в состоянии на конец апреля 2026 года — открытый терминальный агент, не привязанный к конкретной модели. Форк делать не стали. Вместо этого проект мигрировали на Emacs Lisp, и сделал это сам Opencode с бесплатной на тот момент моделью minimax m2.5: прочитал свою кодовую базу, задал уточняющие вопросы про отображение собственных функций на функции Emacs Lisp, предложил план миграции и выполнил его. К началу мая появился минимальный работающий прототип.

Выбор Emacs Lisp объясняется тремя вещами сразу. Emacs — открытый терминал с массой портов, включая Termux на Android. Его runtime даёт модели tool calling через встроенный и расширяемый функционал, без прямых вызовов shell. Плюс живое сообщество Elpa/Melpa и продолжающаяся разработка.

Меры предосторожности приняли заранее: и для оригинального Opencode, и для его порта подготовили скрипты сборки Docker-образов, оба приложения крутились в контейнерах под Ubuntu Linux. По ходу тестировали модели семейств minimax, deepseek, mimo, glm, nemotron.

Границы прототипа очерчены жёстко: работа на уровне отдельных задач, не проекта целиком.

Три отличия от «ещё одного чат-бота в терминале»

Память, которая переживает сессию

Сессии и артефакты разработки лежат в OWL/RDF triplestore на Apache Jena Fuseki с расширениями Lucene/HNSW. Бонус «из коробки» — федеративные SPARQL-запросы: если агенты публикуют часть решений в общий доступ, эти решения достаются всем типовым запросом. Технически это заготовка под обмен опытом в распределённой сети агентов.

Верификация против выдуманных функций

ЛЛМ генерирует код функции, вызывающий несуществующие/выдуманные функции, а на шаге верификации прототип обращается в хранилище за списком похожих по описанию функций, которые передаются в контекст повторного запроса на генерацию кода.

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

Процесс как конечный автомат

Цикл правки кода описан автоматом из 16 состояний. Каждое состояние — узел онтологии, доступный по SPARQL-запросу. Типовой сценарий выглядит так: задача → набросок кода → список допущений в requirements.md → ревью человека → спецификации → тесты в tests.el → прогон, а при провале автоматическая цепочка исправлений с лимитом итераций.

Отдельное наблюдение автора: если генерировать спецификации сразу по тексту задачи, без начального наброска кода, модель уводит в сторону от результата.

Кому это нужно и как применить

Сначала честно: замена джуна тут не заявлена. Это обвязка для узкого класса задач — типовых, повторяющихся, хорошо декомпозируемых на отдельные шаги.

  • Small-team с одним-двумя разработчиками. Есть поток однотипных правок в своей кодовой базе, и есть человек, который не боится Emacs.
  • SMB с требованием не отдавать код наружу. Память и артефакты лежат локально, запросы никуда не уходят.
  • Команды, считающие OPEX. Подписка на внешние LLM — расход, который растёт вместе с объёмом задач. Локальный контур — это расход на железо (карта на 12 ГБ есть у многих) плюс время инженера на обвязку.

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

Ограничения и подвох

Полгода и почти 500 итераций — это и есть цена. Скачать и запустить не получится: перед вами исследовательский прототип, а не продукт с установщиком.

Дальше по мелочи, но существенно. Уровень отдельных задач, а не проекта. Человек в цикле обязателен — ревью стоит отдельным состоянием автомата, и это не формальность. 8b параметров и 32K контекста — потолок того, что влезает в 12 ГБ памяти. Сравнение с моделями от 100b до 1T — заявка автора по итогам собственного опыта, публичного замера за ней нет. Проверять придётся на своих задачах и своих руках.

Брать или подождать: вердикт за 30 секунд

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

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

Итог. Как продукт — сыро. Как доказательство, что связка «компактная модель + самодельная обвязка с памятью и проверкой кода» закрывает часть задач разработки без подписки на внешние API, — аргумент весомый. Покупаете вы здесь не файл, а схему, которую надо доводить под себя.

FAQ

Нужна ли видеокарта именно на 12 ГБ?

В эксперименте была такая. Меньше — придётся урезать модель или контекст, и поведение прототипа изменится.

Это бесплатная замена Claude Code?

Нет. Это открытый прототип под задачи уровня отдельных задач, с обязательным человеческим ревью. Платите не подпиской, а временем инженера.

Можно ли поставить на Windows?

В описанном виде всё крутилось в Docker-контейнерах под Ubuntu Linux. Контейнеры дают перенос, но настройка не сводится к одному клику.

Зачем Emacs Lisp, а не Go?

Из-за tool calling внутри runtime без обращения к shell, портов Emacs под разные платформы и живой экосистемы пакетов.

Что делать дальше

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

Читайте также