tontinton/maki
An efficient AI coding agent extendable by neovim-like Lua plugins
Maki란?
Maki는 터미널 기반 AI 코딩 어시스턴트로, 대규모 언어 모델 제공자(Claude, OpenAI, Gemini, Ollama 등)와 통신하여 코드 작성, 읽기, 리팩토링을 돕습니다. 주요 장점은 컨텍스트 토큰 효율성입니다 – 원활하고 기능이 풍부한 사용자 경험을 제공하면서 모델에 전송되는 텍스트 양을 가능한 한 낮게 유지합니다.
프로젝트의 핵심 아이디어
| 아이디어 | Maki 구현 방식 |
|---|---|
| 토큰 절약 | • index는 tree-sitter로 파일을 파싱하고 전체 파일 대신 높은 수준의 스켈레톤(함수 위치)만 전송합니다. • code_execution은 샌드박스 처리된 인터프리터(monty)를 실행하여 중간 결과를 LLM 컨텍스트에 넣지 않고 데이터를 변환할 수 있습니다. • task는 에이전트가 하위 작업에 약하거나 강한 모델을 선택할 수 있게 하여, 정말 필요할 때만 무거운 작업에 비용을 지불하게 합니다. |
| 빠르고 가벼운 UI | ratatui(Rust TUI 라이브러리)로 구축. JavaScript 없음, 60 FPS 렌더링, SIMD 기반 스플래시 화면. |
| 확장 가능 | 플러그인은 Lua로 작성됩니다(Neovim과 유사). 저장소에는 내장 플러그인이 포함되어 있으며 사용자 정의 플러그인용 공개 API를 제공합니다. |
| 투명성 및 안전 | 모델이 읽는 내용을 정확히 표시하고, tree-sitter로 bash 명령을 파싱하여 권한을 제한하고, 웹 가져오기 시 SSRF를 보호하며, 되돌릴 수 있는 채팅 기록을 제공합니다. |
| 크로스 프로바이더 | 상업용 및 자체 호스팅 LLM 백엔드(Anthropic, OpenAI, Gemini, Ollama, llama.cpp, Mistral 등)의 긴 목록과 추가 제공자용 플러그인 시스템을 지원합니다. |
실제로 사용할 주요 기능
| 기능 | 효과 |
|---|---|
컨텍스트 효율적인 index 도구 |
파일의 개요를 빠르게 얻고(예: 함수 X는 150-165행), Maki가 필요한 부분만 읽게 합니다. |
샌드박스 처리된 code_execution 도구 |
어시스턴트 내에서 작은 코드 조각을 실행합니다. 결과는 LLM 프롬프트에 포함되지 않아 토큰 수를 낮게 유지합니다. |
하위 에이전트 task 도구 |
작업을 "약한", "중간", "강한" 모델에 자동으로 위임하여 저렴한 작업에 비용을 절약합니다. |
| 풍부한 TUI | 60 FPS, 퍼지 검색(Ctrl-F), 현재 채팅을 중단하지 않고 명령을 실행하는 /btw, 디렉토리를 변경하는 /cd, 이미지 첨부, 26테마, 세션 재개, "되감기" 단축키(Esc-Esc). |
| 권한 인식 명령 처리 | Maki는 git diff && rm -rf /와 같은 명령을 파싱하고 이해할 수 있는 권한(예: git *)만 부여합니다. 우회하려면 --yolo를 사용하세요. |
| 장기 메모리 도구 | /memory로 사실을 저장하여 어시스턴트가 파일을 다시 읽지 않고도 나중에 기억할 수 있습니다. |
| OpenTelemetry 내보내기 | Claude Code와 동일한 형식을 따르는 선택적 텔레메트리로, 관찰 가능성에 유용합니다. |
| CLI 전용 모드 | --print --output-format stream-json으로 UI 없이 Maki를 실행하고 JSON 출력을 다른 도구에 파이프할 수 있습니다. |
누가 혜택을 받을까요?
| 사용자 유형 | Maki가 도움이 되는 이유 |
|---|---|
| 저사양 머신의 개발자 | TUI는 가볍고 즉시 시작되며 무거운 JavaScript 런타임을 피합니다. |
| 토큰 비용을 주시하는 팀 | 파일 인덱싱과 task 도구를 사용하면 모델에 전송되는 토큰 수를 크게 줄일 수 있습니다(README는 저자의 워크플로우에서 턴당 165토큰 절약을 인용). |
| Neovim/Lua 애호가 | 플러그인은 Lua 기반이며, 프로젝트에는 내장 플러그인과 커뮤니티 쇼케이스가 포함되어 있습니다. |
| 보안에 민감한 사용자 | 명시적 권한 파싱, SSRF 보호, "모델이 보는 것"에 대한 명확한 철학. |
| 많은 LLM 제공자가 필요한 사람 | 하나의 바이너리로 수십 개의 상업용 및 자체 호스팅 백엔드와 사용자 정의 제공자 플러그인에 통신할 수 있습니다. |
시작 방법(빠른 시작)
- 설치 – 가장 쉬운 방법은 Homebrew 포뮬러(
brew install maki) 또는 원라이너curl … | sh입니다. 바이너리는 Nix 또는cargo install로도 사용할 수 있습니다. 바이너리는~/.local/bin(Windows에서는%LOCALAPPDATA%\maki)에 배치됩니다. - API 키 구성 – 사용하려는 제공자의 환경 변수를 설정합니다(예:
export OPENAI_API_KEY=…). - 실행 –
maki로 TUI가 시작됩니다. 하위 에이전트를 보려면/tasks, 저장된 사실을 관리하려면/memory, bash 명령을 실행하려면!을 사용하세요. - 확장 – Lua 플러그인을
~/.config/maki/plugins에 넣거나 문서화된 Lua API를 사용하여 직접 작성하세요.
제한 사항 / 미해결 질문
- README는 "향후 릴리스"에서 bash 출력 필터링을 언급하므로 현재 버전은 일부 bash 출력을 프롬프트에 보낼 수 있습니다.
- UI는 빠르지만 여전히 터미널 전용입니다. 그래픽 IDE가 필요한 사용자는 편집기와 함께 Maki를 실행해야 합니다.
- 토큰 절약 주장은 저자의 개인 워크플로우에 기반합니다. 실제 절약은 프로젝트 크기와 언어 지원에 따라 다릅니다.
결론
Maki는 터미널용 토큰 효율적이고 확장 가능한 AI 코딩 어시스턴트를 제공하는 실제이며 적극적으로 유지 관리되는 Rust + Lua 프로젝트입니다. LLM 컨텍스트를 작게 유지하고, 개발자에게 모델이 보는 것을 세밀하게 제어할 수 있게 하며, 다양한 모델 제공자를 지원하는 데 중점을 둡니다. LLM 기반 코드 지원에 많은 비용을 지출하거나 저사양 하드웨어에서 작업한다면 Maki를 살펴볼 가치가 있습니다.
링크
- 공식 문서 – https://maki.sh/docs
- Discord 커뮤니티 – https://discord.gg/8VKuA4naC3
- 구성 예제 저장소 – https://github.com/tontinton/makiconf
- 릴리스 페이지 – https://github.com/tontinton/maki/releases/latest
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트