Ubuntu 部署 Claude Code + DeepSeek 配置完全指南
适用环境:Ubuntu 20.04/22.04/24.04(x86_64) 测试环境:PyTorch 2.2.2 + CUDA 11.8 + cuDNN 8 + Ubuntu 22.04 更新时间:2026-06-22
一、环境准备
Claude Code 本身与 PyTorch/CUDA 无直接依赖,它是一个终端 AI 助手,运行在用户态。安装前确保:
- Ubuntu 20.04+(x86_64 或 ARM64)
- 网络可访问 npm 镜像(清华/淘宝)
- 4GB+ 内存
1.1 安装 Node.js(20 LTS)
由于 claude.ai/install.sh 官方脚本在部分地区受限,推荐使用 npm 全局安装方式。
通过清华大学镜像安装 Node.js:
# 下载清华镜像预编译的 Node.js 二进制包
cd /usr/local
curl -O https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v20.15.0/node-v20.15.0-linux-x64.tar.xz
tar -xvf node-v20.15.0-linux-x64.tar.xz
# 创建软链接到系统 PATH
ln -sf /usr/local/node-v20.15.0-linux-x64/bin/node /usr/local/bin/node
ln -sf /usr/local/node-v20.15.0-linux-x64/bin/npm /usr/local/bin/npm
# 验证
node –version # v20.15.0
npm –version # 10.7.0
1.2 配置 npm 国内镜像(加速)
npm config set registry https://registry.npmmirror.com
二、安装 Claude Code
npm install -g @anthropic-ai/claude-code
验证安装:
claude –version
claude doctor
注意:官方推荐的 curl -fsSL https://claude.ai/install.sh | bash 方式在部分地区会返回 App unavailable in region 错误,因此本文采用 npm 安装作为可靠替代方案。
三、配置 DeepSeek API
3.1 获取 DeepSeek API Key
3.2 一键配置脚本
创建启动脚本,将 DeepSeek Key 硬编码其中(适合个人服务器/容器使用):
cat > start-claude-deepseek.sh << 'EOF'
#!/bin/bash
# ========== 配置区 ==========
# 替换为你的真实 DeepSeek API Key
DEEPSEEK_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# ===========================
set -e
echo "========================================"
echo " Claude Code + DeepSeek 启动脚本"
echo "========================================"
echo ""
# 检查 Key 是否已修改
if [[ "$DEEPSEEK_KEY" == "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ]]; then
echo "❌ 错误:你还没有配置 DeepSeek API Key"
echo " 请编辑本脚本,将 DEEPSEEK_KEY 的值替换为你的真实 Key"
exit 1
fi
# 检查 Claude Code
if ! command -v claude &> /dev/null; then
echo "❌ 错误:未找到 claude 命令"
exit 1
fi
echo "✅ Claude Code 已安装"
# 写入 ~/.bashrc(首次运行时写入,避免重复)
if ! grep -q "CLAUDE_CODE_DEEPSEEK_CONFIGURED" ~/.bashrc 2>/dev/null; then
echo "📝 首次运行:写入环境变量到 ~/.bashrc …"
cat >> ~/.bashrc << ENVEOF
# === Claude Code DeepSeek Config [CLAUDE_CODE_DEEPSEEK_CONFIGURED] ===
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_KEY"
export ANTHROPIC_API_KEY="$DEEPSEEK_KEY"
export ANTHROPIC_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"
export CLAUDE_CODE_EFFORT_LEVEL="max"
# === End Claude Code Config ===
ENVEOF
echo "✅ ~/.bashrc 已更新"
else
echo "✅ ~/.bashrc 已配置过,跳过"
fi
# 写入 ~/.claude/settings.json(持久化配置,双重保险)
echo "📝 写入 ~/.claude/settings.json …"
mkdir -p ~/.claude
cat > ~/.claude/settings.json << JSONEOF
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_AUTH_TOKEN": "$DEEPSEEK_KEY",
"ANTHROPIC_API_KEY": "$DEEPSEEK_KEY",
"ANTHROPIC_MODEL": "deepseek-v4-pro[1m]",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1m]",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1m]",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
"CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"CLAUDE_CODE_EFFORT_LEVEL": "max"
}
}
JSONEOF
echo "✅ settings.json 已更新"
# 当前会话立即生效
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_KEY"
export ANTHROPIC_API_KEY="$DEEPSEEK_KEY"
export ANTHROPIC_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-v4-pro[1m]"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4-flash"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"
export CLAUDE_CODE_EFFORT_LEVEL="max"
# 测试 DeepSeek 连接
echo ""
echo "🧪 测试 DeepSeek 连接 …"
TEST=$(curl -s -w "\\n%{http_code}" \\
-H "Authorization: Bearer $DEEPSEEK_KEY" \\
-H "Content-Type: application/json" \\
-d '{"model":"deepseek-v4-pro[1m]","messages":[{"role":"user","content":"Hi"}],"max_tokens":5}' \\
https://api.deepseek.com/v1/chat/completions 2>/dev/null || echo "CURL_FAILED")
CODE=$(echo "$TEST" | tail -n1)
if [[ "$TEST" == "CURL_FAILED" ]]; then
echo "⚠️ 网络测试失败,但配置已保存"
elif [[ "$CODE" == "200" ]]; then
echo "✅ DeepSeek API 连接正常"
elif [[ "$CODE" == "401" ]]; then
echo "⚠️ API Key 无效 (401),请检查 Key"
else
echo "ℹ️ DeepSeek 返回 HTTP $CODE"
fi
# 启动 Claude Code
echo ""
echo "========================================"
echo " 🚀 启动 Claude Code …"
echo "========================================"
echo ""
echo "💡 提示:输入 /status 查看当前模型配置"
echo " 输入 'hi' 测试 DeepSeek 是否正常回复"
echo ""
claude
EOF
chmod +x start-claude-deepseek.sh
3.3 修改脚本填入你的 Key
nano start-claude-deepseek.sh
找到这一行:
DEEPSEEK_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
将 sk-xxxxxxxx… 替换为你的真实 DeepSeek API Key,保存退出(Ctrl+O → Ctrl+X)。
3.4 运行脚本
bash start-claude-deepseek.sh
首次运行会自动完成所有配置并启动 Claude Code。后续直接运行同一命令即可。
四、日常使用命令
4.1 标准交互模式(推荐)
# 进入项目目录后启动
cd /path/to/your-project
bash start-claude-deepseek.sh
4.2 全权自动模式(非 root 用户)
如果你创建了普通用户,可以使用 –dangerously-skip-permissions 跳过所有确认提示:
claude –dangerously-skip-permissions
⚠️ 安全警告:此模式下 Claude Code 会自动执行文件编辑和命令运行,不会询问确认。请确保在正确的项目目录,且代码已备份。
4.3 在 Claude Code 内部常用命令
| /status | 查看当前模型、权限和连接状态 |
| /auto-accept | 开启自动接受所有编辑建议(root 用户推荐) |
| /init | 生成 CLAUDE.md,让 Claude 深度理解项目结构 |
| /clear | 清空对话历史 |
| /cost | 查看本次会话的 API 消耗 |
五、root 用户特殊处理
Claude Code 出于安全考虑,禁止 root 用户使用 –dangerously-skip-permissions。
方案 A:创建普通用户(推荐)
# 创建用户
useradd -m -s /bin/bash dev
# 切换用户
su – dev
# 确保 node 和 claude 在 PATH
export PATH="/usr/local/node-v20.15.0-linux-x64/bin:$HOME/.local/bin:$PATH"
# 复制配置(如需要)
mkdir -p ~/.claude
cp /root/.claude/settings.json ~/.claude/settings.json 2>/dev/null || true
# 现在可以全权运行
claude –dangerously-skip-permissions
方案 B:root 下使用 /auto-accept
claude
进入后输入:
/auto-accept
方案 C:root 下使用 个人推荐这个
claude –permission-mode acceptEdits –allowed-tools "Bash,Read,Write,Edit,Glob,Grep"
六、模型配置说明
| ANTHROPIC_BASE_URL | DeepSeek 兼容接口地址 | https://api.deepseek.com/anthropic(不要加尾部斜杠或 /v1) |
| ANTHROPIC_MODEL | 主模型 | deepseek-v4-pro[1m] |
| ANTHROPIC_DEFAULT_SONNET_MODEL | 中等复杂度任务 | deepseek-v4-pro[1m] |
| ANTHROPIC_DEFAULT_HAIKU_MODEL | 简单/子代理任务 | deepseek-v4-flash |
| CLAUDE_CODE_SUBAGENT_MODEL | 子代理模型 | deepseek-v4-flash |
| CLAUDE_CODE_EFFORT_LEVEL | 推理努力程度 | max |
[1m] 后缀显式请求 1M 上下文窗口,处理大代码库时建议带上。
七、常见问题排查
| bash: line 1: syntax error near unexpected token '<' | 官方安装脚本受地区限制 | 改用本文的 npm 安装方式 |
| GnuTLS recv error (-110) | GitHub 访问受限 | 用清华镜像安装 Node.js |
| –dangerously-skip-permissions cannot be used with root | 安全限制 | 创建普通用户,或进入后用 /auto-accept |
| API Error: streaming failed | 流式传输失败 | 添加 export CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1 |
| 401 Unauthorized | API Key 无效 | 同时设置 ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 为同一 Key |
| 404 model not found | 模型名称错误 | 使用 deepseek-v4-pro[1m] 而非旧版 deepseek-chat |
八、安全建议
九、快速检查清单
部署完成后,逐项确认:
- Node.js 20+ 已安装 (node –version)
- Claude Code 已安装 (claude –version)
- DeepSeek API Key 已填入脚本
- 脚本已运行并测试连接成功
- ~/.bashrc 已包含环境变量配置
- ~/.claude/settings.json 已写入
- 进入 Claude Code 后 /status 显示 DeepSeek 模型
- 输入 hi 能正常收到 DeepSeek 回复
本文基于 Claude Code 官方文档及 DeepSeek API 兼容接口实践整理。





