关于 SMRITI Memory
SMRITI Memory 是面向 AI Agent、多 Agent 系统和 MCP 客户端的长期记忆引擎。它先即时记录交互,再异步整理为语义图,并处理矛盾与记忆衰减。
主要功能
- 01即时写入情节记忆
- 02异步整理语义图
- 03基于语义与图的回忆
- 04私有记忆空间
- 05注入工作记忆上下文
- 06可视化图浏览器与 Obsidian 同步
适用场景
- 01在不同编码 Agent 间共享项目上下文
- 02在长期对话中保留有用信息
- 03打包课程材料供学生离线问答
- 04将指定记忆排除在团队同步之外
MCP 相关
SMRITI 作为 MCP 服务运行,提供 19 个用于写入、回忆、管理和整理记忆的工具,并包含 AMP v1.0 别名。MCP 客户端还可获取当前工作记忆上下文并打开可视化图界面。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SMRITI Memcore
面向 LLM Agent、多 Agent 框架和 MCP 客户端的企业级、隐私优先长期记忆(LTM)引擎。
交互式语义宫殿图谱浏览器(smriti ui) — 类别房间枢纽聚类、神经突触粒子流和实时双检查器。观看高清完整视频
什么是 SMRITI?
SMRITI 是一个高性能、受神经科学启发的长期记忆层,旨在为 AI Agent 提供持久、自适应的回忆能力,同时不阻塞其实时执行循环。
SMRITI 的设计灵感源自人类双加工认知理论,它将记忆操作分为:
- 系统 1(即时启发式处理):以毫秒级速度将原始交互解耦并摄入仅追加的情节缓冲区。
- 系统 2(异步整合):在后台由 LLM 驱动进行整合,提取知识图谱、解决矛盾、识别技能并衰减薄弱记忆。
SMRITI 与朴素 RAG 和向量数据库的比较
| 特性 | 朴素 RAG / 向量数据库 | SMRITI 记忆引擎 |
|---|---|---|
| 延迟 | 随上下文大小线性增长;会阻塞 Agent 循环 | 摄入耗时不到 5 毫秒(系统 1);系统 2 异步运行 |
| 上下文窗口 | 塞入原始日志,导致提示词膨胀并分散注意力 | **米勒定律(7 ± 2 个槽位)**限定容量的工作记忆 |
| 数据演变 | 嵌入静态;难以处理矛盾和更正 | 自动解决冲突、抽象和时间衰减 |
| 关系 | 扁平的向量搜索;没有实体链接概念 | 语义宫殿图谱,展示结构化的房间/主题关联 |
| 隐私与同步 | 存储非此即彼;命名空间路由复杂 | 原生支持私有房间和 private=True 标签,以隔离用户同步 |
核心能力
- 双进程性能:实时循环零阻塞。立即写入,空闲时分析。
- 人格宫殿与按需中心:下载为历史人物(例如 Albert Einstein、Isaac Newton)预先策划的认知记忆宫殿,并以真实的思维模型与他们对话。
- 隐私优先(私人空间):创建本地语义空间,其记忆会自动排除在共享/团队同步之外。
- Model Context Protocol(MCP):原生 MCP 服务集成,支持 Claude Code、Claude Desktop、Gemini Antigravity 和 Codex。
- 符合 AMP v1.0 规范:可直接兼容任何符合 Agent Memory Protocol 的 Agent 框架。
- 可视化图谱浏览器:简洁的 D3.js 可视化界面,并支持 Prometheus 指标监控。
- Obsidian Vault 集成:自动将 Agent 的记忆图谱同步到 Obsidian vault,供人工整理。
- 框架无关:原生集成 LangChain、LlamaIndex、CrewAI 和 AutoGen。
核心架构
┌─────────────────────────────────┐
│ Asynchronous Consolidation │
│ (8 Background Processes) │
│ • Chunking • Cross-Ref. │
│ • Conflict Res. • Skill Ext. │
│ • Forgetting • Spaced Rep. │
│ • Reflection • Defragment. │
└────────────────┬────────────────┘
│ background
┌──────────┐ ┌──────────┐ ┌───────────▼─────────┐ ┌──────────┐
│ Input │──▶│ Attention │──▶│ Episode Buffer │──▶│ Semantic │
│ Text │ │ Gate │ │ (append-only log) │ │ Palace │
│ └───────┘ │ (salience │ └─────────────────────┘ │ Graph │
│ │ filter) │ │ G=(V,E) │
└──────────┘ └──────────┘ └────┬─────┘
│
┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ Query │──▶│ Retrieval│──▶│ Working Memory │◀──────────┘
│ │ │ Engine │ │ (7 ± 2 slots) │
└──────────┘ │ Q(v) = │ └───────────────────┘
│ β₁cos + │
│ β₂decay+ │ ┌───────────────────┐
│ β₃freq + │──▶│ Meta-Memory │
│ β₄sal │ │ (confidence map) │
└──────────┘ └───────────────────┘
快速开始
1. 安装 SMRITI
安装核心记忆引擎和 CLI:
pip install smriti-memcore
(可选:确保 Ollama 在本地运行,以实现 100% 私密、免费的 LLM 推理:ollama run mistral)
2. 教授与课程创建者指南:打包课程内容
将原始讲义文件夹转换为独立、离线优先的 认知宫殿包(.smritibundle),为学生提供全天候的苏格拉底式教学助手。
# Package a folder of slides, transcripts, readings, or notebooks into an offline bundle:
smriti pack ./my-course-folder -o cs101.smritibundle
# Or package directly from a declarative YAML/JSON persona spec:
smriti pack ./course-spec.yaml -o cs101.smritibundle --install
- 支持的格式:PDF 幻灯片、WebVTT/SRT 视频课程字幕、Markdown、纯文本和 Jupyter 笔记本(
.ipynb)。 - 零云端费用:所有向量嵌入均在本地计算(无需支付 OpenAI/HuggingFace API 费用)。
- 轻量分发:生成独立的归档文件(通常为 5–15 MB),其中包含向量索引、全文搜索和语义图谱。可直接上传到 Canvas、Blackboard、Piazza、Google Drive,或通过电子邮件发送给学生。
3. 学生指南:全天候苏格拉底式答疑时间
学生下载教授提供的 .smritibundle,即可直接在终端中与交互式课程导师对话——完全离线、私密且无需订阅。
# Step 1: Import the course bundle provided by your professor
smriti pull ./cs101.smritibundle
# Step 2: Start your 24/7 Socratic Office Hours
smriti chat cs101
# (Optional) Use a specific local Ollama model (e.g. Mistral, Qwen, Llama)
smriti chat cs101 --model mistral
smriti chat cs101 --model qwen3.5
- 精准溯源:询问任何概念,即可查看准确的幻灯片页码和视频课程字幕引文。
- 苏格拉底式教学法:课程人格不会直接给出作业答案,而是使用课程类比,从基本原理出发逐步引导学生。
- 100% 本地且私密:所有对话都保留在学生的笔记本电脑上,不会向外部服务发送任何学生数据。
官方注册表中的预先策划导师
你也可以立即体验开箱即用的导师:
# List all available mentors and locally installed bundles
smriti list
# Socratic Distributed Systems Professor (Raft, Paxos, CAP theorem)
smriti chat prof-systems
# 100% Private, Local CBT & Mindfulness Companion
smriti chat mindful-counsellor
# Historical Thinkers
smriti chat einstein
smriti chat newton
smriti chat marcus-aurelius
4. Smriti DevBrain:通用开发者记忆(Cursor、Claude、Windsurf、Gemini、Zed)
SMRITI 通过在所有 AI 编码工具之间充当共享的本地认知大脑,解决跨 Agent 失忆问题。在 Claude Code 或 Gemini 中解决的 Bug 会立即被 Cursor 记住。
第 1 步:自动配置所有已安装的 IDE 和 Agent
运行一条命令,即可在几秒内扫描并配置 Cursor、Claude Code、Windsurf、Gemini 和 Zed:
smriti install
(或者指定工具:smriti install --client cursor,windsurf)
第 2 步:初始化代码库工作区
在任意代码仓库中运行:
smriti init
这会自动:
- 在宫殿中为项目创建专用语义空间(
repo:<name>)。 - 创建
.cursorrules、.cursor/rules/smriti.mdc、CLAUDE.md和项目.cursor/mcp.json。 - 安装轻量、非阻塞的 git
post-commit钩子,将近期提交和架构变更记录到记忆中。
Git 提交记忆钩子管理:
smriti hook install # Enable automatic commit context logging
smriti hook uninstall # Remove the post-commit hook
3. Python SDK
适用于构建自定义 Agent 循环的应用开发者。
pip install smriti-memcore[faiss] # FAISS is recommended for accelerated vector search
from smriti import SMRITI, SmritiConfig
# Initialize memory engine with OpenAI
config = SmritiConfig(
storage_path="./my_agent_memory",
llm_model="gpt-4o",
openai_api_key="your-api-key-here"
)
memory = SMRITI(config=config)
# Ingest observations
memory.encode("User prefers using PyTorch for neural networks.")
memory.encode("User is allergic to shellfish.", context="medical")
# Recall relevant context using multi-factor retrieval
results = memory.recall("What framework does the user prefer?")
for mem in results:
print(f"[{mem.strength:.2f}] {mem.content}")
# Manually trigger System 2 background consolidation
memory.consolidate()
memory.save()
# --- Or Load a Pre-Curated Persona (e.g. Albert Einstein) ---
einstein, manifest = SMRITI.from_persona("albert-einstein")
memories = einstein.recall("What thought experiment led to Special Relativity?")
for mem in memories:
print(f"[{mem.strength:.2f}] {mem.content}")
MCP 工具参考
SMRITI 为客户端提供 19 个工具(13 个原生工具 + 6 个 AMP 别名):
核心工具
| 工具名称 | 描述 |
|---|---|
smriti_encode | 摄取新的记忆。接受 private=True,以将其排除在团队同步之外。 |
smriti_recall | 使用语义检索和基于图的检索来提取记忆。 |
smriti_get_context | 用于将当前活跃的工作记忆槽注入上下文窗口的辅助工具。 |
smriti_how_well_do_i_know | 对给定主题执行元记忆置信度检查。 |
smriti_knowledge_gaps | 识别 Agent 已发现需要更多信息的主题。 |
smriti_pin | 将记忆标记为永久记忆(保护其免受强度衰减)。 |
smriti_forget | 软删除/归档记忆,并留下加密墓碑。 |
smriti_consolidate | 触发后台 System 2 整合任务。 |
smriti_stats | 返回全系统统计信息(记忆总数、房间数、私有记忆数量)。 |
smriti_create_private_room | 创建一个私有房间。房间内所有记忆均与其他可见范围隔离。 |
smriti_open_ui | 在默认浏览器中启动交互式 D3.js 记忆图谱。 |
smriti_sync_obsidian | 将 Semantic Palace 图结构导出为 Obsidian Vault 中的 Markdown 文件。 |
AMP v1.0 别名工具
这些端点确保完全符合标准 Agent Memory Protocol 规范:
| AMP 工具 | 原生映射 | 返回格式 |
|---|---|---|
amp.encode | smriti_encode | AMP 标准 JSON 响应 |
amp.recall | smriti_recall | {id, content, score, timestamp, status} 数组 |
amp.forget | smriti_forget | {status: "forgotten" | "not_found"} |
amp.stats | smriti_stats | {memory_count, ...} |
amp.pin | smriti_pin | {status: "pinned" | "not_found"} |
amp.consolidate | smriti_consolidate | {status: "ok", memories_processed: int} |
框架集成
LangChain 集成
使用 SmritiLangChainMemory 作为默认聊天缓冲区的即插即用替代方案。它使用工作记忆限制活跃上下文,并在后台将对话历史转存到 Semantic Palace 图谱中。
from langchain.chains import ConversationChain
from smriti.integrations.langchain_memory import SmritiLangChainMemory
from smriti import SMRITI
smriti_engine = SMRITI(storage_path="./langchain_smriti_db")
smriti_memory = SmritiLangChainMemory(smriti_client=smriti_engine, top_k=3)
conversation = ConversationChain(
llm=my_llm,
memory=smriti_memory,
)
conversation.predict(input="I prefer backend APIs in Python.")
基准测试与性能
1. LoCoMo(多系统上下文检索)
在 LoCoMo 长上下文对话数据集(28 轮、15 个评估问题)上对四种架构进行了测试:
| 系统 | F1 分数 | 延迟 | 每次查询的 Token 数 | 整合 |
|---|---|---|---|---|
| FullContext | 0.345 | 1147ms | 550 | — |
| MemGPT-style | 0.334 | 1397ms | 478 | — |
| NaiveRAG | 0.312 | 1387ms | 145 | — |
| SMRITI | 0.279 | 1317ms | 146 | 41.2s(异步) |
| Mem0-style | 0.235 | 1088ms | 106 | — |
SMRITI 在大幅缩减查询上下文的同时保持较高的召回率。整合在后台运行,不会阻塞客户端交互。
2. LongMemEval(长期聊天会话)
使用 LongMemEval 测试框架,在 50 多个聊天会话上进行了评估:
| 系统配置 | 精确匹配准确率 | 平均查询延迟 |
|---|---|---|
| 基线(完整上下文) | 100.0% | 11.98s |
| SMRITI 双进程 | 80.0% | 0.98s(延迟降低 12 倍) |
配置参数
使用自定义参数初始化 SmritiConfig,以调整认知权重:
from smriti import SmritiConfig
config = SmritiConfig(
working_memory_slots=7, # Capacity limit (Miller's Law)
# Retrieval scoring weights (sum to 1.0)
recency_weight=0.2,
relevance_weight=0.4,
strength_weight=0.2,
salience_weight=0.2,
# Forgetting & Temporal Decay
decay_rate=0.99, # Strength multiplier per day
strength_hard_threshold=0.05, # Memories dropping below this are forgotten
# Palace Graph
room_merge_threshold=0.85, # Cosine similarity for auto-merging semantic rooms
)
引用
如果您在研究中使用 SMRITI,请引用我们的技术论文:
@article{tyagi2025smriti,
title={SMRITI: A Scalable, Neuro-Inspired Architecture for Long-Term Event Memory in LLM Agents},
author={Tyagi, Shivam},
year={2025},
doi={10.13140/RG.2.2.25477.82407}
}
许可证
SMRITI 基于 MIT License 授权。详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。