Модели

«Треть поисковых токенов уходит локальной модели»: LightOn выпустила ColGrep-Agent-2B — агента поиска по коду на 2 млрд параметров

12 октября 2026 года LightOn AI опубликовала ColGrep-Agent-2B — открытую модель на 2 млрд параметров, которая ищет по репозиторию локально и работает между кодинг-агентом и исходным кодом. В замере на Claude Code с Sonnet 5.5 делегирование поиска локальному агенту сократило расход API-токенов на 34.3% и стоимость с учётом кэша на 40%, точность ответов осталась в пределах статистической погрешности, а время ответа на вопрос выросло с 13.0 до 21.6 секунды. Веса выложены под лицензией Apache 2.0, рядом лежит сборка GGUF примерно на 2.5 ГБ, а базой послужила openbmb/MiniCPM5-2B.

«Треть поисковых токенов уходит локальной модели»: LightOn выпустила ColGrep-Agent-2B — агента поиска по коду на 2 млрд параметров

Что именно выложили

ColGrep-Agent-2B — это модель на 2 млрд параметров, обученная под одну задачу: локализовать код. На вход она получает описание проблемы, баг-репорт, запрос на новую функцию или вопрос на естественном языке вроде «где настраиваются повторы запросов», итеративно ищет по репозиторию, читает найденные файлы через терминал только для чтения и возвращает конкретные расположения кода.

В посте авторы сразу разделяют три сущности: ColGrep — движок семантического поиска по коду, ColGrep-Agent-2B — сама модель, а colgrep --agent — команда, которая запускает модель вместе с поиском и терминалом только для чтения. Модель обслуживает именно эту команду и предназначена для того, чтобы снять с больших кодинг-агентов первичную разведку по репозиторию.

Установка уложена в одну строку: brew install lightonai/tap/colgrep && colgrep --install-agent. Вторая команда скачивает модель colgrep-agent-2B-Q8_0.gguf примерно на 2.5 ГБ, проверяет, что она загружается, и готовит кэш промпта. Есть также shell-инсталлятор для macOS и Linux, скрипт для PowerShell и установка из исходников через cargo.

Ни Python-окружения, ни внешнего инференс-сервера, ни API-ключа при этом не требуется. Инференс идёт на GPU, если она доступна — Metal на Apple Silicon, Vulkan на NVIDIA, AMD и Intel, — и падает на CPU, если нет. На M3 Pro один вопрос занимает около 20 секунд при 3–4 ГБ пиковой памяти. Индекс лежит локально и обновляется инкрементально: код не покидает машину ни для поиска, ни для инференса агента. Веса опубликованы под лицензией Apache 2.0, базовой моделью названа openbmb/MiniCPM5-2B.

Как ставили замер

Авторы взяли 13 публичных репозиториев, созданных в 2026 году, чтобы снизить вероятность, что модели видели их при обучении; объём — от 17 тысяч до 1.8 млн строк, языки — Rust, Go, TypeScript и Python. Отдельной проверкой они попросили Sonnet 5.5 без доступа к репозиториям назвать по десять исходных файлов из каждого: модель не назвала ни одного, хотя, как честно оговаривают авторы, это не доказывает отсутствия этих репозиториев в обучающих данных.

К вопросам: 52 штуки, по четыре на репозиторий. Тридцать девять — кросс-папочные, где нужно найти цепочку ссылок на один символ в разных местах, их формулировал Claude Opus 5.5; тринадцать — однолокейшн, описывающие поведение кода без его словарных названий. Каждый вопрос прогоняли три раза в каждом из четырёх режимов, всего 624 сессии.

Режимы различались только инструментами поиска при фиксированных вопросе и репозитории: Grep — встроенные grep, find и чтение файлов; ColGrep — прямой семантический поиск без отдельного агента; ColGrep-Agent — делегирование поиска команде colgrep --agent; Balanced — и то, и другое, где модель сама выбирает. Считали только входные и выходные токены Claude Code, токены локальной 2B-модели в зачёт не шли, поскольку за них не платят. Ответы оценивал Claude Opus 5.5 вслепую, не зная, какой режим их выдал, а отдельный судья ранжировал четыре полных трассы одного вопроса, переставленные в случайном порядке.

Треть токенов и 40% стоимости

В режиме ColGrep-Agent Claude Code потратил на 34.3% меньше токенов, чем на Grep: около 49 тысяч токенов на вопрос, при 95-процентном доверительном интервале экономии 28–40%. Токенов ушло меньше на 88% вопросов. Числовая картина по всем режимам: расход токенов на вопрос — 142 тысячи у Grep, 107 тысяч у ColGrep, 93 тысячи у ColGrep-Agent и 112 тысяч у Balanced; цена вопроса с учётом кэша — 7.3, 6.0, 4.4 и 5.1 цента; доля верных ответов — 83.3%, 79.5%, 80.8% и 83.3%; число ходов — 5.5, 4.3, 3.9 и 4.3; время на вопрос — 13.0, 15.0, 21.6 и 17.7 секунды.

Разница в точности между ColGrep-Agent и Grep составила 2.6 процентного пункта в пользу последнего — с интервалом от минус 10.9 до плюс 5.1 пункта, то есть статистически незначимо, но достаточно широким, чтобы заметное падение нельзя было исключить. Экономия растёт вместе с размером репозитория: 19% на кодовых базах меньше 50 тысяч строк, 29% в диапазоне от 50 до 150 тысяч и 40% от 150 до 600 тысяч, причём токены удалось сэкономить на всех 13 репозиториях. Судья трасс предпочёл трассу агента в прямом сравнении с Grep в 75% случаев — типичный рисунок там один делегированный поиск вместо нескольких раундов угадывания имён символов.

В качестве примера авторы разбирают вопрос по CRM-репозиторию о том, где объявлена форма списка пользовательских атрибутов и где сгенерированный типизированный слой API подставляет её в эндпоинт. Сложность в словаре: в коде это fields, а не «custom attributes». Grep-путь занял шесть ходов, пять вызовов инструментов и 160.6 тысячи токенов, путь агента — три хода, два вызова и 79.2 тысячи, то есть 51% экономии на этом вопросе, который авторы называют лучшим, чем в среднем.

Цена скорости и режим Balanced

Экономия берётся из числа ходов: каждый новый ход отправляет накопленный контекст заново, около 23 тысяч токенов на ход в этих прогонах. С Grep модель делала в среднем 5.5 хода, 5.1 команду grep и 2.0 чтения файлов на вопрос, с ColGrep-Agent — 3.9 хода, 2.0 команды и 0.9 чтения.

Платить за это приходится задержкой: локальный вызов агента занял 7 секунд по медиане и 22 секунды на 90-м процентиле, а полное время ответа выросло с 13.0 до 21.6 секунды. Для тех, кому важнее скорость, авторы предлагают режим Balanced: он сэкономил 21.2% токенов при той же наблюдённой точности 83.3%, что и у Grep, с ценой вопроса 5.1 цента и временем 17.7 секунды.

Что под капотом

Модель получили в два этапа: короткий холодный старт на обучении с учителем, затем обучение с подкреплением вариантом Group Relative Policy Optimization. Учителем на этапе холодного старта выступила Qwen3.5-27B, у которой генерировали трассы без рассуждений и в которых вызовы grep заменяли на соответствующие команды ColGrep, а после фильтрации дообучали MiniCPM5-2B.

Сам агент работает в минималистичном окружении из трёх инструментов: colgrep для семантического поиска с опциональными регулярными выражениями и фильтрами по путям, terminal для чтения файлов и осмотра репозитория только для чтения, finish для возврата расположений в формате путь:начало-конец. Бюджет — 10 ходов, на последнем окружение принудительно требует finish.

Поиск опирается на ColGrep, построенный поверх NextPlaid, а внутри используется LateOn-Code-edge — модель извлечения на 17 млн параметров, которая хранит вектор не на функцию целиком, а на каждый токен и сравнивает токены запроса с токенами кода. Именно поэтому запрос про «custom attributes» находит fieldDefinition, хотя слова разные. Индекс лежит локально и обновляется по мере изменения файлов.

В обучении с подкреплением использовали фильтрацию трасс без преимущества и отказ от штрафа KL-дивергенции к замороженной модели, а преимущество считали как награду минус средняя по группе без деления на стандартное отклонение. Награда — среднее file F1 и line F1, плюс штраф за ходы после второго и небольшие штрафы за вызов grep, за отсутствие поиска и за незавершённый через finish ответ. Настройки: асинхронное обучение с максимум четырьмя off-policy шагами, 500 шагов, 16 трасс на задачу, батч 128 трасс, AdamW с постоянной скоростью 1e-6, контекст 16 384 токена, до 1 024 сгенерированных токенов на ход, рассуждения отключены. Данные — подмножества nebius/SWE-rebench и internlm/SWE-Fixer-Train-110K плюс дополнительные репозитории.

2 млрд параметров против моделей в десять раз больше

Отдельно авторы проверили, насколько хорошо модель ищет код сама, а не только помогает Claude Code: SWE-bench Lite и Multi-SWE-bench Flash были переделаны в задачи локализации, где нужно указать файлы и строки, а не сгенерировать патч. На SWE-bench Lite ColGrep-Agent-2B дал file F1 76.18 и line F1 19.92, на Multi-SWE-bench Flash — 62.57 и 15.93. Для сравнения, google/gemma-4-31B-it — 79.93 и 17.08 на Lite и 68.30 и 19.14 на Flash, Qwen/Qwen3.5-27B — 77.93 и 15.71, а также 68.28 и 16.63, google/gemma-4-26B-A4B-it — 76.35 и 13.34, а также 63.50 и 14.75, deepseek-ai/DeepSeek-V4-Flash — 74.04 и 11.36, а также 64.26 и 13.64, а базовая openbmb/MiniCPM5-2B — 66.72 и 9.62, а также 52.01 и 11.31. Оценки усреднены по пяти зёрнам, по 300 задач на бенчмарк на зерно, с жёсткими предсказаниями и лимитом в 10 ходов. Авторы подчёркивают, что по line F1 на SWE-bench Lite их модель обошла всех оценённых участников, включая значительно более крупные.

На бенчмарке поиска по коду Semble (1 251 вопрос, 63 репозитория, 19 языков) ColGrep-Agent-2B показал NDCG@10 0.868 и F1 0.776, вернув в среднем 1.7 файла, тогда как ColGrep 1.8.5 дал F1 0.207 при 9.8 файла, Semble — 0.241 при 8.5, CodeRankEmbed — 0.226 при 9.2, BM25 — 0.411 при 4.6, а ripgrep — 0.052 при 1.2 файла. То есть агент возвращает мало файлов, но почти все они релевантны. Методика и детали обучения описаны в статье «Small Agents with Semantic Search: Efficient Multilingual Code Localization», на которую ссылается пост.

Чего в этих цифрах нет

Замер касается вопросов поиска по коду, а не сквозных задач разработки. Токены локальной модели в подсчёт не входят, потому что за них не платят, — экономия считается по счёту Claude Code, а не по полным затратам на вычисления. Разница в точности статистически незначима, но доверительный интервал достаточно широк, чтобы заметное падение нельзя было исключить.

Оценка ответов и ранжирование трасс выполнены модельными судьями, а не людьми. Выборка — 52 вопроса в 13 репозиториях, по четыре вопроса на репозиторий, поэтому оценки по отдельным репозиториям авторы сами называют шумными. Проверка на то, что модели не видели эти репозитории при обучении, остаётся косвенной и ничего не доказывает. Наконец, время ответа выросло с 13.0 до 21.6 секунды на вопрос: выигрыш в токенах и стоимости куплен почти двукратной задержкой, и именно поэтому авторы держат режим Balanced.

Первоисточники

  1. Hugging Face / LightOn AI — Максанс Лесборд, Рафаэль Сурти, Ааруш Синха и Амели Шатлен, «ColGrep-Agent: Cutting Frontier Coding Agents’ Tokens by a Third» (12 октября 2026)
  2. Hugging Face / LightOn AI — карточка модели lightonai/colgrep-agent-2B (Apache 2.0, база openbmb/MiniCPM5-2B; веса и сборка GGUF)
  3. GitHub / LightOn AI — lightonai/next-plaid: ColGrep, команда colgrep --agent и индекс NextPlaid (Apache 2.0)
  4. arXiv — «Small Agents with Semantic Search: Efficient Multilingual Code Localization» (arXiv:2610.05099), статья, на которую ссылается пост LightOn