金融助手如果只依赖当前对话上下文,很难稳定记住用户风险偏好、关注行业、历史投资事件和交互习惯。这个项目面向投顾类 AI Agent,目标是把“长期记忆”从简单文本片段升级为可治理、可审计、可回放的结构化服务。
系统基于 mem0 fork 改造,并参考 MIRIX 的 typed memory 思路,将金融场景里的记忆拆成不同语义组件,避免所有信息混在同一个向量库里导致召回不可控。
我负责记忆服务的核心设计与实现,包括 typed memory 类型系统、prepareTurn / commitTurn 双阶段编排、SQLite sidecar 持久化、状态索引、审计日志、幂等机制和治理接口。
这部分在简历里写得很短,网站里补充重点:长期记忆不是“把聊天记录存起来”,而是要决定什么信息能写、怎么写、什么时候召回、如何覆盖、如何追加、如何删除,以及出问题后如何回放。
- Typed Memory 将记忆拆为 UserCore、InteractionPreference、FinancialEntityFact、InvestmentEvent 四类,分别表达用户画像、交互偏好、金融实体状态和投资事件。
- prepareTurn 在一轮对话前执行记忆召回、过滤和上下文组装,控制哪些记忆进入模型上下文。
- commitTurn 在一轮对话后执行候选抽取、归因判断和写入决策,避免把临时噪声直接写成长久事实。
- SQLite sidecar 维护状态索引、审计日志、事件幂等表和回放所需元数据,补足纯向量记忆难以治理的问题。
- 治理接口 支持 STATE 覆盖、EVENT 追加、soft delete、export、replay 和一致性校验。
- 将金融记忆拆成“状态型记忆”和“事件型记忆”:用户画像、偏好、实体事实适合覆盖更新,投资事件更适合追加保留历史。
- 使用 decisionToken 和 turnHash 保证单轮记忆操作幂等,减少重试或重复提交造成的重复写入。
- 为 memory_record_index 和 state_index 设计索引,支持按用户、类型、实体、时间和状态快速过滤。
- 通过 audit_log 记录每次写入来源、变更前后状态和触发原因,支持审计回放和问题定位。
- 使用 OpenSpec 约束接口语义,并通过测试覆盖写入、召回、覆盖、追加、软删除、导出、回放和一致性校验链路。
Python、mem0、MIRIX、SQLite、OpenSpec、TDD、RAG recall layer
这个项目可以深入聊 AI Agent 长期记忆的真实工程挑战:记忆类型如何设计、状态覆盖和事件追加如何区分、会话级幂等如何保证、向量召回和结构化索引如何配合,以及金融场景为什么必须保留审计和回放能力。相关项目
Ksmart
企业级 RAG 智能知识库平台,覆盖多格式文档解析、异步入库、混合检索、权限控制和 AI 流式问答。 MYDB
从零实现的轻量级关系型数据库,覆盖页式存储、缓存管理、B+ 树索引、WAL、事务隔离、SQL 解析和 C/S 通信。