关于 SMRITI Memory
SMRITI Memory 是面向 AI Agent、多 Agent 框架和 MCP 客户端的持久记忆引擎。它将即时记录与异步整合结合为语义图谱,并提供私有空间和可视化浏览功能。
主要功能
- 01即时记录与异步整合
- 02语义图谱检索
- 03私有记忆空间
- 04工作记忆上下文支持
- 05图谱浏览与 Obsidian 同步
- 06兼容 AMP 的 MCP 工具
适用场景
- 01在编码 Agent 间共享项目记忆
- 02为 Agent 循环构建持久记忆
- 03将课程材料打包为离线导师
- 04将指定记忆排除在团队同步之外
MCP 相关
MCP 服务提供 19 种记忆工具,包括写入、检索、上下文获取、整合和隐私控制,并提供 AMP v1.0 别名工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。