MiniCode 是我开源的一个终端里的轻量编码助手。它诞生的缘由很直接:Claude Code 的源码一度泄露,我当天对着泄露出来的设计思路,仿照 Claude Code 的架构做了一版轻量化实现,一直写到凌晨五点多——不是为了「复刻产品」,而是把最有价值的那条执行闭环落在够小、够读得懂的代码里。下文对项目的介绍,主要对齐仓库里的 架构说明 与 《通过 MiniCode 学习 Claude Code 设计》(
ARCHITECTURE_ZH.md、CLAUDE_CODE_PATTERNS_ZH.md)。
🔗 仓库:github.com/LiuMengxuan04/MiniCode
MiniCode 是一个轻量的终端 AI Coding Agent 项目,可以理解成一个适合学习和继续演化的 Claude Code 风格参考实现。项目里已经包含了 agent loop、工具调用、权限审批、文件修改 review、TUI 界面,以及 MCP、skills 这些扩展能力。
这个项目很适合想学 Agent、想做开源、或者想给自己积累一些对就业有帮助项目经历的同学参与。你既可以借这个项目理解 AI Coding Agent 的核心设计,也可以通过实际提 PR 获得比较完整的工程协作体验。
本项目的定位其实有些类似于 Nano-vLLM……一个遥远的目标哈哈,前路漫漫,我慢慢做……
1. 项目想保留什么
MiniCode 刻意不做「大而全的终端 agent 平台」,而是优先保住这几件事:
- 模型 → 工具 → 模型 的主循环
- 全屏 TUI 的交互节奏
- 目录感知、权限审批、危险操作确认
- transcript / tool / input 的组件化界面结构
- 用户可 review 的文件修改流程
换句话说:它是一个更小、更可控的终端编码助手骨架,控制流和边界都还能拿在手里改。
2. 和 Claude Code 设计的一一对应
我在 CLAUDE_CODE_PATTERNS_ZH.md 里把 Claude Code 的关键设计和 MiniCode 里能看到的落点写在一起。这里只抽主线,细节仍以仓库文档为准:
| 设计维度 | 思路(Claude Code 侧) | MiniCode 里怎么轻量接住 |
|---|---|---|
| Agent Loop | 持续的主控制流:输入 → 上下文 → 模型 → 工具决策 → 执行 → 结果回传 → 结束判定 | agent-loop.ts 等多步回合循环,TUI、工具、权限、MCP、skills 都绕这条 loop 组织 |
| 结构化消息 | 区分用户输入、最终回答、进度、工具调用/结果、摘要边界等 | 不止把 transcript 当字符串列表;区分 progress、tool call、tool result、context summary 等角色 |
| Tool 协议 | 声明调用 → 解析输入 → 权限参与 → 标准化结果 → 进入下一轮推理 | 统一注册、schema、执行入口与结果格式;本地工具与 MCP 动态工具同一层抽象 |
| Progress 与 Final | 过程说明 ≠ 回合结束条件 | progress 单独建模与渲染,结束条件不只看自然语言正文 |
| 权限在路径上 | 高风险操作在统一审批边界 | permissions.ts、file-review.ts;拒绝后可把说明回灌模型 |
| MCP | 动态发现、挂载外部能力 | mcp.ts:stdio 连接、协商 framing、tools 进工具表;resources/prompts 经 helper tools |
| Skills | 轻量工作流扩展,非重型插件 | skills.ts + load_skill,本地 SKILL.md 发现与加载 |
| 上下文压缩 | 摘要替换较早历史,保留近期原文 | 超长会话触发 context_summary,继续对话 |
| TUI | 状态机可视化:工具态、审批态、折叠摘要等 | tui/* 等:不只刷最终回答 |
| 前台工具 vs 后台 Shell | 长驻命令建模成独立 task | background-tasks.ts:后台 shell 与前台工具调用分开呈现 |
MiniCode 保留的是核心设计方案,不是产品级全盘搬运——仓库建立初期的目标是一晚上能落地,于是我先搭建了最基本的框架,再陆续完善。
3. 代码从哪读起
| 路径 | 职责 |
|---|---|
src/index.ts |
CLI 入口 |
src/agent-loop.ts |
多轮工具调用循环 |
src/tool.ts |
注册、校验、执行 |
src/tools/* |
列举/检索/读写/编辑/补丁、run_command、load_skill 及 MCP 相关辅助工具 |
src/config.ts |
独立配置目录 ~/.mini-code |
src/skills.ts / src/mcp.ts / src/manage-cli.ts |
Skills 发现、MCP 客户端、minicode mcp / minicode skills |
src/permissions.ts / src/file-review.ts |
路径与命令审批、写前 diff |
src/tui/* |
transcript、输入、Markdown、审批与全屏节奏 |
src/anthropic-adapter.ts / src/mock-model.ts |
在线 API 与离线 mock |
更完整的能力列表、安装方式、slash 命令与 MCP framing 说明,见仓库根目录的 README / README.zh-CN,此处不重复粘贴。
4. 小结
MiniCode 的起点很个人:Claude Code 源码泄露的那一天,我按它的设计轮廓肝到凌晨五点,做了一个刻意缩水的「Claude Code 式」终端 agent,方便个人以及他人的学习/二次开发。之后的内容迭代,仍然围绕着最开始的设计哲学。
让我非常震惊的是社区对于这个项目的热情,这是我第一个破百 star 的仓库(实际上也是我第一个正儿八经的项目),这对我是极大的鼓舞,也希望和社区一起维护好这个项目。
若你也在研究 agent,不妨看看这个项目,欢迎直接 clone 仓库边跑边改;issue / PR 也开放。
仓库里的开发规范与路线图(CONTRIBUTING、ROADMAP)写明了规范与待实现扩展,欢迎认领并成为重要功能的 Contributor。后续也规划了 Python、Go、Rust 等多语言分支,欢迎对这些方向感兴趣的同学一起参与、维护某个语言版本。