多智能体的记忆接线:同一任务,每个角色看到的不一样
上一篇文章把记忆层和多智能体层之间“应该怎么接”的逻辑讲清楚了,这一篇就直接把整个过程跑通。核心循环长这样:
for agent in DAG_order:
manifest = FederatedInjector.inject(scope, route) # 记忆层系统调用
result = Agent.execute(task, manifest) # 多智能体层回合
writeback(manifest.memory_ids, result) # 审计 + 持久化
democode/phase7/ 里已经搭好了骨架,用采购 Kafka 幂等场景实测过:意图智能体注入 3 条、本体智能体注入 8 条、模拟验证智能体注入 3 条——
同一任务,注入清单完全不一样
阶段 4 的记忆为什么是模拟
当初为了快速演示制衡机制,记忆通信其实是“假装”的:build_agent_context() 返回 Python 字典,既不经过 OntologyRegistry.validate(),也不产生节点清单;check_permission() 虽然定义了读写矩阵,但执行路径上并没有强制拦截越权行为。
阶段 7 没有重写 Phase 4 的智能体逻辑,而是用适配层把记忆接口补上:
| 层 | 文件 | 作用 |
|---|---|---|
| 权限映射 | agent_memory_scope.py | 智能体 → 语义域/层级/读写 |
| 注入编排 | memory_aware_coordinator.py | 权限范围 + 意图路由 → 注入清单 |
| 适配 | memory_aware_agents.py | 清单挂到 task.context |
| 写回 | memory_writeback.py | 输出 → 决策记录 |
阶段 4 的演示仍然可以独立运行,阶段 7 只是在外面包了一层联邦记忆。
权限范围:把两张表合成一张
阶段 4 用层名(critical/rule/context)来描述读写,阶段 6 用语义域 + 层级来描述检索——语义空间不一样,不能直接替换。AgentMemoryScope 做的就是显式映射:
| 智能体 | 语义域 | 层级 | 预算倍数 |
|---|---|---|---|
| 意图 | purchasing | 热/暖 | 0.8 |
| 本体 | code-arch + purchasing | 热/暖 | 1.0 |
| 模拟验证 | purchasing | 热 | 0.6 |
协调器每回合的工作流程:查权限范围 → 调意图路由器 → 主力域满额预算,辅助域 ×0.5 → 生成注入清单。
图:本体 8 条 vs 模拟验证 3 条——同一任务,不同清单
协调器执行流
图:多智能体有向无环图 × 联邦注入 × 每回合写回
每回合的具体步骤:设置版本窗口 → 查 scope → 路由 → 注入 → manifest_parser 解析约束/模式记忆 → 执行 → 写回决策记录。
现在增加了几个关键优化:
清单解析
模拟验证制衡重试
代码生成校验
enforcement=reject 约束)。
[本体] 来自注入清单:['BIZ-CN-001', ...] [模拟验证] ✗ Beta供应商剩余13天 15天 → 排队写回 [本体] 修正为 keep_threshold_add_warning (v2) [模拟验证] ✓ 通过 → 触发代码生成
写回时包含 derived_from: [注入节点编号]——决策血缘在智能体回合级的最小实现已经到位。
从 Codex 借鉴了什么
上一篇文章对 Codex 做了源码分析,这篇文章落地了四条模式:
| 借鉴了什么 | 如何应用 |
|---|---|
| 双作用域上下文 | 会话级 scope + 回合级注入清单 |
| 按键增量合并 | task.context["inject_manifest"] 私有通道 |
| 排队 vs 触发执行 | 模拟验证否决不触发代码生成;通过才触发 |
| 沙盒单写 | MemoryWriteback + OntologyRegistry.validate() |
明确不借鉴的
最终我们选择了固定有向无环图,而没有使用 Codex 的 spawn tree——因为
制衡要求模拟验证在本体之后
受治理的业务规则变更
五、后面还会写的内容
| 优先级 | 任务 | 状态 |
|---|---|---|
| P2 | 权限范围外置角色配置文件 | 待做 |
| P2 | BackgroundTaskStore 真异步 | 待做 |
- 权限范围外置角色配置文件
- BackgroundTaskStore 异步化
- 通过一个完整的示例展示多智能体系统与记忆系统是如何协作的
最后,可以运行下面的示例代码进行验证:
python3 phase7/run_multi_agent_memory_demo.py --full --scenario threshold --dry-run