TL;DR: Собрали CLI, который гоняет ревью кода на локальной LLM (Ollama): никаких API-ключей в облаке, код не уходит из машины, один diff - одна команда. В статьTL;DR: Собрали CLI, который гоняет ревью кода на локальной LLM (Ollama): никаких API-ключей в облаке, код не уходит из машины, один diff - одна команда. В стать

Как мы сделали AI code review через Ollama без облака?

2026/03/04 11:16
4м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу crypto.news@mexc.com

TL;DR: Собрали CLI, который гоняет ревью кода на локальной LLM (Ollama): никаких API-ключей в облаке, код не уходит из машины, один diff - одна команда. В статье - зачем это нужно, как устроено и как попробовать за пять минут.

Проблема

Ревью кода вручную отнимает время, а статический анализ (линтеры, SAST) ловит только то, что зашито в правила. Контекст проекта, типичные баги и «запахи» кода они не видят. Облачные AI-ревью (типа CodeRabbit) удобны, но код уходит в чужое API - для внутренних репозиториев или строгого комплаенса это не всегда ок.

Хотелось чего-то среднего: умное ревью с контекстом, но полностью локально, без облака и без привязки к PR.

Почему Ollama

Ollama даёт запускать открытые LLM (Llama, Qwen, CodeLlama и др.) на своей машине одной командой. Плюсы для ревью:

  • код никуда не уходит;

  • нет лимитов и подписок;

  • можно выбрать модель под задачу (например, qwen3-coder для кода);

  • подходит для воздушных и онпрем-сред.

Мы решили сделать инструмент, который берёт git diff, при необходимости подтягивает контекст из репозитория (RAG) и отправляет всё в Ollama. На выходе - структурированный отчёт: что не так, насколько серьёзно, что поменять (с готовыми правками, где возможно).

Как устроено

Схема простая:

  1. Сбор изменений - читаем git diff (или весь scope, если нужно).

  2. Контекст - при необходимости загружаем файлы проекта, чанкуем, строим эмбеддинги (через модель из Ollama) и по запросу подмешиваем релевантные куски в промпт.

  3. Промпт - отправляем в Ollama diff + контекст + системный промпт с правилами (безопасность, производительность, стиль).

  4. Ответ - парсим структурированный отчёт: файл, строка, severity, описание, рекомендация, при возможности - патч (auto-fix).

Всё это упаковано в одну команду в терминале, без веб-интерфейса и без интеграции с GitHub/GitLab (хотя при желании вывод можно пушить в CI).

Установка и первый запуск

Нужны Python 3.11+ и запущенная Ollama с хотя бы одной моделью (например, qwen3-coder:7b или codellama).

# Установка (pip) pip install git+https://github.com/URLbug/CodeFox-CLI.git@main # или через uv uv tool install git+https://github.com/URLbug/CodeFox-CLI.git@main

В каталоге проекта:

codefox --command init # создаст .codefox.yml, .codefoxenv и .codefoxignore codefox --command scan # ревью по текущему git diff

При первом init создаётся конфиг по умолчанию. Для Ollama его нужно явно указать.

Конфиг под Ollama

В .codefox.yml задаём провайдер и модель:

provider: ollama model: name: qwen3-coder:7b # или codellama, deepseek-coder и т.д. base_url: http://localhost:11434 temperature: 0.2 max_tokens: 4000 embedding: BAAI/bge-small-en-v1.5 # для RAG, если нужен контекст по файлам review: severity: high suggest_fixes: true diff_only: true baseline: enable: true ruler: security: true performance: true style: true

  • diff_only: true — анализируем только изменения (удобно для повседневного ревью).

  • baseline.enable: true — не ругаемся на старый долг, только на новое.

  • ruler — включаем/выключаем категории (безопасность, перф, стиль).

Список доступных моделей в вашей Ollama:

codefox --command list

Пример вывода

После codefox --command scan в терминале появляется что-то вроде:

─── CodeFox Audit Report ─── - Location: assets/js/script.js : Line 84 - Issue: Visual Glitch from Global Style Mutation - Severity: Medium - Confidence: High - Regression Risk: Applying `transition: all 0.3s` globally affects every element's animation behavior, potentially breaking existing transitions or causing unwanted visual side-effects. - Evidence: When toggling dark mode, the code applies a global transition style (`document.querySelectorAll("*")`) which overrides component-specific animations unpredictably. - Auto-Fix: // Apply transition only where necessary instead of globally // document.querySelectorAll("*").forEach(function(el){ // el.style.transition="all 0.3s"; // }); - Senior Tip: Target styles precisely using CSS classes rather than blanket selectors. Prefer declarative CSS over imperative JavaScript styling for maintainability. ─── CodeFox Audit Report ─── ...

Пример использования:

CodeFox scan demo
CodeFox scan demo

То есть не просто «здесь плохо», а конкретное место, риск, доказательство и совет, как поправить. Для части замечаний даётся готовый фрагмент кода (auto-fix).

Что в итоге

  • Локально - весь анализ на вашей машине, Ollama + Python.

  • Без облака - не нужны API-ключи Gemini/OpenAI, код не уходит из репо.

  • Один diff - одна команда — привычный workflow: правишь код, делаешь codefox --command scan, смотришь отчёт.

  • Гибко - та же тулза умеет работать с Gemini и OpenRouter (через .codefox.yml), если захочешь сравнить качество или снять нагрузку с железа.

Проект открыт: CodeFox-CLI. Документация по всем опциям - в WIKI репозитория. Если зайдёте, поставьте звезду и напишите в комментариях, на каких моделях в Ollama вам зашло ревью сильнее всего. Мы буем очень благодарны :-)

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу crypto.news@mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Цены на криптовалюту