乐于分享
好东西不私藏

本地电脑跑通Claude Code+Deep Seek部署:一条完整踩坑实录

本地电脑跑通Claude Code+Deep Seek部署:一条完整踩坑实录

我在一台普通电脑-家庭版Windows 11 机器上,完整走通了 Claude Code 的部署全链路,中间触发了 9 个阻断或阻塞级问题。我把每个坑都记了下来。

没接触过编程的小伙伴,可以把这篇文章当做攻略,扔给EasyClaw,让它给你来部署。

由于Claude Code只支持Linux或IOS系统,并且Claude Code 只认 Anthropic Messages 格式,而DeepSeek 只认 OpenAI 格式。所以整套部署方案的架构:

Claude Code(WSL/Ubuntu)→ LiteLLM 代理(localhost:4000)→ DeepSeek V4(deepseek-chat)

但为了让这三层跑起来,我遇到了三类问题:

1.网络问题(3个阻断级):WSL 官方安装失败、Claude Code 安装脚本被地区限制、PyPI 直连超时。

2.环境问题(2个阻断级):Node.js 版本冲突、Claude Code 不支持 DeepSeek 原生接入。

3.工程适配问题(4个):WSL NAT 无法回连宿主机、PowerShell 与 bash 的转义冲突、LiteLLM 鉴权配置、模型 cost map 加载失败。

下面按时间线还原整个过程。每个踩坑点都标了严重度,你可以根据实际环境选择是否跳过某一步。

Phase 1:WSL 安装
——联网就是第一道坎

触发问题数:2 个(1 阻断 / 1 工作流阻塞)

Claude Code 官方不支持 Windows。Anthropic 推荐的方式是 WSL 2,我们照着来。但踩的第一个坑出人意料——Windows 自带的 inbox 版 WSL 无法完成在线安装

执行 `wsl --install -d Ubuntu` 后,报错:「安全频道支持出错」。尝试了 `wsl --update --web-download``winget install`、Microsoft Store 在线安装,全部失败。你的 WSL 是 Windows 镜像自带的残缺版本,TLS 握手打不通微软服务器时,这些依赖在线通道的路径全都会断。

最终方案是离线导入。我们从 Ubuntu cloud-images 官方下载了 rootfs(325MB 的 `.tar.gz` 格式),用一条命令导入:

bash

wsl--importUbuntuC:\wsl\ubuntuubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz--version2

关键点:文件名必须精确匹配 `ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz`,不能是 `.tar.xz`;目标目录 `C:\wsl\ubuntu` 需要事先创建。`--import` 是全离线操作,彻底绕开了 TLS 问题。

 🔴 踩坑等级:阻断。 如果这条路也走不通,整个部署就卡在第一步。

Phase 2:Ubuntu 环境准备
——apt 默认仓库的版本陷阱

触发问题数:1 个

进入 WSL 后的第一件事是装 Node.js——Claude Code 的运行时依赖。Ubuntu 22.04 apt 默认仓库提供的 Node.js 是 **v12**,Claude Code 要求 **v18+**。直接 `apt-get install nodejs` 会导致 Claude Code 安装失败,而且旧版 libnode-dev 包会与新版本冲突。

正确流程是先 purge 旧版再装新版:

```bash

apt-getpurge-ynodejslibnode-devlibnode72

curl-fsSLhttps://deb.nodesource.com/setup_20.x | bash-

apt-getinstall-ynodejs

```

装好后 `npm install -g @anthropic-ai/claude-code` 就能正常跑了。注意全局安装需要 root 权限,建议直接在 WSL root 用户下操作。

> 🔴 踩坑等级:阻断。Ubuntu 22.04 的默认 node 版本确实太旧了。

Phase 3:Claude Code 基础配置
——比预想的封闭

触发问题数:2 个(1 阻断 / 1 工程阻塞)

第一步是获取安装脚本。官方文档说 `curl -fsSL https://claude.ai/install.sh | bash`,但我们在国内执行这条命令时,返回的不是 Shell 脚本,而是 **「App unavailable in region」HTML 页面**。Anthropic 对中国地区做了访问限制。

退路是 npm 直接安装:`npm install -g @anthropic-ai/claude-code`,实测可行,版本 v2.1.175。

装好之后,更大的问题来了:Claude Code 怎么接入 DeepSeek?

它不是一个通用 LLM 客户端,而是一个 Anthropic 专有工具。它只认 Anthropic Messages API 格式,不认 OpenAI 兼容格式。你不能像改一个 curl 请求的 URL 那样让它去调 DeepSeek。即使你在 `settings.json` 里配置了 `ANTHROPIC_BASE_URL` 环境变量,也只是路由请求,不能改变模型供应商。

这是整个架构中最核心的决策点:需要一个 LLM Gateway 来做协议翻译。

🔴 踩坑等级:阻断(架构级)。 这个问题不解决,后面一切都无法推进。

Phase 4:LiteLLM 代理
——国内环境下的安装与配置

触发问题数:4 个(1 阻断 / 1 重要 / 2 小问题)

经过对比,我们选用了 LiteLLM。它是 Anthropic 官方文档推荐的 LLM Gateway,原生支持 Anthropic Messages ↔ OpenAI 格式的双向翻译,社区活跃。

但 `pip3 install litellm[proxy]` 第一条命令就挂了——**PyPI 直连超时**。国内网络访问 pypi.org 极不稳定。解决方案简单直接:切到清华镜像源。

```bash

apt-getinstallpython3-pip

pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplelitellm[proxy]

```

安装完成后,编写 LiteLLM 的核心配置文件 `~/litellm/config.yaml`

```yaml

model_list:

  - model_namedeepseek-v4

litellm_params:

modeldeepseek/deepseek-chat

api_keysk-your-deepseek-api-key

litellm_settings:

drop_paramstrue

general_settings:

master_keyyour-proxy-key

```

然后更新 Claude Code 的 `~/.claude/settings.json`,让它指向本地代理:

```json

{

"env": {

"ANTHROPIC_BASE_URL""http://localhost:4000",

"ANTHROPIC_AUTH_TOKEN""your-proxy-key"

  }

}

```

启动 LiteLLM 后有两个小坑需要注意:一是 health check 默认需要 master_key 鉴权(不带 token 请求会返回 401),二是 LiteLLM 启动时会从 GitHub raw 拉取模型 cost map,国内环境大概率会超时,但不影响核心功能,会自动回退到本地缓存。

> 🔴 阻断:PyPI 直连失败 → 切清华源

> 🟡 重要:配置文件中两个 key 必须对应,一处写错链路就断

Phase 5:WSL NAT 的特殊问题
——localhost 不等于通

触发问题数:1 个

部署过程中我们还发现一个容易被忽略的问题:**WSL 2 的 NAT 网络模式下,WSL 内部无法通过 localhost 访问 Windows 宿主机的代理服务。**

如果你的 Windows 上跑着某个代理(比如 Clash),WSL 里的程序想通过这个代理联网,用 `localhost:port` 是连不上的。WSL 的网关 IP(通常 172.x)和宿主机 IP(192.168.x)处于不同网段,而且 WSL 的防火墙可能阻止 NAT 回连。

在我们的部署中,LiteLLM 和 Claude Code 都跑在 WSL 内部,DeepSeek API 通过 WSL 直连外网,所以没有受到这个限制。但如果你计划在 Windows 上跑代理、在 WSL 里通过代理连 Claude Code,需要额外处理网络互通问题。

🟡 重要:这个坑不影响本文方案,但可能影响其他变体部署。

Phase 6:端到端验证
——链路的最后一公里

所有组件就位后,验证流程如下:

1. 启动 LiteLLM 代理 → PID 确认、端口 4000 监听

2. Health check(带 token)→ `healthy_count=1` ✅

3. 直接 API 调用测试 → DeepSeek 返回「你好」✅

4.`claude -p` 代理模式对话 → 正常响应 ✅

我们把这个流程封装成了一个启动脚本 `~/litellm/proxy.sh`,支持 start/stop/restart/status 四个子命令。日常使用只需三步:

```bash

# 1. 进入 WSL

wsl-dUbuntu

# 2. 启动代理(一次就够了)

bash~/litellm/proxy.shstart

# 3. 开始用

claude# 交互模式

claude-p"帮我写一个 Python 排序函数"# 单次问答

```

问题汇总表

我们把全部踩到的坑按严重度做了一个分级。你可以把它当成部署前的快速排雷清单:

严重度
 问题 解决方案
阻断
WSL 在线安装失败
`wsl --import`离线导入 rootfs
阻断
PyPI 直连超时
切换清华镜像源
阻断
Node.js v12 不满足要求
添加 nodesource repo 装 v20
阻断
Claude Code 不认 DeepSeek API
部署 LiteLLM 代理做协议翻译
重要
`claude.ai/install.sh`被区域限制
改用 npm 全局安装
重要
WSL 无法访问宿主机 localhost 代理
LiteLLM 直接跑在 WSL 内,走外网
重要
PowerShell 与 bash 转义冲突
base64 编码管道传参
小问题
LiteLLM health check 401
请求中附带 Authorization 头
可忽略
LiteLLM 模型 cost map 加载超时
不影响功能,自动回退本地缓存

本文所有技术步骤基于 2026年6月12-13日在一台 Windows 11 (Build 22621) 个人电脑上的真实部署记录。环境配置可能与你的机器有差异,建议优先对照「问题总表」检查自己的阻断点再执行。

历史文章:

1000份JD,拆出FDE真正需要的6种能力

年薪百万的「数据特种兵」,FDE到底在干什么脏活累活

传统开发转型FDE:时间窗口只剩12个月,这张路线图帮你少走两年弯路
会自己进化的「爱马仕」,比「小龙虾」强在哪?
2026小龙虾选择指南:云端还是本地?选错了白花钱
软件3.0时代:UCloud创始人狂烧3.5亿Token之后