# MiniCode **Repository Path**: yyyac/MiniCode ## Basic Information - **Project Name**: MiniCode - **Description**: A lightweight terminal coding assistant with Claude Code-like workflow, tool loop, and TUI architecture, built for learning and experimentation. Multi-language support: TypeScript , Python and Rust implementations available now. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-16 - **Last Updated**: 2026-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniCode

MiniCode Logo

MiniCode

Editor: Minicode #minicode #lightweight Ask DeepWiki

---

一个轻量且高效的编码工具。为速度而生,为简洁而建。

[English](./README.md) | [DeepWiki](https://deepwiki.com/LiuMengxuan04/MiniCode) | [架构说明](./ARCHITECTURE_ZH.md) | [贡献规范](./CONTRIBUTING_ZH.md) | [路线图](./ROADMAP_ZH.md) | [通过 MiniCode 学习 Claude Code 设计](./CLAUDE_CODE_PATTERNS_ZH.md) | [License](./LICENSE) 一个面向本地开发工作流的轻量级终端编码助手。 MiniCode 用更小的实现体量,提供了类 Claude Code 的工作流体验和架构思路,因此非常适合学习、实验,以及继续做自己的定制化开发。 您也可以通过 [DeepWiki](https://deepwiki.com/LiuMengxuan04/MiniCode) 了解本项目。 ## 项目简介 MiniCode 围绕一个实用的 terminal-first agent loop 构建: - 接收用户请求 - 检查当前工作区 - 在需要时调用工具 - 修改文件前先 review - 在同一个终端会话里返回最终结果 整个项目有意保持紧凑,这样主控制流、工具模型和 TUI 行为都更容易理解和扩展。 ## 多语言版本 - TypeScript(本仓库):[MiniCode](https://github.com/LiuMengxuan04/MiniCode) - Rust 版本:[MiniCode-rs(最新)](https://github.com/harkerhand/MiniCode-rs/tree/master) - Python 版本:[MiniCode-Python](https://github.com/QUSETIONS/MiniCode-Python) ## 分支版本特色 - TypeScript 版本:MiniCode 核心工作流、文档和产品展示页的参考实现,现在已经包含按项目隔离的会话持久化、provider usage 上下文记账、自动压缩和大工具结果落盘替换。 - Rust 版本:历史记录保存在工作目录内,因此迁移或移动项目位置时,可以更方便地保留当前项目的 MiniCode 上下文。 - Python 版本:面向 Python 生态的原生实现分支。更明确的分支特色仍在沉淀中。 ## 目录 - [产品介绍展示页](#产品介绍展示页) - [为什么选择 MiniCode](#为什么选择-minicode) - [功能特性](#功能特性) - [安装](#安装) - [快速开始](#快速开始) - [命令](#命令) - [长会话与上下文管理](#长会话与上下文管理) - [配置](#配置) - [Skills 与 MCP 用法](#skills-与-mcp-用法) - [Star 趋势](#star-趋势) - [项目结构](#项目结构) - [代码规模](#代码规模) - [架构文档](#架构文档) - [贡献规范](#贡献规范) - [路线图](#路线图) - [通过 MiniCode 学习 Claude Code 设计](#通过-minicode-学习-claude-code-设计) - [开发说明](#开发说明) ## 产品介绍展示页 - 在浏览器中打开 [docs/index.html](./docs/index.html),即可查看可视化产品介绍页面。 - GitHub Pages 推荐访问地址:`https://liumengxuan04.github.io/MiniCode/` ## 为什么选择 MiniCode 如果你希望得到下面这些东西,MiniCode 会很合适: - 一个轻量级 coding assistant,而不是庞大的平台 - 一个带 tool calling、transcript 和命令工作流的终端 UI - 一个很适合阅读和二次开发的小代码库 - 一个可用于学习类 Claude Code agent 架构的参考实现 ## 功能特性 ### 核心工作流 - 单轮支持多步工具执行 - `model -> tool -> model` 闭环 - 全屏终端交互界面 - 输入历史、transcript 滚动和 slash 命令菜单 - 按项目隔离的会话持久化,支持恢复、重命名、分叉和压缩 - 模型感知的上下文统计,支持 provider usage、tail estimate、自动压缩、上下文折叠和裁剪压缩 - 支持通过 `SKILL.md` 发现本地 skills - 支持通过 stdio 动态加载 MCP tools - 支持通过通用 MCP helper tools 访问 resources 和 prompts ### 内置工具 - `list_files` - `grep_files` - `read_file` - `write_file` - `edit_file` - `patch_file` - `modify_file` - `run_command` - `web_fetch` - `web_search` - `ask_user` - `load_skill` - `list_mcp_resources` - `read_mcp_resource` - `list_mcp_prompts` - `get_mcp_prompt` ### 安全性与可用性 - 文件修改前先 review diff - 路径和命令权限检查 - 独立配置目录和交互式安装器 - 支持 Anthropic 风格接口 - 超大工具结果会落盘保存,并在上下文里替换成短预览和文件路径,避免长命令输出挤占有效对话空间 ### 最近交互改进 - 审批对话支持上下键选择与 Enter 确认,也支持选项上的字母/数字快捷键 - 支持“拒绝并给模型反馈”,可直接把修正建议发回模型 - 编辑审批支持“本轮允许此文件”与“本轮允许全部编辑” - diff 预览改为标准 unified diff(更接近 `git diff`) - 审批页面支持 `Ctrl+O` 展开/收起与滚轮/分页滚动 - 审批弹窗打开时也支持 `Ctrl+C` 干净退出 - 工具调用结果自动折叠为摘要,减少 transcript 噪音 - 通过 `run_command` 启动的显式后台 shell 命令,现在会以轻量 shell task 的形式呈现,不再卡成一个永远 running 的普通工具调用 - TTY 输入事件现在串行处理,并且会把 CRLF 的 Enter 合并成一次确认,避免审批弹窗被重复触发 - 修复了审批阶段可能导致上下键/Enter 无响应的输入事件死锁问题 - 加固 ESC 序列解析,异常终端输入不会再卡住按键处理 - `run_command` 支持 `"git status"` 这类单字符串命令输入,并自动拆分参数 - 澄清问题改为通过 `ask_user` 结构化发问,并在用户回复前暂停当前回合 - 上下文 token 记账已改为 provider usage 驱动:供应商返回的 usage 会作为 context stats、自动压缩触发、warning/blocking 级别和 TUI context badge 的主要来源;本地估算器只在 provider 未返回 usage 或最新 usage boundary 之后存在新增消息时作为 fallback/tail estimate - TUI context badge 会区分真实 usage 和估算 tail,例如 `ctx 82% ... usage+est`;压缩后的会话会把保留下来的旧 usage 标记为 stale,避免把压缩前的 usage 当作当前上下文真实值 - 大工具结果会持久化到 MiniCode 的本地数据目录,并在模型上下文里替换为预览和文件路径;同一个结果的重复处理会复用替换内容,让 token accounting 保持稳定 - 确定性裁剪压缩(snip compact)会安全地移除中段历史消息,同时保护文件编辑和出错轮次,保留近期对话完整 - 上下文折叠(context collapse)投影层能识别长对话中可摘要的片段,替换为简洁摘要以保持在 context window 限制内 - Anthropic thinking block 现在会在跨工具调用轮次间保留,确保多步工具执行过程中思维链的连续性 ## 安装 ```bash cd mini-code npm install npm run install-local ``` 安装器会询问: - 模型名称 - `ANTHROPIC_BASE_URL` - `ANTHROPIC_AUTH_TOKEN` 配置保存在: - `~/.mini-code/settings.json` - `~/.mini-code/mcp.json` 你可以通过 `MINI_CODE_HOME` 自定义配置目录: ```bash export MINI_CODE_HOME=/path/to/custom/dir npm run install-local ``` 启动命令安装到: - `~/.local/bin/minicode` 你可以通过 `MINI_CODE_BIN_DIR` 自定义启动器目录: ```bash export MINI_CODE_BIN_DIR=/path/to/custom/bin npm run install-local ``` 如果 `~/.local/bin` 不在你的 `PATH` 中,可以添加: ```bash export PATH="$HOME/.local/bin:$PATH" ``` ## 快速开始 运行安装后的命令: ```bash minicode ``` 本地开发模式: ```bash npm run dev ``` 离线演示模式: ```bash MINI_CODE_MODEL_MODE=mock npm run dev ``` ## 命令 ### 管理命令 - `minicode mcp list` - `minicode mcp add [--project] [--protocol ] [--url ] [--header KEY=VALUE ...] [--env KEY=VALUE ...] [-- [args...]]` - `minicode mcp login --token ` - `minicode mcp logout ` - `minicode mcp remove [--project]` - `minicode skills list` - `minicode skills add [--name ] [--project]` - `minicode skills remove [--project]` ### 本地 slash 命令 - `/help` - `/tools` - `/skills` - `/mcp` - `/status` - `/model` - `/model ` - `/config-paths` ### 终端交互能力 - 命令提示与 slash 菜单 - transcript 滚动 - 输入编辑 - 历史输入导航 - 审批界面上下键选择与反馈输入(也支持快捷键直接选择) ### 会话管理 MiniCode 每轮对话后自动保存。每次启动会创建新的会话,分配唯一 ID。 - `/resume` — 打开会话选择器 - `/resume ` — 恢复指定会话 - `/rename ` — 重命名当前会话 - `/new` — 开始新会话(旧会话保留) - `/fork` — 将当前会话分叉为独立副本 - `/compact` — 压缩上下文,释放 context window 空间 CLI 参数: - `minicode --resume` — 启动时打开会话选择器 - `minicode --resume ` — 恢复指定会话 - `minicode --fork ` — 分叉指定会话并恢复 会话按工作目录隔离,存储在 `~/.mini-code/projects/`,采用追加写入的 JSONL 格式。退出时会打印 session ID,方便后续恢复。超过 30 天的会话会自动清理。 ## 长会话与上下文管理 MiniCode 现在把长会话作为一等工作流处理: - 模型接口返回 provider usage 时,MiniCode 会把它记录在 assistant response boundary 上,并作为 token 记账的主数据源。 - 如果最新 provider usage boundary 之后又追加了消息,MiniCode 会补充本地 tail estimate,并在 badge 中标记来源,例如 `usage+est`。 - 如果 provider 不返回 usage,MiniCode 会回退到本地估算,因此离线模式和兼容网关仍然可用。 - 上下文统计会驱动 TUI badge、warning/blocking 级别和自动压缩触发。 - `/compact` 会手动压缩上下文(使用裁剪压缩或上下文折叠),并在会话日志中写入 compact boundary。 - 当上下文利用率过高时,自动压缩会自动触发,使用**裁剪压缩**(snip compact:确定性移除中段历史,保护编辑和出错轮次)或**上下文折叠**(context collapse:投影层摘要对话片段)来为后续对话腾出空间。 - 压缩后,保留下来的压缩前 usage 会被标记为 stale,避免把旧 provider 总量误认为当前上下文大小。 - 超大工具结果会写入 `~/.mini-code/tool-results/`,并在可见上下文里替换成预览和完整输出路径。单个结果超过 `50_000` 字符会落盘;一批工具结果会被压到约 `200_000` 字符的可见预算内。 会话存储和上下文压缩会一起工作:`loadSession` 会从最近的 compact boundary 之后恢复,而 `loadTranscript` 仍然可以从 JSONL 事件日志重建可见 transcript。 ## 配置 配置示例: ```json { "model": "your-model-name", "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] }, "remote-example": { "protocol": "streamable-http", "url": "https://example.com/mcp", "headers": { "Authorization": "Bearer your-token" } } }, "env": { "ANTHROPIC_BASE_URL": "https://api.anthropic.com", "ANTHROPIC_AUTH_TOKEN": "your-token", "ANTHROPIC_MODEL": "your-model-name" } } ``` 也支持 Claude Code 风格的项目级 `.mcp.json`: ```json { "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] } } } ``` 为了兼容不同厂商的 MCP 实现,MiniCode 现在会自动协商 stdio framing: - 默认先尝试标准 MCP 的 `Content-Length` framing - 如果失败,再自动回退到按行分隔的 JSON - 也可以在单个 server 上通过 `"protocol": "content-length"` 或 `"protocol": "newline-json"` 强制指定 - 远程 MCP 可使用 `"protocol": "streamable-http"`,并配置 `"url"`(可选 `"headers"`) - header 的值支持环境变量插值,例如 `"Authorization": "Bearer $MCP_TOKEN"` 远程 MCP 认证策略(保持轻量): - 使用 `minicode mcp login --token ` 本地保存 bearer token - 使用 `minicode mcp logout ` 清除已保存 token - 当前版本有意采用 token 方案,不内置完整 OAuth 回调 + refresh 状态机 - 这样可以保持实现简洁并符合 MiniCode 轻量架构目标;后续确有需要再补完整 OAuth 自动化 Skills 默认会从这些位置发现: - `./.mini-code/skills//SKILL.md` - `~/.mini-code/skills//SKILL.md` - `./.claude/skills//SKILL.md` - `~/.claude/skills//SKILL.md` 配置优先级: 1. `~/.mini-code/settings.json` 2. `~/.mini-code/mcp.json` 3. 项目级 `.mcp.json` 4. 兼容的本地已有配置 5. 当前进程环境变量 ## Skills 与 MCP 用法 MiniCode 现在支持两类扩展: - `skills`:本地工作流说明,一般由一个 `SKILL.md` 描述如何完成某类任务 - `MCP`:外部工具源,启动后会把远端 server 暴露的 tools / resources / prompts 接入 MiniCode ### Skills:安装、查看、触发 安装一个本地 skill: ```bash minicode skills add ~/minimax-skills/skills/frontend-dev --name frontend-dev ``` 查看已发现的 skills: ```bash minicode skills list ``` 进入交互界面后,也可以用: ```text /skills ``` 来检查当前会话里可用的 skills。 如果你明确提到 skill 名,MiniCode 会优先加载它。比如: ```text 请使用 frontend-dev skill,直接重构当前 landing page,不要只停在方案说明。 ``` 也可以更明确地要求先读 skill: ```text 先加载 fullstack-dev skill,再根据这个 skill 的工作流实现当前需求。 ``` 一个常见用法是把官方或兼容 Claude Code 的 skills 仓库 clone 到本地后再安装: ```bash git clone https://github.com/MiniMax-AI/skills.git ~/minimax-skills minicode skills add ~/minimax-skills/skills/frontend-dev --name frontend-dev ``` ### MCP:安装、查看、触发 安装一个用户级 MCP server: ```bash minicode mcp add MiniMax --env MINIMAX_API_KEY=your-key --env MINIMAX_API_HOST=https://api.minimaxi.com -- uvx minimax-coding-plan-mcp -y ``` 查看当前已配置的 MCP: ```bash minicode mcp list ``` 如果你想只给当前项目配置 MCP,可以加 `--project`: ```bash minicode mcp add filesystem --project -- npx -y @modelcontextprotocol/server-filesystem . minicode mcp list --project ``` 进入交互界面后,可以用: ```text /mcp ``` 查看当前会话里哪些 server 已连接、用了什么协议、暴露了多少 tools / resources / prompts。 MCP tools 会自动注册成: ```text mcp____ ``` 例如安装 MiniMax MCP 后,你可能会看到: - `mcp__minimax__web_search` - `mcp__minimax__understand_image` 这些工具不需要手动声明,server 连接成功后会自动出现在工具列表中。 ### 在对话里怎么用 最简单的方式是直接自然语言描述需求,让模型自己决定是否调用 skill 或 MCP tool: ```text 搜索一下最近关于 MCP 的中文资料,给我 5 条有代表性的链接。 ``` 如果当前已连接 MiniMax MCP,模型通常会自动选择 `mcp__minimax__web_search`。 如果你想更稳一些,可以把 skill 或目标写清楚: ```text 请使用 frontend-dev skill,直接修改当前项目文件,把页面重做成更完整的产品落地页。 ``` 或者: ```text 请使用已连接的 MCP 工具帮我搜索 MiniMax MCP guide,并总结它提供了哪些能力。 ``` ### 什么时候用 skills,什么时候用 MCP - `skills` 更适合沉淀工作流、规范、领域经验 - `MCP` 更适合接入搜索、图片理解、外部系统、数据库、浏览器、文件系统等远端能力 一个常见组合是: - 用 `frontend-dev` 这类 skill 约束页面改造方式 - 再让已连接的 MCP 提供搜索、图片理解或其他外部能力 ### 兼容性说明 MiniCode 当前主要支持: - 本地 `SKILL.md` 发现与 `load_skill` - stdio MCP server - MCP tools - MCP resources / prompts 的通用 helper tools 为了兼容不同厂商实现,MiniCode 会自动尝试: - 标准 `Content-Length` framing - 失败后回退到 `newline-json` 所以像 MiniMax 这类采用按行 JSON 的 MCP server,也可以直接接入。 ## Star 趋势

Star History Chart

## 通过 MiniCode 学习 Claude Code 设计 如果你想把这个项目当成学习材料,可以继续阅读: - [通过 MiniCode 你可以学习到 Claude Code 的哪些设计](./CLAUDE_CODE_PATTERNS_ZH.md) ## 项目结构 - `src/index.ts`: CLI 入口 - `src/agent-loop.ts`: 多步模型/工具循环 - `src/tool.ts`: 工具注册与执行 - `src/skills.ts`: 本地 skill 发现与加载 - `src/mcp.ts`: stdio MCP 客户端与动态工具封装 - `src/manage-cli.ts`: 顶层 `minicode mcp` / `minicode skills` 管理命令 - `src/session.ts`: 追加写入的会话 JSONL、恢复/分叉/重命名、compact boundary 和过期清理 - `src/compact/*`: 手动压缩、自动压缩、上下文折叠投影层、确定性裁剪压缩和对话摘要辅助逻辑 - `src/utils/token-estimator.ts`: provider usage 优先的上下文记账与本地估算 fallback - `src/utils/tool-result-storage.ts`: 大工具输出持久化与预览替换 - `src/tools/*`: 内置工具集合 - `src/tui/*`: 终端 UI 模块 - `src/config.ts`: 运行时配置加载 - `src/install.ts`: 交互式安装器 ## 代码规模 当前核心实现约 **7,874 行**。 统计口径: - 纳入:核心 TypeScript 源码、内置工具、配置、MCP、会话、压缩、adapter、permissions,以及 `bin/minicode` - 排除:文档、测试、`external/`、`node_modules/` 和 TUI 文件(`src/tui/`、`src/tty-app.ts`、`src/ui.ts`) 如果只排除 `src/tui/`,但保留 `src/tty-app.ts` 和 `src/ui.ts`,总计约 **9,767 行**。 ## 架构文档 - [Architecture Overview](./ARCHITECTURE.md) - [中文架构说明](./ARCHITECTURE_ZH.md) ## 贡献规范 - [中文贡献规范](./CONTRIBUTING_ZH.md) - [Contribution Guidelines](./CONTRIBUTING.md) ## 路线图 - [路线图(中文)](./ROADMAP_ZH.md) - [Roadmap](./ROADMAP.md) ## 开发说明 ```bash npm run check ``` MiniCode 有意保持小而实用。目标是让整体架构足够清晰、易改造、易扩展。