很多 AI 编程工具,但大多数都有一个共同的痛点:每次对话都要重新交代背景。
说实话,这个痛点困扰了我很久。你跟 AI 说"我项目用的是 MyBatis-Plus",它说"好的,记住了"。结果第二天开个新会话,它又开始给你写 JPA 的代码。你跟它说"我们团队的命名规范是驼峰式",它在同一次对话里记住了,下次又忘了。
每次都要重新交代技术栈、项目结构、团队规范------这种感觉就像每天换一个新同事,你得从头培训。
直到我遇到了 SolonCode CLI ,确切地说,是遇到了它的 心智记忆(Memory) 功能。
一、SolonCode CLI 是什么?
如果你还没听说过 SolonCode,先花一分钟了解一下。
SolonCode 是 Solon 生态 的命令行 AI 编程助手,基于 Solon AI 框架构建,底层采用了 Harness 智能体架构。它不是一个 IDE 插件,而是一个独立的终端工具------只要能打开终端的地方就能用。
核心定位: 一个能真正"读懂项目、执行操作、自主推进"的编码智能体。它可以读取你的项目文件、执行终端命令、搜索网络资料、调度子代理并行工作,像一个真正的开发搭档一样帮你干活。
当前版本: v2026.5.15(文内功能描述基于 v2026.5.9 版本)。
两种交互模式:
- CLI 模式:在终端中直接对话,沉浸式开发体验
- Web 模式:浏览器界面,支持 WebSocket 实时通信、语音输入、附件上传
几个关键特点:
- 采用 Java 实现,100% 开源(MIT 协议)
- 全中文提示词驱动
- 不绑定特定 AI 提供商,按需配置模型
- 支持 Java 8 到 Java 26 全环境运行
- 所有数据本地处理,隐私安全可控
好了,背景介绍完毕。接下来进入正题------心智记忆功能。
二、心智记忆:让 AI 真正"记住"你
2.1 什么是心智记忆?
Memory(心智记忆)是 SolonCode 的长期认知系统。它在对话过程中自动提取关键信息并持久化存储,使得 AI 在后续会话中能"记住"用户的偏好、项目约定和历史上下文------用得越多,理解越精准。
划重点:自动提取 ,跨会话持久化 ,越用越懂你。
这意味着什么?意味着你不需要做任何额外操作,只需要像平时一样跟 SolonCode 对话,它就会在背后默默学习你的习惯、记住你的偏好、理解你的项目。
它会记住什么?
- 用户偏好:你喜欢用的工具、编码风格、命名习惯
- 项目规约:项目的技术栈、目录结构、构建方式
- 架构决策:为什么选 A 而不是 B,重要的设计取舍
- 技术选型:ORM 用 MyBatis-Plus 还是 JPA,前端用 Vue 还是 React
2.2 五种认知操作:模拟人类记忆过程
心智记忆的核心架构借鉴了认知科学的设计理念,提供五种记忆操作:
用户对话
│
▼
Agent 推理(LLM 自动判断是否需要记忆操作)
│
├── extract ──→ 发现新事实?存入记忆(key 已存在则触发认知对比)
├── recall ──→ 需要"回忆"某条具体记忆?按 key 精确召回
├── search ──→ 需要查找相关背景?语义搜索匹配记忆
├── consolidate ──→ 碎片太多?合并多条低层记忆为一条高层认知
└── prune ──→ 记忆过时?直接删除
│
▼
MemorySolution
├── MemoryStoreProvider ──→ RogueMap 本地 KV 持久化
└── MemorySearchProvider ──→ Lucene 全文语义索引
让我逐一解释:
提取(Extract)------ 模拟"注意到并记住"
当你在对话中透露了值得保存的信息,SolonCode 会自动识别并提取。比如你说"我们项目用的是 Solon 框架",它就会判断:这是一个重要的技术选型信息,值得记住。
如果提取时发现 key 已经存在,还会触发认知对比------新旧信息是否矛盾?如果矛盾,以新的为准。这就像人类在获取新知识时,会自动和已有认知进行对比和修正。
召回(Recall)------ 模拟"想起来"
当你提到某个话题,SolonCode 精确知道需要回忆哪条记忆,就通过 key 直接召回。就像你说"我之前说的那个 ORM 偏好来着",它会精确地把 MyBatis-Plus 的记忆调出来。
搜索(Search)------ 模拟"联想"
当话题涉及某个领域,SolonCode 会通过 Lucene 全文语义索引,搜索相关的记忆碎片。这是一种模糊匹配,不需要精确的 key,而是通过语义关联找到相关记忆。就像你闻到某种味道,突然想起小时候的事情------联想式回忆。
整合(Consolidate)------ 模拟"顿悟"
当记忆碎片积累到一定程度,SolonCode 会自动将多条低层记忆合并为一条高层认知。这不是简单的信息堆叠,而是真正的"认知升维"。
比如它分别记住了你用的 ORM、你用的框架、你的编码风格,整合之后就变成了一条高层认知:"团队使用 Solon + MyBatis-Plus 技术栈,偏好注解式开发。" 一条顶多条,更精准也更高效。
修剪(Prune)------ 模拟"遗忘"
过时的信息会被自动清理。你之前用的某个临时技术方案,现在已经不用了?Prune 操作会帮你把这些过时记忆清除,保持记忆库的精简和准确。
2.3 重要性分级:不是所有记忆都平等
SolonCode 的心智记忆系统引入了 重要性分级 机制(1-10 级),不同级别的信息拥有不同的生命周期和权重:
| 级别 | 含义 | 示例 |
|---|---|---|
| 1-3 级 | 琐碎事实 | 临时文件名、一次性的路径信息 |
| 4-6 级 | 行为偏好 | 常用的工具、反复提及的关注点、代码风格偏好 |
| 7-9 级 | 核心规约 | 架构定义、长期技术选型、团队开发规范 |
| 10 级 | 重大决策 | 足以改变后续所有对话逻辑的关键决定 |
这个分级机制非常重要。它意味着 SolonCode 不会把"你提了一嘴的临时变量名"和"团队正式决定的技术栈"一视同仁。10 级的记忆会深刻影响后续所有的对话逻辑,而 1 级的记忆可能在整合时就被清理掉了。
这也是为什么心智记忆能"越用越聪明"------它不仅记住了信息,还理解了信息的重要性。
2.4 存储结构:你的数据你做主
记忆数据完全保存在本地:
~/.soloncode/memory/
├── lucene/ # Lucene 全文索引(语义搜索用)
└── rogue/ # RogueMap KV 数据库(精确存取用)
默认所有项目共享一份统一记忆(跨项目积累认知),也可以通过 memoryIsolation 配置为项目隔离模式:
yaml
# .soloncode/config.yml
memoryIsolation: true # 长记忆是否工作区隔离
| 配置值 | 存储路径 | 说明 |
|---|---|---|
false(默认) |
~/.soloncode/memory/ |
所有项目共享一份记忆,跨项目积累认知 |
true |
<workspace>/.soloncode/memory/ |
每个工作区独立记忆,项目间互不干扰 |
我个人倾向于用默认的全局共享模式。因为很多偏好是跨项目的------你不太可能在 A 项目喜欢驼峰命名,到了 B 项目就想用下划线。
2.5 使用效果:从陌生到默契
让我们来看一个真实的使用演进过程:
第一次对话:
用户: 我这个项目用的是 MyBatis-Plus,不要给我用 JPA
助手: 好的,我记住了。
[自动 extract] key=user_orm_preference, fact="项目使用 MyBatis-Plus,不使用 JPA", importance=7
第一次,SolonCode 提取了你的 ORM 偏好,重要性标为 7 级(核心规约)。
第二次对话(新会话):
用户: 帮我写一个用户查询接口
助手: [自动 search "用户ORM偏好"] → 命中 "项目使用 MyBatis-Plus"
好的,我使用 MyBatis-Plus 的 QueryWrapper 来实现...
第二次,你甚至没有提到 MyBatis-Plus,但 SolonCode 自动联想到了你之前的偏好,直接用 QueryWrapper 来写。这就是记忆的威力。
第三次对话:
用户: 我们团队决定统一用 Solon 框架了
助手: [自动 extract] key=user_framework, fact="团队统一使用 Solon 框架", importance=9
[自动 recall user_orm_preference] → 发现相关偏好
了解。后续我会基于 Solon + MyBatis-Plus 的组合来给你建议。
第三次,SolonCode 不仅记住了新的技术选型(9 级),还主动召回了之前的 ORM 偏好,进行了关联。
多次对话后:
[自动 consolidate]
碎片: user_orm_preference, user_framework, user_code_style...
↓ 合并为
高层认知: user_tech_stack = "团队使用 Solon + MyBatis-Plus 技术栈,偏好注解式开发"
经过多次对话,SolonCode 自动将碎片化的记忆整合为高层认知。从此以后,无论你问什么问题,它都会基于这个高层认知来回答。
整个过程完全自动化。你只需要正常对话,AI 会在背后持续积累和演化对你的理解。
这就是"越用越懂你"的真正含义。
三、@agent 子代理系统:让专业的人做专业的事
心智记忆解决的是"记住你"的问题,而子代理系统解决的是"帮你干活"的问题。
3.1 内置四大子代理
SolonCode 预置了四个专业子代理,每个都有明确的职责分工和工具权限:
| 子代理 | 职责 | 可用工具 |
|---|---|---|
| explore | 信息探索专家 | 文件分析 + 全网检索(list, read, grep, glob, webfetch, websearch, codesearch) |
| bash | 命令执行专家 | 终端命令执行(list, read, bash) |
| plan | 规划与计划专家 | 任务拆解、执行步骤(list, read, grep, glob, webfetch, websearch, codesearch) |
| general | 通用全能专家 | 所有工具(*) |
主代理(ReActAgent)负责接收指令、分析任务、任务分解、委派调度和结果汇总。它就像一个项目经理,把不同的工作分给最合适的专家去做。
工作流程:
用户指令 → 主代理分析 → 任务分解 → 子代理执行 → 结果汇总 → 响应用户
举个例子:你说"帮我分析一下这个项目的架构,然后运行一下测试"。
主代理会这样调度:
- 把"分析架构"分给 explore 子代理------它擅长读代码、搜文档
- 把"运行测试"分给 bash 子代理------它擅长执行命令
- 两个子代理各自执行,主代理汇总结果返回给你
3.2 并行任务:多线程干活
更厉害的是,SolonCode 支持 multitask 并行分发。多个子任务之间互不干扰,高效执行。
比如你说:"帮我同时做三件事------搜索一下 Solon AI 的最新文档,检查一下项目里有没有安全漏洞,把 README 更新一下。"
主代理会并行启动三个子代理:
┌─→ explore: 搜索 Solon AI 文档
主代理 ─┼─→ explore: 检查项目安全漏洞
└─→ general: 更新 README
三个任务同时进行,最后主代理汇总汇报。这种并行能力在处理复杂任务时效率极高。
3.3 动态团队:按需组建 Agent Team
除了内置子代理,SolonCode 还支持通过自然语言动态创建子代理团队。你可以这样描述:
"帮我设计一个 agent team,至少要有架构师、前端开发、后端开发、测试员四个角色。架构师先做好设计,然后并行开发,之后测试。"
SolonCode 会根据你的描述,动态生成专属的子代理配置,然后按照你定义的协作模式(串行、并行)来推进工作。这就像临时组建了一个项目团队,各司其职。
四、技能系统:AI 的专业工具箱
如果子代理是"人",那技能就是"人手里的工具"。
4.1 内置专家技能
SolonCode 内置了一系列专业级别的技能,其中几个特别值得关注:
Solon 开发技能
作为 Solon 生态的亲儿子,SolonCode 对 Solon 框架有原生级别的深度支持。它内置了完整的 Solon 开发知识,涵盖核心概念、Web 开发、数据访问、安全认证、AI 开发、云原生、测试等全部场景。你不需要给 SolonCode 解释 Solon 的注解体系,它天生就懂。
Spring → Solon 迁移技能
这个技能专门面向想把项目从 Spring 迁移到 Solon 的开发者。它提供了完整的注解映射、依赖替换指南和迁移策略。直接告诉 SolonCode "帮我把这个 Spring Boot 项目迁移到 Solon",它就能按步骤帮你完成。
全栈开发技能
前后端一把梭的技能包。REST API 设计、数据库操作、前端集成,一站式搞定。
Excel 处理技能
需要处理 Excel 文件?创建、读取、分析、编辑、验证,统统支持。
4.2 自定义技能
内置技能不够用?你可以通过 SKILL.md 文件定义自己的专家技能。
技能的本质是一份 Markdown 格式的指导文档,告诉 AI 在特定场景下应该怎么做。你可以把团队的最佳实践、项目特有的开发规范、常用工具的使用方法等都封装成技能。
技能可以放在两个位置:
~/.soloncode/skills/:全局技能,所有项目可用.soloncode/skills/:工作区技能,仅当前项目可用
4.3 find-skills:用自然语言查找和安装技能
这个功能我特别喜欢。你不需要知道技能的确切名字,只需要用自然语言描述你的需求:
用户: 有没有处理 PDF 的技能?
助手: [自动调用 find-skills] 找到了以下相关技能...
1. pdf-parser - PDF 文件解析与提取
2. pdf-generator - PDF 文档生成
要安装哪个?
find-skills 支持从多个技能仓库中搜索,找到后可以直接安装,整个过程在对话中完成,不需要手动下载或配置。
五、/rewind 命令:后悔药
写代码哪有不后悔的?跟 AI 对话也一样。
SolonCode 提供了 /rewind 命令(v2026.5.9 新增),支持对话回退功能。你可以回到之前的某个状态重新开始。
用户: /rewind
执行后,SolonCode 会显示对话历史的关键节点,你可以选择回退到哪一个点。回退后,之前的状态会被保存为快照,你可以随时通过 /resume 恢复。
这个功能在实际使用中非常实用。比如 AI 帮你改了三处代码,你发现第二处改错了,就可以回退到第二处之前的状态,重新指示 AI 怎么改。
六、多模型切换:不把鸡蛋放在一个篮子里
SolonCode 不绑定特定 AI 提供商,这意味着你可以自由选择和切换不同的模型。
子代理可独立配置模型
每个子代理可以单独指定使用哪个模型。比如:
- 主代理用最强的模型做任务分析
- explore 子代理用速度快的模型做文件搜索
- bash 子代理用便宜的小模型执行命令
这样既保证了质量,又控制了成本。
运行时动态切换
在对话过程中,你可以随时切换模型。CLI 界面和 Web 界面都支持多模型选择。觉得当前模型回答不够好?切一个试试。
这种灵活性在 AI 模型快速迭代的今天尤其重要。模型在进步,你不需要被绑定在某个模型上。
七、Web 交互模式:浏览器的力量
虽然 CLI 模式已经很好用,但有些时候浏览器界面更加直观。soloncode web 启动 Web 模式后,你会得到一个功能完整的浏览器交互界面。
WebSocket 实时通信
Web 模式基于 WebSocket 实现实时通信,AI 的回答逐字流式输出,体验和 CLI 一样丝滑。
语音输入
Web 模式支持语音输入,而且交互设计是微信风格------按住说话,松开结束。这个设计很自然,不需要额外学习成本。在双手不方便打字的场景下(比如一边看文档一边提问),语音输入非常方便。
附件上传
附件上传功能分为两种模式:
- 普通文件上传:上传代码文件、配置文件等,AI 直接读取内容
- 多模态图片上传:上传截图、设计稿等,AI 可以看图理解
微信通道支持
通过 Web 模式的微信通道命令,你可以把 SolonCode 接入微信,直接在微信里和 AI 对话。这对于习惯用微信沟通的团队来说非常方便。
此外还支持钉钉、飞书等企业通讯工具的绑定。
八、心跳机制:AI 会"自己找事做"
这是 SolonCode 的一个很有趣的功能------心跳机制。
你可以通过 /loop 命令或"干活"指令触发心跳模式。在这个模式下,SolonCode 会自主驱动任务执行,自动找事做:
- 搜索相关技术资料,补充项目文档
- 检查代码中的潜在问题
- 执行未完成的 TODO 任务
- 定期运行测试确保代码健康
甚至支持 cron 表达式:
/loop cron:'0 */5 * * * ?' check status
这条命令会让 SolonCode 每 5 分钟自动检查一次项目状态。
心跳机制把 AI 从"被动等指令"变成了"主动干活"。你开会去了,AI 在帮你整理文档;你下班了,AI 在帮你跑测试。这种自主性是传统编程工具完全不具备的。
九、实际使用体验:心智记忆的累积效应
说了这么多功能,来分享几个我实际使用的场景,展示心智记忆如何累积发挥作用。
场景一:从零搭建项目,三个月后 AI 比新同事更懂项目
我在三月份开始用 SolonCode 搭建一个新的微服务项目。第一次对话中,我告诉它:
- 技术栈:Solon + MyBatis-Plus + Redis
- 命名规范:驼峰式,Service 层用接口+实现
- 数据库:MySQL 8.0
- 包结构:按领域模块划分
这些信息全部被提取为 7-9 级的记忆。
到六月份的时候,我已经和 SolonCode 进行了几十次对话。每次对话它都会在记忆库中累积新的认知------哪些表是核心表、哪些接口是高频使用的、哪些地方有性能瓶颈。
有一天,一个新同事问我"这个用户的权限校验是在哪一层做的"。我想不起来具体代码位置了,就问 SolonCode。它直接给出了精确的答案,甚至附带了当初为什么这样设计的理由------因为三月份某次对话中,我解释过这个架构决策,它记住了。
这就是心智记忆的累积效应。它不像传统的上下文窗口,对话结束就消失了。它是真正的长期记忆。
场景二:技术选型变更,记忆自动更新
有一次,我们把项目的缓存方案从 Redis 迁移到 Solon Cloud 的 Water 方案。我在对话中提到这个变更后:
- SolonCode 提取了新的技术选型(importance=9)
- 自动召回了之前关于 Redis 的记忆
- 主动提醒我:之前有几个地方用到了 Redis 的特定 API,需要同步修改
这种"记住过去 + 关联现在 + 预判影响"的能力,已经不是简单的记忆了,而是真正的认知。
场景三:多子代理协作完成复杂任务
有一次我需要做一个比较复杂的任务:分析一个开源项目的架构,生成一份 PPT 报告,同时把项目跑起来做功能验证。
我对 SolonCode 说:"分析一下这个项目的架构,生成一份架构分析 PPT,然后把项目跑起来验证核心功能。"
SolonCode 的主代理迅速做了任务拆解:
┌─→ explore 子代理: 分析项目结构、核心模块、依赖关系
├─→ plan 子代理: 规划 PPT 的大纲和内容结构
└─→ bash 子代理: 准备运行环境,安装依赖
explore 子代理分析完后,把结果交给 plan 子代理。plan 子代理基于分析结果生成 PPT 大纲,再交给 general 子代理填充内容并生成最终文件。同时 bash 子代理在另一个线程里默默地把项目跑起来了。
整个过程大约 5 分钟,如果手动做至少需要一个小时。而且因为心智记忆的存在,SolonCode 已经知道我对 PPT 的风格偏好(简洁、技术导向),生成的报告格式直接就是我能用的。
场景四:Web 模式的语音交互
有一次我在手机上通过微信通道和 SolonCode 对话。开会的时候不方便打字,就直接按住语音说:"帮我看看今天 CI 跑失败了没有,如果失败了帮我看下日志。"
SolonCode 收到语音后自动转文字,然后调用 bash 子代理查看 CI 状态。发现确实失败了,又自动分析了日志,找到失败原因,然后把修复建议通过微信发回来。
整个过程我只需要说一句话。
场景五:记忆的整合与顿悟
经过长时间使用,我发现 SolonCode 的回答质量明显提升了。有一天我好奇地查看了记忆文件,发现它已经积累了大量的高层认知:
- "用户偏好使用注解式开发,避免 XML 配置"
- "项目采用分层架构,Service 层负责业务逻辑"
- "团队使用 Solon + MyBatis-Plus 技术栈,前后端分离"
这些都是通过 consolidate 操作,从数十次对话的碎片记忆中整合出来的。我从来没有一次性告诉过它这些总结性的结论,它是自己"悟"出来的。
这种体验很奇妙。就像一个新同事慢慢变成了老搭档,不需要你反复交代,他就知道怎么做。
十、安装与快速开始
看到这里,如果你也想体验 SolonCode CLI 的心智记忆功能,以下是安装步骤:
安装
bash
# Mac / Linux:
curl -fsSL https://solon.noear.org/soloncode/setup.sh | bash
# Windows (PowerShell):
irm https://solon.noear.org/soloncode/setup.ps1 | iex
配置
安装完成后,编辑配置文件 ~/soloncode/config.yml,主要配置 models 部分(即你要使用的 AI 模型和 API 地址)。
启动
bash
# 在任意目录(即你的工作区)下启动 CLI 模式
soloncode
# 启动 Web 模式(默认端口 4808)
soloncode web
# 启动 Web 模式(指定端口)
soloncode web 1212
试试心智记忆
启动后,试试这样对话:
User
> 你好。我这个项目用的是 Solon 框架和 MyBatis-Plus,数据库是 MySQL 8.0。
我们团队喜欢用驼峰命名,代码要有充分的注释。
> (第一次对话结束,输入 /exit 退出)
> (重新启动 soloncode)
User
> 帮我写一个用户管理的增删改查接口
你会发现,第二次对话中,SolonCode 已经自动"想起"了你的技术栈和编码偏好,生成的代码完全符合你的风格。
十一、写在最后
回到文章开头那个痛点------"每次对话都要重新交代背景"。
SolonCode 的心智记忆功能给出了一个漂亮的解决方案。它不是简单的"记住你说的话",而是一个完整的认知系统:自动提取、分级存储、语义搜索、认知整合、主动遗忘。这些能力组合在一起,让 AI 编程助手真正实现了"越用越懂你"。
再加上子代理系统的分工协作、技能系统的专业工具箱、/rewind 的后悔药、多模型的灵活切换、Web 模式的丰富交互、心跳机制的自主驱动------SolonCode 已经不仅仅是一个代码补全工具,而是一个真正的编程搭档。
它记住你的习惯,理解你的项目,配合你的节奏。用得越久,默契越深。
这大概就是 AI 编程助手该有的样子吧。
相关链接:
- SolonCode 仓库:https://github.com/opensolon/soloncode
- Solon 官网:https://solon.noear.org
- 心智记忆文档:https://solon.noear.org/article/1450
- 子代理文档:https://solon.noear.org/article/1413
- 技能仓库:https://solon.noear.org/article/1420