Files
liaohch3--claude-tap/docs/guides/deepseek-claude-code.zh.md
wehub-resource-sync f3d80b4628
Auto Release / auto-release (push) Failing after 1s
CI / lint (push) Failing after 0s
CI / screenshot-quality (push) Failing after 3s
CI / pr-policy (push) Has been skipped
CI / test (3.11) (push) Failing after 0s
CI / test (3.12) (push) Failing after 0s
CI / test (3.13) (push) Failing after 3s
CI / coverage (push) Failing after 1s
Legibility / legibility (push) Failing after 3s
chore: import upstream snapshot with attribution
2026-07-13 12:31:48 +08:00

4.5 KiB
Raw Permalink Blame History

Claude Code 搭配 DeepSeek API

本文说明如何让 Claude Code 通过 DeepSeek 的 Anthropic 兼容 API 运行,并用 claude-tap 捕获这条流量。

DeepSeek 官方 Claude Code 集成会把 Claude Code 指向 https://api.deepseek.com/anthropic,主模型使用 deepseek-v4-pro[1m]。如果同时使用 claude-tap,继续保留这套 Claude Code 环境即可。claude-tap 会先从 ANTHROPIC_BASE_URL 读取 DeepSeek 上游,再把 Claude Code 指向本地代理。

English version: Claude Code with DeepSeek API.

环境变量

Claude Code 使用 ANTHROPIC_AUTH_TOKEN 传入 DeepSeek key,并建议清掉 ANTHROPIC_API_KEY,避免 Claude Code 触发 API key 冲突提示。

export ANTHROPIC_AUTH_TOKEN="<你的 DeepSeek API key>"
unset ANTHROPIC_API_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_EFFORT_LEVEL=max
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic

claude-tap 会在改写被启动的 Claude Code 进程之前,把当前 ANTHROPIC_BASE_URL 作为真实上游目标。只有想手动覆盖时才需要传 --tap-target

使用 claude-tap 捕获

正常启动 claude-tap

claude-tap -- --permission-mode bypassPermissions

一次性非交互 smoke test

claude-tap \
  -- \
  --permission-mode bypassPermissions \
  -p 'Use Bash to run pwd, then reply with DEEPSEEK_CLAUDE_TAP_OK.'

进程退出后打开自动生成的 HTML

open .traces/*/trace_*.html

也可以从 JSONL 重新导出 HTML:

claude-tap export .traces/2026-05-06/trace_153111.jsonl -o trace.html

TLS 与本地代理

如果上游请求报 SSLCertVerificationError,但直接 curl 能成功,通常是 Python 进程使用的 CA bundle 不信任本地出站代理。可以显式指定系统 CA bundle 或代理使用的 CA bundle

# macOS/Homebrew 常见路径是 /etc/ssl/cert.pem。
SSL_CERT_FILE=/etc/ssl/cert.pem claude-tap

Debian/Ubuntu 的系统 CA bundle 通常是 /etc/ssl/certs/ca-certificates.crt

兼容性说明

Claude Code 2.1.128 和 2.1.131 可能把 metadata.user_id 作为 JSON 字符串发送。DeepSeek 的 Anthropic 兼容端点会拒绝这个值,因为它只接受字母、数字、下划线和连字符。claude-tap 只会在上游目标是 https://api.deepseek.com/anthropic 时规范化非法的 metadata.user_id;默认 Anthropic 流量保持不变。

DeepSeek 对 Claude Code 启动时的 /v1/models?limit=1000 预检可能返回 404。只要 /v1/messages 成功,Claude Code 仍可继续运行。下面的验证运行设置了 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1,用于减少无关启动流量。

claude-tap 会脱敏 Authorization / x-api-key 请求头,但不会全局清洗 prompt、请求 body 或工具输出。不要把 key 写进 prompt、脚本输出或 trace 内容里。

已验证运行

2026-05-06 验证环境:

  • DeepSeek Anthropic API 直连调用返回 HTTP 200
  • Claude Code 2.1.131
  • Claude Code 主对话模型:deepseek-v4-pro[1m]
  • Claude Code 标题和辅助调用模型:deepseek-v4-flash
  • ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
  • claude-tap
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

真实 tmux 串行运行结果:

  • 3 轮用户对话
  • 11 个 /v1/messages 请求
  • 6 个唯一 Bash tool_use block,每轮 2 个
  • 6 个匹配的 tool_result block
  • 从真实 .traces/ trace 生成 HTML viewer
  • 使用 Playwright 多次鼠标滚动后截图

概览:

DeepSeek Claude Code serial overview

滚动后的详情区域:

DeepSeek Claude Code serial detail scroll

滚动后的侧边栏导航:

DeepSeek Claude Code serial sidebar scroll

继续滚动后的最终回复:

DeepSeek Claude Code serial final response

参考文档