Claude Code私有化使用

  都说claude code很好,但代码的事情需要慎重,不能使用私有化模型就不敢用,最终搞定了使用私有化模型的方法:

一、安装:mac上可能需要用sudo

  claude code:

npm install -g @anthropic-ai/claude-code

  claude code router:

npm install -g @musistudio/claude-code-router

二、配置

  claude code:使用ccr则无需多余配置跳过登录要求

# .claude.json
  "numStartups": 4,
  "tipsHistory": {
    "new-user-warmup": 1,
    "plan-mode-for-complex-tasks": 3,
    "memory-command": 3,
    "shift-enter": 4,
    "theme-command": 4
  },
  "promptQueueUseCount": 3,
  "firstStartTime": "2026-04-03T07:11:40.580Z",
  "opusProMigrationComplete": true,
  "sonnet1m45MigrationComplete": true,
  "migrationVersion": 11,
  "appleTerminalSetupInProgress": false,
  "appleTerminalBackupPath": "/Users/abc/Library/Preferences/com.apple.Terminal.plist.bak",
  "optionAsMetaKeyInstalled": true,
  "hasCompletedOnboarding": true,
  "lastOnboardingVersion": "2.1.91",
  "deepLinkTerminal": "Terminal",
  "opus1mMergeNoticeSeenCount": 4,
  "lastReleaseNotesSeen": "2.1.91",
  "projects": {
    "/Users/abc": {
      "allowedTools": [],
      "mcpContextUris": [],
      "mcpServers": {},
      "enabledMcpjsonServers": [],
      "disabledMcpjsonServers": [],
      "hasTrustDialogAccepted": false,
      "projectOnboardingSeenCount": 1,
      "hasClaudeMdExternalIncludesApproved": false,
      "hasClaudeMdExternalIncludesWarningShown": false,
      "exampleFiles": [],
      "lastCost": 0,
      "lastAPIDuration": 0,
      "lastAPIDurationWithoutRetries": 0,
      "lastToolDuration": 0,
      "lastDuration": 143095,
      "lastLinesAdded": 0,
      "lastLinesRemoved": 0,
      "lastTotalInputTokens": 0,
      "lastTotalOutputTokens": 0,
      "lastTotalCacheCreationInputTokens": 0,
      "lastTotalCacheReadInputTokens": 0,
      "lastTotalWebSearchRequests": 0,
      "lastFpsAverage": 16.24,
      "lastFpsLow1Pct": 1003.73,
      "lastModelUsage": {},
      "lastSessionId": "80227128-4ea4-4b2a-8f22-80b1bd101583",
      "lastSessionMetrics": {
        "frame_duration_ms_count": 2316,
        "frame_duration_ms_min": 0.04019299999345094,
        "frame_duration_ms_max": 18.358989000000065,
        "frame_duration_ms_avg": 0.3129580051812182,
        "frame_duration_ms_p50": 0.30174600000464125,
        "frame_duration_ms_p95": 0.6338651500038394,
        "frame_duration_ms_p99": 0.9816349100001382,
        "hook_duration_ms_count": 1,
        "hook_duration_ms_min": 1901,
        "hook_duration_ms_max": 1901,
        "hook_duration_ms_avg": 1901,
        "hook_duration_ms_p50": 1901,
        "hook_duration_ms_p95": 1901,
        "hook_duration_ms_p99": 1901
      }
    },
    "/Users/abc/.claude": {
      "allowedTools": [],
      "mcpContextUris": [],
      "mcpServers": {},
      "enabledMcpjsonServers": [],
      "disabledMcpjsonServers": [],
      "hasTrustDialogAccepted": true,
      "projectOnboardingSeenCount": 0,
      "hasClaudeMdExternalIncludesApproved": false,
      "hasClaudeMdExternalIncludesWarningShown": false,
      "lastCost": 0.12233499999999999,
      "lastAPIDuration": 5435,
      "lastAPIDurationWithoutRetries": 5319,
      "lastToolDuration": 0,
      "lastDuration": 260724,
      "lastLinesAdded": 0,
      "lastLinesRemoved": 0,
      "lastTotalInputTokens": 24322,
      "lastTotalOutputTokens": 29,
      "lastTotalCacheCreationInputTokens": 0,
      "lastTotalCacheReadInputTokens": 0,
      "lastTotalWebSearchRequests": 0,
      "lastFpsAverage": 0.83,
      "lastFpsLow1Pct": 208.54,
      "lastModelUsage": {
        "qwen3-30b": {
          "inputTokens": 213,
          "outputTokens": 12,
          "cacheReadInputTokens": 0,
          "cacheCreationInputTokens": 0,
          "webSearchRequests": 0,
          "costUSD": 0.001365
        },
        "glm-5": {
          "inputTokens": 24109,
          "outputTokens": 17,
          "cacheReadInputTokens": 0,
          "cacheCreationInputTokens": 0,
          "webSearchRequests": 0,
          "costUSD": 0.12096999999999998
        }
      },
      "lastSessionId": "2b82ec80-dca4-4c4f-a524-fad76bc8ec0c",
      "lastSessionMetrics": {
        "frame_duration_ms_count": 217,
        "frame_duration_ms_min": 0.06400400001439266,
        "frame_duration_ms_max": 17.76127100000008,
        "frame_duration_ms_avg": 0.5869657050709898,
        "frame_duration_ms_p50": 0.42231200000969693,
        "frame_duration_ms_p95": 1.2305820000010472,
        "frame_duration_ms_p99": 4.704016760002125,
        "hook_duration_ms_count": 1,
        "hook_duration_ms_min": 570,
        "hook_duration_ms_max": 570,
        "hook_duration_ms_avg": 570,
        "hook_duration_ms_p50": 570,
        "hook_duration_ms_p95": 570,
        "hook_duration_ms_p99": 570
      }
    },
  "userID": "3cebc034ef77f463176869ff6511663fde73839fabe76f5ea63d6e56c1afbf71",
  "officialMarketplaceAutoInstallAttempted": true,
  "officialMarketplaceAutoInstalled": true,
  "ideHintShownCount": 4,
  "metricsStatusCache": {
    "enabled": false,
    "timestamp": 1775200611427
  },
  "skillUsage": {
    "init": {
      "usageCount": 2,
      "lastUsedAt": 1775205920760
    }
  }
}
# ~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-oXSRk***A84c",
    "ANTHROPIC_BASE_URL": "http://localhost:8000",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3-30b",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "DeepSeek-V3",
    "ANTHROPIC_MODEL": "glm-5",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "API_TIMEOUT_MS": "3000000"
  },
  "permissions": {
    "allow": [
      "Bash(npm test)",
      "Bash(ls)",
      "Bash(cat)",
      "Bash(git status)",
      "Read(cat, grep, ls, pwd, head, tail, find)",
      "Write(sed, mv, rm, cp, mkdir, touch, echo)",
      "Edit",
      "Delete",
      "Execute(bash, zsh, python3, node, git, ls, cat, grep)"
    ],
    "deny": [
      "Bash(curl)",
      "Bash(rm)",
      "Bash(sudo)",
      "Bash(passwd)"
    ],
    "ask": [
      "Bash(reboot)",
      "Bash(shutdown)"
    ],
    "sandbox": false,
    "defaultMode": "acceptEdits"
  },
  "model": "DeepSeek-V3",
  "enabledPlugins": {
    "superpowers@claude-plugins-official": true
  },
  "language": "中文",
  "models": {
    "default": "kimi",
    "available": [
      "DeepSeek-V3",
      "kimi",
      "qwen3-30b",
      "glm-5"
    ]
  }
}

  claude code router:参数"api_base_url": "http://192.168.136.40:3000/v1/chat/completions"很重要,可以通过右上角日志中的调试来找到正确的路径

# ~/.claude-code-router/config.json
{
  "LOG": true,
  "LOG_LEVEL": "debug",
  "CLAUDE_PATH": "",
  "HOST": "127.0.0.1",
  "PORT": 3456,
  "APIKEY": "",
  "API_TIMEOUT_MS": "600000",
  "PROXY_URL": "",
  "transformers": [],
  "Providers": [
    {
      "name": "local",
      "api_base_url": "http://192.168.136.40:3000/v1/chat/completions",
      "api_key": "sk-oXSRkwNPo***A84c",
      "models": [
        "DeepSeek-V3",
        "kimi",
        "glm-5",
        "im-30b"
      ],
      "transformer": {
        "use": [
          "deepseek"
        ]
      }
    }
  ],
  "StatusLine": {
    "enabled": true,
    "currentStyle": "default",
    "default": {
      "modules": []
    },
    "powerline": {
      "modules": []
    }
  },
  "Router": {
    "default": "local,DeepSeek-V3",
    "background": "local,DeepSeek-V3",
    "think": "local,DeepSeek-V3",
    "longContext": "local,DeepSeek-V3",
    "longContextThreshold": 128000,
    "webSearch": "local,DeepSeek-V3",
    "image": "local,kimi"
  },
  "CUSTOM_ROUTER_PATH": ""
}

三、使用:

  claude code:

  claude code router:

# 通过浏览器配置ccr
ccr ui
# 运行claude code
ccr code

四、技能:

  

posted @ 2026-04-03 18:36  badwood  阅读(4)  评论(0)    收藏  举报
Badwood's Blog