Бонусы за приглашения

Как работают бонусы за приглашения

Поделитесь ссылкой. Когда друг зарегистрируется по ней и пополнит баланс, вы получите указанный бонус за его последующие пополнения.

Аудит кода с Claude Opus 5.5: как проверить каждую находку до слияния

Практический процесс для длительного аудита кода с Claude Opus 5.5: базовый прогон, воспроизведение дефектов, оценка риска, разбор архитектуры и регрессионные тесты.

Содержание
Аудит кода с Claude Opus 5.5: как проверить каждую находку до слияния

Вы запускаете Claude Opus 5.5 на несколько часов, а в ответ получаете десятки «критичных» замечаний и большой патч. Главная задача начинается после этого: понять, какие дефекты существуют на самом деле, какие предложения не ломают исходную архитектуру и что можно безопасно отправить в основную ветку.

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

Opus 5.5 подходит для широкого аудита, но не заменяет приёмку

Используйте модель, чтобы расширить охват проверки, а не чтобы автоматически одобрять изменения. В анонсе от 22 сентября 2026 года Anthropic отдельно называет миграции и аудит больших кодовых баз среди сильных сторон Opus 5.5 и приводит результаты внутренних испытаний и ранних пользователей. Это данные поставщика и отдельных тестировщиков, а не гарантия для вашего репозитория. Анонс Claude Opus 5.5.

Kent C. Dodds опубликовал запрос на аудит безопасности, производительности, доступности, поддерживаемости, масштабируемости, архитектуры, документации, тестов и автоматизации. По его словам, Opus 5.5 обнаружил серьёзную проблему безопасности, которую пропустили другие модели. Но в публикации нет описания уязвимости, шагов воспроизведения и контролируемого сравнения. Это повод проверить модель на своём проекте, а не основание принимать её вывод без доказательств. Публичная запись.

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

До запуска зафиксируйте базовое состояние командами

Без чистого базового прогона нельзя отделить старые сбои от регрессий, появившихся во время работы модели. Сохраните SHA коммита, версии среды и зависимостей, точные команды и коды завершения.

Подставьте реальные команды проекта. Если проверка неприменима, так и отметьте — не придумывайте формальную команду ради списка.

git status --short
<install-command>
<lint-command>
<type-check-command>
<unit-test-command>
<integration-test-command>
<build-command>

В базовой записи должны быть:

  • SHA коммита, версия runtime, менеджер пакетов и важные версии зависимостей;
  • команда, рабочий каталог, код завершения и краткий фрагмент ошибки;
  • известные падения, нестабильные тесты и временные исключения;
  • разрешённые каталоги и файлы, которые нельзя менять: сгенерированный код, старые миграции, lock-файлы, vendored-зависимости;
  • критичные пути: аутентификация, авторизация, биллинг, миграции данных и внешние API-контракты.

Если исходный прогон уже красный, сначала зарегистрируйте проблему, изолируйте её или исправьте. Иначе модель может представить старый сбой как своё новое открытие.

На первом проходе запретите менять файлы

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

Начните с такого задания и дополните его правилами своего репозитория:

Проведи длительный аудит этого репозитория. На текущем этапе только исследуй и составляй отчёт; файлы не изменяй.

Область: <каталоги, сервисы, языки, критичные бизнес-процессы>
Исключения: <сгенерированные файлы, сторонний код, старые миграции, недоступные системы>
База: <выполненные команды, коды завершения, известные сбои>

Проверь:
1. безопасность и границы полномочий;
2. корректность, конкурентность, транзакции и обработку ошибок;
3. производительность и расход ресурсов;
4. доступность интерфейса, если применимо;
5. поддерживаемость и масштабируемость;
6. архитектуру и границы модулей;
7. пробелы в документации, тестах и автоматизации.

Для каждой находки укажи:
- уникальный ID и короткое название;
- уровень риска и объяснение влияния;
- файлы, символы и точные строки;
- условие запуска, ожидаемое и фактическое поведение;
- воспроизводимую команду или минимальный тест;
- краткий вывод команды и код завершения;
- возможное объяснение ложного срабатывания;
- минимальное направление исправления;
- проверки после исправления;
- уверенность: высокая, средняя или низкая.

Правила:
- Команду, которую ты не запускал, помечай «НЕ ЗАПУЩЕНА».
- Невоспроизводимую находку помечай «НЕ ПОДТВЕРЖДЕНО».
- Не удаляй, не пропускай и не ослабляй тесты ради зелёного результата.
- При нехватке ключей, сервисов или зависимостей остановись и перечисли, чего не хватает.
- После каждой фазы обновляй таблицу состояния и жди проверки.

Сам текст задания не гарантирует дисциплину. Проверяйте терминальную историю, diff и фактический вывод тестов. Шаблон лишь делает обязательные поля явными и не даёт расплывчатому «здесь что-то не так» сразу попасть в очередь исправлений.

Разбейте длительную работу на четыре контролируемые фазы

Долгий запуск не должен означать неограниченные права и область. После каждой фазы останавливайте работу и проверяйте доказательства.

Фаза 1: карта системы

Модель читает код, конфигурацию, тесты и архитектурные документы. Результат — точки входа, границы доверия, потоки данных, внешние зависимости и критичные участки. Исправлять код и гнаться за количеством багов нельзя.

Фаза 2: кандидаты

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

Фаза 3: воспроизведение по одному пункту

Сначала проверяйте потенциально серьёзные и дешёвые в проверке пункты. Один эксперимент — одна гипотеза. Сохраняйте необработанный вывод и параметры среды.

Фаза 4: план исправлений

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

Состояние удобно вести в audit-plan.md:

IDСтатусРискДоказательствоРешение по архитектуреВеткаПринимающий
AUD-001Ждёт воспроизведенияВысокийПока нетНе рассмотрено——

Разрешите только явный путь: кандидат → ждёт воспроизведения → воспроизведён → архитектура проверена → исправлен → принят. Уверенный тон модели не переводит запись на следующий этап.

Ворота риска: не смешивайте серьёзность и уверенность

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

УровеньКогда применятьМинимум до исправления
КритичныйВозможны массовое повышение прав, утечка чувствительных данных, необратимая порча или отказ ядраКонтролируемое воспроизведение, границы влияния, немедленная проверка владельцем
ВысокийЗатронут ключевой процесс или реалистичный ввод стабильно вызывает сбойМинимальный тест, вывод команды, подтверждение владельца
СреднийВлияние ограничено, есть обход или нужны редкие условияПовторяемое доказательство и решение о приоритете
НизкийЛокальное качество, документация, поддерживаемость или некритичная производительностьКонкретное место в коде и польза выше риска регрессии

Модель может проследить путь выполнения, но не знает автоматически чувствительность данных, обязательства перед клиентами и допустимое время простоя. Эти параметры задаёт ответственный человек.

Ворота воспроизведения: превратите замечание в падающую проверку

Подозрительного фрагмента недостаточно. До исправления проверка должна падать, после — проходить. Для каждой находки зафиксируйте:

  1. коммит и среду, где она проявляется;
  2. минимальный вход;
  3. источник ожидаемого поведения — тест, спецификацию, контракт или бизнес-правило;
  4. фактический результат и необработанный вывод;
  5. причину, по которой существующие тесты не сработали;
  6. возможное законное объяснение текущего поведения.

Лучшее доказательство — минимальный регрессионный тест. Если автоматизация невозможна, нужны детерминированные ручные шаги, ожидаемые наблюдения и способ вернуть среду в исходное состояние. Проверяйте безопасность только в принадлежащей вам или разрешённой среде — локальной, изолированной либо тестовой.

Фраза «команда прошла» ничего не доказывает без самой команды, рабочего каталога, кода завершения и существенного вывода.

Ворота архитектуры: выясните, почему старый код устроен именно так

Более красивое решение может нарушить совместимость, порядок развёртывания или намеренную границу. До крупной правки изучите ADR, дизайн-документы, API-контракты, ограничения миграций и историю изменений.

Если история Git доступна, используйте:

git log -- <path>
git blame -L <start>,<end> <file>
git show <commit> -- <path>

Попросите модель ответить:

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

История даёт зацепки, но не гарантирует понимание намерения. Если основание не найдено, отметьте «архитектурный замысел неизвестен» и привлеките сопровождающего.

Ворота исправления: одна подтверждённая проблема — один небольшой патч

Не принимайте огромный diff с десятком несвязанных исправлений. Сначала добавьте тест, который стабильно падает на старом коде, затем внесите минимальное изменение.

ВоротаТребованиеЧто делать при сбое
ОбластьDiff касается только согласованной находкиОтделить посторонние изменения
Регрессионный тестПадает до исправления, проходит послеИсправить тест или пересмотреть вывод
СтатикаФормат, lint и типы проходятНе скрывать ошибки общим исключением
Тесты проектаНужные unit, integration и build проходятРазобрать первый новый сбой до следующего патча
АрхитектураВладелец подтверждает границы и совместимостьУменьшить изменение или вынести дизайн-ревью
Ручной reviewПроверены права, ошибки, данные и удаленияОбъяснить каждый подозрительный участок

Запрещайте ложные «исправления»: удаление assert, skip тестов, проглатывание исключений, ослабление валидации, увеличение retry для маскировки гонки и рефакторинг, после которого исходный дефект невозможно проследить.

Ворота регрессии: запускайте проверки проекта, а не удобный набор модели

Итоговый прогон должен задаваться существующими скриптами или CI. Модель естественно выбирает проверки рядом со своим изменением, но этого недостаточно для слияния.

Сравните исходный и итоговый полный прогон; убедитесь, что новый тест падает на версии без исправления; проверьте lock-файлы, миграции, публичные API и значения конфигурации. Любое утверждение об ускорении сравнивайте в одинаковой среде и на одинаковом входе.

Нестабильный тест нельзя просто перезапускать до зелёного. Запишите картину падений, найдите источник недетерминизма и выясните, не усилил ли патч нестабильность.

Откажитесь от результата при любом из этих признаков

Находка не должна двигаться к слиянию, если:

  • нет точного места, условия запуска или проверяемого доказательства;
  • незапущенная команда объявлена успешной;
  • риск выражен только прилагательным без пути влияния;
  • патч вышел за согласованную область или незаметно меняет архитектуру;
  • тесты удалены, пропущены или ослаблены, а ошибки проглатываются;
  • изменение противоречит ADR, контракту или политике миграций без одобрения;
  • доступно только итоговое резюме без команд и diff;
  • безопасность подтверждается лишь тем, что другая модель согласилась.

Вторая модель полезна для поиска контрпримеров, но согласие моделей не является независимым доказательством. Независимая проверка — это тесты, вывод исполнения, история, спецификация и решение ответственного человека.

Финальный список перед слиянием

  • Область, исключения и базовый коммит зафиксированы.
  • Сохранены команды базового прогона и коды завершения.
  • У каждой принятой находки есть ID и точное место в коде.
  • Серьёзность и уверенность записаны отдельно.
  • Дефект воспроизведён тестом или детерминированной процедурой.
  • Проверены архитектурный замысел, совместимость и откат.
  • Каждой находке соответствует небольшой проверяемый патч.
  • Регрессионный тест падает до исправления и проходит после.
  • Полные ворота проекта запущены через существующие скрипты или CI.
  • Владелец кода проверил итоговый diff и явно одобрил его.

Публичные данные делают Opus 5.5 убедительным кандидатом для широкого и длительного аудита, но не отменяют проверку. Первый практический шаг — сохранить чистую базу и дать модели задачу «только аудит, без изменений», а не сразу разрешать ей переписывать код.

Готовы оптимизировать LLM workflow?

Подключите единый API, управляйте ключами и контролируйте расходы на AI-модели в BetterToken.

Начать бесплатно