30 天从零打造你自己的 Claude Code (Day 7/30)
如果这个项目对你有帮助,请给一个 ⭐️
核心特性:
- 流式输出 - 打字机效果,实时显示 AI 思考过程
- 工具调用 - Glob/Grep/View/Bash/Write/Edit 六大工具
- 权限系统 - 危险操作确认,支持持久授权
- 主题切换 - Ctrl+T 切换暗色/亮色主题
- 多轮对话 - 完整的上下文记忆
- 取消支持 - Esc 随时中断,不浪费 Token
"Talk is cheap, show me the code." — Linus Torvalds
市面上有很多讲 AI Agent 的文章,但大多停留在概念层面。这个项目不同:
| 其他教程 | MiniCode |
|---|---|
| 讲概念、画架构图 | 3600+ 行教程 + 完整可运行代码 |
| 用 Python/LangChain | Go 语言 + Fantasy SDK |
| Hello World 级别 | 真正可用的 AI 编程助手 |
| 一篇文章讲完 | 30 天渐进式学习 |
Day 1-4: 基础篇 ─────────────────────────────────────
├── AI Agent 核心概念
├── 工具系统设计与实现
├── TUI 交互界面 (Bubble Tea)
└── 流式输出 + 取消机制
Day 5-10: 工具篇 ─────────────────────────────────────
├── 文件读写 (Read/Write)
├── 代码编辑 (Edit with diff)
├── 命令执行 (Bash)
└── 内容搜索 (Grep)
Day 11-20: 进阶篇 ─────────────────────────────────────
├── Agent 循环与决策
├── 上下文管理与压缩
├── 错误恢复机制
└── 并行工具调用
Day 21-30: 高级篇 ─────────────────────────────────────
├── 子 Agent 调度
├── 记忆系统
├── 性能优化
└── 生产级部署
git clone https://github.com/JiayuXu0/MiniCode.git
cd MiniCode方式一:使用智谱 GLM(推荐,有免费额度)
前往 智谱 AI 注册并获取 API Key
# 创建 .env 文件
echo "OPENAI_API_KEY=你的智谱API_KEY" > .env方式二:使用其他平台
MiniCode 支持多种 LLM 平台,详见 配置示例:
- OpenRouter: 支持多种模型(Claude、GPT-4 等)
- 阿里云百炼: 通义千问系列模型
- OpenAI: GPT-4o、GPT-4o-mini 等
快速切换配置:
# 使用 OpenRouter
cp minicode.openrouter.json minicode.json
# 编辑并填入你的 API Key
# 使用阿里云百炼
cp minicode.bailian.json minicode.json
# 编辑并填入你的 API Keygo run .操作说明:
Enter- 发送消息Tab- 切换焦点(输入框 / 消息区)Ctrl+T- 切换暗色/亮色主题Esc- 取消当前请求 / 退出↑↓- 滚动查看历史消息
| Day | 主题 | 内容 | 状态 |
|---|---|---|---|
| Day 1 | 创建第一个 AI Agent | Fantasy SDK、Provider、Agent 基础 | ✅ |
| Day 2 | 给 Agent 添加工具 | Tool 系统、Glob 文件搜索、AgentResult | ✅ |
| Day 3 | 构建交互式 TUI | Bubble Tea、Elm 架构、多轮对话 | ✅ |
| Day 4 | 实现流式输出 | Streaming API、跨 goroutine 通信、取消机制 | ✅ |
| Day 5 | 统一样式系统 | Lip Gloss 主题、渐变色、主题切换 | ✅ |
| Day 6 | 权限系统 | Channel 阻塞、危险命令检测、权限对话框 | ✅ |
| Day 7 | 配置系统 | JSON 配置、变量解析、层级合并 | ✅ |
| Day 8-10 | 高级工具 | 搜索优化、并行执行 | 📋 |
| Day 11-20 | Agent 循环 | 决策引擎、上下文管理 | 📋 |
| Day 21-30 | 高级特性 | 子 Agent、记忆、部署 | 📋 |
┌─────────────────────────────────────────────────────────────────┐
│ MiniCode │
├─────────────────────────────────────────────────────────────────┤
│ │
│ main.go tui/ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Provider │ │ model.go - 状态管理 │ │
│ │ (智谱 GLM) │ │ update.go - 事件处理 │ │
│ │ ↓ │ │ view.go - 界面渲染 │ │
│ │ Agent │◄─────────────▶│ stream.go - 流式处理 │ │
│ │ (Fantasy) │ │ message.go - 消息类型 │ │
│ └──────────────┘ └──────────────────────────┘ │
│ │ │
│ ▼ │
│ tools/ internal/ │
│ ┌────────────────────────┐ ┌──────────────────────────┐ │
│ │ glob.go - 文件搜索 │ │ styles/ - 主题样式 │ │
│ │ view.go - 文件查看 │ │ permission/- 权限系统 │ │
│ │ grep.go - 内容搜索 │◄───▶│ ├─ permission.go │ │
│ │ bash.go - 命令执行 │ │ └─ dangerous.go │ │
│ │ write.go - 文件写入 │ └──────────────────────────┘ │
│ │ edit.go - 代码编辑 │ │
│ └────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
| 组件 | 技术 | 说明 |
|---|---|---|
| 语言 | Go 1.21+ | 高性能、强类型、并发原生支持 |
| AI SDK | Fantasy | Charmbracelet 出品,统一多 Provider |
| TUI | Bubble Tea | Elm 架构的终端 UI 框架 |
| 样式 | Lipgloss | 终端样式库 |
| LLM | 智谱 GLM-4 | 国产大模型,OpenAI 兼容接口 |
MiniCode/
├── main.go # 程序入口
├── tui/ # TUI 界面
│ ├── model.go # Model 定义
│ ├── update.go # Update 逻辑
│ ├── view.go # View 渲染
│ ├── stream.go # 流式处理
│ ├── message.go # 消息类型
│ └── util.go # 工具函数
├── tools/ # 工具集
│ ├── glob.go # 文件搜索
│ ├── view.go # 文件查看
│ ├── grep.go # 内容搜索
│ ├── bash.go # 命令执行
│ ├── write.go # 文件写入
│ └── edit.go # 代码编辑
├── internal/ # 内部模块
│ ├── styles/ # 样式系统
│ │ ├── theme.go # 主题定义
│ │ ├── styles.go # 样式工厂
│ │ └── gradient.go # 渐变效果
│ └── permission/ # 权限系统
│ ├── permission.go # 权限服务
│ └── dangerous.go # 危险命令检测
├── docs/ # 教程文档
│ ├── 01.md ~ 06.md # Day 1-6 教程
│ └── ...
└── assets/ # 静态资源
Q: 支持哪些 LLM?
通过 Fantasy 的 openaicompat Provider,支持所有 OpenAI 兼容接口:
- 智谱 GLM(默认)
- 阿里通义千问
- 百度文心一言
- DeepSeek
- 本地模型(Ollama、vLLM 等)
修改 main.go 中的 baseURL 和 modelID 即可切换。
Q: 为什么不用 Python?
- 性能: Go 编译后是原生二进制,启动快、内存小
- 部署: 无需安装运行时,复制一个文件就能跑
- 并发: goroutine 处理流式输出比 async/await 更自然
- 类型安全: 编译时发现错误,不用等运行时踩坑
Q: 和 Claude Code 差距在哪?
MiniCode 是教学项目,目标是让你理解原理。和 Claude Code 的差距:
- 模型能力(Claude 4 vs GLM-4)
- 工具数量(6 个 vs 20+)
- 上下文管理(简单 vs 复杂压缩算法)
- 错误恢复(基础 vs 生产级)
但核心架构是一致的,学完你可以自己扩展。
Q: 教程更新频率?
目前已完成 Day 1-7,后续内容持续更新中。欢迎 Watch & Star 项目获取更新通知。
欢迎参与贡献!
- Star - 如果觉得有帮助,点个 Star 支持一下
- Issue - 发现 Bug 或有建议,欢迎提 Issue
- PR - 修复问题或添加功能,欢迎提 PR
- 分享 - 觉得教程有价值,分享给更多人
MIT License
Made with ❤️ by JiayuXu0