为什么共享上下文总在被重新发明
大多数需要共享上下文的多智能体系统都从向量存储开始。这是阻力最小的路径:将每个智能体所知的内容嵌入,按相似度检索,剩下的交给模型处理。这在两个智能体需要基于同一事实行动之前一直有效。
向量存储共享的是召回,而非状态。检索返回的是与查询看起来相关的分块排名列表;它不返回系统已承诺的一组命题。两个智能体可以检索到重叠的上下文,却无限期地持有不兼容的信念,因为存储中没有任何东西表示这种矛盾。一个智能体断言部署目标是 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
重要的设计选择是:权限存在于模式中,而非智能体的提示中。提示层面的规则是建议性的。一个被要求只写入自己有把握的边的模型,在上下文暗示它应该写入时仍会写入,而且没有任何机制可以拒绝这次写入。模式层面的策略由写入路径强制执行:与该边类型声明的写入者不匹配的断言会在到达图之前被拒绝。
这并不要求每次写入都经过中央权威。它要求权限被声明且可检查。一个智能体可以被授予某个任务的宽泛写入范围,但该授权是一条记录,而非系统提示中的指令。
冲突解决:矛盾的边是正常的
两个智能体断言矛盾的边是正常事件,而非错误。智能体基于部分视图、在不同时间、以不同证据运作。将矛盾视为异常的图要么停止,要么静默覆盖,而两者都是错的。
优先级必须按边类型预先决定。三种可行的选项:
- 带时间戳的最后写入胜出。 简单且可预测,但它让新近性凌驾于证据之上。一个写入过时信念的智能体,如果写入时间晚于一个信息更充分的智能体,就会意外胜出。
- 置信度加权合并。 每个断言携带一个置信度和一个来源。合并规则将它们组合起来。这更具表达力,但它要求置信度经过校准,而未校准的置信度分数只是一个让合并看起来有原则的数字。
- 隔离,直到解析器运行。 冲突的边被排除在可读图之外,由一个解析步骤——专用智能体、人工审查或确定性规则——决定哪一条存活。
对于其他智能体将据以行动的事实,隔离通常是正确的。代价是延迟:图对该边暂时不完整,任何需要该事实的智能体必须等待,或带着一个显式的未知继续。这是一个真实的权衡。最后写入胜出保持图持续可读,代价是偶尔传播错误信念。隔离保持图可信,代价是可用性。选择应取决于基于错误边行动的后果,而非写入路径的便利性。
隔离还需要一个退出条件。一个永远不被解决的冲突是一个永久的空洞。解析器应是一个有明确触发条件的明确步骤——定
a/server-rack-closeup-5ed2bb-8c3175.jpg)
下游步骤的读一致性
在运行中途读取图的智能体需要一个快照,而非实时视图。如果图在同一智能体轨迹内的两次读取之间发生变化,该轨迹就不可复现:智能体的决策依赖于一个已不存在且无法重建的状态。
机制是图版本化。每次写入推进一个版本计数器,读取针对特定版本进行。运行在其轨迹中记录它所读取的版本,与工具调用和模型输出并列。针对同一版本重放该运行会产生相同的输入,这是调试多智能体失败的最低要求。
这与隔离相互作用。被隔离的边在快照中缺席,因此读取该版本的智能体将该事实视为未知,而非有争议。这是否可接受取决于该智能体能否带着一个未知继续。如果不能,运行应阻塞在解析上,而非读取一个省略了它所需事实的版本。
版本化还使保留策略变得可处理。过时的边是一个保留策略问题,其形态与记忆保留相同:一条边保持可读多久,什么触发它的退役?一条已被取代的边不会立即删除——它可能被用来解释过去的运行。实用的规则是:从当前可读版本中退役边,同时保持它们可按版本寻址以供审计。垃圾回收随后针对版本运作,而非针对单条边,这保持了审计轨迹的连贯。
这对设计意味着什么
多智能体系统的共享知识图谱不是一种存储选择。它是一组关于权限、冲突和一致性的策略,恰好以图的形式表达。存储层是容易的部分。
设计工作在于模式:存在哪些边类型,谁可以写入它们,当两个写入者意见不一致时会发生什么,以及读取者看到哪个版本。这些决定决定了图是智能体可以据以推理的共享状态,还是智能体从中检索的共享谣言工厂。
诚实的权衡是:受策略治理的图比向量存储写入更慢、读取也更慢。写入要对照权限检查,冲突可能被隔离,读取被固定到版本。这种开销换来了可复现性和一个可辩护的一致性概念。对于智能体基于共享事实行动的系统,这通常是正确的权衡。对于智能体只需要召回相似文本的系统,则没有必要。
封面照片:Google DeepMind / Pexels。
