No. 004Управление7 мин чтения

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

Лишь 17% организаций могут восстановить действия своих агентов. С 2 августа 2026 года Закон ЕС об ИИ требует наличия таких записей. Воспроизведение — вот что их обеспечивает.

Где-то в вашем стеке агент уже вычислил цифру, которая однажды окажется перед аудитором. Он рассчитал её — или сгенерировал; вы, возможно, не знаете, что именно — кто-то вставил её в презентацию, и та ушла в работу. Спустя месяцы приходит вопрос, который рано или поздно получает любая производственная система ИИ: откуда взялась эта цифра, и получим ли мы её снова сегодня?

Большинство команд отвечают транскриптом. По данным опроса Q1 2026 года среди 420 организаций, использующих агентов ИИ в продакшене, лишь 17% смогли восстановить полную последовательность вызовов инструментов, входных и выходных данных для конкретной задачи агента постфактум (AgentNode, 2026). У остальных 83% были частичные логи, не было логов вовсе, или логи фиксировали рассуждения модели, но не то, что она фактически вызывала. Транскрипт и ощущение.

17% full tool-call sequence reconstructable 83% partial logs · no logs · reasoning without invocations 0 25 50 75 100%
Доля организаций, способных восстановить полную задачу агента — каждый вызов инструмента, входные и выходные данные — постфактум. n = 420 · AgentNode, Q1 2026.

Запись становится законом

Какое-то время это было инженерным конфузом. Скоро станет юридическим.

Закон ЕС об ИИ требует, чтобы высокорисковые системы ИИ технически обеспечивали — заложенную в архитектуру, а не добавленную поверх — «автоматическую запись событий (логов) на протяжении всего жизненного цикла системы» (European Commission, 2024). Ручное ведение записей не удовлетворяет требованиям статьи 12. Логи должны быть достаточно полными, чтобы выявлять ситуации, несущие риск или существенное изменение, поддерживать мониторинг после выхода на рынок и отслеживать фактическую работу системы. Для дистанционной биометрической идентификации статья прямо называет минимум: каждый период использования, проверенная база данных, входные данные, приведшие к совпадению, физические лица, верифицировавшие результат. Это не «храните какие-нибудь логи». Это воспроизведите решение.

Сроки близко. Закон вступил в силу 1 августа 2024 года; запреты применяются с февраля 2025 года, обязательства в отношении моделей общего назначения — с августа 2025 года, а обязательства для высокорисковых систем, включая статью 12, применяются с 2 августа 2026 года (Future of Life Institute, 2026). Восемь дней с даты публикации этого материала. Высокорисковые системы, встроенные в регулируемые продукты (Приложение I), подпадают под действие закона в августе 2027 года.

Aug 2024 · in force Feb 2025 · prohibitions Aug 2025 · GPAI rules Aug 2026 · high-risk logging (Art. 12) Aug 2027 · Annex I products today · 25 Jul 2026 · 8 days out
Даты применения Регламента (ЕС) 2024/1689 — обязательства по ведению логов для высокорисковых систем Приложения III вступают в силу с 2 августа 2026 года. Источник: artificialintelligenceact.eu.

Для хранения также установлен минимальный срок. Провайдеры обязаны хранить автоматически сгенерированные логи не менее шести месяцев, а статья 26(6) возлагает зеркальную обязанность на операторов — дольше там, где этого требует иное законодательство, например GDPR, и в любом случае соразмерно целевому назначению системы, а не только минимуму (artificialintelligenceact.eu, 2024).

Всё это появляется не в вакууме. Статья 30 GDPR с 2018 года требует письменных записей об обработке — цели, категории данных, получатели, сроки удаления, меры безопасности — предоставляемых надзорному органу по запросу (gdpr-info.eu, 2016). Критерий CC7.2 SOC 2 предполагает мониторинг компонентов системы на предмет аномалий и анализ выявленного; CC7.3 — оценку того, не скомпрометировало ли событие ваши цели (AICPA, 2022). При аудите Type II эти критерии проверяются по доказательствам из логов за весь период проверки — как правило, двенадцать месяцев (AgentNode, 2026) — а не по скриншоту, сделанному в день визита аудитора.

Почему «логировать больше» не работает

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

Транскрипты фиксируют сказанное, а не выполненное. Лог чата — это модель, описывающая собственное поведение. Среди упомянутых 83% одна группа — именно такая: рассуждения зафиксированы, вызовы инструментов — нет. Когда описание расходится с исполнением, транскрипт сохраняет невозмутимость — вычисленное и сгенерированное выглядят одинаково на странице. Но это не одно и то же.

Лог, который нельзя повторно выполнить, — это показания, а не доказательство. Даже команды, фиксирующие каждый вызов инструмента, как правило, не могут запустить его снова и сравнить результат, потому что ничто не зафиксировало среду выполнения. SQL был сгенерирован заново в тот день, против базы данных, которая с тех пор изменилась; арифметика была получена из модели, которая изначально не была стабильной. Хранить это шесть месяцев — или двенадцать — значит дольше хранить утверждения, а не делать их проверяемыми. Формулировка статьи 12 точна: система должна технически обеспечивать запись. Воспроизводимость, не заложенная в архитектуру, не может быть добавлена библиотекой логирования постфактум.

Метаданные — не корректность. Минимально достаточная запись аудита — шесть ключевых полей, среди которых trace ID, временная метка и идентификатор агента (AgentNode, 2026) — устанавливает кто и когда. Она ничего не говорит о том, была ли цифра верной и получится ли она такой же сегодня. Исследования в области наблюдаемости агентов на основе LLM приходят к тому же выводу: отслеживаемость должна охватывать артефакты всего жизненного цикла агента, а не только сообщения (CSIRO Data61, 2024).

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

Происхождение как свойство результата

Ответ SQAI — сделать запись свойством выполнения, а не функцией логирования. Каждый выполненный результат несёт четыре хеша, каждый из которых отвечает на отдельный вопрос аудита:

  • contract_hash — что могло выполниться: точный контракт возможностей, действовавший в момент выполнения (sha256:79f1c5a6c716…).
  • plan_hash — во что разрешился запрос: валидированный план с зафиксированным путём разрешения (decision_path: "exact_spec").
  • invocation_hash — что выполнялось и на каких данных: возможность плюс канонизированные входные данные, включая input_hash данных в том виде, в каком они были.
  • computation_hash — что получилось: привязан к вызову и значению вместе.

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

invocation_hash  = sha256("sqai:invocation:v1\0" + canonicalJson(identity))
computation_hash = sha256("sqai:computation:v1\0" + invocation_hash + canonicalJson(value))

Вместе с хешами передаётся конверт детерминизма — зафиксированная среда выполнения: runtime_bundle_version 0.1.0 и его sha256, платформа и архитектура, precision_mode: float64, thread_count: 1, а также seed там, где он требуется. Десять симуляционных возможностей, которым он нужен, отказываются выполняться без него — seed_required, а не молчаливо иной ответ. Всё, что могло бы изменить цифру, либо зафиксировано, либо записано.

contract_hash plan_hash invocation_hash computation_hash what could run what it resolved to what ran, on what what came out sha256:79f1c5a6c716… decision_path: exact_spec includes input_hash bound to invocation + value envelope: runtime_bundle 0.1.0 · sha256-pinned · platform · arch · float64 · thread_count 1 · seed?
Четыре хеша с разделением по доменам сопровождают каждый выполненный результат; конверт фиксирует среду, в которой он был получен.

Вот что это даёт на практике. В марте агент вычисляет чистую приведённую стоимость:

finance.npv(0.1, [-1000, 300, 420, 560, 680])
→ 505.020148896933
computation_hash b74f67d0d7a594aa…

В июле приходит аудитор. Вы воспроизводите вызов — та же типизированная спецификация, та же зафиксированная среда выполнения — и сравниваете хеши: снова b74f67d0d7a594aa…, побайтово идентично. Не важно, выполняется ли воспроизведение на TypeScript или Python. canonicalJson и canonical_json — это кросс-языковой контракт сериализации: ключи отсортированы, -0 нормализован до 0, фиксированное экранирование unicode — поэтому одно и то же значение даёт одни и те же байты и один и тот же хеш в обоих случаях. На странице детерминизма показаны два таких конверта, разделённых месяцами, рядом друг с другом.

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

Соотнесём это с обязательствами. Автоматическая запись на протяжении жизненного цикла системы: каждый выполненный результат записывает себя сам, по конструкции — непроверяемого пути не существует, потому что поверхность выполнения — это 4 574 возможности только для чтения с типизированными входными данными, а не произвольные строки. Шесть или двенадцать месяцев хранения: сохраняйте конверты результатов; хранение становится вопросом инфраструктуры, а не археологии. Доказательства за период проверки SOC 2: артефакты и есть доказательства — ответ аудитору — это воспроизведение, а не расследование. Тот же конвейер формирует запись для каждой возможности, а постоянный журнал аудита входит в тариф Pro SQAI.

Восемь дней — и каждый аудит после

Августовская дата формально обязывает высокорисковые системы в ЕС. Но такие дедлайны задают шаблон для каждой последующей проверки — аудитора SOC 2, опросника при закупке, вашего собственного финансового директора в марте, спрашивающего о цифре из января. Агентам придётся обосновывать свои ответы так же, как это делают сотрудники: с документами. Большинство стеков не могут их предоставить, потому что сгенерированный SQL и выборочная арифметика не оставляют ничего достаточно стабильного для записи — проблема, которая начинается задолго до аудита.

Ответ, который можно воспроизвести, — это ответ, который можно защитить. Всё остальное — скриншот.