😀

Local LLM で Coding Agent をつかってみる

に公開

概要

タイトルの通り。

そもそも、https://github.com/magnitudedev/magnitude というのを見ており、「そういえば、そもそも Claude Code で Local LLM ってどうなんじゃ?」と思ってやってみた記録です。

環境

  • Macbook Pro M4 32GB
  • claude code, codex
  • ollama, LiteLLM
  • Magnitude

結論

まぁ、良いPCがないと厳しい ≒ 全然処理が終わらない(リクエストタイムアウトする)

  1. claude code のデフォルトの context と tool 定義で 30000 tokenぐらいが使われるため、そのあたりを処理できる必要がある。

    • 今のところ Gemma 4 31b, qwen30b とかで 9分 かかって回答帰ってくる感じ
    • 逆に言えば、小さいモデルを使えばいける。それでいいのかの問題。
  2. Magnitude (gemma4 26b-A4B)は早いわけじゃないが、上記よりもマシ。ぜんぜん、動きはする

    • Goal 的なものがないから自律的に動くことがない。「次は〇〇をやります」といって自律的にタスクを完了することができそうもない。これをwatchするとかが必要そう。

Ollama Litellm 対応

https://ollama.com/

から download する。

ちなみにインストールした時点で、claude code との連携ができるっちゃできる。direnv や mise などで .env を環境変数に読み込ませること前提。(このenv はこの後も修正します)

.env
# 既存の設定
ANTHROPIC_BASE_URL="http://127.0.0.1:11434"
ANTHROPIC_API_KEY="ollama-local"
ANTHROPIC_MODEL="gemma4:26b"
CLAUDE_CODE_MAX_OUTPUT_TOKENS="4096"

ただ、このまま claude code で利用しようとすると以下のエラーで死ぬ可能性が高い。

会話ぐらいだったらいいが、codeを解析しようとしたりタスクを色々依頼すると大体発生する。

⏺ Ran 2 stop hooks
  ⎿  Stop hook error: Hook evaluator API error: API Error: Claude's response exceeded the 4096 output token maximum. To configure this behavior, set the CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable.

codex でも対応できるように litellm を入れる

uv venv
source .venv/bin/activate
uv pip install "fastapi==0.112.2"
uv pip install 'litellm[proxy]'
uv run litellm --config config.yaml --port 4000

litellm が routing する先を指定するための config を作成する。

とりあえず、先ほど ollama で入れていたものを利用する前提。

config.yaml
model_list:
  - model_name: "*"
    litellm_params:
      model: ollama_chat/gemma4:31b # fallback
      api_base: http://localhost:11434

とりあえず、これで動かしたが、まぁむりで(そら、1層増えているので)モデルとして qwen 4b をいれてなんとか動くが全然回答品質が良くなく、また thinking 周りもエラーになる。

そういう意味で config.yaml には以下のように設定を追加する

config.yaml
model_list:
  - model_name: "*"
    litellm_params:
      model: ollama_chat/gemma4:31b # fallback
      api_base: http://localhost:11434
      additional_drop_params: ["thinking", "reasoning_effort"]
      timeout: 1800 # めっちゃ時間かかるから

magnitude 使ってみる

https://github.com/magnitudedev/magnitude

npm install -g @magnitudedev/cli
magnitude

でいける。

モデルを最初にインストールするが、自分のPCのスペックを見て決めてくれるらしい。上記で入れてたモデルはダメっぽい(31bとか)。

ただ、gemma 4 26b が選べている。

わかっていることとして

  1. skill などはちゃんと認識できていそう(動かせるかは別)
  2. magnitude が llama.cpp を推論ベースにしているため(直接繋いでいるイメージ)なので、上記構成よりも動かせる(26b のモデルも A4B なので動かせるのかも)

触っている限り簡単なアプリケーションの構築をしていくことはできている。例えばhtml修正とか、txt修正、昔の claude の artifact が出たレベルぐらいのものは作成してくれる。

ただ、前述した通り自律的に動くことがないため agentic にしていくとした場合、仕組みがガッツリ必要。

そのため、サブエージェントとして動かせるか、token の削減が期待できるかを今後検証していく。今のままだと、検証にtokenがかさむ未来しか見えないが。。。

まとめ

MacBookPro M4 では Local LLM (gemma4 26b A4B)を使って coding agent は動かせる。

単純作業だけっぽい。

ちゃんとやるなら、ollama や litellm などを通さず直に使う方が良さそう(coding agent の自作)

Discussion