<h1 align="center">MiMoCode</h1>
<p align="center">
<img src="https://raw.githubusercontent.com/XiaomiMiMo/MiMo-Code/HEAD/assets/readme/mimocode-banner.png" alt="MiMoCode" width="700">
</p>
<p align="center"><strong>MiMo Code: 모델과 에이전트가 공동 진화하는 곳</strong></strong></p>
<p align="center">
<a href="README.zh.md">中文</a> | English
</p>
<p align="center">
<a href="https://mimo.xiaomi.com/coder">웹사이트</a> | <a href="https://mimo.xiaomi.com/en/blog/mimo-code-long-horizon">블로그</a>
</p>
MiMoCode는 터미널 기반의 AI 코딩 어시스턴트입니다. 코드를 읽고 작성하며, 명령을 실행하고, Git을 관리할 수 있으며, 영구 메모리 시스템을 사용하여 세션 전반에 걸쳐 프로젝트에 대한 깊은 이해를 유지하는 동시에 지속적으로 스스로 개선합니다.
<p align="center"><strong>MiMo Desktop</strong>>: <a href="https://mimo-ai.xiaomimimo.com/desktop/invite/">국제 버전 다운로드</a></p>
Xiaomi MiMo Desktop
<p align="center"><img src="https://raw.githubusercontent.com/XiaomiMiMo/MiMo-Code/HEAD/assets/readme/mimo-desktop-en.jpg" alt="Xiaomi MiMo Desktop English interface: starting a new task" width="900"></p>
Xiaomi MiMo Desktop은 실제 업무 환경을 위해 구축되었습니다. 하나의 대화로 사무 작업, 디자인, 코딩 및 멀티모달 생성이 가능하며, 여러 개의 대화를 통해 작업을 분담하고 협업할 수 있습니다. 이 데스크톱 앱은 MiMo Code를 핵심 엔진으로 구동하여 터미널 기반의 지능을 데스크톱 워크플로우로 가져옵니다.
- 스마트 오케스트레이션 (Smart orchestration): 태스크 유형과 비용을 평가한 후, 모델, 프레임워크, 도구를 동적으로 선택하며; 복잡한 태스크는 여러 에이전트에서 병렬로 실행될 수 있습니다.
- 지속적인 반복 작업 (Continuous iteration): 다양한 형식의 파일을 드래그하여 PPT, 웹페이지, 3D 에셋, 앱을 생성하고, 세션 내에서 결과를 미리 보고 작동시키며, 선택된 영역을 정밀하게 편집하고 버전을 되돌릴 수 있습니다.
- 제어된 장기 태스크 비용 (Controlled long-task cost): 표준 모델과 플래그십 모델 간에 라우팅하며, 필요한 영역만 편집하고 최대 99%의 세션 내 및 95%의 세션 간 캐시 적중률을 지원합니다.
- 브라우저 제어 (Browser control): 웹페이지를 열고, 정보를 검색하며, 양식을 작성하고, 웹페이지 생성 후 핵심 상호작용을 확인합니다.
- 컴퓨터 제어 (Computer control) (국제 버전 전용): 화면을 읽고 앱 간에 마우스 및 키보드를 작동시킵니다; Record & Replay 기능을 사용하면 자연어를 통해 기록된 워크플로우를 재사용할 수 있습니다.
새로운 MiMo-V2.6-Pro 및 MiMo-V2.6-Flash 모델로 구동됩니다.
MiMoCode는 모든 주요 LLM 제공업체 API에 연결을 지원합니다.
빠른 시작 (Quick Start)
curl -fsSL https://mimo.xiaomi.com/install | bash
...
최초 실행 시 설정 과정을 자동으로 안내합니다. 지원되는 옵션:
- Xiaomi MiMo Platform — OAuth 로그인
- Codex (ChatGPT Pro/Plus) — OpenAI OAuth 로그인
- Claude Code에서 가져오기 (Import from Claude Code) — 기존 인증을 한 단계로 마이그레이션
- 제공업체 목록 (Provider list) — API 키 또는 지원되는 경우 OAuth를 통해 카탈로그 제공업체를 연결합니다 (예: xAI/Grok)
- 사용자 지정 제공업체 (Custom Provider) — TUI에서 OpenAI와 호환되는 모든 API 추가
<details>
<summary><strong >WSL: 클립보드 문제점</strong></summary>
WSL에서 복사 시 깨진 텍스트가 나타나면 xsel을 설치하세요:
</details>
<details>
<summary><strong >macOS: 기본 터미널의 렌더링 문제점</strong></summary>
MiMoCode는 내장 macOS 터미널(Terminal.app)을 지원하지 않습니다. 인터페이스가 정렬되지 않거나 깜박이거나 다른 렌더링 문제가 발생하는 경우, 대신 iTerm2 또는 VS Code 통합 터미널을 사용하세요:
brew install --cask iterm2
</details>
<details>
<summary><strong
>TUI 지연 및 시각 애니메이션 문제</strong></strong
></summary>
SSH를 통해 직접 실행할 때 TUI가 느려진다면, 이를 로컬에서 렌더링하고 MiMoCode 서버만 원격 호스트에서 실행하세요. 원격 프로젝트 디렉토리에서 서버를 시작합니다:
mimo serve --port 4096
...
장식적인 애니메이션이 지연의 원인이라면, /vivid를 실행하거나 ctrl+p 명령 팔레트에서 Vivid visuals를 구성하여 필요에 따라 Vivid와 Minimal 비주얼 간에 전환할 수 있습니다.
</details>
<details>
<summary><strong
>Windows: 셸에서 깨진 CJK (중국어/일본어/한국어) 출력</strong></strong
></summary>
비-UTF-8 시스템 로케일(예: zh-CN, 활성 코드 페이지가 936/GBK인 경우)을 사용하는 Windows에서는,
CJK 문자가 포함된 명령어 출력이 깨져 보일 수 있습니다 (mojibake). MiMoCode는 생성되는 PowerShell/cmd 서브 프로세스에 대해 UTF-8 출력을 강제합니다. 아직 다루지 못한 경우에도 여전히 깨진 출력을 겪는다면, Windows의 시스템 전체 UTF-8 지원을 활성화하세요:
**설정 → 시간 및 언어 → 언어 및 지역 → 관리 언어 설정 → 시스템 로캘 변경 →
**awesome-mimo-agent는 해당 도구에서 MiMo를 사용하는 설정 가이드를 모아 놓았습니다. MiMo를 다른 곳에서도 사용해보고 싶다면 살펴보는 것이 좋습니다. 기여 환영: 자신만의 설정을 추가하려면 PR을 열어주세요.
핵심 기능 (Core Features)
여러 에이전트 (Multiple Agents)
| 에이전트 | 설명 |
|---|
| build | 기본값. 개발을 위한 전체 도구 권한 |
| plan | 코드 탐색 및 솔루션 설계를 위한 읽기 전용 분석 모드 |
Tab 키를 눌러 주 에이전트 간에 전환할 수 있습니다. Build와 Plan은 언제든지 전환할 수 있지만, 다른 사용자 지정 또는 특수 모드는 첫 번째 메시지가 전송되면 잠깁니다.
영구 메모리 (Persistent Memory)
SQLite FTS5 전체 텍스트 검색을 기반으로 한 세션 간 메모리:
- 프로젝트 메모리 (
MEMORY.md) — 지속적인 프로젝트 지식, 규칙 및 아키텍처 결정
- 세션 체크포인트 (
checkpoint.md) — 체크포인트 작성기(checkpoint-writer) 서브 에이전트에 의해 자동으로 유지되는 구조화된 상태 스냅샷
- 임시 메모 (Scratch notes) (
notes.md) — 에이전트를 위한 임시 노트 영역
- 작업 진행 상황 (
tasks/<id>/progress.md) — 작업별 로그
메모리는 세션이 재개될 때 자동으로 주입되므로, 에이전트가 프로젝트 컨텍스트를 다시 학습할 필요가 없습니다.
지능형 컨텍스트 관리 (Intelligent Context Management)
- 자동 체크포인트 — 모델의 컨텍스트 창을 기반으로 세션 상태를 저장할 시점을 결정합니다.
- 컨텍스트 재구성 — 컨텍스트가 한계에 다다르면, 최신 체크포인트, 프로젝트 메모리, 작업 진행 상황 및 보존된 최근 메시지로부터 이를 재구축하여 에이전트가 현재 작업을 계속할 수 있도록 합니다.
- 예산 기반 주입 (Budgeted injection) — 토큰 예산을 사용하여 얼마나 많은 체크포인트, 메모리, 노트 내용이 컨텍스트에 들어갈지 제어하며, 중요도 순위(importance ranking)를 적용합니다.
- 조정 가능한 압축 지점 (Adjustable compaction point) —
/context-limit (또는 compaction.max_context)은 모델 자체의 창보다 더 일찍 모델을 압축하게 만듭니다. 모델별로 설정 가능합니다.
<details>
<summary><strong>모델 창보다 일찍 압축하기 (<code>/context-limit</code>)</strong></summary>
Compaction은 일반적으로 모델의 컨텍스트 윈도우 바로 아래에서 작동합니다. 현재 모델에 대해 더 작은 작업 예산(working budget)을 지정하려면 /context-limit을 실행하세요 — 200K / 300K / 500K / 1M 또는 사용자 정의 값을 사용할 수 있으며, 이는 compaction.max_context로 모델별 저장됩니다:
{
"compaction": {
"max_context": {
...
이 값은 항상 제공업체(provider)가 실제로 수락하는 값으로 제한되므로, 컴팩션 지점을 낮출 수는 있지만 절대 높일 수는 없습니다. 0을 사용하면 모델 자체의 윈도우로 복원됩니다.
사용자가 이를 원하는 이유:
- 비용 계층(Cost tiers). OpenAI는 GPT-5.6 프롬프트가 272K 입력 초과 시 전체 요청에 대해 입력은 2배, 출력은 1.5배의 비용을 부과합니다.
- 광고된 윈도우가 항상 사용 가능한 것은 아닙니다. 동일한 모델이라도 접근 방식(ChatGPT/Codex 구독, 직접 API 키, 또는 OpenRouter와 같은 리셀러)에 따라 다른 사용 가능 윈도우를 가질 수 있으므로, 1M이라는 카탈로그 수치가 해당 경로가 1M을 제공한다는 의미는 아닙니다.
- 품질 및 지연 시간(Quality and latency). 매우 긴 컨텍스트는 느리고, 어느 시점 이후로는 더 좋지 않습니다.
mimo models <provider>를 실행하면 모델별로 MiMoCode가 해결한 윈도우와 컴팩션이 발생할 토큰 수를 출력합니다. 프롬프트 푸터(prompt footer)는 이와 동일한 숫자를 분모로 사용합니다(33.0K/260K↓ (13%) — ↓는 예산이 적용 중임을 의미)하며, /status를 실행하면 이를 상세하게 분석할 수 있습니다.
작업 추적(Task Tracking)
체크포인트 시스템과 자동으로 통합되는 트리 형태의 작업 시스템(T1, T1.1, T1.2, …)으로, 세션이 재개될 때 작업 진행 상황을 보존합니다.
서브 에이전트 시스템(Subagent System)
주요 에이전트는 필요에 따라 서브 에이전트를 생성할 수 있습니다. 서브 에이전트는 현재 세션 컨텍스트를 공유하며, 생명 주기 추적(lifecycle tracking), 취소(cancellation), 백그라운드 실행을 통해 병렬로 작업할 수 있습니다.
목표/중지 조건(Goal / Stop Condition)
/goal 명령어는 세션의 중지 조건을 설정합니다. 에이전트가 중지를 시도할 때, 독립적인 심사 모델(judge model)이 대화를 평가하여 해당 조건이 실제로 충족되었는지 판단함으로써, 자율 작업 중 조기
전체 기능 제공 루프를 실행하려면 /compose-next 스킬을 사용하세요. 이 스킬은 grill → workspace → spec → implement → verify → review → finalize → finish에 이르는 단일의 독립적인 계약(contract)으로 구성되며, 기능 문서는 workspace 루트 아래 docs/compose/spec/<feature>.md에서 찾을 수 있습니다. plan 모드와 결합하지 마세요.
워크플로우 (Workflows)
워크플로우는 샌드박스 실행 환경(sandboxed runtime)에서 여러 에이전트를 오케스트레이션하는 결정론적 JavaScript 스크립트입니다. 에이전트 간의 대화와 달리, 워크플로우는 제한된 재시도(bounded retries)와 자동 병렬 처리(automatic parallelization)를 갖춘 고정된 단계 시퀀스를 인코딩합니다. 따라서 사용자 상호 작용 없이 실행되는 '발사하고 잊기(fire-and-forget)' 방식입니다.
MiMoCode는 세 가지 내장 워크플로우와 함께 제공됩니다:
| 워크플로우 | 단계 (Phases) | 설명 (Description) |
|---|
deep-research | Brief → Plan → Research → Reflect → Write → Review | 다중 출처 심층 연구 보고서 생성기. 독립적인 연구 각도를 계획하고, 인용된 발견 사항을 수집하기 위해 병렬 하위 에이전트를 실행하며, 격차(gaps)에 대해 성찰하고, 단일의 일관성 있는 Markdown 보고서를 작성한 다음, 인용문을 콜드 리뷰합니다. 수렴적(Convergent): 파일 체크포인트를 통해 재개 가능합니다. |
| ... | | |
사용자 정의 워크플로우 (Custom workflows): .mimocode/workflows/ 또는 .claude/workflows/에 .js 파일을 배치하여 자신만의 워크플로우를 정의하거나, 동일한 이름을 사용하여 내장 워크플로우를 재정의할 수 있습니다. | | |
내장 스킬 (Builtin Skills)
스킬은 에이전트에게 특정 작업을 처리하는 방법을 가르치는 재사용 가능한 명령어 세트입니다(예: PDF 생성, 학술 논문 작성, arXiv 검색). 새로운 작업을 위해 MiMoCode는 정확한 이름, 현지화된 별칭(localized alias), BM25 관련성 순으로 사용 가능한 스킬을 검색합니다. 신뢰도가 높은 일치 항목은 자동으로 로드되며, 불확실한 일치 항목은 에이전트가 평가할 수 있도록 순위가 매겨집니다. TUI에서는 /를 입력하여 자동 완성 목록을 탐색하거나 /<스킬 이름>으로 스킬을 직접 호출할 수 있습니다. 단일 메시지에서 두 개 이상의 스킬을 언급하면 자동으로 로드되어 다중 스킬 오케스트레이션 계획(multi-skill orchestration plan)이 주입됩니다.
MiMoCode는 다음 내장 스킬들을 묶어서 제공합니다:
| Skill | Description |
|---|
arxiv | arXiv 논문 검색, 읽기, 인용 및 분석 |
| ... | |
claude-code와 codex는 각각 claude 및 codex 실행 파일이 설치된 경우에만 노출됩니다. 다른 스킬은 여전히 설명서에 기술된 작업별 도구를 필요로 할 수 있습니다. | |
내장(builtin) 스킬 덮어쓰기: 프로젝트(.mimocode/skills/<name>/SKILL.md) 또는 개인(예: ~/.config/mimocode/skills/<name>/SKILL.md) MiMoCode 스킬 디렉터리에 동일한 name을 가진 스킬을 생성하십시오. 프로젝트의 개방 표준 .agents/skills/와 ~/.agents/skills/는 호환되는 검색 루트입니다. 스캔 순서상 나중에 발견된 사용자 스킬이 동일한 이름의 내장 스킬을 덮어씁니다.
<details>
<summary><strong >환경 변수를 통한 스킬 구성</strong ></summary>
| Variable | Effect |
|---|
MIMOCODE_DISABLE_BUILTIN_SKILLS=true | 모든 내장 스킬 비활성화 |
| ... | |
외부 스킬 루트 (기본 표면은 .mimocode + 개방 표준 .agents): | |
| Env | Default | Effect |
|---|
MIMOCODE_DISABLE_AGENTS_SKILLS=true | unset = on | ~/.agents/skills와 프로젝트의 .agents/skills 비활성화 |
| ... | | |
외부 스캔은 skills/ 아래의 점으로 구분된 경로 세그먼트와 일치하지 않습니다. | | |
MIMOCODE_DISABLE_BUILTIN_SKILLS와 MIMOCODE_DISABLE_OFFICIAL_SKILLS는 해당 스킬을 에이전트의 사용 가능한 스킬 목록에서 완전히 제거합니다. 이들은 컨텍스트에 나타나지 않으며 호출될 수 없습니다. MIMOCODE_DISABLE_SLASH_SKILLS는 TUI 자동 완성에만 영향을 미치며, 스킬은 에이전트에게 계속 사용할 수 있습니다.
</details>
음성 입력