一、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配置为项目隔离模式:
# .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 的心智记忆功能,以下是安装步骤:
安装
# 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 地址)。
启动
# 在任意目录(即你的工作区)下启动 CLI 模式 soloncode # 启动 Web 模式(默认端口 4808) soloncode web # 启动 Web 模式(指定端口) soloncode web 1212试试心智记忆
启动后,试试这样对话:
User > 你好。我这个项目用的是 Solon 框架和 MyBatis-Plus,数据库是 MySQL 8.0。 我们团队喜欢用驼峰命名,代码要有充分的注释。 > (第一次对话结束,输入 /exit 退出) > (重新启动 soloncode) User > 帮我写一个用户管理的增删改查接口你会发现,第二次对话中,SolonCode 已经自动"想起"了你的技术栈和编码偏好,生成的代码完全符合你的风格。
十一、写在最后
回到文章开头那个痛点——"每次对话都要重新交代背景"。
SolonCode 的心智记忆功能给出了一个漂亮的解决方案。它不是简单的"记住你说的话",而是一个完整的认知系统:自动提取、分级存储、语义搜索、认知整合、主动遗忘。这些能力组合在一起,让 AI 编程助手真正实现