惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
J
Java Code Geeks
博客园_首页
Scott Helme
Scott Helme
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
V
Visual Studio Blog
Cloudbric
Cloudbric
Jina AI
Jina AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
W
WeLiveSecurity
K
Kaspersky official blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
量子位
Google Online Security Blog
Google Online Security Blog
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 三生石上(FineUI控件)
Recent Commits to openclaw:main
Recent Commits to openclaw:main

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Гефестыч: наш опыт автоматизации Code Review через LLM. «Грабли», решения, код
Данил Чечков · 2026-05-04 · via Все публикации подряд на Хабре

Средний

11 мин

11K

Введение

Кто мы?

Привет, Хабр! Меня зовут Данил Чечков, я Team Lead команды High End Meta Backend в «Леста Игры». Мы занимаемся всей web‑составляющей «Мира кораблей». В нашем арсенале огромное количество микросервисов, работающих на Python и Go. Мы отвечаем за покупки в meta‑валюте, авторизацию, стабильность инвентаря и профиля игрока, клановые сервисы, а также многое‑многое другое.

Наш основной продукт — высококачественные web‑сервисы на стыке интеграции с игрой. И, да, интеграция — часть нашей работы.

А ещё мы любим новые технологии и стараемся с ними знакомиться, чтобы оценить, как они могут принести выгоду бизнесу и нам. Одна из таких технологий — LLM

Что сделали?

Гефестыча. Вы когда‑нибудь копировали код из PR (MR) и отправляли LLM для объяснений? Вот и мы никогда, а решили попробовать. Попробовали, автоматизировали и интегрировали. Назвали — Hephaestus. Забегая вперёд, скажу, что нам очень понравилось. В этой статье я подробнее расскажу и про сам процесс внедрения, и про его преимущества.

Проблема

С чем столкнулись?

Поговорим о Code Review — это длительный и трудоёмкий процесс, который зачастую превращается в рутину. Чем больше объём изменений, тем меньше желания проводить ревью. Знакомо?

 ну ведь совсем не так

ну ведь совсем не так

А ещё постоянные сообщения в рабочий мессенджер, свои задачи и созвоны, которые мешают довести процесс до конца.

Одна из мер, которую мы ввели, — обязательный час в неделю на командное Cross Review. Это очень помогло разобрать очередь запросов на слияние, однако, и этого было мало.

Решение

«Если это может быть автоматизировано — это должно быть автоматизировано». Вот так я и подумал, когда пулл‑реквесты стали висеть по две недели в ожидании ревью.

Тут я хотел бы сделать важное отступление. В нашем арсенале уже отлажены CI/CD процессы, линтеры, форматеры, единообразная архитектура и огромное количество unit‑тестов. Всё это — первое, что вы должны сделать для повышения качества кода, доставляемого в продакшен. LLM — лишь вишенка на торте, которая доступным языком расскажет вам своё мнение.

Прежде чем рассказывать про нашу реализацию, перечислю возможные пути. Первый — закрытые платформы вроде CodeRabbit или Codium. Они хорошо работают, но код уходит на чужие серверы, что для нас риск. Второй — готовые открытые решения, например github/ai‑review. Они появились, когда мы уже начали пилить Гефестыча, но сегодня я бы рекомендовал стартовать с них, чтобы сэкономить сотни человеко‑часов. Третий — написать свою обёртку поверх self‑hosted моделей.

Мы выбрали третий путь. В компании уже был инструмент для взаимодействия с LLM с открытыми весами — OpenWebUI во внутренней сети. Это удобный инструмент, предоставляющий OpenAI‑совместимое API. А значит, можно написать инструмент для моделей с открытыми весами и в будущем, если появится такая возможность, переехать на нечто более мощное или закрытое и платное.

Минимальные системные требования: машина с VRAM около 24 гигабайт (у нас 4090), либо смирение с медленной скоростью обработки ревью при делегировании части работы на RAM и CPU.

Да, есть готовые и закрытые решения

Меня подстегнул пост Никиты Соболева — сделать своё self‑hosted‑решение, которое можно крутить во внутренней сети компании и использовать все преимущества open‑source‑моделей.

Кроме того, уверен: если забить в поисковик Code Review AI, можно найти огромное количество закрытых решений, делающих свою работу очень хорошо.

Если же вам, как и нам, не подходят закрытые платформы, то на сегодняшний день уже есть:

Готовые и открытые решения

github/ai‑review — забавно, но первая версия появилась примерно в то же время, когда Гефеста уже интегрировали в разработку нашим департаментом. Было уже поздно сворачивать или резко менять стек проверенных технологий, так что мы продолжили внедрение и развитие своей.

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

Отличный вариант, чтобы оценить лично, насколько вообще могут быть полезны LLM‑инструменты для Code Review именно вам и вашей команде.

Кроме того, мне удалось подготовить для вас сравнительную таблицу с открытыми self‑hosted:

Сервис

Интеграция с системами управления проектами и задачами

Интеграция с сервисами системы управления версиями

Интеграция с корпоративной базой знаний

Кастомизация инструкций (per‑project / per‑PR)

RAG для поиска по кодовой базе

ai‑review (Nikita‑Filonov)

GitLab, GitHub, Bitbucket Cloud, Bitbucket Server, Azure DevOps, and Gitea

PR‑Agent / Qodo Merge OSS

JIRA, GitHub Issues, GitLab Issues

GitHub, GitLab, Bitbucket, and Azure DevOps

❌ (только enterprise/SaaS)

⚠️ Конфиг есть, но только enterprise по факту (Qodo single‑tenant/on‑prem)

kodus‑ai (Kodus)

через плагины/MCP

GitHub, GitLab, Bitbucket, and Azure Repos

code‑review‑gpt (mattzcarey)

только GitHub

villesau/ai‑codereviewer

только GitHub

⚠️ Ограниченно (статические промпты; последнее обновление — дек. 2023)

cirolini/genai‑code‑review

только GitHub

⚠️

snarktank/ai‑pr‑review

только GitHub

⚠️

Codedog

GitHub + GitLab

Hexmos LiveReview

только GitLab

OpenReview (Vercel Labs)

только GitHub

⚠️ (агент обходит файлы в runtime, без постоянного индекса)

Sweep AI

только GitHub

✅ Да (индексация репо) — но лицензия BSL-1.1, не полностью FOSS

Имплементация

OpenWebUI

Вполне себе полноценный чат с любой загруженной в ollama LLM.

Я решил попробовать там скормить в виде.patch файлов diff и поспрашивать за качество изменений. И знаете — qwen3-coder:30b неплохо с этим справился. Да, ревью нельзя назвать совершенным, так как у qwen просто нет вашего контекста, но это поправимо. Однако, что qwen точно смог заметить, smelly, security и perf code issues. Получилось довольно душное Code Review, но с этим можно работать и настроить инструмент именно на ваш проект.

Open WebUI API

Кроме функционала чата, OpenWebUI также предоставляет OpenAI‑совместимый API — казалось бы, вот он, фундамент для универсального инструмента автоматизации. Но не спешите. Именно на этом этапе мы совершили ошибку.

Усвоенные уроки

Я вам советую использовать llama.cpp напрямую, потому что в OpenWebUI API для загрузки документов и преобразования их в векторы для RAG — синхронное.

Заметили мы это слишком поздно, только на этапе проверок интеграции RAG и базы знаний для расширения контекста. Нас ввело в заблуждение асинхронное API для чата. Мы полноценно интегрировали весь функционал, проводя проверки на небольшом количестве файлов и получая ответы со статус‑кодом 200.

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

Упс, техдолг.

Упс, техдолг.

Это огромный блокер, если вы планируете распространить сервис на большое количество департаментов, которые будут запускать систему в ревью ежедневно. Сразу остановитесь и переключитесь на ollama, llama.cpp или vllm.

Проблема в том, что это будет очень медленное ревью. В зависимости от того, как вы будете выгружать файлы в контекст, это может занять много времени даже асинхронно. Мы кормим LLM diff и пропускаем через эмбедеры всю кодовую базу исходной ветки. Всё это дает нам хорошее качество ревью и планы для будущих оптимизаций.

Следующее, что мы сделали неверно, — написали небольшой клиент. Ради пары эндпоинтов мы не хотели интегрировать целую библиотеку, поэтому ограничились самописным клиентом к этому API.

Предостерегу вас от наших ошибок и порекомендую: сразу используйте Pydantic AI. Это целый набор инструментов, с которым организация подобной системы займёт не так много логики. Кроме того, это полноценный конструктор для того, чтобы вы могли сделать что угодно с LLM.

Псевдокод

Начинаем с провайдера

Предположим, что вы уже подняли ollama/llama.cpp. Если ещё нет, то это довольно легко сделать:

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.ollama import OllamaProvider
  

ollama_provider = OllamaProvider(
    base_url="http://localhost:11434/",
    api_key="your_amazing_api_key",
)

model = OpenAIChatModel(
    model_name="qwen3-coder:latest",
    provider=ollama_provider,
)

agent = Agent(model=model)

result = agent.run_sync("Hello world!")
print(result.output)

Это очень лаконичный код на фоне того, что мы написали для наших клиентов.

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

А какой контекст?

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

Jira/GitHub/Gitlab Issues

Контекст и качество задачи напрямую повлияют на результат ревью. Начните с пересмотра процессов, если ваши задачи выливаются в запрос на слияние в 500 млн изменений на 150 тысяч файлов.

# docs: Содержание,тайтл и коментарии к задаче
def _get_issue_context(issue_code:str) -> str:
    pass

Если задача была про синие кнопки, а на выходе получили оранжевые шрифты, у LLM будут вопросы. И это вполне себе правильные вопросы, но скорее процессуального характера.

В нашем случае получилось воспроизвести интересный кейс. Есть библиотека на фронте, в которой расположены иконки. Есть эпик, в котором сформированы задачи на обновление версии библиотеки в сервисах. Каждый ПР в таком случае выглядит одинаково — вы обновляете версию пакета, прописываете CHANGES и ждёте RFI хотя бы апрува.

Гефест приходит в 2 таких PR и ставит одному approve, а другому need work:

Вот в его ответах прослеживается зерно истины — я не могу поставить approve, так как не знаю, чего вы там поменяли в этой библиотеке. Нужны проверки QA.

В то же время в другой задаче комментарием к Jira issue было чётко указано, какая версия библиотеки нужна. Гефест говорит: мужик, ты всё сделал правильно — вот тебе approve.

Корпоративная база знаний

# docs: Документация для сервиса/репозитория
def _get_service_docs(docs_ids: list[str]) -> list[str]:
    pass

Я не стану распыляться, лишь скажу — для проектов нужна документация. Чтобы понимать, что там вообще происходит и как оно было задумано создателем.

Самое главное — diff

Чем больше ваша задача, тем больше получается diff. А чем больше diff, тем больше контекстное окно необходимо. С разными инвестициями можно добиться разной длины контекста модели, но лучше начать с оптимизации процессов постановки задач. Чем меньше изменение, тем легче и лучше оно будет отсмотрено, протестировано и доставлено.

Есть 2 стула варианта реализации. Первый: классический.patch файл. Его можно сформировать с помощью git или использовать уже готовое API для этого:

Второй вариант, на котором мы остановились, — формировать diff в виде.md файлов. Мы написали свой парсер.

И тут, пожалуй, требуется пояснение.

Разные модели ведут себя по‑разному с разным типом diff. Серьёзно, qwen3-coder сходит с ума с.patch файлом. gpt‑oss:20b, кстати, ведёт себя довольно схожим образом.

Кроме того, важен не только формат, но и его компоновка. Сначала мы формировали каждый файл в отдельное сообщение. Удивительно, но даже при большом контекстном окне LLM умудрялись их терять. qwen3-coder вообще довольно плохо работает с сообщениями от пользователя, если на них ранее не было ответов.

Поэтому мы пошли таким путём: собираем весь diff в md. Пакуем в одно сообщение и отправляем.

# docs: Запрос diff
async def get_diff(project: str, repository_slug: str, pr_id: str) -> str:
	pass

Codebase

from pathlib import Path

# docs: Запрос файлов для внедрения в контекст
async def get_code_context(project: str, repository_slug: str, pr_id: str) -> list[Path]:
    pass

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

Вариантов на самом деле много:

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

  • Написать парсер импортов. Если у вас небольшой проект, язык программирования один или два, то какие проблемы. Самостоятельно прошлись по древу, выбрали важное и подложили контекст.

  • Сформировать source tree и попросить LLM выбрать необходимые для ревью файлы самостоятельно.

Мы остановились на первом и решили довериться эмбедингу и RAG. Путь довольно трудный. Предостерегу вас: необходимо будет продумать не только процесс векторизации, но и что делать с файлами по мере их «охлаждения». Это задача, которая может занять очень много времени и потребовать более глубокого понимания того, как работают нейросети. Однако, преодолев эти трудности, у вас получится шикарное Code Review.

Что дальше?

Каждый из источников информации может стать отдельной tool для LLM.

...
agent = Agent(model=model, deps_type=PRDeps)


# docs: Содержание, тайтл и коментарии к задаче
@agent.tool
def get_issue_context(ctx: RunContext[PRDeps]) -> str:
    issue_code = ctx.deps.issue_code
    issue_context = _get_issue_context(issue_code)
    return issue_context


# docs: Документация для сервиса/репозитория
@agent.tool
def get_service_docs(ctx: RunContext[PRDeps]) -> str:
    docs_ids = ctx.deps.docs_ids
    documentation = _get_service_docs(docs_ids)
    return documentation


# docs: Запрос diff
@agent.tool
def get_diff(ctx: RunContext[PRDeps]) -> str:
    diff = _get_diff(
        project=ctx.deps.project,
        repository_slug=ctx.deps.repository_slug,
        pr_id=ctx.deps.pr_id,
    )
    return diff
...

Я очень рекомендую к прочтению инструкцию pydantic по этому поводу и скажу, что pydantic AI оперирует дополнительным вариантом — instructions: это своеобразное расширение системного промпта.

Кроме того, что уже есть, вы можете настроить поведение tools так, что модель сможет сама ставить approve либо need work в зависимости от результатов ревью.

Retrieval Augmented Generation

Если вам не знакомо это понятие, то я рекомендую вам почитать статьи на Хабре, в которых это уже описано (например, тут и тут).

Pydantic AI, к слову, предоставляет функционал и для этого:

От себя скажу, что настроить эту штуку довольно сложно: это занимает наибольшее количество времени, однако, результат того полностью стоит. У LLM появляется контекст того, что вообще происходит в репозитории, она может давать индивидуальные советы с учётом вашего кода и даже иногда удивлять тем, откуда у неё вообще эта информация.

Мы воспользовались готовым решением для формирования эмбедингов и пожалели. Теперь, уже после внедрения технологии, нам необходимо переделывать на более правильный вариант. Это тяжело и дорого, поэтому подумайте об этом — потратьте время на этапе разработки.

Даже без этого шага качество ревью будет оставаться удовлетворительным. Это будет похоже на ревью разработчика, который недавно пришёл из другой компании и пытается навязать свои правила, однако, security и perf issues система всё же выявит.

В нашем конкретном случае введение RAG позволило улучшить качество проводимого ревью тем, что количество замечаний Гефеста, на которые реально хочется обратить внимание, выросло примерно до 7 из 10.

Как это выглядит?

Гефест – это надстройка над движком LLM, которая использует общепринятое API для выполнения задачи автоматизированного Code Review.

Гефест — это надстройка над движком LLM, которая использует общепринятое API для выполнения задачи автоматизированного Code Review.

Давайте из этой формулировки перейдём к следующему преимуществу системы.

AIaaS

При построении такого сервиса важно понимать, что это не просто proof of concept, а универсальный инструмент на вырост. И ставку вы делаете не только на развитие открытых моделей, а на развитие LLM как отрасли и инструмента.

Недавним примером того, что ставка выигрышная, стал релиз Opus 4.6 с контекстным окном в 1M токенов. Представьте, каких показателей получится достичь, если даже полностью открытая младшая модель Qwen3 Coder уже сегодня удовлетворительно проводит ревью. Разница между релизами, к слову, полгода.

Обобщая вышесказанное, вы создаёте обёртку, которая может работать на любом типе LLM‑моделей. С увеличением качества последних ваш инструмент будет показывать лучшие результаты с минимальными затратами на обслуживание. Потрясающе?