AI Extensions, 7 ноября: Quarry и значение незавершенного сканирования
Quarry проверяет последовательности и объясняет совпадения. Незавершенные проверки, модельные адаптеры и блокировка действий имеют отдельные границы.

Чтение файла перед HTTP-запросом может означать другое, чем те же вызовы в обратном порядке. Cisco Project Quarry предлагает правила для последовательностей событий в диалоге агента, а не только отдельные оценки сообщений.
Это обзор открытой альфа-версии и плагина, проверенный 7 ноября 2026 года. Я прочитал документацию, примеры конфигурации и лицензию. Пакет не устанавливал, модель не подключал, частные диалоги не сканировал и анализ инцидента Cisco не воспроизводил. Последний коммит основной ветки датирован 3 ноября. Активность помогает оценить сопровождение, но не качество обнаружения.
Плагин дает доступ к движку
Документация плагина описывает пять инструментов только для чтения: поиск справки, компиляцию правила, дерево решений, подсчет путей решений и сканирование явно переданного JSON диалога. MCP связывает хост агента с локально установленным движком. Инструмент сканирования сам не читает файлы и сохраненные сессии. У хоста могут быть другие средства доступа к файлам, поэтому это контракт инструмента, не изоляция всей сессии.
Документированный запуск использует репозиторий как единый пакет и зафиксированную конфигурацию uv. Поддерживаются Python 3.11-3.13. Для локальных примеров ключ провайдера не нужен. Подключение семантической модели меняет границу данных: ее адаптер может отправлять выбранные части диалога на настроенный адрес.
Файл LICENSE содержит Apache 2.0 с условиями уведомлений и отказом от гарантий. DSL находится в альфа-стадии и может измениться до 1.0. Для пробного внедрения я зафиксировал бы проверенную ревизию.
Что проверяет автомат
Описание движка говорит о разборе, проверке и компиляции правил в детерминированные конечные автоматы при загрузке. Диалог преобразуется в конечную трассу. Сообщение ассистента с вызовом инструмента добавляет событие сообщения и событие вызова: позиции событий могут отличаться от индексов сообщений.
Локальные предикаты проверяют имена инструментов, аргументы, текст и счетчики. Необязательные модельные проверки превращают оценки или категории в условия той же логики. При одинаковых результатах проверок автомат идет одинаковым путем; модель при повторном запросе может дать другой результат.
Пример из документации ищет чтение чувствительного пути до запроса на заданный хост. Совпадение доказывает этот порядок и аргументы на переданной трассе. Оно не доказывает отправку содержимого файла. Для более сильного утверждения нужны сравнение значений и запись самих данных. Незаписанные действия движок не видит.
Не терять третий исход
CLI различает код 0: завершено, совпадений нет; 1: завершено, есть совпадения; 2: неверный ввод или незавершенное сканирование. Таймаут или ошибка вычисления не означают «ничего не найдено».
Руководство интеграции требует проверять статус перед чтением совпадений. QuarryGuard делает это сам; с DSLScanner проверка лежит на вызывающем коде. Мой поясняющий пример не запускался и не является механизмом блокировки:
def classify_supplied_trace(scanner, conversation):
result = scanner.scan_data(conversation)
result.raise_for_status()
return "matched" if result.rule_matches else "complete_clean"
# Ошибки сканирования обрабатывает хост.
# Результат не разрешает действие от имени пользователя.
Хост может отдельно приостанавливать действие при совпадении или ошибке. Проверка после HTTP-запроса не остановит уже отправленный запрос. Чистый результат не создает согласия пользователя.

Что означает свидетельство
При включенном объяснении Quarry возвращает поддерживающие события, witness. Для некоторых правил движок удаляет события и повторяет проверку, сокращая набор. Лимиты могут оставить лишние события; возможен другой набор. Это одно объяснение, не обязательно кратчайшее или полная история инцидента.
В сокращенном списке соседние элементы могли быть далеко друг от друга в исходной трассе. Для правил расстояния нужны оригинальные позиции. Условия отсутствия или «все сообщения» могут требовать всего набора, а статическое условие может совпасть с пустым witness. Пустота сама по себе не означает ошибку.
Маскирование некоторых секретов и обрезка выдержек не гарантируют безопасную публикацию. Объяснения, ошибки валидации и запросы модели могут содержать частные данные. Документация запрещает бездумно отправлять диагностику в публичную телеметрию.
Ограниченная проба перед решением
Я предложил бы вымышленные примеры: нужный порядок чтения и запроса, обратный порядок, безобидный другой адрес, поврежденные аргументы и превышение лимита. Сохранять ревизию правила, статус завершения, совпадения и исходные позиции. Это план, не результаты Quarry.
Проверенное правило -> компиляция -> сканер
Вымышленная трасса -> проверка -> завершено без/с совпадением
|
ошибка или незавершенность
|
отдельная политика хоста
Конфигурация ограничивает ввод, время, работу компилятора и вызовы модели. Отклоненная большая трасса не становится усеченным «чистым» диалогом. Скомпилированным политикам нужна проверка происхождения.
В конфигурации примеров четырнадцать файлов правил. Четыре семантических примера используют ключевые слова вместо настоящего модельного решения; комментарий прямо запрещает использовать их для производственных решений. Демо без ключа не является измерением детектора атак.
Моя оценка: Quarry заслуживает ограниченной пробы для проверяемых правил последовательности. Альфа-статус, границы адаптеров и завершенность должны оставаться в отчете. Объявление Cisco разбирает инцидент контрфактически, без воспроизведения на его исходных данных. Превращать это в показатель точности нельзя.