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。
成果:
- 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 个)。
层级分离至关重要:
- 检索: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]
此对象承载证据片段、关系、置信度和修订计数。时序推理(事件、矛盾)成为一流功能,而非块的副产品。
数据契约与暂存: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
暂无评论。