Solon v3.10.4

memory 心智记忆(越用越聪明)

</> markdown
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 会在背后持续积累和演化对用户的理解——越用越聪明。