本文へスキップ
hdknr blog
戻る

Claude Code の生成コードをローカル LLM でレビューする 3 つの構成パターン

Claude Code の生成コードをローカル LLM でレビューする 3 つの構成パターン

Claude Code は強力なコード生成能力を持ちますが、生成されたコードを別の視点でレビューしたい場面があります。クラウド API にコードを送りたくない場合や、コスト削減のためにローカル LLM を活用したい場合です。

この記事では、Ollama + Qwen3(ローカル LLM)と OpenHands(オープンソースのコーディングエージェント)を組み合わせて、Claude Code の生成コードを自動レビューする 3 つの構成パターンを紹介します。

前提となる構成

以下のツールがインストール済みであることを前提とします。

ツール役割インストール
Claude Codeコード生成(エージェント)npm install -g @anthropic-ai/claude-code
Ollamaローカル LLM 実行(ランタイム)ollama.com
Qwen3レビュー用 AI モデル(LLM)ollama pull qwen3:14b
OpenHandsレビュー実行(エージェント)※パターン 2・3pip install openhands-ai

構成図で示すと、Claude Code(クラウド)が書いたコードを、ローカル環境でレビューする構造です。

Claude Code(Anthropic API)
  ↓  コードを生成・編集
ローカルリポジトリ(あなたの PC)
  ↓  レビュー依頼
OpenHands / Git フック

Ollama(ローカルランタイム)

Qwen3(ローカル LLM)→ レビュー結果を出力

パターン 1:Git フック + Ollama 直接呼び出し(最もシンプル)

OpenHands は不要です。Claude Code がコミットするタイミングで、Git の pre-commit フックが Ollama に差分を送り、Qwen3 にレビューさせます。

仕組み

Claude Code → git commit → pre-commit フック発火

                     git diff を Ollama API に送信

                     Qwen3 がレビューコメントを生成

                     review.md に出力 or コミット中断

設定手順

プロジェクトの .git/hooks/pre-commit を作成します。

cat << 'HOOK' > .git/hooks/pre-commit
#!/bin/bash
DIFF=$(git diff --cached)
if [ -z "$DIFF" ]; then exit 0; fi

# 差分が大きすぎる場合はスキップ(トークン制限対策)
DIFF_LINES=$(echo "$DIFF" | wc -l)
if [ "$DIFF_LINES" -gt 500 ]; then
  echo "差分が大きすぎるためレビューをスキップします(${DIFF_LINES}行)"
  exit 0
fi

echo "ローカル LLM でコードレビュー中..."

REVIEW=$(curl -s http://localhost:11434/api/chat -d "{
  \"model\": \"qwen3:14b\",
  \"stream\": false,
  \"messages\": [{
    \"role\": \"user\",
    \"content\": \"以下の git diff をコードレビューしてください。バグ、セキュリティ問題、パフォーマンス問題、改善点を日本語で指摘してください。問題がなければ LGTM と回答してください。\n\n\`\`\`diff\n${DIFF}\n\`\`\`\"
  }]
}" | jq -r '.message.content')

echo "$REVIEW" > review.md
echo "---"
echo "$REVIEW"
echo "---"
echo "レビュー結果を review.md に出力しました"
HOOK
chmod +x .git/hooks/pre-commit

動作例

# Claude Code がコードを編集した後...
$ git add -A && git commit -m "Add user authentication"

ローカル LLM でコードレビュー中...
---
## レビュー結果

1. **セキュリティ**: パスワードのハッシュ化に MD5 を使用しています。
   bcrypt または argon2 に変更してください。

2. **バグ**: 42行目の `if user = None` は代入になっています。
   `if user is None` に修正してください。

3. **改善**: try-except ブロックで Exception を捕捉しています。
   より具体的な例外型を指定してください。
---
レビュー結果を review.md に出力しました

向いているケース

パターン 2:OpenHands ヘッドレスモードで本格レビュー

Claude Code の作業後に OpenHands を呼び出し、ファイル全体を読み、テストを実行し、改善提案まで自律的に行わせます。

仕組み

Claude Code → コード生成・編集

OpenHands(ヘッドレス)→ ファイル全体を読む
                        → テストを実行する
                        → レビューコメントを生成
                        → 必要なら修正も提案

Ollama + Qwen3(ローカル LLM)

設定手順

OpenHands CLI をインストールし、Ollama をバックエンドに設定します。

# OpenHands をインストール
pip install openhands-ai

# Ollama のコンテキスト長を拡張して起動(必須)
OLLAMA_CONTEXT_LENGTH=32768 ollama serve

使い方

Claude Code の作業が終わったら、以下のコマンドでレビューを実行します。

# 直近のコミットをレビュー
openhands --headless -t "
このリポジトリの直近のコミットをレビューしてください。
1. git diff HEAD~1 で差分を確認
2. 変更されたファイルの全体を読んで文脈を理解
3. テストがあれば実行して結果を確認
4. 以下の観点でレビュー:
   - バグ・ロジックエラー
   - セキュリティ脆弱性
   - パフォーマンス問題
   - 設計上の懸念
   - テストの網羅性
5. review.md にレビュー結果を出力
"

シェルエイリアスにしておくと便利です。

# ~/.zshrc に追加
alias ai-review='openhands --headless -t "直近のコミットをレビューして review.md に出力してください。バグ、セキュリティ、パフォーマンス、設計の観点で指摘してください。テストがあれば実行してください。"'
# Claude Code で作業した後
$ ai-review

パターン 1 との違い

パターン 1(Git フック)パターン 2(OpenHands)
レビュー範囲diff のみファイル全体 + テスト実行
文脈理解差分の前後数行プロジェクト全体の構造
テスト実行できないできる
修正提案テキストのみコード修正まで可能
実行時間数十秒〜数分数分〜数十分

向いているケース

パターン 3:Claude Code フック + OpenHands(完全自動化)

Claude Code の hooks 機能を使い、コード編集のたびにバックグラウンドで自動レビューを走らせます。

仕組み

Claude Code が Edit/Write ツールを使用
      ↓ (PostToolUse フック自動発火)
OpenHands がバックグラウンドでレビュー開始

Ollama + Qwen3 でローカルレビュー

review.md に結果出力(デスクトップ通知)

設定手順

プロジェクトの .claude/settings.json にフックを設定します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "bash -c 'openhands --headless -t \"$(git diff) をレビューして review.md に出力\" > /dev/null 2>&1 &'"
      }
    ]
  }
}

注意点

向いているケース

3 パターンの比較

パターン 1パターン 2パターン 3
仕組みGit フック + OllamaOpenHands ヘッドレスClaude Code フック + OpenHands
タイミングコミット時手動実行編集のたび
レビューの深さ差分のみファイル全体 + テスト差分〜ファイル全体
セットアップ難易度低い中程度やや高い
必要ツールOllama のみOllama + OpenHandsOllama + OpenHands
リソース消費
おすすめまずはこれから本格的なレビュー完全自動化したい人

実践的なおすすめ構成

ステップ 1: パターン 1(Git フック)から始める。セットアップが簡単で、コミットのたびに基本的なレビューが得られます。

ステップ 2: レビューの深さが足りないと感じたら、パターン 2(OpenHands ヘッドレス)に移行。ai-review エイリアスで手軽に本格レビューを実行できます。

ステップ 3: 完全自動化が必要な場合のみ、パターン 3 を検討。ただしリソース消費が大きいため、マシンスペックと相談してください。

速度とコストのトレードオフ

構成速度レビュー品質コスト
Claude Code + Claude API でレビュー速い最高API 従量課金
パターン 1(Git フック + Qwen3 14B)数十秒〜数分実用的無料
パターン 2(OpenHands + Qwen3 14B)数分〜数十分高い無料

ローカル LLM でのレビューはクラウド API より遅くなりますが、コードを外部に送信しないというプライバシー上の利点と、追加コストゼロという経済的な利点があります。

まとめ

参考



前の記事
科学が格付けした10の勉強法 --- 100年の研究が示す「想起練習」と「分散学習」の圧倒的効果
次の記事
Theatre.js — GUI でWebアニメーションを直感的に作れるモーションデザインエディタ