如何在 Claude Code 中使用 DeepSeek(或任意模型)
通过本地网关让 Claude Code 使用 DeepSeek、OpenRouter、Ollama 或任意 OpenAI 兼容模型:一键接入、settings.json 的具体改动、协议转换与路由一次讲清。
Claude Code 是目前最好用的终端编程智能体之一,但它默认只说一种“语言”:Anthropic Messages。想在同一套工作流里试试 DeepSeek、OpenRouter 上的模型,或者本机 Ollama 跑的模型,就需要一个中间层:对 Claude Code 说 Messages,对上游说它们各自的协议。
本文用 AutoJev 来完成这件事。AutoJev 是一款免费、开源的桌面应用,会在本机运行一个本地网关 http://127.0.0.1:9527,供各种 AI 智能体统一调用。读完本文,你将:
- 只添加一次 DeepSeek(或任意服务商);
- 一键接入 Claude Code;
- 弄清
~/.claude/settings.json里到底改了什么; - 了解协议转换能做什么、不能做什么;
- 用路由让 Claude Code 在多个模型间切换,而不必再手动改配置。
为什么 Claude Code 需要“翻译”
Claude Code 会把请求以 Anthropic Messages 格式发送到 ANTHROPIC_BASE_URL 指向的地址。而 DeepSeek 的主力接口、OpenRouter、Ollama 以及大多数模型平台提供的是 OpenAI Chat Completions 格式。两者在系统提示词、工具定义、工具调用与结果、流式事件、用量统计等方面的表示方式都不一样。
当然,你也可以把 ANTHROPIC_BASE_URL 直接指向某个提供 Anthropic 兼容接口的服务商,但这样就被绑定在这一家上了,每次换模型都得手动改配置。
AutoJev 就站在两者中间:Claude Code 用 Messages 协议请求 127.0.0.1:9527,AutoJev 选出模型,把请求转换成该模型上游支持的协议,从你的电脑直接调用服务商,再把响应(包括流式输出和工具调用)转换回 Messages。
Claude Code ──Messages──▶ AutoJev(127.0.0.1:9527)──Chat Completions──▶ DeepSeek
│
└──────────────Chat Completions──▶ OpenRouter / Ollama第一步:安装 AutoJev
从下载页获取 AutoJev,支持 macOS(Apple Silicon 与 Intel)、Windows x64 和 Linux x64。不需要注册账号,也没有付费套餐,使用你自己的服务商密钥即可。
打开应用后,本地网关会在 9527 端口启动。
第二步:添加 DeepSeek 服务商
进入「服务商」,选择 DeepSeek 预设,接口地址会自动填好:
https://api.deepseek.com填入 DeepSeek API Key,点击测试。密钥保存在本地的 ~/.autojev/autojev.db 中。需要提醒的是,密钥目前以明文形式存储,请像保护其他凭据文件一样保护它。
不用 DeepSeek?同样的步骤适用于 OpenAI、OpenRouter、Ollama 预设;其他接口可以用「OpenAI 兼容」或「Anthropic 兼容」接入,例如 Kimi(Moonshot)、GLM(智谱)、Qwen(DashScope)、SiliconFlow、vLLM、LM Studio 等。如果你之前在 CC Switch 或 Termany 里配置过服务商,可以直接导入,不必重新填写。
第三步:添加模型
进入「模型」,为 DeepSeek 服务商添加一个模型:
- API 类型:
chat_completions。这里描述的是上游的协议,与 Claude Code 无关。不要因为 Claude Code 使用 Messages 就把它设成messages——转换由 AutoJev 在入口处完成。 - 模型 ID:照抄 DeepSeek API 文档中的模型 ID,例如
deepseek-chat。 - 价格:每百万 token 的输入、输出与缓存价格,用于「用量」中的费用估算和成本优先路由。
这样,模型就以 deepseek/deepseek-chat(服务商 ID / 模型 ID)的形式提供给智能体了。
建议顺手跑一次测速:AutoJev 会发送三次简短的流式请求,记录首字延迟和每秒输出 token 数,让你在开始长时间会话前心里有数。
第四步:一键接入 Claude Code
进入「智能体」,AutoJev 会检测到 Claude Code,并显示它的配置路径 ~/.claude/settings.json。选择刚才的模型(也可以多选模型和路由),点击「连接」。
首次修改前,AutoJev 会先备份原文件,然后写入以下字段:
{
"model": "deepseek/deepseek-chat",
"modelPicker": {
"replaceBuiltInOptions": true,
"options": [
{
"model": "deepseek/deepseek-chat",
"label": "DeepSeek Chat",
"description": "AutoJev · deepseek/deepseek-chat",
"behavesAs": "claude-sonnet-4-6"
}
]
},
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:9527",
"ANTHROPIC_AUTH_TOKEN": "autojev-local-claude",
"ANTHROPIC_MODEL": "deepseek/deepseek-chat",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek/deepseek-chat",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek/deepseek-chat",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek/deepseek-chat",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "deepseek/deepseek-chat"
}
}逐项说明:
ANTHROPIC_BASE_URL:把 Claude Code 的所有请求发往本地网关。注意末尾没有/v1,因为 Anthropic 客户端会自己拼上/v1/messages。ANTHROPIC_AUTH_TOKEN:只是占位符。本地网关不校验它,只用它在「日志」里把请求标记为来自 Claude Code。你真正的 DeepSeek 密钥不会出现在 Claude Code 的配置里。ANTHROPIC_MODEL及各个ANTHROPIC_DEFAULT_*_MODEL:把 Claude Code 的所有模型槽位都指向你的选择,原本会用小模型处理的后台任务也会经过 AutoJev。modelPicker:用你选中的模型和路由替换内置选项,这样就能在 Claude Code 的模型菜单里直接切换。behavesAs只影响 Claude Code 客户端侧的兼容行为,不会改变实际调用的上游模型。
settings.json 中的其他字段——主题、权限、hooks 等——都不会被改动。
如果 Claude Code 已经在运行,重启一下再试:
claude "用三句话说明这个仓库是做什么的"回到 AutoJev 打开「日志」,你会看到这条请求:智能体为 Claude Code,模型 deepseek-chat,服务商 DeepSeek,以及 token 数、首字节与总耗时、预估费用。
第五步:干净地断开
想让 Claude Code 回到原来的配置时,点击「断开」即可。AutoJev 会恢复备份的配置,同时保留你之后做的、与它写入字段不冲突的修改。
你也可以使用「停止并恢复配置」一次性恢复所有已接入的智能体并关闭网关,或在托盘菜单选择「Quit AutoJev (restore agents)」。下次启动时,AutoJev 会按保存的偏好重新接入;你手动断开的智能体保持断开。
协议转换能做什么、不能做什么
AutoJev 支持 Anthropic Messages、OpenAI Chat Completions、OpenAI Responses 三者之间全部六个方向的转换。对“Claude Code + Chat Completions 模型”这个组合来说,包括:
- 系统指令和文本对话历史;
- 图片(URL 与 base64);
- 函数工具定义、工具选择、工具调用与结果,并保持调用 ID 稳定——这正是 Claude Code 编辑文件、执行命令的基础;
- 流式文本与流式工具参数;
- token 用量和符合协议格式的错误信息。
同时要注意几条边界:
- 转换不会增加能力。 模型本身不支持工具或图片,路由过去也不会变得支持。做智能体任务时,请选择工具调用能力好的模型。
- thinking 块会被丢弃。 各家专有的思考内容、加密推理和签名无法跨协议迁移。如果你的工作流依赖模型的推理输出,请使用原生协议一致的模型。
- 部分功能没有对应物。 托管工具、音频和文件内容在转换时会被明确拒绝,而不是悄悄忽略。
完整说明见协议转换。
进阶:用路由代替写死的模型
把 Claude Code 指向单个模型当然可以,但网关真正的价值在于:换模型不用再动 settings.json。在 AutoJev 中创建一条路由,然后让 Claude Code 连接这条路由。路由对智能体暴露为 autojev/<路由 ID>。
几种常用搭配:
| 路由 | 策略 | 适用场景 |
|---|---|---|
autojev/cheap | 智能选择,成本优先 | 在本地选出满足能力要求、费用最低的候选 |
autojev/fast | 智能选择,速度优先 | 根据近期测速数据在本地选择,不调用 Jev |
autojev/quality | 智能选择,质量优先 | 由 OpenRouter 上的 Jev 决策模型来选 |
autojev/mixed | 负载均衡 | 按权重把新会话分配给 DeepSeek 和某个 OpenRouter 模型 |
对智能体会话来说,下面几点很关键:
- 会话保持:同一会话中的请求会保持已选模型(只要它仍可用),Claude Code 不会在任务进行到一半时换模型。
- 故障转移:DeepSeek 在开始输出之前返回连接错误或 401、402、403、408、429、5xx 时,AutoJev 会尝试下一个候选。默认最多尝试 4 次、冷却 30 秒,并遵循
Retry-After。已经开始流式输出的响应不会重放,避免重复执行工具操作。 - 决策隐私:质量优先和均衡路由只会把路由元数据(任务特征与候选模型信息)发给 Jev,不会发送对话内容。Jev 不可用或置信度低于 0.5 时,自动回退到加权负载均衡。
其他客户端也能共用
同一个网关可以服务所有智能体。Codex、Gemini CLI、OpenCode、Hermes 等都能在同一个「智能体」页面接入;任何支持自定义 Base URL 和密钥的客户端,都可以使用「连接参数」对话框。Anthropic 协议客户端的参数如下:
ANTHROPIC_BASE_URL=http://127.0.0.1:9527
ANTHROPIC_API_KEY=autojev-local-my-tool
ANTHROPIC_MODEL=autojev/cheapautojev-local- 后面的后缀会在「日志」中标记这个客户端的请求。
排错
Claude Code 还在用 Anthropic 官方接口。 重启 Claude Code,它只在启动时读取 settings.json;同时确认「智能体」页面显示已连接。
请求返回 gateway_paused。 网关处于暂停状态,在 AutoJev 中恢复即可。
小模型的工具调用表现奇怪。 协议转换是忠实的,但模型本身得擅长工具调用。换一个更强的模型,或者用带故障转移的路由。
想看清楚到底发了什么。 使用调试台的对话模式或 cURL 模式,把 API 类型切到 Messages,查看原始 JSON 响应。
小结
借助 AutoJev,Claude Code 依旧说 Anthropic Messages,请求却可以发往 DeepSeek、OpenRouter、Ollama 或任意 OpenAI 兼容模型。一键接入只会在 ~/.claude/settings.json 中写入少量可还原的字段;协议转换负责工具调用和流式输出;路由让你以后换模型不再需要改配置。
延伸阅读: