🤖 系列: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老师学习模式的价值——不是被动听课,而是主动探索、提问、实践。今天就来聊聊这个。


学习目标

  1. 熟悉官方MiMo-Code的项目结构
  2. 理解Agent配置和循环分离的设计思想
  3. 了解SQLite数据库的使用
  4. 理解"本地优先"设计哲学
  5. 了解TUI技术栈
  6. 反思AI老师学习模式的好处

一、官方MiMo-Code项目结构

项目规模

指标 数值
总文件数 730个
总代码量 5.9MB
核心包 packages/opencode/src/

核心模块

MiMo-Code

agent/

tool/

memory/

task/

session/

provider/

mcp/

skill/

workflow/

Agent配置

工具系统

记忆系统

任务追踪

会话管理

模型提供者

MCP协议

技能系统

工作流

文件统计

模块 文件数 代码量 作用
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配置和循环分离

设计思想

Agent配置

定义Agent是什么

Agent循环

处理Agent怎么工作

agent.ts

session/目录

为什么分开?

类比Java的MVC架构

agent/   = Model(定义数据结构)
tool/    = Service(业务逻辑)
session/ = Controller(处理请求)

好处

  1. 职责单一:每个模块只做一件事
  2. 易于维护:修改配置不影响循环逻辑
  3. 易于测试:可以单独测试每个模块

关键代码

// 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?

数据库选择

SQLite

MySQL

PostgreSQL

嵌入式

零配置

本地存储

单文件

性能好

需要服务器

需要配置

云端存储

需要服务器

需要配置

云端存储

数据存储位置

~/.mimocode/
├── data/
│   ├── mimocode.db    # SQLite数据库
│   ├── log/           # 日志
│   └── plans/         # 计划文件
├── cache/             # 缓存
├── config/            # 配置
└── state/             # 状态

四、本地优先设计

设计哲学

一句话总结:本地优先,云端增强

本地优先设计

本地

云端

代码编辑

文件操作

数据存储

任务管理

AI模型调用

代码生成

智能分析

好处

好处 说明
隐私 数据在本地,安全
性能 本地读写,速度快
成本 用户自己电脑,零成本
可用性 离线可用,联网增强

架构对比

传统分布式架构:
用户 → 负载均衡 → 应用服务器1 → 数据库集群
                → 应用服务器2 → 数据库集群
                → 应用服务器3 → 数据库集群

MiMo-Code架构:
用户 → 本地MiMo-Code → 本地SQLite

五、部署方式

支持的部署方式

MiMo-Code部署

CLI工具

桌面端

Web版本

Docker容器

源码运行

npm install -g mimo-ai-cli

Electron应用

浏览器访问

多种镜像

bun install + bun run dev

特点

不需要分布式架构

原因:

  1. 单用户使用:不需要负载均衡
  2. 数据量小:SQLite足够
  3. 本地优先:数据在本地
  4. 简单架构:开发维护成本低

六、TUI技术栈

技术栈

TUI技术栈

SolidJS

opentui-solid

opentui-core

UI框架

类似React

终端UI组件

组件库

终端渲染引擎

60FPS

工作流程

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老师学习模式

主动探索

提问互动

实践验证

即时反馈

自己找答案

分析代码

理解架构

问为什么

对比不同方案

质疑权威

写代码

跑测试

做项目

老师点评

思考题

改进建议

好处对比

对比 传统学习 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分
  • 老师逐题点评
  • 指出需要改进的地方

八、今日收获

知识层面

  1. 官方MiMo-Code的项目结构
  2. Agent配置和循环分离的设计思想
  3. SQLite数据库的优势
  4. 本地优先设计的好处
  5. TUI技术栈(SolidJS + @opentui)
  6. AI老师学习模式的价值

技能层面

  1. 能分析大型项目的代码结构
  2. 理解架构设计的职责分离原则
  3. 知道什么时候用SQLite
  4. 理解本地优先设计的优势
  5. 了解TUI的实现方式

思维层面

  1. 架构设计要考虑职责分离
  2. 能简单就简单,不要过度设计
  3. 本地优先,云端增强
  4. 主动探索比被动听课更有效

九、思考题答案(修正版)

第4题:本地优先的好处(补充可用性)

可用性:
├── 离线可用:断网也能查看历史
├── 联网增强:联网时调用AI更强大
└── 不依赖服务器:没有单点故障

第7题:权限系统设计(补充细节)

为什么分两种权限:
├── 软权限:用户/会话可以放宽
├── 硬权限:Agent不变性,不能被覆盖
└── 合并顺序:软权限 → 硬权限(硬权限优先)

第9题:借鉴哪些设计(具体说明)

具体借鉴:
1. 架构设计:Agent配置和循环分开
2. 模块设计:多Agent模式、权限系统、任务追踪
3. 功能设计:SQLite存储、检查点、自我进化

十、明日计划

  1. 深入分析session/目录下的Agent循环
  2. 继续学习其他核心模块
  3. 开始动手实现Mini版Agent

十一、总结

今天分析了官方MiMo-Code的架构设计,核心收获:

  1. 项目结构:4701个文件,76.67MB代码,10个核心模块
  2. 架构设计:Agent配置和循环分离,职责单一
  3. 数据库:SQLite嵌入式,本地优先
  4. 部署方式:本地优先,不需要分布式
  5. TUI技术栈:SolidJS + @opentui/solid + @opentui/core
  6. 学习模式:AI老师学习比传统学习更有效

一句话总结:主动探索、提问互动、实践验证、即时反馈——这就是AI老师学习模式的价值!


📝 小小腾老师的评分

维度 得分 评价
项目结构理解 ⭐⭐⭐⭐⭐ 完美
架构设计理解 ⭐⭐⭐⭐ 优秀
数据库理解 ⭐⭐⭐⭐⭐ 完美
部署方式理解 ⭐⭐⭐⭐ 优秀
TUI技术栈理解 ⭐⭐⭐⭐⭐ 完美
权限系统理解 ⭐⭐⭐ 需要补充
多Agent模式理解 ⭐⭐⭐⭐ 优秀
思考题完成 ⭐⭐⭐⭐ 84分

总分:84分(良好)

老师说:今天的架构设计思路理解得不错,细节还需要加强。AI老师学习模式的价值已经体会到,明天继续深入!


💡 学习心得:主动探索比被动听课更有效,提问互动比单向输出更深入

🎯 明日目标:深入分析session/目录下的Agent循环

📅 学习进度:Day 21/35(60%完成)


下一篇: Day 22:Agent循环深入分析 - 理解while(true)的奥秘


Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐