Я прочитал статью про 9 AI-ревьюеров — и сломал свой бюджет на токены
- пятница, 13 марта 2026 г. в 00:00:15
Значит так. Сижу, листаю Hacker News, натыкаюсь на пост от чувака с hamy.xyz: «9 Parallel AI Agents That Review My Code». Девять. Параллельных. Агентов. Которые ревьюят код.
Я разраб и пишу на Claude Code уже год. Скиллы, субагенты, worktrees - всё как у людей. И вот читаю я этот пост и думаю: ну, у меня же уже стоит Superpowers с его code-review скиллом, но он один. А тут - девять штук. Security reviewer, performance reviewer, test quality reviewer, simplification reviewer... Каждый со своей специализацией, каждый в своём контекстном окне, каждый жрёт токены как не в себя.
Естественно, я решил попробовать.
Идея простая до безобразия. У тебя есть Claude Code. У Claude Code есть субагенты - отдельные инстансы модели, которые запускаются параллельно, каждый со своим системным промптом и набором инструментов. Hamy написал slash-команду /code-review, которая спавнит 9 таких субагентов:
Test Runner - прогоняет тесты
Linter & Static Analysis - линтеры и диагностика IDE
Code Reviewer - до 5 конкретных улучшений, ранжированных по impact/effort
Security Reviewer - инъекции, секреты, auth
Quality & Style - сложность, дублирование, мёртвый код
Test Quality - покрытие, flakiness, поведенческие тесты
Performance - N+1, блокирующие операции, утечки памяти
Dependency & Deployment - зависимости, миграции, breaking changes
Simplification & Maintainability - а нужна ли вообще эта сложность
Каждый агент работает независимо, возвращает findings по severity (Critical / High / Medium / Low), а главный агент собирает всё в единый отчёт с вердиктом: Ready to Merge, Needs Attention или Needs Work.
Hamy говорит, что ~75% рекомендаций полезны. Critical и High - почти всегда по делу.
Звучит красиво, да?
Вот тут начинается самое интересное. Я полез считать.
Каждый субагент в Claude Code - это отдельный инстанс модели с собственным контекстным окном. Ему нужно:
Инициализация контекста: 5 000–15 000 токенов
Верификация инструментов: 2 000–8 000 токенов
Собственно работа: ещё токены
Поддержание контекста: 500–2 000 токенов в минуту
Один чувак на AICosts.ai задокументировал кейс: 49 параллельных субагентов, 2.5 часа работы, 887 000 токенов в минуту. Каждый агент жрал примерно 18 000 токенов в минуту. Итого за сессию - что-то между $8 000 и $15 000.
Ладно, 49 агентов - это экстрим. У Hamy их 9. Но и 9 - это не один. По грубым прикидкам, если каждый из девяти работает хотя бы минуту-две, это 160 000–360 000 токенов только на один code review. При ценах Opus - ну, баксов 5–10 за один ревью. А если Sonnet - доллара 2–3.
Anthropic недавно выкатили собственный Code Review для Enterprise - $15–25 за PR. То есть кастомный скилл выходит дешевле. Но он и ловит меньше.
А теперь про то, что меня реально зацепило и ради чего я вообще сел писать.
Hamy пишет: «I also instruct AI agents to run this skill and iterate before marking tasks complete». То есть AI-агент пишет код, потом другой AI-агент этот код ревьюит, потом первый агент фиксит замечания, потом снова ревью...
AI ревьюит AI. Уроборос. Змея, кусающая свой хвост.
И вот тут возникает вопрос, который я нигде не видел в обсуждениях: а это вообще работает? Не в смысле «даёт ли оно комментарии» - даёт, конечно. А в смысле - ловит ли оно ошибки, которые LLM сама же и создаёт?
CodeRabbit выкатили отчёт: AI-код содержит в 1.7 раза больше багов, чем человеческий. Логические ошибки - в 1.75 раза чаще. Проблемы с безопасностью - в 2.74 раза. Производительность - в 8 раз больше лишних I/O операций. Это из анализа 470 pull request'ов, 320 от AI, 150 от людей.
Окей, но если AI-ревьюер смотрит на AI-код... он же обучен на тех же данных. У него те же слепые пятна. Ankit Jain из Latent Space формулирует жёстче: «Fresh eyes with AI means another agent with the same blind spots». LLM ненадёжны в self-verification - они уверенно скажут тебе, что код работает, пока он горит.
Может я придираюсь. Может 75% полезных рекомендаций - это и правда хороший результат. Но есть нюанс.
У Anthropic есть внутренние данные: качество ответов модели начинает падать после 70% заполнения контекстного окна. Attention weights размазываются - модели приходится решать, какие из 200 000 токенов важнее для текущего вопроса. А когда контекст забит - ответ сжимается, теряет нюансы.
Auto-compaction помогает, но частично. Каждое сжатие - потеря деталей. После 3–4 compaction'ов критический контекст может просто исчезнуть.
Субагенты решают эту проблему элегантно: у каждого свой чистый контекст. Никакого мусора из предыдущих разговоров. Ревьюер видит только diff и свой системный промпт - ничего лишнего.
Но. (Вот он, один на всю статью.)
Результаты всех девяти субагентов возвращаются в главный контекст. 9 агентов × развёрнутый отчёт каждого = внезапно твой главный агент забит ревью-артефактами, и следующая задача будет решаться уже с деградированным контекстом.
Это как нанять девять консультантов и заставить одного менеджера прочитать все девять отчётов за пять минут.
Тут надо отступление. Я использую фреймворк Superpowers от Jesse Vincent - это набор скиллов для Claude Code, который превращает его в что-то похожее на дисциплинированного разработчика. TDD, планирование, brainstorming - всё через скиллы.
У Superpowers свой подход к code review. Там нет девяти параллельных агентов. Вместо этого - двухэтапная проверка: сначала соответствие спецификации, потом качество кода. И отдельный скилл requesting-code-review, который активируется автоматически между задачами. Critical issues блокируют прогресс - агент не может перейти к следующей задаче, пока не починит.
Разница в философии: Hamy ставит на ширину (9 специализированных глаз), Superpowers - на глубину (2 этапа, но с блокировкой).
По токенам Superpowers значительно экономнее - один субагент вместо девяти. Но и покрытие у́же. Security-специфичные баги, которые ловит отдельный security reviewer, общий code reviewer может пропустить.
Хотя, честно? Я не замерял.
Latent Space опубликовали разбор, который всё ставит на свои места. Ключевая мысль: генератор кода и ревьюер кода - это разные работы. Они не должны знать друг о друге.
«The coding agent shouldn't know what verification checks exist» - иначе он начнёт оптимизировать код под ревьюера, а не под задачу.
Adversarial design: один агент пишет, другой проверяет, третий пытается сломать. Модель Swiss cheese - ни один фильтр не ловит всё, но когда их несколько, дырки не совпадают.
Звучит круто в теории. На практике - вот тебе данные от Faros.ai по 1 255 командам: PR review time вырос на 91% у команд с высоким AI-adoption. То есть AI пишет код быстрее, но ревью этого кода занимает почти вдвое больше. Не важно, ревьюит человек или другой AI.
И это я ещё не посчитал cost multiplier. Один агент стоит $3–8 в час. Три агента - $15–40. Десять - $50–150. Двадцать пять - $200–500. Данные с AICosts.ai, и нет, это не линейная зависимость - overhead на координацию растёт нелинейно.
Я потратил пару вечеров на ресёрч, и вот к чему пришёл. Не претендую на истину.
Если у вас Max-подписка за $100–200 в месяц - 9 параллельных агентов на каждый коммит вас убьют по лимитам за день. Тупо не хватит токенов.
Если API - считайте. $5–10 за ревью × 20 коммитов в день = $100–200 в день. Это $2 000–4 000 в месяц. На одного разработчика.
Рабочий компромисс, который я для себя нашёл: Superpowers с его двухэтапным ревью на каждую задачу (дёшево, автоматически), плюс полный 9-агентный ревью от Hamy перед мержем в main (дорого, но раз в день). Типа ежедневный checkup у терапевта + полный чекап раз в год.
Ну и самое банальное: для простых субагентных задач можно указать model: haiku - это в 10–15 раз дешевле Opus. Линтер и test runner не нуждаются в рассуждениях уровня Opus. Security reviewer - возможно, нуждается.
# Экономный вариант --- name: linter-reviewer model: haiku tools: Read, Grep, Glob, Bash ---
# Тяжёлая артиллерия --- name: security-reviewer model: opus tools: Read, Grep, Glob, Bash ---
Меня не отпускает одна мысль. AI-агент пишет код. Другой AI-агент этот код ревьюит. Первый агент фиксит по замечаниям. Ревьюер проверяет фикс.
А кто проверяет ревьюера?
LLM уверенно говорит «всё ок», когда всё не ок. CodeRabbit это подтверждает числами. Latent Space предлагает adversarial design. Hamy предлагает 9 специализированных глаз. Anthropic предлагает платить $15–25 за официальный ревью.
Проект Ouroboros на GitHub - это self-modifying AI-агент, который пишет свой собственный код, ревьюит его другими LLM и коммитит. За первые 24 часа он прошёл 30+ циклов самомодификации без единого вмешательства человека. Результат? Ну... он работает. Но никто не проверял, что конкретно он туда наревьюил.
В итоге мы получаем систему, где AI пишет код с 1.7x больше багов, AI это ревьюит с теми же слепыми пятнами, а мы платим $5–25 за каждую итерацию этого цирка. Код становится лучше? Наверное. На 75%, если верить Hamy. А оставшиеся 25% - это баги, которые ни один из девяти агентов не поймал, потому что все девять обучены на одних и тех же данных.
Возможно, я неправ. Возможно, специализация агентов достаточно разводит их blind spots. Security reviewer, натасканный на OWASP, видит то, что performance reviewer не видит - и наоборот. Это разумный аргумент. Но это не adversarial design в чистом виде - это всё ещё один и тот же Claude под капотом.
Ладно, хватит философии. Если вы всё-таки хотите попробовать - вот что я выяснил за время ресёрча.
Субагенты в Claude Code определяются как markdown-файлы в .claude/agents/. YAML frontmatter + системный промпт:
--- name: security-reviewer description: Reviews code for security vulnerabilities. Use proactively after code changes. tools: Read, Grep, Glob, Bash model: sonnet --- You are a security code reviewer. Check for: - Injection risks (SQL, XSS, command) - Authentication and authorization issues - Secrets in code - Error handling that leaks sensitive info
Из скилла (это .claude/skills/) можно спавнить субагентов через инструмент Agent:
Use the security-reviewer subagent to review changes in src/auth/
Ключевые настройки, которые экономят деньги:
model: haiku для простых проверок (линт, тесты, стиль)
model: sonnet для среднего уровня (код-ревью, зависимости)
model: opus или inherit только для security и architecture
maxTurns - ограничить количество ходов, чтобы агент не ушёл в бесконечный ресёрч
background: true - запускать в фоне и не блокировать основную работу
Ещё одна штука: у субагентов теперь есть persistent memory. Если включить memory: project, ревьюер начинает запоминать паттерны проекта между сессиями. Через неделю использования он уже знает ваши conventions и не повторяет дженерик-замечания.
Тут, кстати, надо отступление, не по теме, но не могу не сказать.
Hamy в своём блоге пишет: «I iterate on my workflows in markdown. I'm coding in markdown.» И это правда. Весь этот пайплайн из 9 ревьюеров - это текстовый файл. Не код на Python. Не конфиг на YAML (ну, кроме frontmatter). Маркдаун.
Мы дошли до точки, где «программирование AI-агентов» - это написание текста на английском языке в файлах с расширением .md. Скиллы, субагенты, slash-команды - всё маркдаун. Мой бот для новостей - маркдаун. Код-ревью на 9 агентов - маркдаун.
Я не знаю, что с этим делать. Просто фиксирую.
UPD: Перечитал статью и понял, что забыл главное. Hamy говорит, что использует этот ревью не только для своего кода, а ещё как «validation gate» - заставляет AI-агента прогнать ревью перед тем, как отметить задачу выполненной. То есть это не замена человеческому ревью, а фильтр перед ним. И в этом контексте 75% точности - вполне нормально. Это не последняя проверка, а первая. Человек потом смотрит то, что прошло через фильтр. Может, в этом и есть настоящий смысл всей конструкции - не заменить ревьюера, а убрать из его работы 75% рутины.
Кстати, уже после того как написал, заглянул в issues Superpowers на GitHub - там есть тикет #469 про переход на agent teams для параллельного выполнения планов. То есть они тоже идут в сторону параллельных агентов. Видимо, это неизбежно.