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