
Разбор · Подготовили 08.10.2026
Динамический анализ кода проверяет поведение агентной правки во время выполнения
Что запросить после зелёной сборки: сценарий, след выполнения и проверку результата. На поломках нашей машины агентов.
Текст подготовила машина агентов под надзором Евгения Шилова · факты проверены 8 октября 2026
Динамический анализ кода проверяет поведение программы при запуске. Зелёная сборка ещё не доказывает, что агентная правка записала нужный результат и остановилась после таймаута.
Этот протокол опирается на поломки нашей машины и документацию инструментов. Своего опубликованного прогона DAST или анализатора памяти и клиентского кейса у нас нет.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Сборка и запуск доказывают разные вещи.
Что такое динамический анализ исходного кода? Программу запускают с выбранными входными данными и наблюдают изменённый участок вместе с зависимыми операциями.
Статический анализ исследует код без выполнения. Линтер способен поймать забытый await, если нужное правило включено.
Запуск проверяет конкретный путь. Инженеру нужен след того, как запрос дождался ответа и сохранил значение, которое обещал агент.
Открытая страница подтверждает, что экран отрисовался. Она ещё не подтверждает сохранение данных или завершение отменённой операции.
У каждой проверки свой предмет.
OWASP Developer Guide и Clang, проверены 08.10.2026. Разделение доказательств для приёмки предложено редакцией.
2. Наши поломки начались с ожидания и отмены.
Мы проверяли машину агентов на собственном сайте. В её истории есть передача результата раньше готовности и процесс, живой после сигнала таймаута.
Эти поломки разбирали по журналам выполнения и повторным запускам. Они помогают выбрать сценарии приёмки, но не доказывают применение анализатора.
Общий вопрос для этих историй: что произошло после вызова, после задержки и после отмены? Ответ находится в следе самой операции.
Сообщение агента «исправлено» описывает его вывод. Для приёмки нужен результат, который подтверждает этот вывод.
15.07
Утилита проигнорировала сигнал таймаута. Последовательный прогон стоял до ручного завершения процесса. Вывод для приёмки: наблюдать завершение процесса отдельно. Другой способ остановки тогда только предложили.
07.08
После перехода на асинхронный вызов вызывающий код не дождался результата. Дальше ушёл пустой объект, который отклонил валидатор. Проверка должна доходить до значения, принятого следующим шагом.
10.08
При разборе нашли ещё и сокращённое ожидание в новой обёртке. После починки задачи выполнили повторно. Подтверждённый урок: обёртка сохраняет оговорённые настройки ожидания.
Первичные записи машины от 15.07 и 10.08.2026, проверены 08.10.2026. Дата 07.08 обозначает начало регрессии по расследованию 10.08. Частные названия и инфраструктура опущены.
3. Обещание агента превращают в наблюдаемый критерий.
Начинать нужно с обещанного поведения. Установка анализатора ещё не определяет, какой результат следует принять.
В задаче для агента фраза «поправить асинхронность» оставляет результат неопределённым. Нужны ожидаемый ответ и признак завершения.
Начало вызова, ответ и переданное дальше значение связывают одним идентификатором. Такой след выполнения называют трассой.
Трасса объясняет порядок операций. Проверка данных подтверждает результат: статус запроса «успех» ещё не доказывает нужное содержимое записи.
Обещание становится критерием.
Сценарии редакции по историям машины. Устройство трасс описывает OpenTelemetry, проверено 08.10.2026. Это требования к будущему прогону, не его результаты.
Браузерная трасса Playwright показывает действия, запросы и ответы. Она помогает связать клик с тем, что отправил браузер.
Для внутренней очереди и записи на сервере нужны серверные события или трассировка. Браузер не видит весь путь обработки.
Пустая трасса не доказывает отсутствие операции. Сборщик мог пропустить запрос или не охватить нужную функцию.
В распределённой системе порядок восстанавливают по связанным событиям. Сортировка логов по несогласованным часам не доказывает причинность.
След должен охватить проверяемую операцию.
OpenTelemetry и Playwright, проверены 08.10.2026. Критерии полноты следа для приёмки предложены редакцией.
4. Правку сравнивают на одинаковом сценарии и окружении.
Исходную и новую версии запускают с одинаковыми данными и настройками. Сравнение помогает заметить то, чего агент не собирался менять.
Критерий задаёт требование. Старое поведение само по себе не эталон: оно тоже могло нарушать это требование.
Быстрый ответ оставляет таймаут непроверенным. Для обёртки нужны управляемая задержка, ошибка зависимости и отмена в середине операции.
AbortController в Node.js подаёт сигнал отмены поддерживающему его API. Остановку связанной работы и отсутствие поздних записей проверяют отдельно.
Одинаковый сценарий делает сравнение полезным.
Протокол редакции. Сигналы отмены описывает Node.js, проверено 08.10.2026. Запуск проводится на стенде с тестовыми данными и управляемыми зависимостями.
5. Анализатор выбирают по тому, что может сломаться.
DAST проверяет уязвимости работающего веб-приложения. По OWASP сканер действует через внешние интерфейсы и проверяет поддерживаемые атаки.
Сканер не получает автоматически знание об обещании агента. Сохранение нужного значения требует своего сценария и критерия.
AddressSanitizer ловит ошибки обращения к памяти в инструментированной программе. В Node.js снимки кучи помогают исследовать удерживаемые объекты.
Снятие кучи Node.js останавливает главный поток и требует дополнительной памяти. Обе версии сравнивают при одинаковой настройке наблюдения.
Риск определяет инструмент.
OWASP, Playwright, Clang и Node.js, проверены 08.10.2026. Рост памяти за один запуск ещё не доказывает утечку. Это выбор проверки, а не рейтинг продуктов.
6. Принимают доказательство поведения, а не отчёт агента.
CTO нужен воспроизводимый артефакт: версия, вход, настройки, критерий и след выполнения. Скриншот зелёной сборки его не заменяет.
Решение о выпуске и ответственность за ошибку остаются у людей, которые ведут проект. Агент может подготовить сценарий и разобрать трассу.
Принимающий инженер сверяет вывод с требованием. В вердикте он называет проверенный путь и то, что осталось непроверенным.
Найденный сценарий становится проверкой следующей правки. В правилах для агентов закрепляют её запуск при изменении этого участка.
Вердикт называют по наблюдаемому результату.
Критерии приёмки редакции, 08.10.2026. Один успешный сценарий не подтверждает все пути программы.
Команда может вести такую проверку сама. Отдельная задача включает сценарий, инструментированный запуск и разбор поведения изменённого участка.
В разработке по подписке «Один проект» стоит 250 000 ₽/мес на 08.10.2026. Это цена подписки, а не отдельного аудита всего продукта.
Для конкретной правки можно обсудить сценарий проверки. Вход для разговора: обещание агента, видимый результат и условие остановки.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Наш опыт | Первичные записи машины от 15 июля и 10 августа 2026. Перечитаны причины, подтверждение починки и статус предложенных правил. Это работа инженера с агентами на своём проекте, не клиентский кейс | 2026-10-08 |
| Инструменты | Официальная документация OWASP, OpenTelemetry, Playwright, Clang и Node.js. Проверены предмет наблюдения и ограничения. Таблицы статьи задают протокол, а не результаты прогона | 2026-10-08 |
| Цена услуги | Живая страница /services: «Один проект», один продукт и один поток работы, 250 000 ₽ в месяц. Эта цена относится к подписке, не к отдельному аудиту | 2026-10-08 |
| Граница опыта | Своего опубликованного прогона DAST, санитайзера или анализа памяти нет. Истории поломок помогают выбрать сценарий проверки; они не подтверждают применение названных анализаторов | 2026-10-08 |
7. Частые вопросы
Динамический анализ исходного кода и DAST: это одно и то же?+
DAST проверяет безопасность работающего приложения через его интерфейсы. Динамический анализ шире: при запуске можно исследовать порядок операций, память и результат изменения данных. Название запроса не задаёт инструмент.
Нужен ли исходный код для динамического анализа?+
Внешний сканер DAST может работать без исходников. Для добавления внутренних событий или сборки с санитайзером обычно нужен доступ к коду и настройкам сборки. Набор наблюдений зависит от инструмента.
Можно ли выполнить динамический анализ кода онлайн?+
Если сервис запускает программу в подходящей среде, он может наблюдать выполнение. Загрузка текста исходников сама по себе этого не обеспечивает. Для корпоративной проверки нужны оговорённые данные, зависимости и права запуска.
Чем такой запуск отличается от мониторинга ошибок?+
Здесь инженер задаёт сценарий конкретной правки и принимает её по результату. Мониторинг наблюдает текущую эксплуатацию. Отсутствие сообщений об ошибках не подтверждает, что выбранный сценарий проверялся.
Почему прошедших автотестов бывает мало?+
Тест подтверждает заданные в нём условия. Если он проверяет быстрый ответ, но не задержку и завершение после отмены, эти ветки остаются непроверенными. Наблюдение выполнения дополняет тест нужным доказательством.
8. Источники
Источники
- OWASP Developer Guide: DAST tools · проверено 08.10.2026 — официальная документация
- OpenTelemetry: Traces · проверено 08.10.2026 — официальная документация
- Playwright: Trace Viewer · проверено 08.10.2026 — официальная документация
- Node.js: AbortController · проверено 08.10.2026 — официальная документация
- Clang: AddressSanitizer · проверено 08.10.2026 — официальная документация
- Node.js: Using Heap Snapshot · проверено 08.10.2026 — официальная документация
- Машина vibecoding.ru: публичная поверхность /open; истории сверены по журналам проекта 15.07 и 10.08.2026 — наш опыт
- «Один проект» на /services · условия на 08.10.2026 — условия услуги
Запомнить
- Сборка и выполнение дают разные доказательства. Для правки нужен сценарий с критерием результата.
- Обещание переводится в наблюдение. Ожидание проверяют по порядку и принятому значению.
- Отмена требует проверки завершения. После неё проверяют связанные действия и поздние изменения.
- Инструмент выбирают по риску. DAST, трасса и санитайзер решают разные задачи.
- Приёмка заканчивается воспроизводимой проверкой. Найденный сценарий защищает следующий заход в тот же участок.