PR

Xiaomi「MiMo Code」襲来!ローカルLLM対応のオープンソースAIコーディングエージェントをオールドエンジニアが斬る

ガジェット & ゲーム
ガジェット & ゲーム
この記事は約21分で読めます。
記事内に広告が含まれています。

昨今のAIコーディングツールの進化スピードには目を見張るものがある。Claude Codeが端末上で流れるように自律デバッグを行う姿を見て、我々世代のエンジニアはかつて1文字ずつC言語のコンパイルエラーをデバッグしていた頃からの劇的な隔世の感に包まれたものだ。そんななか、中国の総合テックメーカーXiaomi(シャオミ)のMiMoチームから、MITライセンスでオープンソース化された新たなTUI(ターミナルユーザーインターフェース)型コーディングエージェント「MiMo Code」が公開された。今回は、この新鋭ツールが我々のコード開発環境に何をもたらすのか、Claude CodeやGitHub Copilot (Codex) との違い、そして何よりも「ローカルLLMで動くのか」という現場目線のシビアな実用性について深く掘り下げていきたい。

MiMo Codeとは?スペックとClaude/Codexとの決定的な差異

Claude Codeの対抗馬がXiaomiからMITライセンスで出てくるとは!TUIの滑らかな動きが実にそそるね。

単なる補完ツールじゃなく、裏で自律的に夢(Dream)を見てメモリを最適化する設計は非常に面白い。

MiMo Codeは、XiaomiのAI研究開発チームがOpenCodeをベースに構築した、端末(ターミナル)動作型の自律コーディングエージェントだ。従来のGitHub Copilotのような「行やブロックの自動補完(Codex)」や、ChatGPTのような「一問一答型のチャット」とは根本的に異なる。自分でソースコードを読み、テストを実行し、エラーを検知したらログを元に自律的に修正プランを立てて実行する「エージェント型(Agent-based)」のシステムである。

特に、同カテゴリーの先駆者であるClaude Codeとの最大の違いは、数十から数百ターンにおよぶ「長時間の自律的タスク(Long-Horizon Tasks)」をいかに安定して遂行するかという状態継続(ステート管理)と自律進化の設計アプローチにある。スペックや機能上の主な差異を以下のテーブルにまとめた。

機能・スペック GitHub Copilot (Codex) Claude Code MiMo Code (本機)
実行形態 IDE内での行・ブロック補完 ターミナル動作型 (TUI) エージェント ターミナル動作型 (TUI) エージェント
並列サンプリング なし (単一補完の提示) なし (単一推論による実行) Max Mode (5並列生成+自動選定)
自己チェック機能 なし 対話による確認・アボート Goal (独立した完了検証機構)
セッション管理 なし 履歴圧縮 (コンテキスト要約) Checkpoint / Rebuild (多層物理ウィンドウ)
永続メモリ なし CLAUDE.md (プロジェクトメモ) 4層メモリ構造 (MEMORY.md/checkpoint)
自律進化 なし なし Dream / Distill (7日/30日ごとの自律最適化)
ローカルLLM接続 不可 不可 (Claude 3.7 Sonnet専用) 可能 (AI SDK / OpenAI互換API経由)

ここが面白い:技術的背景と自律制御の「3大設計」

我々組み込みエンジニアの目線から見て最も惹かれるのは、MiMo Codeが提示する「Computation(計算)」「Memory(メモリ)」「Evolution(進化)」という3つの時間軸に沿った設計アーキテクチャだ。AIエージェントの処理能力を上げるために、彼らは泥臭くも合理的なシステム設計を行っている。

1. Computation: 並列サンプリング「Max Mode」と「Goal」

エージェントが自律して動き出すと、1ステップのミスが後半に破滅的なバグを招く。これを防ぐために実装されたのが「Max Mode」だ。各ターンで5つの解決候補プランをバックグラウンドで並列に生成させ、そのコード修正案と推論プロセスを、別の低温度(ブレの少ない)モデルに「ジャッジ(審判)」させて最良のものを選択し、実際のシェル環境に流し込む。さらに、ユーザーが定義した終了条件(例:「すべての単体テストが通っていること」など)が本当に満たされたかを、実作業を行っていない独立した検証エージェント(Goal)が厳密に判定して停止基準をクリアする。このテストタイムでの二重・三重の計算資源の投入は、産業用のフォールトトレラント(耐障害)設計を彷彿とさせて実に好感が持てる。

2. Memory: 「lost in the middle」を回避する4層メモリと早期抽出

LLMの文脈ウィンドウがいくら広がったとしても、長時間の作業で履歴が膨大になると「lost in the middle(文脈の中央にある重要な情報を見失う)」現象が発生し、モデルの指示追従能力は低下する。MiMo Codeは、メインエージェントとは完全にスレッドもトークン予算も切り離された「Checkpoint-Writer(メモリ書き出しサブエージェント)」を裏で走らせている。

面白いのは、コンテキストが限界値に達する直前ではなく、20%、45%、70%といった非常に早い段階で incremental(増分)な状態抽出を checkpoint.md や MEMORY.md に書き出している点だ。これにより、脳が満杯になって思考能力が落ちる前にクリアな状態でメモを残し、限界値に達した瞬間にウィンドウを一度切り捨てて「再起動(Rebuild Injection)」して作業をクリアに引き継ぐ。まさに組み込み開発におけるマイコンのウォッチドッグタイマーと不揮発性メモリへの状態退避(セーブ)そのものだ。

3. Evolution: 定期的なクリーンアップ「Dream」と「Distill」

プロジェクトのメモリは放置するとゴミデータが溜まる。MiMo Codeは7日ごとに「Dream」と呼ばれる自律タスクを実行し、古い会話ログとメモリを照合して重複や無効なパス指定を自動でデデュプ(重複排除)し圧縮する。さらに30日ごとに「Distill」を実行して、過去のデバッグプロセスから頻出するワークフローを抽出し、再利用可能なカスタムスクリプト(Dynamic Workflow)やSOP(標準作業手順)ドキュメントとして自動でコード化する。使い込むほどに現場に適応していくこの「自己進化」の仕掛けは、ただの使い捨てツールとは一線を画している。

ハンズオン:Max Modeにおける並列プラン選択アルゴリズムを模したC言語コード

MiMo Codeが「Max Mode」で実行している、5つの並列生成プランから最適なプランを選択する「ジャッジ・評価選定アルゴリズム」の基本ロジックを模した組み込みC言語プログラムを以下に示す。ここでは各プランの検証スコア、トークン効率、およびシンタックス安全性を加味してベストな制御フローを決定する様子をシミュレートしている。


#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>

#define MAX_CANDIDATES 5
#define SCORE_THRESHOLD 80 // 採用最低基準スコア

typedef struct {
    uint8_t candidate_id;
    uint16_t score;           // 実行計画の論理的整合性スコア (0-100)
    uint16_t token_cost;      // 想定消費トークン量
    bool has_syntax_error;     // シンタックスチェックエラーフラグ
    bool executes_danger_cmd;  // 危険なコマンド (rm -rf等) の有無
} CodingPlan;

// 最適なコーディングプランを選択する判定関数
int8_t select_best_plan(const CodingPlan *plans, uint8_t count) {
    int8_t best_id = -1;
    uint16_t highest_score = 0;
    uint16_t lowest_cost = 0xFFFF;

    printf("
--- Max Mode: プラン評価開始 ---
");

    for (uint8_t i = 0; i < count; i++) {
        const CodingPlan *p = &plans[i];
        printf("プラン #%d -> スコア: %d, トークンコスト: %d, 構文エラー: %s, 危険コマンド: %s\n",
               p->candidate_id, p->score, p->token_cost,
               p->has_syntax_error ? "あり" : "なし",
               p->executes_danger_cmd ? "検知" : "なし");

        // 構文エラーがある、または危険なコマンドを含むプランは無条件で排除
        if (p->has_syntax_error || p->executes_danger_cmd) {
            printf("[除外] プラン #%d は安全性または構文に問題があるため棄却します。\n", p->candidate_id);
            continue;
        }

        // スコアが閾値未満のプランも除外
        if (p->score < SCORE_THRESHOLD) {
            printf("[除外] プラン #%d は論理スコアが不十分です (%d < %d)。\n", p->candidate_id, p->score, SCORE_THRESHOLD);
            continue;
        }

        // スコアが最も高いプランを優先。スコアが同等ならトークンコストが低い方を採用
        if (p->score > highest_score) {
            highest_score = p->score;
            lowest_cost = p->token_cost;
            best_id = p->candidate_id;
        } else if (p->score == highest_score) {
            if (p->token_cost < lowest_cost) {
                lowest_cost = p->token_cost;
                best_id = p->candidate_id;
            }
        }
    }

    return best_id;
}

int main(void) {
    // 5つの並列サンプリングプランのシミュレーションデータ
    CodingPlan samples[MAX_CANDIDATES] = {
        {1, 75, 450, false, false}, // スコア不足
        {2, 90, 800, false, false}, // 高スコアだがコスト高
        {3, 90, 600, false, false}, // 高スコアでコストが低い(本命)
        {4, 95, 950, false, true},  // 超高スコアだが危険コマンド(rm等)が含まれ除外
        {5, 85, 350, true,  false}  // 構文エラーありで除外
    };

    int8_t selected = select_best_plan(samples, MAX_CANDIDATES);

    if (selected != -1) {
        printf("\n[採用判定] プラン #%d を実環境に展開し、実行します。\n", selected);
    } else {
        printf("\n[アボート判定] 採用可能なプランが存在しません。人手による介入が必要です。\n");
    }

    return 0;
}

日本の読者からどう見るか?:日本での導入可否と現実的な利用価値

さて、この「MiMo Code」だが、我々日本のユーザーでも問題なく導入できるのだろうか。結論から言えば、何ら制限なく日本からの導入と使用が可能である。導入は非常に簡単で、ターミナルから以下のコマンドを一発叩くだけでよい。

# cURL を使用した一発インストール
curl -fsSL https://mimo.xiaomi.com/install | bash

# あるいは npm を経由したグローバルインストール
npm install -g @mimo-ai/cli

現在、ドキュメントやUIは英語と中国語のみで日本語UIは提供されていないが、ターミナルベースで動作する開発用ツールであるため、コマンドやプロンプトはすべて英語(または直接日本語で指示を入力すること)で動作する。普段から英語のCLIツールに親しんでいる日本の開発者であれば、何ら不自由なく本機の全機能を引き出すことができるはずだ。

【超重要】モデルの自由度と「ローカルLLM」の接続方法

さらに、本機において最も強調すべき、そして日本の開発者(特に会社の機密ソースコードを扱う開発現場)にとって最大の武器となるのが、「AIモデルの選択肢の自由度」および「ローカルLLMへの接続可能性」である。

MiMo Codeは、Vercelの提供する AI SDK および Models.dev をエンジン内部に完全に内包している。そのため、標準のXiaomi MiMoプラットフォームだけでなく、AnthropicやOpenAIなどの主要APIキーを差し込んで自由に使えるのはもちろんのこと、ローカル環境で立ち上げた完全にプライベートなLLMへの接続に対応しているのだ。

これにより、外部のクラウドAPIに自社のソースコードや機密データを1バイトも送信することなく、自分の開発用マシン(または社内LANのGPUサーバー)に構築した「Ollama」や「llama.cpp」などのローカルLLMを使用して、TUIエージェントにコードのバグ修正やテスト生成を自律実行させることができる。

ローカル環境のOllamaに接続して動かす場合の設定は極めてシンプルだ。プロジェクトのルート、またはグローバル設定にある mimocode.jsonc に以下の設定を記述するだけで、MiMo Codeの脳をローカルLLMに差し替えることができる。


{
  // プロバイダーとして OpenAI互換API(AI SDK互換)を指定
  "provider": {
    "local-ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama Local",
      "options": {
        // ローカルで立ち上がっている Ollama のエンドポイントを指定
        "baseURL": "http://localhost:11434/v1",
        // APIキーは不要だがダミー値を入れておく
        "headers": { "Authorization": "Bearer ollama" }
      },
      "models": {
        // 使用したいローカルモデルを指定 (例: codegemma や deepseek-coder)
        "codegemma": { "name": "CodeGemma Local" }
      }
    }
  },
  // 使用するデフォルトのモデルを指定
  "model": "local-ollama/codegemma"
}

この記述だけで、ローカルの `codegemma` や `deepseek-coder` などの軽量・高性能なコード生成用ローカルLLMを動かし、一切のインターネット通信を行わずに自律型デバッグエージェントをローカルで完結させられるのだ。この圧倒的な「ローカル接続の自由度」こそ、Claude Code(Sonnet専用)に対する、MiMo Codeの最大の技術的アドバンテージと言えるだろう。

導入・試す前の実用メモ

  • 確認点:ローカルLLMの推論能力と処理速度
    ローカルLLMでエージェントを動かす場合、モデルのパラメータ数(8Bや14Bなど)とGPUのVRAM容量がパフォーマンスを大きく左右する。エージェントは自律的に何度も推論をループさせるため、推論速度(Tokens Per Second)が遅いと、1つのバグ修正に何十分も待たされることになる。また、推論能力が低いモデルを使用すると、「Max Mode」でのジャッジの精度や「Goal」の自己検証がガタガタになり、無限ループに陥りやすくなる。最低でもCodeLlamaやCodeGemma、Qwen2.5-Coderなどの「コード特化型かつある程度軽量なローカルモデル」を、快適な速度が出せるGPU環境で動かすのが実用の前提条件だ。
  • 落とし穴:サンドボックス実行時のファイルアクセス権限
    MiMo Codeは、安全のために修正プログラムやシェルコマンドを直接ローカルのOS環境ではなく、制限されたサンドボックス内で実行させることができる。しかし、ローカルLLMから実行コマンドを発行させた際、シンタックスエラーやアクセス権限の不整合によって、エージェントが「ファイルを編集したつもりなのに書き込めていない」状態になり、同じエラーを何度も繰り返すことがある。エラーログを注意深く読み、パーミッションやサンドボックス設定を正しく構成する必要がある。
  • 選択のヒント:機密コードとオープンソース精神の住み分け
    「最新のクラウドモデルほどの超高性能は不要だが、コードの機密性を100%ローカルに閉じ込めたい」というシステム開発会社や組み込みハードベンダーであれば、MiMo Code + ローカルLLMの構成は唯一無二の最適解となる。一方で、「インターネット上のあらゆる公開ドキュメントや最新のライブラリAPIの仕様を学習済みの最強モデルで、とにかく手っ取り早くアプリを作りたい」という場合は、Claude 3.7 Sonnet等のクラウドAPIを素直に使う方が開発効率は圧倒的に高い。用途に応じてシステムを選別すべきだ。

まとめ:運営者としての現場判断

組み込みソフトウェアのデバッグとリリースを30年以上経験してきたロートルエンジニアの冷徹な判断を述べる。この「MiMo Code」の登場を受けて、我々は今すぐメインの開発環境を移行すべきか。

私の意思決定は、**「外部APIにコードを出せない社内開発プロジェクトや機密性の高いインフラ案件において、ローカルGPUサーバーで稼働させる自律型デバッグツールとしての価値は極めて高く、今すぐ検証用サブ環境として導入・テスト運用を開始すべきである」**だ。

確かに、クラウド上の巨大モデル(Claude Sonnetなど)と比べれば、ローカルLLMのコード出力精度にはまだ差がある。しかし、Max Modeのような並列サンプリング選定機能や、早い段階でのチェックポイント状態管理、そして7日/30日ごとのメモリの自律クリーンアップ・プロセスコード化といった「実行フレームワーク自体のアーキテクチャの秀逸さ」によって、モデル自体のIQの差をシステムの側で巧みにカバーしている点が非常に素晴らしい。これはかつて、非力な8ビットマイコンの性能をソフトウェアのアルゴリズムやメモリ管理の職人芸で補っていた、古き良き組み込み開発の精神と通じるものがある。

手元のターミナルで、ローカルLLMに接続されたMiMo Codeが音もなく(しかし確実に)ローカルのソースコードを読み解き、テストを通してバグを一つずつ潰していくログを眺めるのは、まるで気の利く新人の優秀なアシスタントを育てているような密かな楽しみがある。我々エンジニアは、こうしたオープンなエージェント技術をいち早く使い倒し、自分たち専用のローカル開発ワークフローへと「Distill(蒸留)」していくべきだ。

今後、さらに本機の動作チューニングやカスタムエージェントの挙動、あるいは大規模なプロジェクトでの実用性についての詳細が分かり次第、続報をお届けする。今夜は、ローカルで黙々とデバッグを回すMiMo Codeのログ画面の端で、ライカレンズを搭載した最新のXiaomi製スマートフォンをいじりつつ、手に入れた冷えたビールを喉に流し込んで、新たなAIエージェント時代の到来を静かに楽しもうと考えている。

タイトルとURLをコピーしました