Claude Code 接入 LM Studio 完整指南

这份文档记录了如何让 Claude Code 改走本机 LM Studio 的本地模型,而不是依赖 Anthropic 订阅,并补充了全局配置、动态加载、热切换、PowerShell 别名等高阶用法。

目录

Claude Code 接入 LM Studio 完整指南

1. 目标

2. 基本原理

3. 前置条件

4. 最小可用配置

4.1 临时方式

4.2 全局方式

5. 这次排查里踩到的关键坑

5.1 典型报错

5.2 根因

5.3 解决方式

6. 如何验证 LM Studio 接口本身正常

7. 全局生效的正确方式

8. LM Studio 里的“所有模型都可用”是什么意思

8.1 lms ls

8.2 lms ps

8.3 claude --model ... 或 /model ...

9. 动态加载和热切换

9.1 动态加载由 LM Studio 负责

9.2 热切换由 Claude Code 负责

10. Claude Code 不支持自定义模型别名映射

11. 推荐的高阶设置:PowerShell 启动别名

12. 推荐的日常三模型分工

13. 推荐的最终配置结构

13.1 Claude Code 负责

13.2 LM Studio 负责

13.3 PowerShell 负责

14. 这套方案的边界

15. 最终结论

16. 附录 A:可直接使用的 PowerShell $PROFILE 模板

17. 附录 B:开机自动启动 LM Studio 和常用模型的脚本模板

18. 附录 C:带“未加载先提醒”的 Claude 启动函数

19. 参考链接





1. 目标

实现下面几件事:

  • 让 claude 直接连接本地 LM Studio
  • 在任意目录都能默认使用本地模型
  • 支持在多个本地模型之间切换
  • 不修改 LM Studio 原始模型名,避免影响 OpenClaw 等其他工具
  • 提供适合日常使用的 PowerShell 快捷命令




2. 基本原理

链路本质上是:

Claude Code -> LM Studio 本地 API -> 已加载的本地模型

Claude Code 期望的是 Anthropic 风格接口,LM Studio 提供了兼容的 /v1/messages 接口,所以可以把 Claude Code 的请求转发到本地模型。

这不是继续使用 Anthropic 订阅,而是把 Claude Code 当作本地模型的 CLI 前端来用。




3. 前置条件

需要先满足这些条件:

  • 已安装 Claude Code
  • 已安装 LM Studio
  • LM Studio 本地服务已启动,默认通常是 http://localhost:1234
  • 已在 LM Studio 中下载并加载至少一个模型
  • 已拿到 LM Studio 的 API Token

配置详情可参考以下文章及里边的引用链接:

OpenClaw搭配LM Studio VS Ollama:Windows CUDA实战深度对比与完全配置指南




4. 最小可用配置

4.1 临时方式

只对当前 PowerShell 会话生效:

$env:ANTHROPIC_BASE_URL="http://localhost:1234"
$env:ANTHROPIC_AUTH_TOKEN="你的 LM Studio token"
claude --model "你的模型名"

4.2 全局方式

推荐长期使用。把用户级配置写到:

C:\Users\你的用户名\.claude\settings.json

内容建议如下:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:1234/",
    "ANTHROPIC_AUTH_TOKEN": "你的 LM Studio token"
  },
  "model": "google/gemma-4-26b-a4b"
}

这样以后在任意目录执行:

claude

都会默认连接到本地 LM Studio。




5. 这次排查里踩到的关键坑

最重要的问题不是 LM Studio 本身,而是 Claude Code 配置冲突。

5.1 典型报错

Auth conflict: Both a token (ANTHROPIC_AUTH_TOKEN) and an API key (ANTHROPIC_API_KEY) are set.

以及:

Cannot read properties of undefined (reading 'input_tokens')

5.2 根因

本机同时存在两套认证来源:

  • 终端里手动设置的 ANTHROPIC_AUTH_TOKEN
  • C:\Users\用户名\.claude\settings.json 中残留的 ANTHROPIC_API_KEY

Claude Code 启动时会同时读取两者,从而触发冲突

5.3 解决方式

只能保留一套认证来源。

建议:

  • 不再使用 ANTHROPIC_API_KEY
  • 统一使用 ANTHROPIC_AUTH_TOKEN
  • 修正或清理 C:\Users\你的用户名\.claude\settings.json




6. 如何验证 LM Studio 接口本身正常

排查时,建议先绕过 Claude Code,直接请求 LM Studio 的 Anthropic 兼容接口。

Windows PowerShell 下推荐用 Invoke-RestMethod

$token = "你的 LM Studio token"
$body = @{
  model = "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored"
  max_tokens = 64
  messages = @(
    @{
      role = "user"
      content = "hello"
    }
  )
} | ConvertTo-Json -Depth 10

Invoke-RestMethod `
  -Method Post `
  -Uri "http://localhost:1234/v1/messages" `
  -Headers @{
    "Authorization" = "Bearer $token"
    "Content-Type" = "application/json"
  } `
  -Body $body

如果返回里有这些字段,说明服务端基本正常:

  • type = message
  • content
  • usage.input_tokens
  • usage.output_tokens

还可以检查已暴露模型:




7. 全局生效的正确方式

真正让 claude 在任意目录都默认可用,关键在于写对这个文件:

C:\Users\你的用户名\.claude\settings.json

推荐最终内容:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:1234/",
    "ANTHROPIC_AUTH_TOKEN": "你的 LM Studio token"
  },
  "model": "google/gemma-4-26b-a4b"
}

注意事项:

  • 不要再恢复旧的 ANTHROPIC_API_KEY
  • 不要同时在别处再设一套冲突配置
  • 如果临时用环境变量覆盖,要清楚自己在覆盖什么




8. LM Studio 里的“所有模型都可用”是什么意思

这里要区分三个概念:

8.1 lms ls

lms ls

表示本地已经下载的模型。

8.2 lms ps

lms ps

表示当前已经加载进内存、可直接服务的模型。

8.3 claude --model ... 或 /model ...

表示 Claude Code 当前要使用哪个模型。

所以“Claude Code 能使用所有模型”的准确说法是:

  • 只要模型已经在 LM Studio 中下载
  • 并且模型已经被加载
  • 并且名称能被 Claude Code 正确引用

那 Claude Code 就可以切换过去使用它。




9. 动态加载和热切换

9.1 动态加载由 LM Studio 负责

加载模型:

lms load "google/gemma-4-26b-a4b" --ttl 3600
lms load "openai/gpt-oss-20b" --ttl 3600
lms load "meta-llama-3.1-8b-instruct-128k" --ttl 3600

查看已加载模型:

lms ps

卸载模型:

lms unload "模型名或标识"
lms unload --all

9.2 热切换由 Claude Code 负责

在已进入的 Claude Code 会话里,可以直接切模型:

/model google/gemma-4-26b-a4b
/model openai/gpt-oss-20b
/model meta-llama-3.1-8b-instruct-128k

只要 LM Studio 端已经准备好,通常不需要重启 Claude Code。




10. Claude Code 不支持自定义模型别名映射

这是一个很重要的限制。

Claude Code 本身没有提供你自己的模型别名映射表,所以不能直接在 Claude Code 内部定义:

  • coder -> qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored
  • think -> google/gemma-4-26b-a4b

如果不想改 LM Studio 那边的模型名字,也不想影响 OpenClaw,最实用的方案是在 PowerShell 层做快捷命令。




11. 推荐的高阶设置:PowerShell 启动别名

可以把下面的函数放进 PowerShell 的 $PROFILE 文件:

function cc-gemma4 { claude --model "google/gemma-4-26b-a4b" }
function cc-gemma3-27b { claude --model "google/gemma-3-27b" }
function cc-gemma3-12b { claude --model "google/gemma-3-12b" }
function cc-gemma3-it { claude --model "gemma-3-27b-it" }
function cc-gemma11-2b { claude --model "google-gemma-1.1-2b-it" }

function cc-gptoss { claude --model "openai/gpt-oss-20b" }
function cc-gptoss-neo { claude --model "openai-gpt-oss-20b-abliterated-uncensored-neo-imatrix" }
function cc-gptoss-huihui { claude --model "huihui-gpt-oss-20b-abliterated-v2" }

function cc-qwen-coder { claude --model "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" }
function cc-qwen-bf16 { claude --model "qwen3.5-9b-uncensored-hauhaucs-aggressive@bf16" }
function cc-qwen-q4 { claude --model "qwen3.5-9b-uncensored-hauhaucs-aggressive@q4_k_m" }

function cc-llama31 { claude --model "meta-llama-3.1-8b-instruct-128k" }
function cc-llama4o { claude --model "llama-3-8b-gpt-4o-ru1.0" }
function cc-llama-moe { claude --model "llama-3.2-8x3b-moe-dark-champion-instruct-uncensored-abliterated-18.4b" }

function cc-neural { claude --model "neuraldaredevil-8b-abliterated" }
function cc-gpt2 { claude --model "openai-community-gpt2-smashed" }

打开 $PROFILE

New-Item -ItemType File -Path $PROFILE -Force
notepad $PROFILE

保存后重新加载:

. $PROFILE

以后在任意目录就可以直接:

此处指的是同一配置的 powershell,如果电脑里有多个 powershell 版本,每个版本需要单独设置上述配置文件

cc-gemma4
cc-qwen-coder
cc-gptoss
cc-llama31

这不会修改 LM Studio 中的模型名字,也不会影响 OpenClaw




12. 推荐的日常三模型分工

虽然你已经下载了很多模型,但不建议全部常驻内存。

更合理的方式是选出 3 个角色:

  • fast: 响应快的小模型
  • code: 日常代码主力模型
  • think: 推理更强的大模型

基于我当前已有模型,一个实用组合可以是:

  • fastmeta-llama-3.1-8b-instruct-128k
  • codeqwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored
  • thinkgoogle/gemma-4-26b-a4b

可以在 $PROFILE 里再加:

function cc-fast { claude --model "meta-llama-3.1-8b-instruct-128k" }
function cc-code { claude --model "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" }
function cc-think { claude --model "google/gemma-4-26b-a4b" }

这样日常几乎只要记住:

cc-fast
cc-code
cc-think




13. 推荐的最终配置结构

建议把职责分清:

13.1 Claude Code 负责

  • 连接本地 API
  • 指定默认模型
  • 在会话中切换模型

13.2 LM Studio 负责

  • 下载模型
  • 加载模型
  • 卸载模型
  • 对外暴露本地 API

13.3 PowerShell 负责

  • 给长模型名做快捷启动命令
  • 做你自己的本地模型别名体系




14. 这套方案的边界

这套方案已经可以很好地让 Claude Code 驱动本地模型,但仍然要接受这些现实限制:

  • 不是每个本地模型都适合做代码代理
  • 小模型在项目感知、上下文理解、工具调用上经常不稳定
  • 能接上接口,不等于工程能力足够强
  • 模型越弱,越容易误判目录结构、文件状态和代码关系

所以建议:

  • 轻任务用较小模型
  • 代码代理主力用你本地最稳的一个模型
  • 不要追求“所有模型都一样好用”




15. 最终结论

这套配置已经证明下面这些目标都是能实现的:

  • Claude Code 成功接入 LM Studio
  • 不依赖 Anthropic 订阅继续使用
  • 在任意目录全局生效
  • 支持在多个本地模型之间热切换
  • 不改 LM Studio 原始模型名
  • 用 PowerShell 自己构建一层别名系统

真正要做好的只有三件事:

  1. 统一认证配置,只保留一套
  2. 把全局配置写到正确的位置
  3. 明确分工:LM Studio 负责加载,Claude Code 负责使用

如果后续还要继续增强,可以再加:

  • 开机自动启动 LM Studio server
  • 常用模型自动预加载
  • PowerShell 函数里加入“未加载先提醒”的检查逻辑
  • 给不同项目定制默认模型入口




16. 附录 A:可直接使用的 PowerShell $PROFILE 模板

把下面这段放进你的 PowerShell 配置文件 $PROFILE

function cc-gemma4 { claude --model "google/gemma-4-26b-a4b" }
function cc-gemma3-27b { claude --model "google/gemma-3-27b" }
function cc-gemma3-12b { claude --model "google/gemma-3-12b" }
function cc-gemma3-it { claude --model "gemma-3-27b-it" }
function cc-gemma11-2b { claude --model "google-gemma-1.1-2b-it" }

function cc-gptoss { claude --model "openai/gpt-oss-20b" }
function cc-gptoss-neo { claude --model "openai-gpt-oss-20b-abliterated-uncensored-neo-imatrix" }
function cc-gptoss-huihui { claude --model "huihui-gpt-oss-20b-abliterated-v2" }

function cc-qwen-coder { claude --model "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" }
function cc-qwen-bf16 { claude --model "qwen3.5-9b-uncensored-hauhaucs-aggressive@bf16" }
function cc-qwen-q4 { claude --model "qwen3.5-9b-uncensored-hauhaucs-aggressive@q4_k_m" }

function cc-llama31 { claude --model "meta-llama-3.1-8b-instruct-128k" }
function cc-llama4o { claude --model "llama-3-8b-gpt-4o-ru1.0" }
function cc-llama-moe { claude --model "llama-3.2-8x3b-moe-dark-champion-instruct-uncensored-abliterated-18.4b" }

function cc-neural { claude --model "neuraldaredevil-8b-abliterated" }
function cc-gpt2 { claude --model "openai-community-gpt2-smashed" }

function cc-fast { claude --model "meta-llama-3.1-8b-instruct-128k" }
function cc-code { claude --model "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" }
function cc-think { claude --model "google/gemma-4-26b-a4b" }

function cc-models {
    @(
        "cc-gemma4        -> google/gemma-4-26b-a4b"
        "cc-gemma3-27b    -> google/gemma-3-27b"
        "cc-gemma3-12b    -> google/gemma-3-12b"
        "cc-gemma3-it     -> gemma-3-27b-it"
        "cc-gemma11-2b    -> google-gemma-1.1-2b-it"
        "cc-gptoss        -> openai/gpt-oss-20b"
        "cc-gptoss-neo    -> openai-gpt-oss-20b-abliterated-uncensored-neo-imatrix"
        "cc-gptoss-huihui -> huihui-gpt-oss-20b-abliterated-v2"
        "cc-qwen-coder    -> qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored"
        "cc-qwen-bf16     -> qwen3.5-9b-uncensored-hauhaucs-aggressive@bf16"
        "cc-qwen-q4       -> qwen3.5-9b-uncensored-hauhaucs-aggressive@q4_k_m"
        "cc-llama31       -> meta-llama-3.1-8b-instruct-128k"
        "cc-llama4o       -> llama-3-8b-gpt-4o-ru1.0"
        "cc-llama-moe     -> llama-3.2-8x3b-moe-dark-champion-instruct-uncensored-abliterated-18.4b"
        "cc-neural        -> neuraldaredevil-8b-abliterated"
        "cc-gpt2          -> openai-community-gpt2-smashed"
        "cc-fast          -> meta-llama-3.1-8b-instruct-128k"
        "cc-code          -> qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored"
        "cc-think         -> google/gemma-4-26b-a4b"
    ) | ForEach-Object { $_ }
}

如果 $PROFILE 还不存在:

New-Item -ItemType File -Path $PROFILE -Force
notepad $PROFILE

保存后重新加载:

. $PROFILE




17. 附录 B:开机自动启动 LM Studio 和常用模型的脚本模板

下面是一份适合手动执行或挂到 Windows 启动项里的 PowerShell 脚本模板。

文件示例:C:\Users\你的用户名\start-lmstudio-claude.ps1

Start-Process "LM Studio"

Start-Sleep -Seconds 8

lms server start --port 1234

Start-Sleep -Seconds 3

lms load "google/gemma-4-26b-a4b" --ttl 3600
lms load "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" --ttl 3600
lms load "meta-llama-3.1-8b-instruct-128k" --ttl 3600

如果你不想开机就全部加载,可以只启动服务:

Start-Process "LM Studio"
Start-Sleep -Seconds 8
lms server start --port 1234

然后需要时再手动加载:

lms load "google/gemma-4-26b-a4b" --ttl 3600




18. 附录 C:带“未加载先提醒”的 Claude 启动函数

如果你希望在模型还没加载进 LM Studio 内存时就先得到提醒,可以在 $PROFILE 中用这种写法:

function Start-ClaudeWithModel {
    param(
        [Parameter(Mandatory=$true)]
        [string]$Model
    )

    $loaded = lms ps | Select-String -SimpleMatch $Model
    if (-not $loaded) {
        Write-Host "Model not loaded in LM Studio: $Model" -ForegroundColor Yellow
        Write-Host "Load it first with: lms load `"$Model`" --ttl 3600" -ForegroundColor Yellow
        return
    }

    claude --model $Model
}

function cc-gemma4 { Start-ClaudeWithModel "google/gemma-4-26b-a4b" }
function cc-code { Start-ClaudeWithModel "qwen3.5-9b-claude-4.6-highiq-instruct-heretic-uncensored" }
function cc-fast { Start-ClaudeWithModel "meta-llama-3.1-8b-instruct-128k" }
Claude Desktop

Claude Code
是共享的订阅额度 




19. 参考链接

以下是这套配置过程中最有用的官方文档:

Logo

欢迎来到AMD开发者中国社区,我们致力于为全球开发者提供 ROCm、Ryzen AI Software 和 ZenDNN等全栈软硬件优化支持。携手中国开发者,链接全球开源生态,与你共建开放、协作的技术社区。

更多推荐