memory 心智记忆(越用越聪明)
2026年4月30日 下午12:08:23
Memory(心智记忆)是 SolonCode 的长期认知系统。它在对话过程中自动提取关键信息并持久化存储,使得 AI 在后续会话中能"记住"用户的偏好、项目约定和历史上下文——用得越多,理解越精准。
1、核心架构
用户对话
│
▼
Agent 推理(LLM 自动判断是否需要记忆操作)
│
├── extract ──→ 发现新事实?存入记忆(key 已存在则触发认知对比)
├── recall ──→ 需要"回忆"某条具体记忆?按 key 精确召回
├── search ──→ 需要查找相关背景?语义搜索匹配记忆
├── consolidate ──→ 碎片太多?合并多条低层记忆为一条高层认知
└── prune ──→ 记忆过时?直接删除
│
▼
MemorySolution
├── MemoryStoreProvider ──→ RogueMap 本地 KV 持久化
└── MemorySearchProvider ──→ Lucene 全文语义索引
整个记忆系统作为 Agent 的**内置技能(Skill)**运行,LLM 在推理过程中自主决定何时读取或写入记忆,无需用户手动操作。
2、存储结构
记忆数据保存在本地,默认所有项目共享一份统一记忆:
~/.soloncode/memory/
├── lucene/ # Lucene 全文索引(语义搜索用)
│ ├── _0.cfe
│ ├── _0.cfs
│ └── ...
└── rogue/ # RogueMap KV 数据库(精确存取用)
└── ...
隔离模式
通过配置 memoryIsolation 控制记忆是全局共享还是项目隔离:
| 配置值 | 存储路径 | 说明 |
|---|---|---|
false(默认) | ~/.soloncode/memory/ | 所有项目共享一份记忆,跨项目积累认知 |
true | <workspace>/.soloncode/memory/ | 每个工作区独立记忆,项目间互不干扰 |
配置位置:.soloncode/config.yml
memoryIsolation: true # 长记忆是否工作区隔离
3、使用效果示例
# 第一次对话
用户: 我这个项目用的是 MyBatis-Plus,不要给我用 JPA
助手: 好的,我记住了。
[自动 extract] key=user_orm_preference, fact="项目使用 MyBatis-Plus,不使用 JPA", importance=7
# 第二次对话(新会话)
用户: 帮我写一个用户查询接口
助手: [自动 search "用户ORM偏好"] → 命中 "项目使用 MyBatis-Plus"
好的,我使用 MyBatis-Plus 的 QueryWrapper 来实现...
# 第三次对话
用户: 我们团队决定统一用 Solon 框架了
助手: [自动 extract] key=user_framework, fact="团队统一使用 Solon 框架", importance=9
[自动 recall user_orm_preference] → 发现相关偏好
了解。后续我会基于 Solon + MyBatis-Plus 的组合来给你建议。
# 多次对话后...
[自动 consolidate]
碎片: user_orm_preference, user_framework, user_code_style...
↓ 合并为
高层认知: user_tech_stack = "团队使用 Solon + MyBatis-Plus 技术栈,偏好注解式开发"
4、设计哲学
Memory 的核心设计理念来自认知科学:
- 提取(Extract):模拟"注意到并记住"——从对话中识别值得保存的信息
- 召回(Recall):模拟"想起来"——精确回忆已知事实
- 搜索(Search):模拟"联想"——通过语义关联找到相关记忆
- 整合(Consolidate):模拟"顿悟"——将零散知识点升维为高层认知
- 修剪(Prune):模拟"遗忘"——清理过时信息,保持记忆库精简
这个过程完全自动化。用户只需要正常对话,AI 会在背后持续积累和演化对用户的理解——越用越聪明。