安装
安装claude code
PS C:\>irm https://claude.ai/install.ps1 | iex
PS C:\>claude -v
2.1.90 (Claude Code)
安装指定版本或稳定版
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.90
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable
安装claude-code-router
c:\>npm install -g @musistudio/claude-code-router
c:\>ccr -v
claude-code-router version: 2.0.0
配置
创建配置文件~/.claude-code-router/config.json
{
"LOG": true,
"PORT": 3456,
"LOG_LEVEL": "info",
"Providers": [{
"name": "gemini",
"api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
"api_key": "${GEMINI_API_KEY}",
"models": ["gemini-2.5-flash", "gemini-2.5-pro"],
"transformer": { "use": ["gemini"] }
}],
"Router": {
"default": "gemini,gemini-2.5-flash",
"background": "gemini,gemini-2.5-flash",
"image": "gemini,gemini-2.5-flash",
"think": "gemini,gemini-2.5-flash"
}
}
配置环境变量
C:\Users\bigo\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
$env:ANTHROPIC_BASE_URL = "http://127.0.0.1:3456"
$env:ANTHROPIC_AUTH_TOKEN = "ccr-local-key"
$env:ANTHROPIC_API_KEY = ""
启动
ccr code
检查错误日志
C:\Users\bigo\.claude-code-router\logs
检查CCR日志
通过PS转换ccr日志时间为可读格式
C:\Users\bigo\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
env:ANTHROPIC_BASE_URL = "http://127.0.0.1:3456"
$env:ANTHROPIC_AUTH_TOKEN = "ccr-local-key" # 很多配置默认用这个,或留空看日志
$env:ANTHROPIC_API_KEY = ""
$env:GEMINI_API_KEY="gemini-key-aistudio"
# Claude Code Router 美化日志函数
function ccr-log {
param([int]$Tail = 100)
$logPath = "$HOME\.claude-code-router\logs\ccr-*.log"
$latestLog = Get-ChildItem $logPath -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if (-not $latestLog) {
Write-Host "未找到 claude-code-router 日志文件" -ForegroundColor Red
return
}
Write-Host "日志文件: $($latestLog.Name) (最近 $Tail 行)" -ForegroundColor Green
Get-Content $latestLog.FullName -Tail $Tail | ForEach-Object {
if ($_ -match '"time":\s*(\d+)') {
$unixMs = [long]$matches[1]
$readableTime = [DateTimeOffset]::FromUnixTimeMilliseconds($unixMs).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss.fff")
# 正确转义后的替换
$_ -replace '"time":\s*\d+', "`"time`": `"$readableTime`""
}
else {
$_
}
}
}
PS1 c:\>ccr-log |more
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: Anthropic (endpoint: /v1/messages)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: vertex-gemini (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: vertex-claude (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: deepseek (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: tooluse (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: openrouter (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: OpenAI (endpoint: /v1/chat/completions)"}
{"level":30,"time": "2026-04-03 16:12:23.332","pid":10396,"hostname":"wu-pc","msg":"register transformer: maxtoken (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: groq (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: cleancache (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: enhancetool (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: reasoning (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: sampling (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: maxcompletiontokens (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: cerebras (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: streamoptions (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: customparams (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: vercel (no endpoint)"}
{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: openai-responses (endpoint: /v1/responses)"}{"level":30,"time": "2026-04-03 16:12:23.333","pid":10396,"hostname":"wu-pc","msg":"register transformer: forcereasoning (no endpoint)"}