ローカルLLMでコード補完を実用にする鍵は、役割ごとに別のモデルを割り当てることです。Tab補完には軽量・高速なモデル(Qwen2.5-Coder 7B、StarCoder2)、チャットには大きめのモデル(DeepSeek Coder V2など)。1つのモデルで両方をまかなおうとすると、補完が遅すぎるか、チャットが賢くないかのどちらかになります。
「ローカルLLMのコード補完は遅くて使えない」という感想の多くは、チャット用の大きいモデルをそのまま補完に使っているのが原因です。補完に求められるのは賢さより速さ。この記事では構成の作り方と、モデルの割り当て方を整理します。
構成の全体像
| 層 | 選択肢 |
|---|---|
| エディタ | VS Code |
| 推論エンジン | Ollama/LM Studio/vLLM |
| 拡張機能 | Continue.dev/Cline/Aider |
| モデル | DeepSeek Coder/Qwen Coder/StarCoder2 |
最も一般的な構成はVS Code + Ollama + Continue.devです。Continue.dev は Ollama・LM Studio・vLLM のいずれにも接続でき、ローカルLLMを主軸にするなら扱いやすい選択になります。
Continue.devとClineはどう違う?
| Continue.dev | Cline | |
|---|---|---|
| 得意 | Tab補完+チャット | 複数ファイル横断の編集 |
| 使い方 | 書きながら補完を受ける | タスクを投げて任せる |
| ローカル接続 | Ollama/LM Studio/vLLM | ローカル可 |
「GitHub Copilotの代替が欲しい」ならContinue.dev、「エージェント的に複数ファイルを直してほしい」ならCline。用途が違うので、両方入れて使い分けても構いません。
モデルの割り当てが最重要
Continue.dev は config.json で役割ごとに異なるモデルを指定できます。ここを設定するかどうかで体感がまったく変わります。
| 役割 | 求められるもの | モデルの例 |
|---|---|---|
| Tab Autocomplete | 速さ(体感の待ち時間) | Qwen2.5-Coder 7B、StarCoder2 |
| Chat | 賢さ(設計や説明) | DeepSeek Coder V2 など大型 |
補完に大型モデルを使わない
Tab補完はタイピングに追従してこそ意味があります。1秒待たされる補完は、無いほうがマシです。補完に賢さは要らないので、7Bクラスの軽量モデルで速度を優先してください。ここを大型モデルにすると「ローカルは使えない」という結論になります。
モデルはどれを選ぶ?
- DeepSeek Coder——コード生成能力が高く、チャット役に向きます。
- Qwen Coder——性能と軽さのバランスが良く、ローカル環境で扱いやすい。補完役の第一候補です。
- StarCoder2——補完特化。速度重視の構成で選択肢になります。
VRAMに収まるかはサイズで決まります。7Bクラスなら4bit量子化で約5GB、大型モデルを併用するなら16GB以上が現実的です。詳しくはローカルLLMのモデル選びにまとめました。
2つ同時に載せる必要はない
補完用とチャット用を常時両方ロードするとVRAMを食います。Ollamaは呼ばれたモデルを都度ロードするため、切り替えの一瞬だけ待てば実用になります。VRAMが厳しいなら、この挙動を前提に組んでください。
クラウドと併用するのが現実的
正直に言えば、設計判断や横断的なリファクタリングでは、ローカルで動く規模のモデルはクラウドの主要モデルに届きません。無理に全部をローカルに寄せるより、割り切ったほうが快適です。
- ローカル——Tab補完、定型的なコード生成、機密性の高いコード
- クラウド——設計相談、複数ファイルの横断調査、レビュー
クラウド側のエージェント機能(SubagentsやSkills)の使い分けはClaude CodeのSkillsとSubagentsにまとめています。用途を分けたうえでローカルを併用すると、APIコストは目に見えて下がります。
ローカルを主軸にするならVRAMが効いてきます。補完とチャットを両立させたいなら16GB以上を確保しておくと快適です。
まとめ
ローカルLLMのコード補完は、役割ごとにモデルを分けるだけで実用度が変わります。補完は7Bクラスで速度優先、チャットは大型で賢さ優先。
そして全部をローカルで完結させようとしないこと。定型作業はローカル、設計判断はクラウド——この線引きができていれば、コストと快適さの両方を取れます。

コメント