「コードを手伝ってくれるAIは便利だけど、ネットにつながっていないと使えない」——出先やオフライン環境だと、それが地味に困ります。そこで今回は、ネット接続ゼロで動く“オフラインのコーディング相棒”を作ってみました😊 しかも一から新しいアプリを作るのではなく、以前作ったローカルAIエージェントへの「機能追加」として仕立てます。
・コード特化のローカルLLM(Qwen2.5-Coder)をエージェントに積む方法
・GUIで使うモデルを切り替える仕組み(汎用 ⇔ コード特化)
・CLIから呼ぶ薄い入口(将来VS Codeからも叩ける設計)
・クラウドAIとの違い、そして「14Bは12GBのGPUには重く、7Bが最適」という実測のつまずき
・Mac / Windows 同じコードで動いた話
土台:p935 ローカルAIエージェント(Ministral 3・完全ローカル・道具=ファイル/コマンド/検索)。今回はここに“コード脳”と“入口”を足します。実装はMac、動作確認はMacとWindows(RTX3060)の両方で行いました。
作るもの:ネットなしで動く“コード相棒”
ゴールはシンプルです。ローカルのLLMに、コードの生成・修正・説明をやってもらう。全部手元のパソコンの中で完結するので、ネットは不要・無料・コードが外に出ないのが持ち味です。下が完成形。エージェントの画面で「2つのリストを結合して重複を除く関数を書いて」と頼むと、そのままコードが返ってきます。

なぜ“エージェントに足す”のか
ローカルLLMのネタは毎回ゼロから作ってもいいのですが、それだと似た仕組みを何度も作り直すことになります。p935で作ったエージェントは、すでに「ファイルを読む・書く」「コマンドを実行する」「記憶する」といった“道具”を持っています。コード相棒に必要な部品は、実はほとんどそこに揃っているんですよね😳
そこで今回は独立アプリを作らず、そのエージェントに「コード脳(モデル)」と「使い方(モード・入口)」を追加する方針にしました。エージェントが“集大成”として育っていくイメージです。足したのは主に次の3つです。
- コード特化モデルを積めるようにした(Qwen2.5-Coder)
- GUIで使うモデルを切り替えられるようにした(汎用のMinistral 3 ⇔ コード特化)
- CLIの入口を用意した(コマンドから・将来はエディタから呼べる)
コード特化モデルを積む+GUIでモデル切替
ふだん使いのエージェントは、汎用モデルMinistral 3(文章も画像もいける)で動いています。でもコードとなると、コード特化で訓練されたモデルのほうが得意です。今回はQwen2.5-Coderを追加しました。
ポイントは、用途に応じてGUIから切り替えられるようにしたこと。画面上部に「モデル」のプルダウンを付け、汎用(Ministral 3)とコード特化(Qwen2.5-Coder)をワンタッチで行き来できます。

14B級のモデルは1つで8〜9GBあり、2つ同時にメモリへ載せるのは厳しいです。そこで切り替えるときは「先に今のモデルを解放してから、次を読み込む」方式にしました。これで手元のマシンでも破綻せずに行き来できます。
コーディングモードで使う
「コーディングモード」をONにすると、エージェントの振る舞いがコード寄りになります。まずコードを提示し、説明は簡潔に。既存ファイルを直すときはread_file で中身を見てから write_file で書き出す——といった“相棒らしい”動きです。
面白いのが、同じ依頼を汎用モデルとコード特化モデルで比べられること。下は同じ「重複を除く関数」を、汎用のMinistral 3に頼んだ結果です。

list(set(a + b))と解説・注意点まで。コード特化モデルはlist(set(a) | set(b))で、どちらも正解。簡単な課題では差は出にくい今回のような小さな課題では、汎用でもコード特化でもどちらも正しく答えられました。差が出てくるのは、もっと難しい・長いコードのときです。
CLIからも呼ぶ(将来VS Codeからも)
GUIだけでなく、コマンド(CLI)からも呼べる入口を用意しました。ターミナルでこんな風に使えます。
# ファイルを渡して「型ヒントを付けて」と頼む python cli.py code "この関数に型ヒントを付けて" --file util.py # 標準入力からでもOK(長い依頼を渡しやすい) echo "二分探索をPythonで" | python cli.py code --stdin
この入口は「答え(コード)だけを標準出力に出す」ように作ってあります。進捗ログはすべて別の出口(標準エラー)へ。だから出力をそのまま受け取って貼り付け・自動処理ができます。これはつまり——将来、VS Codeのタスクや拡張から python cli.py code --file (開いているファイル) と呼べば、そのまま使えるということ。今回はVS Code拡張までは作りませんが、“後からつなげられる”薄い入口にしておきました✍️

クラウドAIとの違い
正直なところ、難しい設計や長い実装は、クラウドの強いAI(Claudeなど)のほうが上です。そこは割り切ります。ローカルの相棒が輝くのは、次のような場面です。
| 観点 | ローカル相棒(今回) | クラウドAI |
|---|---|---|
| ネット | 不要(オフライン) | 必要 |
| 料金 | 無料(電気代のみ) | 従量課金が多い |
| プライバシー | コードが外に出ない | 送信が必要 |
| 賢さ(難問) | そこそこ | 強い |
| 速さ | GPU次第(後述) | 安定して速い |
「関数にテストや型ヒントを付ける」「短い関数を書く」「エラーの意味を聞く」——こういう日常の細かい相談は、オフラインの相棒で十分こなせます。機密コードを外に出さずに済むのも大きな安心感です。
つまずき:14Bは12GB GPUに重い→7Bが最適
ここが今回いちばんの学びです😳 最初、コード特化モデルにQwen2.5-Coder の14B(約9GB)を選びました。Mac(メモリ共有型)では問題なく動いたのですが、Windows(RTX3060/VRAM 12GB)で動かすと極端に遅いのです。原因を追うと——
CPUで動いていたわけではありません(GPUには載っていた)。問題は12GBのVRAMに14Bモデルがギリギリで、デスクトップやブラウザとGPUメモリを取り合うと溢れること。溢れると一部が遅いシステムメモリに退避し、生成が1.4トークン/秒まで落ちました(体感で数分待ち)。
そこで7B(約4.5GB)に切り替えたところ、同じRTX3060で22トークン/秒=約15倍速く、読み込みも3秒。VRAMに余裕で収まり、溢れが起きません。しかも今回の課題では7Bでも14Bと同じ正解でした。
| モデル | サイズ | 読込 | 生成速度 |
|---|---|---|---|
| Qwen2.5-Coder 14B | 約9GB | 26〜45秒 | 1.4 tok/s(溢れ時) |
| Qwen2.5-Coder 7B | 約4.5GB | 3.3秒 | 22 tok/s |
結論:NVIDIAの8〜12GBクラスのGPUなら、コード特化は7Bが“ちょうどいい”。14Bは賢さの上限は高いものの、VRAMに余裕がないと実用速度が出ません。今回のエージェントは7B・14Bの両方をGUIから選べるようにして、既定は軽い7Bにしました。下は3モデルが選べる状態(汎用+コード特化7B/14B)です。

Mac/Windows 両方で動いた
このエージェントはMac と Windows で同じコードで動かしています。今回追加した機能(モデル切替・コード特化モデル・CLI)も、Windowsへコピーしただけ・コードの書き換えゼロで動きました。前章のWindowsでの速度計測やCLIの画面が、その証拠です。
ひとつだけWindows特有の勘どころがあります。llama.cpp(LLMを動かす土台)はGPUを使う版(CUDA対応ビルド)を入れておくこと。これが揃っていれば、「Macで作って、Windowsでも同じように使える」オフライン相棒になります👍
再現に必要なもの
- 土台:p935 のローカルAIエージェント(Python / llama-cpp-python / PySide6)。Mac・Windows共通
- 汎用モデル:Ministral 3 14B(文章・画像・道具)。コード特化モデル:Qwen2.5-Coder(7B推奨/14Bも可)。GGUF形式をローカルに配置
- モデル切替:GUIのプルダウンで選択。切替時は“今のモデルを解放→次を読み込む”(メモリ節約)
- コーディングモード:コード寄りの振る舞い+既存のファイル/コマンド道具でファイルを直せる
- CLI入口:
python cli.py code "..." --file ...。答えだけを標準出力に出す=将来VS Codeなどから呼べる - GPU:WindowsはCUDA対応のllama.cpp。VRAM 8〜12GBなら7Bが最適(14Bは溢れて激遅になりやすい)
まとめ
ネット接続なしで動くオフラインのコーディング相棒を、ローカルAIエージェントへの機能追加として作れました。ポイントを整理します。
- 独立アプリを作らず既存エージェントに“コード脳”と“入口”を追加(ファイル/コマンドの道具は流用)
- GUIでモデル切替(汎用 ⇔ コード特化)。メモリ節約のため1つずつ読み込む切替式
- CLIは答えだけを標準出力に=将来VS Codeなどから呼べる薄い入口
- クラウドAIより難問は弱いが、オフライン・無料・コードが外に出ないのが強み
- 実測の学び:12GB GPUでは14Bは溢れて激遅。7Bが最適(約22 tok/s)。両方をGUIで選べるように
- Mac / Windows 同じコードで動く(Windowsはllama.cppのCUDA版が必要)
「AIのコード支援はクラウドがないと…」と思っていたなら、手元のGPUで動く相棒は一度試す価値があります。7Bクラスなら想像よりずっとサクサク動いて、しかもコードは1行も外に出ません。オフラインでも、隣に相談相手がいる感覚になります😊
それでは、今回はここまで。最後までありがとうございました😊