乐于分享
好东西不私藏

Smrti:给AI装上"人格记忆",下一代记忆引擎长什么样?

Smrti:给AI装上"人格记忆",下一代记忆引擎长什么样?

Smrti:给AI装上"人格记忆",下一代记忆引擎长什么样?


当AI的记忆不再只是向量相似度搜索,而是能记住"周五部署导致故障"这种带情绪的惨痛教训,会发生什么?

最近在GitHub上发现了一个非常有意思的开源项目——Smrti,它提出了一种全新的AI记忆架构:不只是向量搜索,而是让AI拥有"人格记忆"。

今天带你深入了解一下这个项目。


01 从"记事本"到"有性格的记忆系统"

目前主流的AI记忆方案,本质上都是一个"高级记事本":

  • • 用户说什么 → 向量化存储
  • • 需要回忆 → KNN向量相似度搜索
  • • 结果排序 → 按时间或相似度

这种方案有两个明显问题:

  1. 1. 记忆没有"性格":10年前的惨痛教训和5分钟前的闲聊,在向量空间里可能权重一样
  2. 2. 不知道什么"重要":Critical的错误和随口的玩笑,召回优先级没有区别

Smrti的思路是:让记忆有情感、有权重、有性格


02 核心创新:5维召回评分机制

Smrti的检索不再只依赖向量相似度,而是采用5维评分公式

S = w_sim × similarity + w_sti × STI + w_conf × confidence + w_lti × LTI + w_val × |valence| × intensity

听不懂?没关系,我逐一解释:

维度
含义
作用
similarity
向量相似度
语义匹配,搜索的入口
STI
短期重要性
最近被访问/提及的权重
confidence
置信度
这个记忆有多"确定"
LTI
长期重要性
被反复验证、值得永久保留
valence
情感价值
正面/负面情绪的强度

关键设计:当情感值(valence)低于-0.5时,系统会自动提升权重——这意味着"周五部署导致2小时故障"这种负面经验,会比普通闲聊更容易被召回。


03 贝叶斯真值维护:记忆会"进化"

传统RAG的痛点:新证据来了,旧记忆怎么办?直接覆盖?

Smrti的解决方案是Probabilistic Logic Networks(PLN)——证据只增不减,真值动态更新。

# 存储记忆时附带的贝叶斯概率
engine.believe(
"Feature flags reduce deployment risk",
    probability=0.85,  # 概率
    evidence="3 successful staged rollouts"# 支撑证据
)

当你积累更多证据时:

  • • 新证据追加(append-only)
  • • 矛盾产生时创建矛盾链接
  • • 定期通过PLN合并更新真值
  • • 低置信度记忆自动衰减

效果:记忆不是静态存储,而是会随时间"进化"的动态知识库。


04 人格预设:给你的AI装上"性格"

这是Smrti最有趣的设计——6种人格预设,控制16个超参数:

人格
特点
适用场景
balanced
均衡型
默认选项
analytical
高置信度权重,低情感权重
数据分析、逻辑推理
curious
高STI权重,快速衰减
探索型Agent
empathetic
高情感权重,情感传播
客服、情感陪伴
maverick
低衰减,高传播
独立思考、逆向推理
deterministic
快学习、慢衰减、严格LTI
Agent工作流、代码生成
# 一行代码切换人格
engine = Smrti(personality="deterministic")

实际意义:你的代码助手可以是"严谨型",你的闲聊伴侣可以是"共情型",同一个引擎,不同的性格。


05 零基础设施:单文件搞定

对比其他记忆系统动不动就要部署向量数据库、消息队列、缓存层……

Smrti只需要:一个SQLite文件

  • • 向量索引:sqlite-vec(BAAI/bge-small-en-v1.5)
  • • 实体解析:5级级联(精确匹配→别名→模糊→向量)
  • • 部署方式:pip install smrti,开箱即用

三种服务模式

  • • MCP模式:支持Claude Desktop、Cursor等MCP客户端
  • • REST API:FastAPI,端口8420
  • • Proxy模式:OpenAI兼容,端口8421,自动注入带严重性标签的记忆

06 实际效果演示

from smrti import Smrti

engine = Smrti(personality="deterministic")

# 存储负面经历
engine.remember(
"Deploying on Friday caused a 2-hour outage",
    valence=-0.8# 强负面
)

# 存储正面经验
engine.remember(
"Feature flags made the rollout safe",
    valence=0.6
)

# 召回时,负面经历自动优先
results = engine.recall("deployment risks")
# 输出:Friday部署导致故障的记录会排在前面

严重性自动分类

  • • critical_warning:valence < -0.5 且 intensity > 0.5
  • • known_antipattern:概率 < 0.3 且置信度 > 0.3
  • • context:中性背景

Proxy模式下,这些标签会自动注入LLM的上下文。


07 对AI开发者的启示

Smrti的设计理念代表了一个趋势:AI记忆正在从"存储"走向"认知"

几个值得思考的点:

  1. 1. 情感维度:让AI记住"什么让我不爽",比记住"什么发生过"更有价值
  2. 2. 人格可配置:同一个Agent框架,可以适配不同场景
  3. 3. 轻量化优先:不是所有系统都需要全套基础设施
  4. 4. 证据驱动:记忆应该是可验证、可更新的,而不是静态快照

08 如何快速上手

# 安装
pip install smrti

# Python API
from smrti import Smrti
mem = Smrti(personality="balanced")
mem.remember("用户的偏好", valence=0.5)
results = mem.recall("查询偏好")

GitHub地址cyqlelabs/smrti

官网smrti.im


写在最后

Smrti让我想到一个有趣的问题:如果AI能记住"周五部署导致故障"这种带有情感色彩的经验,它会不会主动劝阻你周五上线?

从这个角度看,AI记忆的下一步,可能不是更大的向量库,而是更"懂教训"的认知系统。

你觉得呢?


关注我,持续追踪AI Agent领域的最新动态。


标签:#AI记忆 #开源项目 #Smrti #Agent开发 #技术解读