2026-08-01T17:27:15.976Z
AI агент Наблюдаемость для повторных испытаний: поймать двойные эффекты
Детерминистический аудит из четырех операций показывает, как стабильная идентификация операций, хэши полезной нагрузки и полученные результаты прекращают небезопасные повторные попытки после неоднозначных выпусков.
Агент не должен перепробовать звонок инструмента просто потому, что его след заканчивается в таймеауте. Возможно, запрос достиг поставщика, изменил реальное состояние и потерял только ответ. Вторая попытка может затем отправить сообщение дважды, создать два билета или предоставить два ресурса, в то время как оба следа выглядят индивидуально разумными. Правило полезного здоровья более строго: логическая операция one должна привести к не более одного проверенного эффекта . Предоставьте операции стабильную идентичность, сохраняйте эту идентичность во всех попытках, записывайте полученные результаты со стороны поставщика и блокируйте автоматическую повторную попытку, когда эффект не может быть безопасно проверен. Попытки и HTTP статус все еще помогают с диагностикой, но ни одно не доказывает результат. В этой статье мы создаем небольшой регистр эффектов и тестируем его на четыре операции. Устройство содержит восемь попыток и четыре наблюдения поставщика. Политика только попыток приведет к выпуску времени и продолжит повторные попытки трех операций. В результате проверки обнаруживается одно здоровое воспроизведение, один инцидент с двойным эффектом, один конфликт с ключевой независимостью и одна честно неопределенная операция. Отсрочка не является доказательством того, что ничего не произошло. Опасное окно находится между удаленным исполнением и местным признанием. Провайдер может совершить эффект, а затем потерять ответ на обратном пути. С точки зрения агента, эти две истории схожи по наблюдению: 1. запрос никогда не достигал поставщика; 2. Запрос был заполнен, но ответ не был получен агентом. Только первую историю можно повторить без дополнительной защиты. Второй создает дубликат, когда операция не является естественно бессильной. Семантика HTTP обеспечивает полезную границу. RFC 9110 определяет метод без возможности как тот, чьи предполагаемые серверные эффекты после нескольких идентичных запросов одинаковы с последующими запросами. Он позволяет автоматическое повторение после неисправности коммуникации для idempotent методов, но говорит, что клиент не должен автоматически перепробовать неidempotent запрос, если он не знает, что операция эффективно idempotent или может обнаружить, что оригинал никогда не был применен. Это отличие относится к здоровью агентов. PUT , который заменяет известную запись, и POST , который отправляет электронную почту, могут оба выйти, но они не имеют одинаковой границы повторной попытки. Общая политика timeout → retry удаляет семантический факт, который имеет самое главное значение. Поддержка поставщика помогает, но контракт должен быть четко прочитан. Документы из полосы, который хранит код статуса и орган для первого запроса, сделанного с помощью клавиша незаменимости, а затем возвращает этот результат в более поздние запросы с тем же ключем. Он также сравнивает параметры и отвергает повторное использование с разными параметрами. Следовательно, ключ не является случайным ярлыком, прикрепленным к каждой попытке. Она представляет собой одну стабильную логическую операцию. Документы Amazon EC2 аналогичный шаблон клиентских токенов: успешная повторная попытка с тем же токеном и параметрами не выполняет никаких дальнейших действий, в то время как измененные параметры могут вызвать IdempotentParameterMismatch . EC2 также охватывает некоторые гарантии на региональном или зональном уровне. Имеет токен недостаточно; медицинская запись нуждается в охвате токена, идентификации полезной нагрузки, окне хранения и поведении поставщика. Разумный дефолт: повторное использование одной идентификации операции во всех попытках; повторное использование ключа от свободы поставщика только для той же канонической полезной нагрузки; после двусмысленного результата допрос данной идентичностью перед повторной попытками; если поставщик не предлагает ни свободы, ни поиска, требуют человеческого решения о последствиях. Отключение снижает давление на неисправное обслуживание. Это не превращает неидемопотентное действие в неидемопотентное. Запись эффектов, не только попытки Обычная запись отвечает Что пытался агент? Книга эффектов отвечает на другой вопрос Какие долгосрочные изменения мы можем доказать? Сохраняйте две записи связаны, потому что попытки остаются полезными доказательствами, но не рассматривайте терминальный период попытки как результат бизнеса. Для минимальной книги требуются следующие поля: Поле Цель Происшествие здоровья, которое он обнаруживает operationId Устойчивая идентификация для предполагаемой эксплуатации пользователя Новый идентификационный код для каждой повторной попытки attemptId Идентификация за одну попытку перевозки Попытки отсутствия или перекрытия idempotencyKey Идентификация дедублирования поставщика, если поддерживается Ключевые изменения в повторных попытках payloadHash Хаш канонической, отредактированной полезной нагрузки Один и тот же ключ, повторно использованный для разных целей effectRef Идентификация поставщика или пункта назначения фактического эффекта Более одного долговечного эффекта result Транспортное наблюдение, такое как timeout или success Неоднозначное признание observedAt Время сбора доказательств Старые доказательства, ошибочные для текущего состояния Не помещайте в эти поля секреты, адреса электронной почты, полные запросы или полезные загрузки инструментов. Hash каноническое представление после удаления волатильных значений. Сохраняйте чувствительный сырье на месте происхождения, когда это требуется для расследования. Идентификация операции должна быть запечатана, когда намерение становится долговечным, а не внутри циркуляции повторной попытки. Например: Сниппт по конструкции неполный: поймать исключение и продолжать не является доказательством безопасности. Звонок также должен сохранить возвращенный идентификатор объекта поставщика или запросить поставщика по той же бизнес идентификации после неоднозначного ответа. Считайте уникальные эффекты, а не успешные ответы. Два успешных ответа, обоих которых называют ticket 908 , описывают один эффект. Один отпуск времени, за которым следует успех, который называется delivery a и delivery b , описывает два эффекта. Напротив, нулевые поступления не доказывают нулевых эффектов, когда канал поиска недоступен. Это состояние uncertain , не здоровое и не автоматически застряло. Идентификация полезной нагрузки это отдельная ворота. Если две попытки разделяют ключ независимости, но имеют разные канонические хэши полезной нагрузки, остановитесь перед интерпретацией количества эффектов. Может быть, звонитель случайно повторно использовал ключ после изменения запрошенного региона, получателя, количества или формы ресурса. Ошибки несоответствия параметров со стороны поставщика являются полезным доказательством этой точной ошибки. Проведение аудита эффекта четырех операций Инспектируемым устройством, используемым для данной статьи, является NDJSON. Каждая строка представляет собой либо наблюдение attempt , либо наблюдение effect . Комплексный локальный артефакт содержит четыре логических операции: op ticket 42 : две попытки разделяют один ключ и одну полезную нагрузку; оба наблюдения указывают на ticket 908 ; op webhook 77 : две попытки не имеют ключа от независимости и показывают delivery a плюс delivery b ; op vm 5 : две попытки повторного использования одного ключа с различными хэшами полезной нагрузки; op email 3 : две попытки отключения времени, нет получения результатов, и у поставщика нет пути поиска. Аудиторские группы регистрируют по operationId , отклоняют дрейф полезной нагрузки перед подсчетом эффектов и рассчитывают различные значения effectRef , а не строки наблюдения эффектов: Использование артефакта хранилища: производит: Три замечания изменяют оперативное решение. Во первых, op ticket 42 имеет две записи попыток и две наблюдения эффекта, но оба наблюдения решаются на один объект поставщика. Приведенное предупреждение на строках эффекта 1 будет ложным положительным. Стабильный провайдер это то, что доказывает дедублирование. Во вторых, op webhook 77 включает в себя успешную вторую попытку. Дешборд, предназначенный только для транспортировки, может закрыть инцидент. Две ссылки на эффект доказывают, что восстановление создало вторую передачу, поэтому правильное состояние является дублированием, и следующей задачей является примирение, а не повторная попытка. В третьих, op vm 5 не имеет дублирующего эффекта в устройстве, но он по прежнему небезопасен. Повторно используемый ключ охватывает два различных хэши нагрузки. Ждать, пока не появится второй ресурс, позволит обнаружить проблему слишком поздно; ключевой конфликт это профилактическая неисправность здоровья. Аудит имеет важное ограничение: он может классифицировать только представленные доказательства. Для op email 3 никакой квитанции и никакой трассы поиска не позволяют узнать результат. В книге нет уверенности. Повторная попытка может завершить отсутствующую работу или повторить завершенную работу, поэтому ограниченный ответ заключается в том, чтобы выявить неоднозначность и попросить власть. Превратить результат в границу повторной попытки Используйте классификацию для управления следующим действием, а не просто цвет панели: Классификация Доказательства Безопасный дефолт healthy Одна полезная нагрузка идентичность и точно один уникальный эффект Прекратите повторные попытки; проверьте предполагаемую поставку duplicate Более одного уникального эффекта для одной операции Блок повторных попыток; согласовывать или компенсировать с одобрением key conflict Один ключ, прикрепленный к нескольким хэшам полезной нагрузки Блок исполнение; новая операция только после пересмотра намерения uncertain Никаких доказательств эффекта и достоверных доказательств отсутствия Спросите снова, подождите новые доказательства, или спросите человека Временный лимит все еще необходим. Записи о несостоятельности поставщика могут истечь, индексы поиска могут задерживаться, а место назначения может находиться за пределами границы транзакции поставщика. Сохранить документальное хранилище и объем работы рядом с ключом. После истечения этой границы одно и то же запрос может быть не безопасным, даже если первоначальный путь кода не изменился. Проверка восстановления должна достичь первоначального результата. Объект одного поставщика все еще может быть неверным: билет может существовать с неправильным проектом, или ресурс может быть создан, но никогда не будет готов. Инвариант с одним эффектом предотвращает дублирование; отдельный результат контракт проверяет, что эффект выживания является тем, что пользователь намеревался. Для оценки оперативного здоровья сообщите пять фактов вместе: 1. логическая эксплуатация и отпечатки пальцев полезной нагрузки; 2. попытки и результаты их перевозки; 3. охват и свежесть свободы поставщика; 4. отмеченные различные долгосрочные эффекты; 5. границы полномочий для повторной попытки, компенсации или примирения. Это делает "успешный процесс" частью доказательств, а не вердикта. Более здоровый вердикт заключается в том, что существует и проверен один предполагаемый эффект, или, когда доказательства неполны, эффект является неопределенным; автоматическая повторная попытка блокируется. Sidewisp сейчас находится на этапе закрытого предварительного доступа. Его публичная система статей и интерактивная демонстрация продуктов являются живыми, но коллекция продуктового агента здоровья, адаптеры запуска, управление cron, анализ стоимости токенов и восстановление, как правило, не отправляются. Вышеприведенные примеры представляют собой схему работы, а не утверждение о том, что Sidewisp в настоящее время проверяет или ремонтирует живых агентов. Sidewisp не является заменным пусковым устройством, обязательным шлюзом, сырым продуктом отслеживания, контрольным самолетом предприятия или автономным фиксатором. Если правило в отношении здоровья с учетом последствий поможет вам управлять существующими агентами, подумайте о том, чтобы присоединиться к частному просмотру. Сохраняйте казнь там, где она уже проходит; дайте повторным попыткам заработать свою безопасность через доказательства.