返回首页

Memory OS:代理记忆中的推理悖论和 SGR

本文分析 Memory OS 架构:提取中的推理悖论,从 flat RAG 到 ConceptHypothesis 本体的数据过渡,在 SQLite/Neo4j 上的数据契约。规模 — 1.067 亿 token,240 万边。代理记忆的关键解决方案。

o4-mini 悖论:推理如何在 Memory OS 中破坏提取
Advertisement 728x90

Memory OS 架构:从推理悖论到分层记忆图谱

像 o4-mini 这样强大的模型在高 reasoning_effort 下,会在结构化对象提取时破坏 schema 严格性。模型不再严格遵守 Pydantic schema,而是开始“优化”结构:合并对象、调整 JSON 字段、模糊概念类型。测试 300 多个提示后发现,反比关系明显:推理越强,确定性越低。

SGR(Schema-Guided Reasoning) 使用 response_format 和严格 StrictBase(extra='forbid',无 Optional/default)部分解决了问题,但模型仍会反抗约束。引入 Semantic Mapper 通过将纪律转移到数据契约、验证和后处理,降低了 reasoning_effort

成果:

Google AdInline article slot
  • Token 成本下降 48%;
  • 提取质量从 5.2 提升至 7.11;
  • 通过 message_id 实现完整可追溯性。

验证器递归检查 JSON schema:additionalProperties: false,所有字段在 required 中。这成为代理记忆的核心信号:LLM 在提取时的智能用于 schema 执行,而非创造性。

为什么平面 RAG 在大数据集上失效,以及转向托管记忆

平面 RAG 在演示中闪耀,但在像 Jocker(3253 场对话,24639 条消息)这样的大型语料上崩溃:缺少血统、时序语义或更新规则。检索仅拉取相似块,却无来源关联,导致 Graph Sludge ——数千节点缺乏粒度(Jocker 重构前超 26,000 个)。

层级分离至关重要:

Google AdInline article slot
  • 检索:top-k 相似块;
  • 记忆:知识对象、链接、时序变化、修订、衰减。

否则,系统退化为充满幻觉的块索引,无法处理复杂查询。

核心本体:ConceptHypothesis 作为一流公民

我们从 核心本体 开始,包含类型化对象和关系。摒弃松散实体/摘要,转向 ConceptHypothesis

from pydantic import BaseModel, ConfigDict, Field
from typing import List, Literal, Optional
from datetime import datetime

class StrictBase(BaseModel):
    model_config = ConfigDict(extra="forbid")

class EvidenceSpan(StrictBase):
    source_id: str
    message_id: str
    text: str
    confidence: float

class ConceptRelation(StrictBase):
    target_id: str
    relation: Literal["causes", "conflicts_with", "supports", "instance_of", "enables"]
    confidence: float

class ConceptHypothesis(StrictBase):
    concept_id: str
    title: str
    type: Literal["behavioral_pattern", "project", "event", "tension", "goal", "belief", "entity"]
    description: str
    state: Literal["active", "weak", "merged", "split", "archived"]
    confidence: float
    aliases: List[str]
    evidence_spans: List[EvidenceSpan]
    relations: List[ConceptRelation]
    revision_count: int
    first_seen: Optional[datetime]
    last_seen: Optional[datetime]

此对象承载证据片段、关系、置信度和修订计数。时序推理(事件、矛盾)成为一流功能,而非块的副产品。

Google AdInline article slot

数据契约与暂存:SQLite 作为唯一真相源

数据契约 在管道边界锁定结构。SQLite 作为消息的真相源(UUID、文本、角色、parent_id、时间戳、conversation_id)。Neo4j 图:节点如 Conversation/Message/Segment/Concept/Topic,边如 HAS_MESSAGE/NEXT/CONTAINS_MESSAGE/EVIDENCE_FOR/BELONGS_TO

关键是 EVIDENCE_FOR:概念直接绑定消息级证据。时序 NEXT/PREVIOUS 骨架加速推理,无需数据库排序。

暂存数据库(独立 SQLite)保存管道中间状态,实现完整审计。

概念记忆循环与主题聚类

概念记忆循环:创建/附加/精炼/拒绝 —— 假设管理周期。主题聚类 通过 UMAP + HDBSCAN + Optuna 处理加权链接,避免过度压缩和概念爆炸。

LongMemEval 与有状态多代理推理

LongMemEval(超 1 亿 token):4 个调试阶段,探索 vs 执行。有状态多代理:规划者/侦察者/合成者,用于分层检索。

代理园丁、无效化与 MCP

代理园丁 —— 专属图维护管道。双时序事实的无效化/修复。MCP —— 主权记忆接口。

规模:1.067 亿 token,632,868 个语义单元,240 万边。

关键要点:

  • 高推理破坏 SGR;使用 Semantic Mapper 和低努力;
  • 平面 RAG → Graph Sludge;要求证据片段和时序本体;
  • 带 Pydantic StrictBase 的 ConceptHypothesis —— 托管压缩基础;
  • SQLite 作为真相源 + Neo4j 用于血统和时序;
  • 多代理 + 园丁 支持 1 亿+ token 规模。

— Editorial Team

Advertisement 728x90

继续阅读