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コマンドを解析して権限を制限し、Webフェッチ時の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プロバイダーが必要な人 | 1つのバイナリで多数の商用およびセルフホストバックエンドに加え、カスタムプロバイダープラグインと通信できます。 |
開始方法(クイックスタート)
- インストール – 最も簡単な方法は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
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト