Как мы сделали AI code review через Ollama без облака?. ai.. ai. cli.. ai. cli. code review.. ai. cli. code review. git diff.. ai. cli. code review. git diff. ollama.. ai. cli. code review. git diff. ollama. автоматизация.. ai. cli. code review. git diff. ollama. автоматизация. код-ревью.. ai. cli. code review. git diff. ollama. автоматизация. код-ревью. локальная LLM.. ai. cli. code review. git diff. ollama. автоматизация. код-ревью. локальная LLM. статический анализ.

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
Как мы сделали AI code review через Ollama без облака? - 1

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

codefox --command init   # создаст .codefox.yml, .codefoxenv и .codefoxignore
codefox --command scan   # ревью по текущему git diff
Как мы сделали AI code review через Ollama без облака? - 2

При первом 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
Как мы сделали AI code review через Ollama без облака? - 3
  • diff_only: true — анализируем только изменения (удобно для повседневного ревью).

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

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

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

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

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

После 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 ───
...
Как мы сделали AI code review через Ollama без облака? - 5

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

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 вам зашло ревью сильнее всего. Мы буем очень благодарны :-)

Автор: CodeFoxAI

Источник