fix
This commit is contained in:
246
docs/claude-code-inception-methods.md
Normal file
246
docs/claude-code-inception-methods.md
Normal file
@ -0,0 +1,246 @@
|
||||
# Claude CodeでClaude Code的環境を作る方法
|
||||
|
||||
Claude Code**で**Claude Code**のような**ことを実現する様々なアプローチをご紹介!
|
||||
|
||||
## 🎯 方法1: MCP Server経由でローカルLLMに委譲
|
||||
|
||||
### claude-code-mcp を使用
|
||||
```bash
|
||||
# Claude Code MCPサーバーのセットアップ
|
||||
git clone https://github.com/steipete/claude-code-mcp
|
||||
cd claude-code-mcp
|
||||
|
||||
# Claude Codeをローカルで呼び出すMCPサーバーとして動作
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
**仕組み:**
|
||||
- Claude Code → MCP Server → ローカルLLM → 結果を返す
|
||||
- Claude Codeを全権限バイパス(--dangerously-skip-permissions)で実行
|
||||
- Agent in Agent 構造の実現
|
||||
|
||||
## 🎯 方法2: Claude Desktop + Custom MCP Server
|
||||
|
||||
### カスタムMCPサーバーでローカルLLM統合
|
||||
```python
|
||||
# custom_llm_mcp_server.py
|
||||
import asyncio
|
||||
import json
|
||||
from mcp.server import Server
|
||||
from mcp.types import Tool, TextContent
|
||||
import requests
|
||||
|
||||
app = Server("local-llm-mcp")
|
||||
|
||||
@app.tool("run_local_llm")
|
||||
async def run_local_llm(prompt: str, model: str = "qwen2.5-coder:14b") -> str:
|
||||
"""ローカルLLMでコード生成・分析を実行"""
|
||||
response = requests.post("http://localhost:11434/api/generate", json={
|
||||
"model": model,
|
||||
"prompt": prompt,
|
||||
"stream": False
|
||||
})
|
||||
return response.json()["response"]
|
||||
|
||||
@app.tool("execute_code")
|
||||
async def execute_code(code: str, language: str = "python") -> str:
|
||||
"""生成されたコードを実行"""
|
||||
# セキュアな実行環境でコード実行
|
||||
# Docker containerやsandbox環境推奨
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(app.run())
|
||||
```
|
||||
|
||||
### Claude Desktop設定
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"local-llm": {
|
||||
"command": "python",
|
||||
"args": ["custom_llm_mcp_server.py"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 方法3: VS Code拡張 + MCP統合
|
||||
|
||||
### VS Code設定でClaude Code風環境
|
||||
```json
|
||||
// settings.json
|
||||
{
|
||||
"mcp.servers": {
|
||||
"claude-code-local": {
|
||||
"command": ["python", "claude_code_local.py"],
|
||||
"args": ["--model", "qwen2.5-coder:14b"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
VS Codeは両方の構成(ローカル/リモート)をサポートしているから、柔軟に設定できるよ〜
|
||||
|
||||
## 🎯 方法4: API Gateway パターン
|
||||
|
||||
### Claude Code → API Gateway → ローカルLLM
|
||||
```python
|
||||
# api_gateway.py
|
||||
from fastapi import FastAPI
|
||||
import requests
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
@app.post("/v1/chat/completions")
|
||||
async def proxy_to_local_llm(request: dict):
|
||||
"""OpenAI API互換エンドポイント"""
|
||||
# Claude Code → この API → Ollama
|
||||
ollama_response = requests.post(
|
||||
"http://localhost:11434/api/chat",
|
||||
json={
|
||||
"model": "qwen2.5-coder:14b",
|
||||
"messages": request["messages"]
|
||||
}
|
||||
)
|
||||
|
||||
# OpenAI API形式で返却
|
||||
return {
|
||||
"choices": [{
|
||||
"message": {"content": ollama_response.json()["message"]["content"]}
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
### Claude Code設定
|
||||
```bash
|
||||
# 環境変数でローカルAPIを指定
|
||||
export ANTHROPIC_API_KEY="dummy"
|
||||
export ANTHROPIC_BASE_URL="http://localhost:8000/v1"
|
||||
claude code --api-base http://localhost:8000
|
||||
```
|
||||
|
||||
## 🎯 方法5: Docker Compose 統合環境
|
||||
|
||||
### docker-compose.yml
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
ports:
|
||||
- "11434:11434"
|
||||
volumes:
|
||||
- ollama_data:/root/.ollama
|
||||
|
||||
mcp-server:
|
||||
build: ./mcp-server
|
||||
ports:
|
||||
- "3000:3000"
|
||||
depends_on:
|
||||
- ollama
|
||||
environment:
|
||||
- OLLAMA_URL=http://ollama:11434
|
||||
|
||||
claude-desktop:
|
||||
image: claude-desktop:latest
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
environment:
|
||||
- MCP_SERVER_URL=http://mcp-server:3000
|
||||
|
||||
volumes:
|
||||
ollama_data:
|
||||
```
|
||||
|
||||
DockerはMCPサーバーの展開と管理を簡素化し、分離とポータビリティを提供
|
||||
|
||||
## 🎯 方法6: 簡易プロキシスクリプト
|
||||
|
||||
### claude_to_local.py
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
import subprocess
|
||||
import sys
|
||||
import json
|
||||
|
||||
def claude_code_wrapper():
|
||||
"""Claude CodeコマンドをインターセプトしてローカルLLMに転送"""
|
||||
|
||||
# Claude Codeの引数を取得
|
||||
args = sys.argv[1:]
|
||||
prompt = " ".join(args)
|
||||
|
||||
# ローカルLLMで処理
|
||||
result = subprocess.run([
|
||||
"ollama", "run", "qwen2.5-coder:14b", prompt
|
||||
], capture_output=True, text=True)
|
||||
|
||||
# 結果を整形してClaude Code風に出力
|
||||
print("🤖 Local Claude Code (Powered by Qwen2.5-Coder)")
|
||||
print("=" * 50)
|
||||
print(result.stdout)
|
||||
|
||||
# 必要に応じてファイル操作も実行
|
||||
if "--write" in args:
|
||||
# ファイル書き込み処理
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
claude_code_wrapper()
|
||||
```
|
||||
|
||||
### エイリアス設定
|
||||
```bash
|
||||
# .bashrc または .zshrc
|
||||
alias claude-code="python claude_to_local.py"
|
||||
```
|
||||
|
||||
## 🎯 方法7: Aider + Claude Code 統合
|
||||
|
||||
### 設定方法
|
||||
```bash
|
||||
# Aiderでローカルモデル使用
|
||||
aider --model ollama/qwen2.5-coder:14b
|
||||
|
||||
# Claude Codeから呼び出し
|
||||
claude code "Run aider with local model to implement feature X"
|
||||
```
|
||||
|
||||
## 💡 どの方法がおすすめ?
|
||||
|
||||
### 用途別推奨:
|
||||
|
||||
1. **🔧 開発効率重視**: MCP Server方式(方法1,2)
|
||||
2. **🏠 統合環境**: Docker Compose(方法5)
|
||||
3. **⚡ 簡単設置**: プロキシスクリプト(方法6)
|
||||
4. **🎨 カスタマイズ**: API Gateway(方法4)
|
||||
|
||||
## 🚀 実装のコツ
|
||||
|
||||
### セキュリティ考慮
|
||||
- サンドボックス環境でコード実行
|
||||
- ファイルアクセス権限の制限
|
||||
- API キーの適切な管理
|
||||
|
||||
### パフォーマンス最適化
|
||||
- ローカルLLMのGPU使用確認
|
||||
- MCP サーバーのキャッシュ機能
|
||||
- 並列処理の活用
|
||||
|
||||
### デバッグ方法
|
||||
```bash
|
||||
# MCP サーバーのログ確認
|
||||
tail -f ~/.config/claude-desktop/logs/mcp.log
|
||||
|
||||
# Ollama の動作確認
|
||||
ollama ps
|
||||
curl http://localhost:11434/api/tags
|
||||
```
|
||||
|
||||
## 🎉 まとめ
|
||||
|
||||
Claude CodeでClaude Code的な環境を作るには、MCPプロトコルを活用するのが最も効果的!ローカルLLMの性能も向上しているので、実用的な環境が構築できるよ〜✨
|
||||
|
||||
どの方法から試してみる?アイが一緒に設定をお手伝いするからね!
|
Reference in New Issue
Block a user