Day 21:官方MiMo-Code架构分析 - Java工程师的AI Agent学习笔记
·
🤖 系列:Java工程师转AI Agent 3个月学习计划
👤 作者:宸丶一 | 28岁Java程序员,正在学习 AI Agent 开发中ing…
🎯 今日目标: 官方MiMo-Code架构分析、项目结构、部署方式、TUI技术栈
💬 个人格言: 代码改不改变世界我不知道,但先让我准时下班。
前言
Day 20 搞定了gRPC和MiMo Code初体验,今天继续深入——分析官方MiMo-Code的架构设计。
说实话,之前一直以为AI编程助手就是一个简单的脚本,今天分析完官方版本才发现:这玩意儿太复杂了!4701个文件、76.67MB代码、10个核心模块,简直就是一个完整的产品。
更重要的是,我发现了AI老师学习模式的价值——不是被动听课,而是主动探索、提问、实践。今天就来聊聊这个。
学习目标
- 熟悉官方MiMo-Code的项目结构
- 理解Agent配置和循环分离的设计思想
- 了解SQLite数据库的使用
- 理解"本地优先"设计哲学
- 了解TUI技术栈
- 反思AI老师学习模式的好处
一、官方MiMo-Code项目结构
项目规模
| 指标 | 数值 |
|---|---|
| 总文件数 | 730个 |
| 总代码量 | 5.9MB |
| 核心包 | packages/opencode/src/ |
核心模块
文件统计
| 模块 | 文件数 | 代码量 | 作用 |
|---|---|---|---|
| tool/ | 61 | 325.6KB | 工具系统(能做什么) |
| session/ | 44 | 596KB | 会话管理(怎么对话) |
| provider/ | 7 | 139.7KB | 模型提供者(用什么模型) |
| workflow/ | 10 | 116KB | 工作流(怎么编排) |
| mcp/ | 4 | 53.4KB | MCP协议(怎么通信) |
| task/ | 7 | 24.5KB | 任务追踪(做什么事) |
| agent/ | 3 | 27.5KB | Agent配置(是什么) |
| memory/ | 6 | 17KB | 记忆系统(记住什么) |
| skill/ | 2 | 14.2KB | 技能系统(怎么进化) |
二、Agent配置和循环分离
设计思想
为什么分开?
类比Java的MVC架构:
agent/ = Model(定义数据结构)
tool/ = Service(业务逻辑)
session/ = Controller(处理请求)
好处:
- 职责单一:每个模块只做一件事
- 易于维护:修改配置不影响循环逻辑
- 易于测试:可以单独测试每个模块
关键代码
// agent.ts - Agent配置
export const Info = z.object({
name: z.string(), // Agent名称
description: z.string().optional(), // 描述
mode: z.enum(["subagent", "primary", "all"]), // 模式
permission: Permission.Ruleset.zod, // 权限
hardPermission: Permission.Ruleset.zod.optional(), // 硬权限
})
// session/llm.ts - Agent循环
while (true) {
// 1. 调用LLM API
// 2. 检查是否有tool_calls
// 3. 执行工具
// 4. 结果加入对话
// 5. 重复直到没有tool_calls
}
三、SQLite数据库
为什么用SQLite?
数据存储位置
~/.mimocode/
├── data/
│ ├── mimocode.db # SQLite数据库
│ ├── log/ # 日志
│ └── plans/ # 计划文件
├── cache/ # 缓存
├── config/ # 配置
└── state/ # 状态
四、本地优先设计
设计哲学
一句话总结:本地优先,云端增强
好处
| 好处 | 说明 |
|---|---|
| 隐私 | 数据在本地,安全 |
| 性能 | 本地读写,速度快 |
| 成本 | 用户自己电脑,零成本 |
| 可用性 | 离线可用,联网增强 |
架构对比
传统分布式架构:
用户 → 负载均衡 → 应用服务器1 → 数据库集群
→ 应用服务器2 → 数据库集群
→ 应用服务器3 → 数据库集群
MiMo-Code架构:
用户 → 本地MiMo-Code → 本地SQLite
五、部署方式
支持的部署方式
特点
不需要分布式架构!
原因:
- 单用户使用:不需要负载均衡
- 数据量小:SQLite足够
- 本地优先:数据在本地
- 简单架构:开发维护成本低
六、TUI技术栈
技术栈
工作流程
TypeScript代码
↓
SolidJS(UI框架)
↓
@opentui/solid(终端UI框架)
↓
@opentui/core(终端渲染引擎)
↓
终端(Terminal)
关键代码
// app.tsx(TUI入口)
import { render, useKeyboard, useTerminalDimensions } from "@opentui/solid"
function App() {
const dimensions = useTerminalDimensions()
const keyboard = useKeyboard()
return (
<div>
<Home />
<Session />
</div>
)
}
render(() => <App />)
七、AI老师学习模式的好处
什么是AI老师学习模式?
好处对比
| 对比 | 传统学习 | AI老师学习 |
|---|---|---|
| 主动性 | 被动听课 | 主动探索 |
| 互动性 | 单向输出 | 双向互动 |
| 实践性 | 理论为主 | 实践为主 |
| 反馈性 | 延迟反馈 | 即时反馈 |
| 个性化 | 统一进度 | 个性节奏 |
| 深度 | 表面理解 | 深度理解 |
具体好处
1. 主动探索
传统:老师讲什么,我听什么
AI老师:我想知道什么,就去探索什么
例子:
- 今天我想知道MiMo-Code的架构
- 我主动克隆代码、分析结构、理解设计
- 不是被动听老师讲,而是主动找答案
2. 提问互动
传统:有问题举手,等老师回答
AI老师:随时提问,即时互动
例子:
- 我问:为什么用SQLite而不是MySQL?
- AI老师:从单机应用角度分析
- 我再问:那什么时候用MySQL?
- AI老师:多用户、海量数据场景
- 深度互动,理解更透彻
3. 实践验证
传统:听完课再做作业
AI老师:边学边做,即时验证
例子:
- 我学完Agent配置
- 立即分析agent.ts代码
- 跑通了,理解更深
- 遇到问题,立即解决
4. 即时反馈
传统:考试后才知道对错
AI老师:每一步都有反馈
例子:
- 我写思考题答案
- AI老师立即点评
- 指出错误,给出改进建议
- 不用等到考试,即时改进
5. 个性化节奏
传统:统一进度,跟不上就掉队
AI老师:自己的节奏,学得快就快,学得慢就慢
例子:
- 我今天学了1小时
- 明天可能学30分钟
- 后天可能学2小时
- 完全根据自己的状态调整
6. 深度理解
传统:表面理解,应付考试
AI老师:深度理解,真正学会
例子:
- 我不只是知道"用SQLite"
- 我理解"为什么用SQLite"
- 我知道"什么时候用SQLite"
- 我能"设计自己的数据库方案"
今天的实践
主动探索:
- 克隆官方MiMo-Code
- 分析4701个文件的项目结构
- 理解10个核心模块
提问互动:
- 问:为什么Agent配置和循环分开?
- 问:为什么用SQLite?
- 问:TUI怎么实现的?
- 每个问题都得到详细解答
实践验证:
- 阅读agent.ts代码
- 分析TUI技术栈
- 写思考题答案
即时反馈:
- 思考题84分
- 老师逐题点评
- 指出需要改进的地方
八、今日收获
知识层面
- 官方MiMo-Code的项目结构
- Agent配置和循环分离的设计思想
- SQLite数据库的优势
- 本地优先设计的好处
- TUI技术栈(SolidJS + @opentui)
- AI老师学习模式的价值
技能层面
- 能分析大型项目的代码结构
- 理解架构设计的职责分离原则
- 知道什么时候用SQLite
- 理解本地优先设计的优势
- 了解TUI的实现方式
思维层面
- 架构设计要考虑职责分离
- 能简单就简单,不要过度设计
- 本地优先,云端增强
- 主动探索比被动听课更有效
九、思考题答案(修正版)
第4题:本地优先的好处(补充可用性)
可用性:
├── 离线可用:断网也能查看历史
├── 联网增强:联网时调用AI更强大
└── 不依赖服务器:没有单点故障
第7题:权限系统设计(补充细节)
为什么分两种权限:
├── 软权限:用户/会话可以放宽
├── 硬权限:Agent不变性,不能被覆盖
└── 合并顺序:软权限 → 硬权限(硬权限优先)
第9题:借鉴哪些设计(具体说明)
具体借鉴:
1. 架构设计:Agent配置和循环分开
2. 模块设计:多Agent模式、权限系统、任务追踪
3. 功能设计:SQLite存储、检查点、自我进化
十、明日计划
- 深入分析session/目录下的Agent循环
- 继续学习其他核心模块
- 开始动手实现Mini版Agent
十一、总结
今天分析了官方MiMo-Code的架构设计,核心收获:
- 项目结构:4701个文件,76.67MB代码,10个核心模块
- 架构设计:Agent配置和循环分离,职责单一
- 数据库:SQLite嵌入式,本地优先
- 部署方式:本地优先,不需要分布式
- TUI技术栈:SolidJS + @opentui/solid + @opentui/core
- 学习模式:AI老师学习比传统学习更有效
一句话总结:主动探索、提问互动、实践验证、即时反馈——这就是AI老师学习模式的价值!
📝 小小腾老师的评分
维度 得分 评价 项目结构理解 ⭐⭐⭐⭐⭐ 完美 架构设计理解 ⭐⭐⭐⭐ 优秀 数据库理解 ⭐⭐⭐⭐⭐ 完美 部署方式理解 ⭐⭐⭐⭐ 优秀 TUI技术栈理解 ⭐⭐⭐⭐⭐ 完美 权限系统理解 ⭐⭐⭐ 需要补充 多Agent模式理解 ⭐⭐⭐⭐ 优秀 思考题完成 ⭐⭐⭐⭐ 84分 总分:84分(良好)
老师说:今天的架构设计思路理解得不错,细节还需要加强。AI老师学习模式的价值已经体会到,明天继续深入!
💡 学习心得:主动探索比被动听课更有效,提问互动比单向输出更深入
🎯 明日目标:深入分析session/目录下的Agent循环
📅 学习进度:Day 21/35(60%完成)
下一篇: Day 22:Agent循环深入分析 - 理解while(true)的奥秘
更多推荐


所有评论(0)