---
# System prepended metadata

title: LM Studio 0.4.1 完整攻略：從 Anthropic API 到 Claude Code 本地化

---


# LM Studio 0.4.1 完整攻略：從 Anthropic API 到 Claude Code 本地化

![lmstudio-041-cover](https://hackmd.io/_uploads/SygcS4hvbg.jpg)

[TOC]

那天晚上我在 debug 一個棘手的 race condition，Claude Code 用得正順手，突然收到帳單通知 -- 這個月的 API 費用又破百美金了。我盯著螢幕想，明明手上這台 M4 Max 有 128GB 記憶體，為什麼每次推理都得送到雲端去？

後來我發現 LM Studio 0.4.1 悄悄加了一個殺手級功能：Anthropic API 相容端點。意思是，你可以用 3 行指令，把 Claude Code 直接接到跑在你自己電腦上的模型，零成本、完全隱私、不用改任何程式碼。

這篇文章就是我折騰了一個週末之後的完整筆記。

---

## 從 0.4.0 到 0.4.2，三個版本做了什麼

LM Studio 在 2026 年初連發三個版本，節奏快到我差點跟不上。先拉一條時間線出來看：

**0.4.0（2026-01-28）** 是一次大改版。引入了 llmster 守護程式，讓你不開 GUI 也能跑模型；支援平行推理，同時處理多個請求不再排隊；全新的 REST API v1 有了狀態管理能力；UI 也重新設計過了。

**0.4.1（2026-01-30）** 只隔了兩天就出來，改動看起來不大 -- 就加了一個 Anthropic API 相容端點 `POST /v1/messages`。但這個小功能的影響力遠超想像。因為 Claude Code、Cursor、Cline 這些工具都是走 Anthropic 的 Messages API 溝通的，有了這個端點，所有這些工具瞬間都能接上本地模型。

**0.4.2（2026-02-06）** 補上了 MLX 後端的平行請求支援。在 Apple Silicon 上跑模型的人終於可以同時餵多個請求，不用再一個一個等了。

三個版本連在一起看，LM Studio 的野心很清楚：它不只想當一個跑模型的 GUI，它想成為本地 AI 的基礎設施。

---

## 三層 API 架構，一張圖看懂

![lmstudio-041-api-architecture](https://hackmd.io/_uploads/BJO9BV3w-e.jpg)

0.4.1 之後的 LM Studio 同時暴露三套 API，跑在同一個 port 上：

:::info
**三層 API 一覽**
- **原生 REST API v1**（`/api/v1/`）-- 有狀態聊天 + MCP 整合，功能最完整
- **OpenAI 相容**（`/v1/chat/completions`, `/v1/responses`, `/v1/embeddings`）-- 讓原本接 OpenAI 的工具無縫切換
- **Anthropic 相容**（`/v1/messages`）-- 0.4.1 新增，讓 Claude Code 等工具直接對接
:::

為什麼要搞三套？因為現在的 AI 工具生態已經分裂成兩個陣營了。一邊是 OpenAI 的 Chat Completions 格式，另一邊是 Anthropic 的 Messages 格式。LM Studio 兩邊都支援，等於幫你打通了所有工具鏈。

原生 API 則是 LM Studio 自己的東西，有些獨家功能像有狀態聊天管理和 MCP 整合，只有透過 `/api/v1/` 才能用。

三套 API 共用同一個 port，靠 URL path 區分，所以啟動一次 server 就全部可用了。

---

## Claude Code 整合實戰：3 行搞定

![lmstudio-041-claude-code-workflow](https://hackmd.io/_uploads/SJGiSEnwWx.jpg)

好，這是整篇文章最重要的部分。先確認幾件事：

- LM Studio 0.4.1 以上已安裝
- 至少一個模型已下載（我推薦 `openai/gpt-oss-20b` 或 `qwen3-coder`）
- Claude Code CLI 已安裝

然後就這麼簡單：

```bash=1
# 啟動 LM Studio server
lms server start --port 1234

# 把 Claude Code 指向本地
export ANTHROPIC_BASE_URL=http://localhost:1234/
export ANTHROPIC_AUTH_TOKEN=lmstudio

# 啟動 Claude Code，指定模型
claude --model openai/gpt-oss-20b
```

就這樣。沒了。Claude Code 會以為自己在跟 Anthropic 的伺服器說話，但實際上所有請求都被導到你本機的 LM Studio。

有幾個地方值得注意：

`ANTHROPIC_AUTH_TOKEN` 設成 `lmstudio` 只是因為 Claude Code 要求這個環境變數不能為空。LM Studio 預設不檢查認證，所以你填什麼都行，但不能不填。

`--model` 後面接的是你在 LM Studio 裡載入的模型識別碼。你可以用 `lms ls` 查看已下載的模型。

:::warning
**效能提醒**：本地模型的推理速度跟你的硬體直接相關。在 M4 Max 上跑 20B 參數的模型，回應速度大概在每秒 30-50 tokens，體驗還不錯。但如果你的機器記憶體不夠，模型會被迫 offload 到磁碟，速度會慢到讓你懷疑人生。
:::

---

## API 使用範例

除了 Claude Code 的整合之外，你可能也想直接從自己的程式碼呼叫 LM Studio 的 API。以下是三種語言的範例。

### cURL -- Anthropic Messages 格式

```bash=1
curl http://localhost:1234/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: lmstudio" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "openai/gpt-oss-20b",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "用一句話解釋什麼是 WebSocket"}
    ]
  }'
```

### cURL -- OpenAI Chat Completions 格式

```bash=1
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer lmstudio" \
  -d '{
    "model": "openai/gpt-oss-20b",
    "messages": [
      {"role": "system", "content": "你是一個資深軟體工程師"},
      {"role": "user", "content": "解釋 event loop"}
    ],
    "temperature": 0.7,
    "stream": true
  }'
```

### Python -- 用 Anthropic SDK

```python=1
import anthropic

client = anthropic.Anthropic(
    base_url="http://localhost:1234",
    api_key="lmstudio",  # 任意值，LM Studio 預設不檢查
)

message = client.messages.create(
    model="openai/gpt-oss-20b",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "寫一個 Python decorator 實作 retry 機制"}
    ],
)

print(message.content[0].text)
```

### TypeScript -- 用 OpenAI SDK

```typescript=1
import OpenAI from "openai"

const client = new OpenAI({
  baseURL: "http://localhost:1234/v1",
  apiKey: "lmstudio",
})

const response = await client.chat.completions.create({
  model: "openai/gpt-oss-20b",
  messages: [
    { role: "user", content: "解釋 TypeScript 的 conditional types" },
  ],
  stream: true,
})

for await (const chunk of response) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "")
}
```

重點是：你原本用 Anthropic SDK 或 OpenAI SDK 寫的程式碼，只要改個 `base_url` 就能切到本地，不需要動其他邏輯。

---

## llmster 無頭部署

如果你想在伺服器上跑 LM Studio 但不需要 GUI（比如在一台 Linux 工作站上），llmster 就是你要的東西。它是 0.4.0 引入的無頭守護程式。

### 安裝

```bash=1
# macOS / Linux
curl -fsSL https://lmstudio.ai/install-lmstudio-cli | bash

# 或者從 LM Studio GUI 裡安裝 CLI：
# 左側選單 > Developer > 安裝 CLI
```

### 基本使用

```bash=1
# 啟動 server（前景模式）
lmstudio server start --port 1234

# 背景模式
lmstudio server start --port 1234 &

# 載入模型
lms load openai/gpt-oss-20b

# 查看已載入模型
lms ps

# 停止 server
lms server stop
```

### systemd 服務配置

在生產環境裡，你會想讓 llmster 跟著系統啟動。建立 `/etc/systemd/system/lmstudio.service`：

```ini=1
[Unit]
Description=LM Studio Server (llmster)
After=network.target

[Service]
Type=simple
User=your-username
ExecStart=/usr/local/bin/lmstudio server start --port 1234
Restart=on-failure
RestartSec=10
Environment=HOME=/home/your-username

[Install]
WantedBy=multi-user.target
```

然後：

```bash=1
sudo systemctl daemon-reload
sudo systemctl enable lmstudio
sudo systemctl start lmstudio

# 確認狀態
sudo systemctl status lmstudio
```

這樣你就有了一台永遠在線的本地 AI 推理伺服器。把 `ANTHROPIC_BASE_URL` 指向這台機器的 IP，辦公室裡的每個人都能用。

---

## CLI 命令速查表

用 `lms` 可以在終端機控制 LM Studio 的一切：

| 命令 | 說明 |
|------|------|
| `lms status` | 查看 server 狀態 |
| `lms server start --port 1234` | 啟動 API server |
| `lms server stop` | 停止 server |
| `lms load <model>` | 載入模型到記憶體 |
| `lms unload <model>` | 卸載模型 |
| `lms ps` | 查看已載入的模型 |
| `lms ls` | 列出已下載的模型 |
| `lms get <model>` | 下載模型 |
| `lms log stream` | 即時查看 server log |
| `lms create` | 建立自訂模型配置 |
| `lms version` | 查看版本資訊 |

幾個我常用的組合：

```bash=1
# 一行搞定：啟動 server + 載入模型
lms server start --port 1234 && lms load openai/gpt-oss-20b

# 監控推理狀態
lms log stream | grep -i "inference"

# 快速切換模型
lms unload openai/gpt-oss-20b && lms load qwen3-coder
```

---

## 推薦模型

跑了一圈下來，以下是我覺得在 LM Studio 裡體驗最好的幾個模型：

| 模型 | 參數量 | 適合場景 | 記憶體需求 |
|------|--------|----------|------------|
| `openai/gpt-oss-20b` | 20B | 通用程式碼生成、對話 | ~14GB |
| `qwen3-coder` | 14B/32B | 程式碼補全、重構 | ~10GB / ~22GB |
| `ibm/granite-4-micro` | 8B | 輕量推理、快速回應 | ~6GB |

**openai/gpt-oss-20b** 是我目前的主力。OpenAI 開源的這個模型在程式碼理解上出乎意料地好，跑在 M4 Max 上速度也夠快，是性價比最高的選擇。

**qwen3-coder** 如果你的機器記憶體夠大，32B 版本在程式碼任務上的表現非常接近雲端模型。14B 版本則是記憶體吃緊時的好選擇。

**ibm/granite-4-micro** 適合需要極快回應速度的場景。8B 參數量意味著它可以在幾乎任何 Apple Silicon Mac 上流暢運行，拿來做 code review 的初步篩選很合適。

:::success
**選擇建議**：如果你只想下載一個模型先試試，選 `openai/gpt-oss-20b`。它在通用性和效能之間取得了很好的平衡，搭配 Claude Code 使用的體驗也最穩定。
:::

---

## 認證機制

LM Studio 預設是不需要認證的 -- 畢竟你是在本機跑，通常不需要擔心未授權的存取。

但如果你把 server 開放到區域網路，或者有安全需求，可以在 Developer Settings 裡啟用 API Token：

1. 開啟 LM Studio
2. 進入 **Developer** 頁面
3. 找到 **API Security** 區塊
4. 啟用 **Require API Token**
5. 複製產生的 token

啟用之後，所有 API 請求都需要帶上認證：

```bash=1
# OpenAI 格式
curl http://localhost:1234/v1/chat/completions \
  -H "Authorization: Bearer YOUR_TOKEN" \
  ...

# Anthropic 格式
curl http://localhost:1234/v1/messages \
  -H "x-api-key: YOUR_TOKEN" \
  ...
```

對應到 Claude Code 的設定：

```bash
export ANTHROPIC_AUTH_TOKEN=YOUR_TOKEN
```

一個小提醒：即使啟用了 token 認證，LM Studio 目前還不支援 TLS。如果你需要在不安全的網路上暴露 API，建議在前面擺一個 nginx 或 Caddy 做 reverse proxy 加上 HTTPS。

---

## MCP via API：把工具能力帶進本地

0.4.0 引入的原生 REST API 有一個很酷的功能：透過 `integrations` 欄位在 API 請求中掛載 ephemeral MCP server。這讓你的本地模型也能使用外部工具。

```bash=1
curl http://localhost:1234/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-oss-20b",
    "messages": [
      {"role": "user", "content": "台北現在幾度？"}
    ],
    "integrations": [
      {
        "type": "mcp",
        "server": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-weather"]
        }
      }
    ]
  }'
```

注意這個功能只在原生 REST API（`/api/v1/`）上可用，OpenAI 和 Anthropic 相容端點目前還不支援。

MCP 整合的威力在於它是 ephemeral 的 -- 每次請求都會啟動一個新的 MCP server，用完就丟。你不需要預先配置任何東西，只要在請求裡指定就好。

想像一下這樣的場景：你的本地模型接收到「幫我查一下這個 GitHub repo 的最新 issue」的請求，它透過 MCP 啟動一個 GitHub 工具，拿到資料後回答你。整個過程發生在你的機器上，資料不會離開本地網路。

---

## 我踩過的坑

用了一個多禮拜，有幾個問題值得提前警告你：

**模型載入失敗**。有時候 `lms load` 會卡住不動，通常是記憶體不夠。先用 `lms ps` 看看有沒有其他模型還在佔著記憶體，用 `lms unload` 清掉再試。

**Claude Code 報 connection refused**。確認 server 確實在跑（`lms status`），然後確認 port 沒有被別的東西佔住（`lsof -i :1234`）。另一個常見原因是 `ANTHROPIC_BASE_URL` 後面不小心多了一個斜線。

**回應品質不如預期**。本地模型畢竟不是 Claude Opus，在複雜的多步驟推理上會有明顯差距。我的做法是把本地模型當作日常的「第一道篩選」-- 簡單的 code review、格式轉換、文件生成交給它，真正困難的架構設計和 debug 再切回雲端。

**streaming 斷斷續續**。如果你用的是 MLX 後端（Apple Silicon），確保已經更新到 0.4.2，平行請求的支援在那個版本才加上。

---

## 這到底省了多少錢

我算了一下。以我平均每天用 Claude Code 約 200 次請求、每次大概 2000 tokens 的使用量，全部走 Anthropic API 的話，一個月大概要 80-120 美金。

切到本地之後，這筆錢直接歸零。

當然，「免費」是有代價的 -- 你需要一台夠力的機器，而且回應速度和品質都會打折扣。但對我來說，80% 的日常開發任務其實不需要最頂尖的模型。真正需要深度推理的時候，我隨時可以切回 `claude --model claude-opus-4-6` 走雲端。

兩者混用才是最聰明的策略。

---

## 參考資料

- [LM Studio 官方網站](https://lmstudio.ai)
- [LM Studio 0.4.1 Release Notes](https://lmstudio.ai/blog/lmstudio-0.4.1)
- [LM Studio 0.4.0 Release Notes](https://lmstudio.ai/blog/lmstudio-0.4.0)
- [LM Studio 0.4.2 Release Notes](https://lmstudio.ai/blog/lmstudio-0.4.2)
- [LM Studio API 文件](https://lmstudio.ai/docs/api)
- [LM Studio CLI 文件](https://lmstudio.ai/docs/cli)
- [Claude Code 官方文件](https://docs.anthropic.com/en/docs/claude-code)
- [Anthropic Messages API 規格](https://docs.anthropic.com/en/api/messages)
- [Model Context Protocol（MCP）](https://modelcontextprotocol.io)
- [llmster 無頭部署指南](https://lmstudio.ai/docs/advanced/headless)
