Сигнал корпуса
Повторяющийся паттерн в экспериментах с агентной торговлей: агент, получивший денежный баланс и рыночный поток данных, не просто размещает несколько продуманных ордеров. Он начинает крутиться. Покупает, продаёт, снова покупает, и журнал сделок заполняется циклами, которые не объясняются заявленной стратегией. Заманчиво прочитать это как провал стратегии — плохие сигналы, слабый аппетит к риску, слишком настойчивый промпт. Такое прочтение упускает более полезный сигнал. Интересный сбой здесь структурный: нет расчётной границы между намерением агента и состоянием, на которое он опирается в следующий момент.
В традиционной торговой системе цикл явный. Ордер авторизуется, отправляется, подтверждается, исполняется, а затем рассчитывается. Каждый этап имеет собственное представление, и позиция, которую видит стратегия, — это сверенное состояние, а не ордер, который она надеялась разместить. Агент, работающий без такой границы, схлопывает этапы. Он относится к авторизованному действию как к исполненному, а к исполненному — как к рассчитанной позиции. Результат — повторяющиеся циклы, потому что агент так и не узнаёт, что произошло на самом деле.
Авторизовано — не значит исполнено
Разрешение и результат — разные вещи, и агентные фреймворки регулярно их смешивают. Агент может иметь действующий мандат на торговлю и при этом действовать на устаревшем состоянии. Мандат говорит, что ему разрешено делать; он ничего не говорит о том, что мир содержит в данный момент. Когда эти две вещи не разделены, следующее решение агента строится на предположении, а не на факте.
Рассмотрим три различных объекта, которые торговый цикл обязан держать раздельно:
- Ордер — инструкция, которую агент имеет право выдать.
- Исполнение — частичное или полное исполнение этого ордера площадкой.
- Учтённая позиция — сверенное, рассчитанное владение после клиринга.
Ордер — не исполнение. Исполнение — не позиция. Позиция — не баланс, доступный для повторного расходования. Каждый переход может сорваться, завершиться частично или прийти не в том порядке. Агент, который читает собственное намерение так, будто это состояние, будет снова выдавать инструкции против позиции, которой не существует, или против денег, которые уже задействованы.
Повторяющиеся циклы — видимый симптом отсутствующей сверки. Если агент не может прочитать, чем он владеет, он не может знать, достигло ли цели его предыдущее действие. Поэтому он действует снова. И снова. Эта круговерть — не стратегия; это разрыв сверки, выраженный в торговой активности. Та же динамика проявляется всякий раз, когда агенту дают возможность без соответствующего пути обратного чтения.

Что должен нести расчётный слой
Расчётный слой для агентов — это не таблица базы данных, прикрученная в конце. Это компонент, который заставляет намерение и состояние сойтись. Три свойства несут основную нагрузку.
Ключи идемпотентности на намеренное действие, а не на запрос
Большинство реализаций идемпотентности используют ключ на HTTP-запросе. Для агента это неверная единица. Агент может повторить запрос, переформулировать промпт или породить субагента, который выдаёт то же логическое действие через другой путь. Если ключ выводится из запроса, одно и то же намерение может произвести несколько эффектов. Ключ должен выводиться из намеренного действия — стабильного идентификатора, который агент фиксирует до действия и переиспользует при каждом повторе и на каждом транспорте.
intent_id = hash(agent_id, action_type, target, quantity, window)
Агент генерирует intent_id один раз, записывает его и прикрепляет к каждой попытке. Расчётный слой принимает первый эффект для этого ключа и отклоняет или дедуплицирует остальные. Именно это превращает агента «хотя бы раз» в эффект «ровно один раз», не требуя от модели надёжности.
Путь отката с теми же полномочиями, что и прямой путь
Если агент может совершить действие, но не может чисто его откатить, каждая ошибка становится постоянной, а каждая неопределённость — поводом действовать снова. Откат должен быть полноценной операцией с тем же мандатом, тем же аудиторским следом и той же дисциплиной идемпотентности, что и прямое действие. Компенсирующее действие — не обработчик исключений; это часть нормального интерфейса. Без него агенты либо замирают, либо переторговывают, потому что единственный способ исправить предполагаемую ошибку — выдать ещё одно прямое действие.
##
media/server-rack-closeup-79da28-73e14b.jpg)
Сверка обычно представляет собой нижестоящую пакетную задачу: ночной процесс, который сравнивает внутренние записи с площадкой. Для агента это слишком медленно и слишком далеко от решения. Сверка должна быть предоставлена как инструмент, который агент может вызвать до того, как действовать снова. Инструмент отвечает на узкий вопрос: каково моё рассчитанное состояние прямо сейчас и какие из моих намерений ещё не разрешены? Агент, который может это спросить, перестанет гадать. Агент, который не может, продолжит действовать на устаревшем состоянии.
Обобщение за пределами финансов
Структура не специфична для торговли. Любая область с этапом расчёта имеет ту же форму и тот же режим отказа, когда агенту дают авторизацию без пути обратного чтения.
- Оформление заказа. Агент авторизует платёж, платёжный процессор его захватывает, и состояние заказа рассчитывается асинхронно. Агент, который относится к авторизованному платежу как к завершённому заказу, повторит оформление, спишет дважды или пообещает запасы, которыми не владеет. Ключ идемпотентности принадлежит намерению покупки, а не вызову API.
- Бронирование. Бронь запрашивается, подтверждается, а затем удерживается против ёмкости, которая может быть освобождена. Агент, который читает подтверждение как рассчитанную бронь, допустит перебронирование, когда удержание истечёт, потому что он так и не сверил эти две вещи.
- Провижининг. Ресурс запрашивается, создаётся, а затем становится доступным с задержкой. Агент, который действует на запрос так, будто это уже работающий ресурс, выдаст зависимые действия против чего-то, что ещё не существует.
В каждом случае средство одно: агент должен прочитать состояние обратно, прежде чем действовать снова, а система должна дедуплицировать по намерению, а не по запросу. Область меняет словарь, но не механизм.
Честный компромисс
Расчётная граница стоит задержки и сложности. Обратное чтение состояния перед действием добавляет круговой рейс к каждому решению, а поддержание ключей намерений, путей отката и инструментов сверки — это настоящая инженерная работа, которой наивный агентный цикл избегает. Есть соблазн пропустить её для областей с преобладанием чтения или низкими ставками, где цена дублирующего действия мала.
Этот компромисс законен, но его следует делать явно, а не по умолчанию. Режим отказа при его пропуске — не медленный агент; это агент, который не может сказать, что он сделал. В торговле это проявляется как круговерть. В оформлении заказа — как дублирующие списания. В провижининге — как осиротевшие ресурсы. Расчётный слой — это то, что позволяет агенту действовать с полномочиями и при этом знать разницу между тем, что он запросил, и тем, что истинно.
Правило дизайна
Если агент может совершить действие, у которого есть этап расчёта, ему нужны три вещи: стабильная идентичность намерения, путь отката с равными полномочиями и инструмент, который читает обратно рассчитанное состояние. Одной авторизации недостаточно. Сигнал корпуса из агентной торговли не в том, что агенты торгуют плохо; он в том, что они торгуют повторно, когда никакая граница не отделяет их намерение от мира. Постройте границу, и круговерть перестанет быть симптомом и станет решением.
