Архитектура метаинтеллектаМетаинтеллект · Протоколы · Отношения

Связь как объект первого класса: отношение с состоянием и историей

В большинстве систем связь между участниками невидима: есть вызовы, есть очередь, есть общий канал. Если сделать отношение самостоятельным объектом с собственным состоянием и историей, появляются вещи, которых иначе нет: участники могут договориться, пересмотреть условия и корректно разойтись.

Архитектура метаинтеллекта · часть 3 из 6

Что теряется, когда связи нет как объекта

Если взаимодействие сводится к вызову, у него нет памяти. Каждый обмен начинается с нуля: кому что можно, какой нужен контекст, работает ли эта пара вообще, всё выясняется заново. Знание о собственной структуре система не накапливает.

Отношение как объект хранит это знание: что стороны согласовали, как часто им полезно общаться, что уже передано, насколько связь надёжна и стоит ли её поддерживать дальше.

Что содержит связь

Переговоры вместо назначения

Связь возникает по согласию сторон, приказом среды её не создать. Инициатор предлагает условия. Вторая сторона принимает, отклоняет, откладывает или выдвигает встречное предложение, и тогда роли меняются местами. Получается чередующийся протокол переговоров с сохранённой стенограммой.

Польза стенограммы видна позже. Когда нужно понять, почему два участника работают именно так, ответ лежит в истории их договорённостей, а не в чьей-то памяти. Пересмотр условий идёт тем же механизмом: перезаключить связь значит пройти тот же путь, что и при заключении.

Адаптация под наблюдаемую пользу

Условия обмена не вечны. Если связь приносит мало пользы, стороны снижают частоту и объём обмена, если много, усиливают. Связь, которая перестала приносить пользу, сначала слабеет, потом засыпает, потом уходит в отставку.

Звучит как биологическая метафора, но смысл инженерный. В ограниченной среде поддержание связи стоит ресурсов, и автоматическое ослабление бесполезного не даёт тратить их на структуру, которая больше ничего не приносит. Без такого механизма долгоживущая система обрастает связями, которые никто не решается удалить.

Испытательный срок

Новая связь не получает полных прав сразу. Сначала она в испытательном состоянии: обмен идёт, но объём ограничен, а надёжность накапливается. Полноценной связь становится только после подтверждённой пользы.

Тот же принцип мы применяем к автономии агентов в прикладных системах: права расширяются по накопленной статистике, авансом их не выдают. Разница в том, что здесь принцип встроен в саму среду и не зависит от политики конкретного проекта.

Что это даёт системе целиком

  1. Структура системы становится наблюдаемой: связи можно перечислить, измерить и объяснить.
  2. Конфликты правок исключает сама конструкция, договорённости между разработчиками для этого не нужны.
  3. Разрыв отношения становится штатной операцией. Удалять код для этого не нужно.
  4. История договорённостей заменяет устное знание о том, почему всё работает именно так.
  5. Стоимость поддержания структуры видна, и ею можно управлять.

Есть и ограничение. Всё это оправдано там, где отношений много и они долгие. Для пары компонентов, которые обмениваются сообщениями два раза в час, обычная очередь проще и дешевле.

Код и артефакты

Серия «Архитектура метаинтеллекта»

  1. Метаинтеллект: почему потолок системы задаёт среда вокруг модели
  2. Агент как ограниченный локальный мир
  3. Связь как объект первого класса: отношение с состоянием и историей
  4. Живой граф: топология как следствие работы
  5. Согласие без центра: как решать вместе, не доверяя никому на слово
  6. Экономика агентов: почему автономии нужен бюджет

Частые вопросы

Чем это отличается от очереди сообщений?

Очередь переносит данные и ничего не знает об отношении сторон. Связь как объект хранит согласованные условия, права на изменение общего состояния, историю ревизий и собственную оценку полезности. Очередь может служить транспортом внутри такой связи, но заменить её не может.

Не проще ли задать структуру связей заранее?

Проще, если задача известна целиком и не меняется. Как только состав задач меняется по ходу работы, заранее заданная структура начинает мешать: нужные сейчас связи никто не создаст, а ненужные никто не удалит.

Как избежать бесконечных переговоров?

У предложений есть срок жизни, и они истекают, а число встречных ходов ограничено. Отложенное предложение возвращается позже, отклонённое закрывает попытку. Переговоры здесь устроены как конечная машина состояний, свободного диалога в них нет.

Чем мы помогаем по этой теме

Читать дальше

Следить за серией

Если вы строите похожую среду или хотите обсудить исследование вместе с нами, напишите через форму на главной.

Написать на hello@xteam.pro