ИИ-агенты
📅 2026-08-16 ⏱️ 12 мин Dean Dean

Мультиагентные системы для безопасности и ревью кода: роли, риски и контроль

Как строить мультиагентное ревью кода: независимые агенты, общие ресурсы, координационные сбои, containment, governance и уроки для phone agents.

Схема мультиагентного ревью кода с координатором, исполнителями, независимым рецензентом и контрольными границами
📋 Ключевые выводы
  • Мультиагентные системы для безопасности и ревью кода полезны, когда роли разделены: координатор задает границы, исполнитель меняет код, независимый рецензент проверяет доказательства, а человек принимает merge.
  • Исследование Anthropic о multi-agent systems показывает практические риски: сбои координации, конфликты общих ресурсов, потерю разнообразия через conformity и риск collusion при неконтролируемой коммуникации.
  • ИИ-агенты ревью кода должны проверять diff, тесты, зависимости, секреты, разрешения, права инструментов и rollback-путь; согласие агентов само по себе не доказывает безопасность.
  • В FoneClaw мы применяем тот же governance-подход к Android phone agent: поддерживаемые действия проходят через видимые approvals, stop, retry, permission recovery и границы возможностей.

Когда мультиагентная система улучшает безопасность и ревью кода

Мультиагентные системы для безопасности и ревью кода помогают не потому, что агентов стало больше. Они помогают, когда каждый агент получает отдельную роль, ограниченный контекст, понятный набор инструментов и обязанность предъявить доказательства. Один агент может реализовать изменение, другой проверить угрозы, третий прогнать тесты или исследовать dependency-риск, а человек остается владельцем финального merge. Без такого разделения параллельность легко превращается в несколько уверенных голосов, которые повторяют одну и ту же ошибку.

Практическая ценность появляется в задачах, где полезны разные углы зрения: security review, поиск регрессий, анализ разрешений, проверка secret exposure, оценка dependency update, поиск небезопасных defaults и проверка test coverage. ИИ-агенты ревью кода особенно полезны, когда им заранее задано, что считать доказательством: конкретный diff, результаты тестов, список измененных permission-boundaries, трасса вызовов, риск для пользовательских данных и сценарий отката.

Свежая работа Anthropic о multi-agent systems, опубликованная 13 августа 2026 года, важна для разработчиков именно этим акцентом: результат системы зависит от координации, а не только от интеллекта отдельных агентов. Исследование описывает, как общие ресурсы создают interference, как чрезмерная согласованность снижает полезное разнообразие, а коммуникация может одновременно улучшать coordination и открывать риск collusion. Для ревью кода это означает простое правило: независимость должна быть спроектирована, а не предположена.

В FoneClaw мы смотрим на эти выводы как на инженерную дисциплину автономии. Агент, который может действовать, должен иметь identity, permissions и audit trail. Для более подробного разбора этой базы полезна статья Идентичность ИИ-агента: разрешения, аудит и подтверждение инструментов: она показывает, почему ownership и evidence нужны до того, как агент получает инструмент.

Как выбрать топологию: координатор, исполнитель, рецензент

Рабочая мультиагентная система Claude Code или похожий code-agent workflow начинается с топологии. Самая понятная схема: координатор, исполнители, независимый рецензент и человек с правом merge. Координатор держит цель, границы задачи и критерии завершения. Он не должен превращаться в скрытого владельца всех решений; его задача — разрезать работу, не потерять threat model и собрать доказательства в одном месте.

Исполнитель получает узкий scope: например, исправить validation bug, обновить небезопасную зависимость, добавить test case или заменить рискованный API. Ему не нужен доступ ко всем секретам, production credentials и unrelated worktree. Чем уже задача, тем легче проверить результат. Хороший исполнитель пишет код и оставляет след: какие файлы изменены, какой риск закрыт, какие тесты запускались, какие предположения остались.

Рецензент должен быть независимым. Это не значит, что он ничего не знает о задаче. Это значит, что он не наследует все промежуточные выводы исполнителя как истину. Ему нужен diff, threat model, test output, permission delta и список открытых вопросов. Если рецензент видит только summary исполнителя, система теряет главный смысл multi-agent review: вторую линию reasoning с правом не согласиться.

Peer collaboration полезна для brainstorming, но peer consensus не равен correctness. Несколько агентов могут прийти к одинаковому неверному выводу, особенно если используют один контекст, одни подсказки и один общий ресурс. Поэтому финальный merge остается человеческим решением: человек проверяет независимые findings, принимает риск, назначает rollback и решает, достаточно ли evidence для выпуска.

Для команд, которые строят auto-evaluation и governed testing, близкий принцип разобран в материале Самоулучшающийся phone agent: версии навыков, тесты и откат. Там фокус на phone-agent harness, но инженерная идея та же: изменения должны проходить через проверяемые gates, а не через доверие к одному успешному прогону.

Сбои координации, общие ресурсы, conformity и collusion

Первый риск — coordination failure. В code review он выглядит буднично: два агента меняют один файл разными способами, один обновляет dependency, второй пишет тест под старое поведение, третий удаляет проверку как «лишнюю», потому что не видел threat model. Чем больше параллельности, тем важнее ownership. У каждого файла, queue item, credential, environment и внешнего эффекта должен быть текущий владелец или lock.

Второй риск — shared resources. Общий worktree, общий browser session, общий API token, общий test database и общий cache создают interference. Агент может сломать тесты соседнему агенту, изменить state внешнего сервиса, исчерпать rate limit или оставить секрет в логах. Shared resource опасен не самим фактом совместного использования, а отсутствием границ: кто имеет право читать, кто писать, кто очищает состояние, кто отвечает за побочный эффект.

Третий риск — conformity. Anthropic отмечает, что в multi-agent systems полезное разнообразие подходов может снижаться, если агенты слишком быстро сходятся. В ревью кода это особенно опасно: reviewer начинает повторять framing implementer-а, принимает его assumptions и перестает искать альтернативный exploit path. Для security review полезна намеренная разница: один агент смотрит на auth, другой на data flow, третий на dependency chain, четвертый на misuse case. Разные роли сохраняют variance там, где она повышает шанс найти дефект.

Четвертый риск — communication и collusion. Коммуникация нужна: агенты должны передавать статус, блокеры, locks и результаты. Но не вся коммуникация должна быть полной и постоянной. Если reviewer видит весь reasoning исполнителя до собственного анализа, он может принять чужой вывод как anchor. Если агенты договариваются оптимизировать «прохождение gate», а не безопасность, появляется collusion-риск. Это не утверждение, что каждый production system ведет себя так; это инженерное предупреждение: каналы связи тоже являются surface area.

Containment нельзя сводить к одной песочнице. Песочница ограничивает часть эффектов, но не решает ownership, credentials, queue conflicts и review independence. Более глубокое сравнение границ полезно читать в статье Песочница AI-агента и разрешения телефона: почему безопасным агентам нужны границы, потому что и для кода, и для телефона security зависит от слоев контроля.

РискКак проявляется в ревью кодаКонтроль
Coordination failureАгенты меняют пересекающиеся файлы и теряют общий threat modelКоординатор, locks, owner для каждого scope и явный merge gate
Shared resourcesОбщий token, cache, test database или worktree создает побочный эффектИзолированные среды, least privilege и audit log
ConformityReviewer повторяет framing исполнителя и пропускает альтернативный рискНезависимое ревью, разные prompts, разные evidence sources
CollusionАгенты оптимизируют согласие или прохождение проверки вместо безопасностиОграниченные каналы, human review и видимые dissent findings

Независимый workflow для мультиагентного code security review

Рабочий процесс начинается до кода. Сначала координатор фиксирует scope, threat model и stop conditions. Нужно явно записать, какие данные защищаем, какие границы нельзя расширять, какие файлы можно менять, какие credentials недоступны и какие тесты обязательны. Если это исправление безопасности, координатор описывает exploit path и expected mitigation, не превращая задачу в расплывчатое «сделай безопаснее».

Затем исполнитель работает в отдельном worktree или другой изолированной среде. Он меняет код, добавляет или обновляет тесты, фиксирует permission delta и оставляет короткий implementation note. В этой заметке не нужно убеждать рецензента; нужно дать проверяемые факты: какие файлы изменены, какая проверка добавлена, какой риск закрыт, какие тесты запущены и что осталось за пределами scope.

После этого независимый reviewer получает diff, threat model и test output. Он проверяет не только стиль кода. Его список включает input validation, auth и authorization, data flow, logging, secret exposure, dependency behavior, migration effects, backward compatibility, error paths и rollback. Reviewer должен иметь право отклонить изменение, запросить дополнительные тесты или вернуть задачу координатору, если scope оказался неверным.

Отдельный adversarial pass полезен для сложных изменений. Этот агент ищет не «соответствует ли код задаче», а «как это можно сломать». Он может проверить race condition, privilege escalation, prompt injection в developer tooling, unsafe deserialization, path traversal, SSRF, dependency confusion, leakage через logs или неверную обработку отмены. Его findings сохраняются отдельно, чтобы они не исчезли в общем summary.

Перед merge человек смотрит на четыре блока: diff, независимые findings, тесты и rollback. Passing tests не доказывают безопасность, но отсутствие нужных тестов почти всегда означает слабый evidence. Если риск принят осознанно, это тоже должно быть видно: кто принял, почему, на какой срок и какой follow-up назначен. Так мультиагентная система улучшает ревью кода: не магией consensus, а разделением ролей и сохранением disagreement до финального решения.

Containment: инструменты, credentials, worktree, очереди и бюджеты

Containment начинается с capability snapshot. Перед запуском каждого агента система фиксирует, какие инструменты доступны, какие credentials выданы, какие директории можно читать и писать, какие команды разрешены, какие внешние сервисы доступны и какой budget установлен. Если capability меняется во время работы, это должно быть отдельным событием, а не тихим расширением прав.

Worktree isolation снижает риск конфликтов. Исполнитель не должен писать в ту же рабочую область, где reviewer собирает evidence. Агент dependency audit не должен менять lockfile без явного задания. Агент, который анализирует secrets, не должен публиковать фрагменты секретов в общий chat. Для credentials работает тот же принцип: отдельные short-lived tokens, read-only доступ там, где запись не нужна, и запрет на shared production credentials для исследовательских задач.

Очереди и бюджеты так же важны, как sandbox. Параллельные агенты могут расходовать tokens, API quota, CI minutes, rate limits и внимание команды. Queue controller должен уметь остановить новые задачи, показать running и waiting states, отменить зависшие работы и сохранить уже полученные findings. При этом cancellation не откатывает внешние эффекты. Если агент уже отправил запрос к стороннему API, изменил issue, удалил branch или запустил deployment, stop только прекращает дальнейшие шаги. Rollback нужно проектировать отдельно.

Для phone-agent систем мы пришли к тем же выводам через очередь задач и управление состояниями. Детали Android-сессий раскрыты в статье Очередь задач ИИ-агента на Android: сессии и статусы; в контексте code review она полезна как пример того, почему running, waiting, stop и recovery должны быть явными состояниями продукта, а не скрытой внутренней догадкой.

  • Инструменты: выдавайте только те команды и API, которые нужны для роли агента.
  • Credentials: используйте short-lived и scoped доступ вместо общих постоянных ключей.
  • Worktree: разделяйте implementer, reviewer и adversarial pass.
  • Бюджеты: ограничивайте tokens, время, CI и внешние вызовы.
  • Восстановление: храните findings и план rollback отдельно от механизма stop.

Что эти правила дают Android phone agents

Уроки multi-agent code review особенно полезны для phone agents, потому что телефонные действия имеют личные последствия. Кодовый агент может изменить файл; Android phone agent может подготовить сообщение, открыть маршрут, изменить настройку, прочитать экран, создать событие или провести пользователя к действию в приложении. Поэтому governance-аналогия здесь практическая: роли, границы, approvals, stop, retry и recovery нужны везде, где AI переходит от reasoning к действию.

FoneClaw мы строим как Android phone agent для поддерживаемых управляемых задач. Пользователь сохраняет контроль над approvals, tools и recovery. Агент работает с текущим экраном и состоянием Android, проверяет доступные маршруты, учитывает permissions и показывает чувствительные шаги до завершения. Current capabilities и установка описаны на официальных страницах Функции FoneClaw и Загрузка FoneClaw, потому что продуктовые возможности должны проверяться по актуальной информации на момент использования.

Здесь важна точная граница: мы не переносим архитектуру Claude Code на телефон и не называем FoneClaw мультиагентной системой Claude Code. Мы берем governance-уроки: агент не получает бесконечный общий ресурс, инструмент имеет контракт, разрешение проверяется перед действием, а пользователь видит значимые последствия. Когда действие нельзя безопасно завершить, FoneClaw ведет пользователя к retry, permission recovery или понятному ручному шагу.

Мы также не обещаем обратимость каждого внешнего эффекта. Если сообщение отправлено или действие в стороннем приложении завершено, stop не превращается в undo. Поэтому shipped controls должны стоять до чувствительного шага: подтверждение получателя, текста, файла, настройки, маршрута или другого результата. Это та же логика, что в code security review: лучший контроль — тот, который предотвращает небезопасный merge, а не объясняет его после выпуска.

Чеклист перед merge и выпуском

Перед запуском мультиагентного ревью зафиксируйте owner, scope, threat model, доступные инструменты, credentials, worktree, budget и stop condition. Если какой-то пункт не имеет владельца, он станет источником coordination failure. Если reviewer не независим, команда получает еще один summary, а не security review.

  1. До запуска: назначьте координатора, исполнителя, независимого рецензента и human merge owner.
  2. Во время работы: держите locks на общих ресурсах, записывайте tool use и сохраняйте dissent findings.
  3. Перед merge: проверьте diff, тесты, dependency changes, permission delta, secret exposure, rollback и открытые риски.
  4. После инцидента: разберите не только ошибку модели, но и topology: где не хватило изоляции, бюджета, stop condition или независимого review.

Чеклист не гарантирует безопасность, но он делает управление мультиагентной системой проверяемым. Это и есть реальное преимущество: ИИ-агенты ревью кода становятся не хором согласных помощников, а распределенной системой с ролями, доказательствами, границами и человеческой ответственностью за выпуск.

Частые вопросы

Она улучшает ревью, когда роли разделены: один агент реализует изменение, другой независимо проверяет безопасность, третий может искать adversarial сценарии, а человек принимает merge. Ценность дает не количество агентов, а независимые доказательства, сохраненные findings и явные критерии остановки.
Общий worktree, token, test database, cache или queue могут создать interference: один агент меняет состояние, а другой делает выводы по уже испорченной среде. Общие ресурсы требуют владельца, locks, least privilege, audit log и понятного rollback-плана.
Да, независимость рецензента защищает disagreement. Он может видеть задачу, diff и threat model, но не должен автоматически наследовать выводы исполнителя. Иначе multi-agent review превращается в подтверждение уже принятого решения.
Выдавайте агенту ограниченные инструменты, отдельный worktree, scoped credentials, бюджет, очередь и stop condition. При сбое остановите новые действия, сохраните findings, проверьте уже выполненные внешние эффекты и запускайте recovery или rollback отдельно от простой отмены процесса.