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

edge_types:
- name: service_owns_database
subject: service
object: database
writers:
- agent: inventory-agent
task: reconcile-service-topology
cardinality: many-to-many
conflict_policy: quarantine
- name: deployment_target
subject: service
object: environment
writers:
- agent: release-agent
task: promote-release
cardinality: one-to-one
conflict_policy: last-write-wins-with-timestamp
Важный выбор дизайна в том, что полномочия живут в схеме, а не в промпте агента. Правила на уровне промпта носят рекомендательный характер. Модель, которую попросили записывать только те рёбра, в которых она уверена, всё равно запишет ребро, когда контекст подсказывает, что это нужно, и нет механизма отклонить запись. Политика на уровне схемы обеспечивается путём записи: утверждение, которое не соответствует объявленному писателю для этого типа ребра, отклоняется до того, как достигнет графа.
Это не требует центрального органа для каждой записи. Это требует, чтобы полномочия были объявлены и проверяемы. Агенту можно предоставить широкую область записи для задачи, но предоставление — это запись, а не инструкция в системном промпте.
Разрешение конфликтов: противоречивые рёбра — это норма
Два агента, утверждающие противоречивые рёбра, — это нормальное событие, а не ошибка. Агенты работают с частичными представлениями, в разное время, с разными доказательствами. Граф, который рассматривает противоречие как исключение, либо остановится, либо молча перезапишет, и оба варианта неверны.
Приоритет должен быть определён заранее, для каждого типа ребра. Три рабочих варианта:
- Last-write-wins с временными метками. Просто и предсказуемо, но отдаёт приоритет свежести над доказательствами. Агент, который записывает устаревшее убеждение позже, чем лучше информированный, выигрывает случайно.
- Слияние с учётом уверенности. Каждое утверждение несёт уверенность и источник. Правило слияния объединяет их. Это более выразительно, но требует, чтобы уверенность была калибрована, а некалиброванная оценка уверенности — это просто число, которое заставляет слияние выглядеть обоснованным.
- Карантин до запуска резолвера. Конфликтующие рёбра удерживаются вне читаемого графа, и шаг разрешения — выделенный агент, проверка человеком или детерминированное правило — решает, какое выживет.
Для фактов, на основе которых будут действовать другие агенты, карантин обычно правильный. Цена — задержка: граф временно неполон для этого ребра, и любой агент, которому нужен факт, должен ждать или продолжать с явным неизвестным. Это реальный компромисс. Last-write-wins сохраняет граф постоянно читаемым ценой occasional распространения неверного убеждения. Карантин сохраняет граф заслуживающим доверия ценой доступности. Выбор должен следовать последствиям действия на основе невер
a/server-rack-closeup-5ed2bb-8c3175.jpg)
Карантин также нуждается в условии выхода. Конфликт, который никогда не разрешается, — это постоянная дыра. Резолвер должен быть определённым шагом с определённым триггером — запланированная сверка, порог по количеству заблокированных нижестоящих чтений или эскалация, когда конфликт сохраняется через границу запуска.
Согласованность чтения для нижестоящих шагов
Агенту, который читает граф в середине запуска, нужен снимок, а не живое представление. Если граф меняется между двумя чтениями в рамках одной траектории агента, траектория не воспроизводима: решения агента зависят от состояния, которого больше не существует и которое нельзя восстановить.
Механизм — версионирование графа. Каждая запись увеличивает счётчик версий, и чтение обслуживается относительно конкретной версии. Запуск записывает версию, из которой он читал, в свою траекторию, вместе с вызовами инструментов и выводами модели. Воспроизведение запуска против той же версии даёт те же входные данные, что является минимальным требованием для отладки отказа мультиагентной системы.
Это взаимодействует с карантином. Ребро в карантине отсутствует в снимке, поэтому агент, читающий эту версию, видит факт как неизвестный, а не как оспариваемый. Приемлемо ли это, зависит от того, может ли агент продолжать с неизвестным. Если нет, запуск должен блокироваться на разрешении, а не читать версию, которая опускает нужный ему факт.
Версионирование также делает хранение управляемым. Устаревшие рёбра — это вопрос политики хранения той же формы, что и хранение памяти: как долго ребро остаётся читаемым и что запускает его вывод из обращения? Ребро, которое было вытеснено, не удаляется сразу — оно может понадобиться для объяснения прошлого запуска. Практическое правило — выводить рёбра из текущей читаемой версии, сохраняя их адресуемыми по версии для аудита. Сборка мусора тогда работает с версиями, а не с отдельными рёбрами, что сохраняет целостность аудиторского следа.
Что это означает для дизайна
Общий граф знаний для мультиагентной системы — это не выбор хранилища. Это набор политик о полномочиях, конфликтах и согласованности, которые случайно выражены в графе. Слой хранения — это лёгкая часть.
Работа по дизайну — в схеме: какие типы рёбер существуют, кто может их записывать, что происходит, когда два писателя не согласны, и какую версию видит читатель. Эти решения определяют, будет ли граф общим состоянием, о котором агенты могут рассуждать, или общим источником слухов, из которого агенты извлекают.
Честный компромисс в том, что граф, управляемый политиками, медленнее для записи и медленнее для чтения, чем векторное хранилище. Записи проверяются на полномочия, конфликты могут помещаться в карантин, а чтения привязаны к версиям. Эти накладные расходы покупают воспроизводимость и защитимое понятие согласия. Для систем, где агенты действуют на основе общих фактов, это обычно правильный компромисс. Для систем, где агентам нужно только вспоминать похожий текст, это излишне.
