# 如何使用 Claude Code 运行本地 LLM

本逐步指南展示了如何将开源大模型和 API 完全本地连接到 Claude Code，并附有截图。可使用任何开源模型运行，例如 Qwen3.5、DeepSeek 和 Gemma。

在本教程中，我们将使用 [**Qwen3.5**](https://unsloth.ai/docs/zh/mo-xing/qwen3.5) 和 [GLM-4.7-Flash](https://unsloth.ai/docs/zh/mo-xing/glm-4.7-flash)。截至 2026 年 3 月，两者都是最强的 35B MoE 具代理性与编码能力的模型（在 24GB RAM/统一内存设备上运行良好），可与 [Unsloth](https://github.com/unslothai/unsloth)配合自主微调 LLM。你可以替换为 [任何其他模型](https://unsloth.ai/docs/zh/mo-xing/tutorials)，只需在脚本中更新模型名称。

<a href="#qwen3.5-tutorial" class="button secondary">Qwen3.5 教程</a><a href="#glm-4.7-flash-tutorial" class="button secondary">GLM-4.7-Flash 教程</a><a href="#claude-code-tutorial" class="button primary" data-icon="claude">Claude Code 教程</a>

对于模型量化，我们将使用 Unsloth 的 [动态 GGUFs](https://unsloth.ai/docs/zh/ji-chu-zhi-shi/unsloth-dynamic-2.0-ggufs) 来运行任何量化的 LLM，同时尽可能保留精度。

{% hint style="info" %}
自 2026 年 1 月以来，Claude Code 已发生较大变化。现在有许多更多需要切换的设置和必要功能。
{% endhint %}

## 📖 LLM 设置教程

在开始之前，我们首先需要为你将使用的特定模型完成设置。我们使用 `llama.cpp` 它是一个用于在 Mac、Linux、Windows 等设备上运行 LLM 的开源框架。llama.cpp 包含 `llama-server` 它允许你高效地部署和服务 LLM。模型将在端口 8001 上提供服务，所有代理工具都通过单一与 OpenAI 兼容的端点路由。&#x20;

### Qwen3.5 教程

我们将使用 [Qwen3.5](https://unsloth.ai/docs/zh/mo-xing/qwen3.5)-35B-A3B 及用于快速准确编码任务的特定设置。如果你没有足够的显存并想要一个 **更聪明的** 模型， **Qwen3.5-27B** 是个不错的选择，但它大约会慢 \~2 倍，或者你可以使用 Qwen3.5 的其他变体，例如 9B、4B 或 2B。

{% hint style="info" %}
如果你想要一个 **更聪明的** 模型或显存不足，请使用 Qwen3.5-27B。它比 35B-A3B 大约慢 2 倍。或者你可以使用 [**Qwen3-Coder-Next**](https://unsloth.ai/docs/zh/mo-xing/qwen3-coder-next) 如果你有足够的显存，这个模型非常出色。
{% endhint %}

{% stepper %}
{% step %}

#### 安装 llama.cpp

我们需要安装 `llama.cpp` 以便部署/服务本地 LLM 在 Claude Code 等中使用。我们遵循官方构建说明以获取正确的 GPU 绑定和最大性能。若要更改 `-DGGML_CUDA=ON` 为 `-DGGML_CUDA=OFF` 如果你没有 GPU 或仅想使用 CPU 推理。 **对于 Apple Mac / Metal 设备**，设置 `-DGGML_CUDA=OFF` 然后照常继续 - Metal 支持默认开启。

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev git-all -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F4DmycqgjxOz6TOQd9PLJ%2Fimage.png?alt=media&#x26;token=c94db0b5-8e4a-4043-b2a3-c68bad93213e" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 在本地下载并使用模型

通过 `huggingface_hub` 在 Python 中下载模型（在通过 `pip install huggingface_hub hf_transfer`安装之后）。我们使用 **UD-Q4\_K\_XL** 量化以获得最佳的大小/精度平衡。你可以在我们的 [合集这里](https://unsloth.ai/docs/zh/kai-shi-shi-yong/unsloth-model-catalog)找到所有 Unsloth 的 GGUF 上传。如果下载卡住，参见 [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/zh/ji-chu-zhi-shi/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

```bash
hf download unsloth/Qwen3.5-35B-A3B-GGUF \
    --local-dir unsloth/Qwen3.5-35B-A3B-GGUF \
    --include "*UD-Q4_K_XL*" # 对于动态 2 比特使用 "*UD-Q2_K_XL*"
```

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FRfXofrNzl1ypjfMTz15o%2Fimage.png?alt=media&#x26;token=8009de90-cd11-46ed-85b5-fca5c07b66fc" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
我们使用了 `unsloth/Qwen3.5-35B-A3B-GGUF` ，但你也可以使用另一种变体如 27B 或任何其他模型如 `unsloth/`[`Qwen3-Coder-Next`](https://unsloth.ai/docs/zh/mo-xing/qwen3-coder-next)`-GGUF`.
{% endhint %}

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FxlIrQGQ0cevb1ckkSFy5%2Fimage.png?alt=media&#x26;token=b1a42562-927a-4ad2-85f8-29c2993c46aa" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 启动 Llama-server

为代理工作负载部署 Qwen3.5 时，我们使用 `llama-server`。我们应用了 [Qwen 推荐的采样参数](https://unsloth.ai/docs/zh/mo-xing/qwen3.5#recommended-settings) 用于“思考”模式： `temp 0.6`, `top_p 0.95` , `top-k 20`。请记住，如果你使用非“思考”模式或其他任务，这些数值会改变。

在新终端中运行此命令（使用 `tmux` 或打开新的终端）。下面的配置应该 **完美适配 24GB GPU（RTX 4090）（使用 23GB）** `--fit on` 也会自动卸载，但如果你看到性能不佳，请减少 `--ctx-size` .

{% hint style="danger" %}
我们使用了 `--cache-type-k q8_0 --cache-type-v q8_0` 用于 KV 缓存量化以减少显存使用。要使用全精度，请使用 `--cache-type-k bf16 --cache-type-v bf16` 根据多份报告，Qwen3.5 在使用 `f16` KV 缓存时会降低精度，因此不要使用 `--cache-type-k f16 --cache-type-v f16` 该选项在 llama.cpp 中默认也是开启的。注意 bf16 KV 缓存在某些机器上可能稍慢。
{% endhint %}

```bash
./llama.cpp/llama-server \
    --model unsloth/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-UD-Q4_K_XL.gguf \
    --alias "unsloth/Qwen3.5-35B-A3B" \
    --temp 0.6 \
    --top-p 0.95 \
    --top-k 20 \
    --min-p 0.00 \
    --port 8001 \
    --kv-unified \
    --cache-type-k q8_0 --cache-type-v q8_0 \
    --flash-attn on --fit on \
    --ctx-size 131072 # 根据需要更改
```

{% hint style="success" %}
你也可以为 Qwen3.5 禁用“思考”，这可以提升代理编码任务的性能。要在 llama.cpp 中禁用思考，请在 llama-server 命令中添加：

`--chat-template-kwargs "{\"enable_thinking\": false}"`

<img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F373wtRRbMcobtjV5e6xf%2Fkerkekke.png?alt=media&#x26;token=2cd3b8c7-93b6-41cb-8bce-41f1aee819eb" alt="" data-size="original">
{% endhint %}
{% endstep %}
{% endstepper %}

### GLM-4.7-Flash 教程

{% stepper %}
{% step %}

#### 安装 llama.cpp

我们需要安装 `llama.cpp` 以便部署/服务本地 LLM 在 Claude Code 等中使用。我们遵循官方构建说明以获取正确的 GPU 绑定和最大性能。若要更改 `-DGGML_CUDA=ON` 为 `-DGGML_CUDA=OFF` 如果你没有 GPU 或仅想使用 CPU 推理。 **对于 Apple Mac / Metal 设备**，设置 `-DGGML_CUDA=OFF` 然后照常继续 - Metal 支持默认开启。

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev git-all -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F4DmycqgjxOz6TOQd9PLJ%2Fimage.png?alt=media&#x26;token=c94db0b5-8e4a-4043-b2a3-c68bad93213e" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 在本地下载并使用模型

通过 `huggingface_hub` 在 Python 中下载模型（在通过 `pip install huggingface_hub hf_transfer`安装之后）。我们使用 **UD-Q4\_K\_XL** 量化以获得最佳的大小/精度平衡。你可以在我们的 [合集这里](https://unsloth.ai/docs/zh/kai-shi-shi-yong/unsloth-model-catalog)找到所有 Unsloth 的 GGUF 上传。如果下载卡住，参见 [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/zh/ji-chu-zhi-shi/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

{% hint style="success" %}
我们使用了 `unsloth/GLM-4.7-Flash-GGUF` ，但你可以使用任何例如 `unsloth/Qwen3-Coder-Next-GGUF` ——参见 [qwen3-coder-next](https://unsloth.ai/docs/zh/mo-xing/qwen3-coder-next "mention")
{% endhint %}

```python
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download

snapshot_download(
    repo_id = "unsloth/GLM-4.7-Flash-GGUF",
    local_dir = "unsloth/GLM-4.7-Flash-GGUF",
    allow_patterns = ["*UD-Q4_K_XL*"],
)
```

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FxlIrQGQ0cevb1ckkSFy5%2Fimage.png?alt=media&#x26;token=b1a42562-927a-4ad2-85f8-29c2993c46aa" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 启动 Llama-server

为代理工作负载部署 GLM-4.7-Flash 时，我们使用 `llama-server`。我们应用 Z.ai 推荐的采样参数（`temp 1.0`, `top_p 0.95`).

在新终端中运行此命令（使用 `tmux` 或打开新的终端）。下面的配置应该 **完美适配 24GB GPU（RTX 4090）（使用 23GB）** `--fit on` 也会自动卸载，但如果你看到性能不佳，请减少 `--ctx-size` .

{% hint style="danger" %}
我们使用了 `--cache-type-k q8_0 --cache-type-v q8_0` 用于 KV 缓存量化以减少显存使用。如果你看到质量下降，改用 `bf16` 但这会使显存使用增加两倍： `--cache-type-k bf16 --cache-type-v bf16`
{% endhint %}

```bash
./llama.cpp/llama-server \
    --model unsloth/GLM-4.7-Flash-GGUF/GLM-4.7-Flash-UD-Q4_K_XL.gguf \
    --alias "unsloth/GLM-4.7-Flash" \
    --temp 1.0 \
    --top-p 0.95 \
    --min-p 0.01 \
    --port 8001 \
    --kv-unified \
    --cache-type-k q8_0 --cache-type-v q8_0 \
    --flash-attn on --fit on \
    --batch-size 4096 --ubatch-size 1024 \
    --ctx-size 131072 # 根据需要更改
```

{% hint style="success" %}
你也可以为 GLM-4.7-Flash 禁用“思考”，这可以提升代理编码任务的性能。要在 llama.cpp 中禁用思考，请在 llama-server 命令中添加：

`--chat-template-kwargs "{\"enable_thinking\": false}"`

<img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FyKf6guCV8snRaAV16Zxc%2FG_16XLgXUAEnSWH.jpg?alt=media&#x26;token=3b557c6d-3f6f-4515-ba9f-4cc8b50bcef1" alt="" data-size="original">
{% endhint %}
{% endstep %}
{% endstepper %}

## <i class="fa-claude">:claude:</i> Claude Code 教程

{% hint style="danger" %}
参见 [#fixing-90-slower-inference-in-claude-code](#fixing-90-slower-inference-in-claude-code "mention") 在安装 Claude Code 后修复由于 KV 缓存失效导致开源模型慢 90% 的问题。
{% endhint %}

在完成本地 LLM 的前期设置步骤后，就该设置 Claude Code 了。Claude Code 是 Anthropic 的终端代理编码工具，它理解你的代码库，并通过自然语言处理复杂的 Git 工作流。

#### **安装 Claude Code 并在本地运行它**

{% tabs %}
{% tab title="Mac / Linux 设置" %}

```bash
curl -fsSL https://claude.ai/install.sh | bash
# 或通过 Homebrew： brew install --cask claude-code
```

**配置**

设置 `ANTHROPIC_BASE_URL` 环境变量以将 Claude Code 重定向到你的本地 `llama.cpp` 服务器。

```bash
export ANTHROPIC_BASE_URL="http://localhost:8001"
```

此外，根据服务器，你可能需要设置 `ANTHROPIC_API_KEY` 例如：

```bash
export ANTHROPIC_API_KEY='sk-no-key-required' ## 或 'sk-1234'
```

**会话与持久化：** 上述命令仅适用于当前终端。要在新终端中持久生效：

将 `export` 行添加到 `~/.bashrc` (bash) 或 `~/.zshrc` (zsh)。

{% hint style="warning" %}
如果你看到 `Unable to connect to API (ConnectionRefused)` ，记得通过取消设置 `ANTHROPIC_BASE_URL`  来处理 `unset ANTHROPIC_BASE_URL`
{% endhint %}

**缺少 API 密钥**

如果你看到此提示，请设置 `export ANTHROPIC_API_KEY='sk-no-key-required' ## 或 'sk-1234'`

{% hint style="info" %}
如果 Claude Code 在首次运行时仍要求你登录，请添加 `"hasCompletedOnboarding": true` 和 `"primaryApiKey": "sk-dummy-key"` 为 `~/.claude.json`。对于 VS Code 扩展，还需在设置中启用 **Disable Login Prompt** （或添加 `"claudeCode.disableLoginPrompt": true` 为 `到 settings.json`).
{% endhint %}
{% endtab %}

{% tab title="Windows 设置" %}
下面的所有命令请使用 Powershell：

```powershell
irm https://claude.ai/install.ps1 | iex
```

**配置**

设置 `ANTHROPIC_BASE_URL` 环境变量以将 Claude Code 重定向到你的本地 `llama.cpp` 服务器。此外你必须使用 `$env:CLAUDE_CODE_ATTRIBUTION_HEADER=0` 详见下文。

```powershell
$env:ANTHROPIC_BASE_URL="http://localhost:8001"
```

{% hint style="danger" %}
Claude Code 最近在请求头前添加并更改了 Claude Code Attribution 头，这会使 KV 缓存失效。参见此 [LocalLlama 讨论](https://www.reddit.com/r/LocalLLaMA/comments/1r47fz0/claude_code_with_local_models_full_prompt/).

为了解决此问题，执行 `$env:CLAUDE_CODE_ATTRIBUTION_HEADER=0` 或编辑 `~/.claude/settings.json` 内容为：

```
{
    ...
    "env": {
        "CLAUDE_CODE_ATTRIBUTION_HEADER" : "0",
        ...
    }
}
```

{% endhint %}

**会话与持久化：** 上述命令仅适用于当前终端。要在新终端中持久生效：

运行 `setx ANTHROPIC_BASE_URL "http://localhost:8001"` 一次，或将 `$env:` 这一行添加到你的 `$PROFILE`.

{% hint style="info" %}
如果 Claude Code 在首次运行时仍要求你登录，请添加 `"hasCompletedOnboarding": true` 和 `"primaryApiKey": "sk-dummy-key"` 为 `~/.claude.json`。对于 VS Code 扩展，还需在设置中启用 **Disable Login Prompt** （或添加 `"claudeCode.disableLoginPrompt": true` 为 `到 settings.json`).
{% endhint %}
{% endtab %}
{% endtabs %}

### :detective:修复 Claude Code 中慢 90% 的推理问题

{% hint style="danger" %}
Claude Code 最近在请求头前添加并增加了 Claude Code Attribution 头，导致 **KV 缓存失效，使本地模型的推理慢了 90%**。参见此 [LocalLlama 讨论](https://www.reddit.com/r/LocalLLaMA/comments/1r47fz0/claude_code_with_local_models_full_prompt/).
{% endhint %}

为了解决此问题，编辑 `~/.claude/settings.json` 以包含 `CLAUDE_CODE_ATTRIBUTION_HEADER` 并在 `"env"`

{% hint style="info" %}
中将其设置为 0。 `使用` **export CLAUDE\_CODE\_ATTRIBUTION\_HEADER=0** 是无效的！
{% endhint %}

例如，执行 `cat > ~/.claude/settings.json` 然后添加以下内容（粘贴后按 ENTER 然后 CTRL+D 保存）。如果你已有之前的 `~/.claude/settings.json` 文件，只需在 "env" 部分添加 `"CLAUDE_CODE_ATTRIBUTION_HEADER" : "0"` 并保持设置文件的其余部分不变。

<pre><code>{
  "promptSuggestionEnabled": false,
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "0",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    <a data-footnote-ref href="#user-content-fn-1">"CLAUDE_CODE_ATTRIBUTION_HEADER" : "0"</a>
  },
  "attribution": {
    "commit": "",
    "pr": ""
  },
  "plansDirectory" : "./plans",
  "prefersReducedMotion" : true,
  "terminalProgressBarEnabled" : false,
  "effortLevel" : "high"
}
</code></pre>

#### :star2:在 Linux / Mac / Windows 本地运行 Claude Code

{% hint style="success" %}
我们使用了 `unsloth/GLM-4.7-Flash-GGUF` ，但你可以使用任何例如 `unsloth/Qwen3.5-35B-A3B-GGUF`.
{% endhint %}

{% hint style="danger" %}
参见 [#fixing-90-slower-inference-in-claude-code](#fixing-90-slower-inference-in-claude-code "mention") 首先修复由于 KV 缓存失效导致开源模型慢 90% 的问题。
{% endhint %}

导航到你的项目文件夹（`mkdir project ; cd project`）并运行：

```bash
claude --model unsloth/GLM-4.7-Flash
```

要使用 Qwen3.5-35B-A3B，只需将其更改为：

```bash
claude --model unsloth/Qwen3.5-35B-A3B
```

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fnyc5BnXQiXPRZnyuYZt3%2Fimage.png?alt=media&#x26;token=72011cb6-abed-4a41-99b0-104ef5d0111f" alt=""><figcaption></figcaption></figure>

要设置 Claude Code 在不经过任何审批的情况下执行命令，请执行 **（注意：这将使 Claude Code 在没有任何审批的情况下按其方式执行并运行代码！）**

{% code overflow="wrap" %}

```bash
claude --model unsloth/GLM-4.7-Flash --dangerously-skip-permissions
```

{% endcode %}

试试这个提示以安装并运行一个简单的 Unsloth 微调：

{% code overflow="wrap" %}

```
你只能在 cwd project/ 中工作。不要搜索 CLAUDE.md —— 这就是它。通过 uv 在虚拟环境中安装 Unsloth。尽可能使用 `python -m venv unsloth_env` 然后 `source unsloth_env/bin/activate`。参见 https://unsloth.ai/docs/get-started/install/pip-install 了解如何（获取并阅读）。然后按 https://github.com/unslothai/unsloth 中描述执行一个简单的 Unsloth 微调运行。你有 1 块 GPU 可用。
```

{% endcode %}

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FBkpEsVssYZG9wHvvWMRH%2Fimage.png?alt=media&#x26;token=e1a8283f-49ed-4b78-8052-d8970f069d5b" alt=""><figcaption></figcaption></figure>

稍等片刻后，Unsloth 将通过 uv 安装在 venv 中并加载：

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FHATFwDrR1gP44XFbzWcv%2Fimage.png?alt=media&#x26;token=6ff63733-686d-4b08-bdd5-66a6fa4aa34c" alt=""><figcaption></figcaption></figure>

最后你将看到使用 Unsloth 成功微调的模型！

<figure><img src="https://2657992854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FZjQ6askaixcYOMrr2qMi%2Fimage.png?alt=media&#x26;token=e0e0047d-b6a2-421f-a86b-68e093a3a17a" alt=""><figcaption></figcaption></figure>

**IDE 扩展（VS Code / Cursor）**

你也可以通过官方扩展在编辑器内直接使用 Claude Code：

* [为 VS Code 安装](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)
* [为 Cursor 安装](cursor:extension/anthropic.claude-code)
* [VS Code 中的 Claude Code 文档](https://code.claude.com/docs/en/vs-code)

或者，按下 `Ctrl+Shift+X` （Windows/Linux）或 `Cmd+Shift+X` （Mac），搜索 **Claude Code**，然后点击 **安装**.

{% hint style="warning" %}
如果你看到 `Unable to connect to API (ConnectionRefused)` ，记得通过取消设置 `ANTHROPIC_BASE_URL`  来处理 `unset ANTHROPIC_BASE_URL`
{% endhint %}

{% hint style="danger" %}
如果你发现开源模型慢 90%，请参见 [#claude-code-90-slower-inference](#claude-code-90-slower-inference "mention") 首先修复 KV 缓存被使无效的问题。
{% endhint %}

[^1]: 必须使用这个！
