☰
Ollama 安装使用 CC Switch 配置 Claude Code 使用 TaoToken 的完整指南
2026/9/29 4:00:48 网站建设 项目流程

1. 为什么本地 Ollama 不能直接喂给 Claude Code

很多人装完 Ollama、拉下模型、ollama run能聊天之后,第一反应就是把 Claude Code 的 API 地址改成http://127.0.0.1:11434,然后发现根本连不上,或者连上了也报一堆格式错误。我试过这个路子,结论很明确:Ollama 的接口是 OpenAI 风格的/v1/chat/completions,而 Claude Code 走的是 Anthropic 的/v1/messages协议,两边的请求体、响应体、工具调用字段都不一样,硬指过去必然失败。

所以中间必须夹一层协议转换。CC Switch 在这里扮演的是「配置切换器」的角色,它本身不负责协议转换,只负责把 Claude Code 的环境变量(ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、模型名)按不同 profile 存起来,一键切换。真正做协议翻译的是 LiteLLM 的 proxy 模式,它对外暴露 Anthropic 兼容的/v1/messages,对内把请求翻译成 Ollama 能懂的格式转发到11434。

链路是这样的:Claude Code → CC Switch 选中的 profile → LiteLLM proxy(Anthropic 协议入口)→ Ollama(OpenAI 协议)→ 本地模型。如果你还想让本地模型和云端模型共用一个入口,可以在 LiteLLM 的配置里再加一条指向 TaoToken 的 Anthropic 通道,这样 CC Switch 里切 profile 就能在「本地小模型」和「云端强模型」之间来回换,不用改任何代码。

这篇就按「Ollama 已装好 → 装 LiteLLM → 写配置 → CC Switch 加 profile → 启动验证 → 排错」的顺序走一遍,配置骨架都能直接复制。

2. 前置准备:Ollama、LiteLLM 与 TaoToken 通道

先说 Ollama 这边。确认服务在跑,并且监听地址是 Claude Code 所在机器能访问到的。默认只监听127.0.0.1:11434,如果 Claude Code 和 Ollama 不在同一台机器,需要让它监听0.0.0.0。Windows 下设置环境变量后重启 Ollama 服务:

setx OLLAMA_HOST 0.0.0.0:11434

macOS / Linux 用:

export OLLAMA_HOST=0.0.0.0:11434 ollama serve

然后确认模型在列表里:

ollama list

假设你拉的是qwen2.5-coder:7b这类适合编码的模型,记住这个名字,后面配置里要用。

LiteLLM 用 pip 装,建议单独建虚拟环境,避免和系统 Python 打架:

python -m venv litellm-env # Windows litellm-env\Scripts\activate # macOS / Linux source litellm-env/bin/activate pip install "litellm[proxy]"

装完验证一下:

litellm --version

TaoToken 这边,去控制台拿一个 API Key,地址是https://taotoken.net/api。这个 Key 后面会写进 LiteLLM 配置,作为云端模型的凭证。如果你暂时只想跑本地模型,这一步可以先跳过,但建议一起配好,因为 CC Switch 的价值就在于多 profile 切换。

注意:LiteLLM 的 proxy 依赖比较多,如果pip install "litellm[proxy]"卡在下载,换国内镜像源重试,别用任何网络加速工具,直接换源就行。

3. 可复制配置:litellm_config.yaml 与 CC Switch profile

LiteLLM 的核心是配置文件。在任意目录建一个litellm_config.yaml,下面这份骨架同时挂了本地 Ollama 和 TaoToken 两条通道:

model_list: - model_name: local-coder litellm_params: model: ollama/qwen2.5-coder:7b api_base: http://127.0.0.1:11434 - model_name: taotoken-claude litellm_params: model: anthropic/claude-sonnet-4-20250514 api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY litellm_settings: drop_params: true set_verbose: false

几个关键点解释一下。model_name是 LiteLLM 对外暴露的别名,CC Switch 里填的就是这个名字。litellm_params.model里的ollama/前缀告诉 LiteLLM 用 Ollama 的适配器,anthropic/前缀走 Anthropic 适配器。api_key用os.environ/TAOTOKEN_API_KEY从环境变量读,不要把 Key 明文写进文件。

启动前先设环境变量:

# Windows set TAOTOKEN_API_KEY=你的Key # macOS / Linux export TAOTOKEN_API_KEY=你的Key

启动 proxy:

litellm --config litellm_config.yaml --port 4000 --host 0.0.0.0

看到Proxy Server Started on http://0.0.0.0:4000就说明起来了。

接下来是 CC Switch 的 profile。CC Switch 的配置存在~/.claude/apiConfigs.json(Windows 是C:\Users\你的用户名\.claude\apiConfigs.json),可以直接编辑,也可以在图形界面里加。手动加的话,往数组里塞一个对象:

{ "name": "local-ollama", "config": { "env": { "ANTHROPIC_BASE_URL": "http://127.0.0.1:4000", "ANTHROPIC_AUTH_TOKEN": "sk-litellm-local" }, "model": "local-coder" } }

再塞一个走 TaoToken 的:

{ "name": "taotoken-cloud", "config": { "env": { "ANTHROPIC_BASE_URL": "http://127.0.0.1:4000", "ANTHROPIC_AUTH_TOKEN": "sk-litellm-local" }, "model": "taotoken-claude" } }

注意两个 profile 的ANTHROPIC_BASE_URL都指向 LiteLLM 的4000端口,区别只在model字段。ANTHROPIC_AUTH_TOKEN填什么其实 LiteLLM 默认不校验,但 Claude Code 要求这个字段非空,随便填一个占位即可。这样切 profile 就等于切模型,本地和云端共用一套入口。

如果你不想让 LiteLLM 做云端转发,也可以让 CC Switch 的云端 profile 直接指向 TaoToken 的 API 地址,省掉一层。但统一走 LiteLLM 的好处是日志集中、限流和重试策略好配。

4. 启动验证:从 curl 到 Claude Code 实际请求

配置写完别急着开 Claude Code,先分层验证。

第一层,确认 LiteLLM 活着:

curl http://127.0.0.1:4000/v1/models

应该返回一个 JSON,data数组里能看到local-coder和taotoken-claude两个名字。如果这里就报连接拒绝,说明 proxy 没起来或者端口被占。

第二层,直接打 Anthropic 格式的 messages 接口,验证协议转换是否正常:

curl http://127.0.0.1:4000/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-litellm-local" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "local-coder", "max_tokens": 128, "messages": [{"role": "user", "content": "用一句话说明什么是递归"}] }'

能返回带content字段的 JSON 就说明 LiteLLM 到 Ollama 这段通了。如果返回 400 或 500,看 LiteLLM 终端的日志,通常会打印出上游返回的原始错误。

第三层,验证 TaoToken 通道:

curl http://127.0.0.1:4000/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-litellm-local" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "taotoken-claude", "max_tokens": 128, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'

第四层,才是 Claude Code。在 CC Switch 里启用local-ollamaprofile,然后开一个新终端:

claude

进去之后随便问一句,看是否正常流式返回。如果 Claude Code 报401或invalid api key,检查ANTHROPIC_AUTH_TOKEN是否为空;报model not found,检查 profile 里的model字段和 LiteLLM 配置里的model_name是否完全一致,大小写敏感。

5. 本篇常见报错排查

报错一:Connection refused到 11434。Ollama 没监听对地址。ollama list能跑不代表服务对外可达,检查OLLAMA_HOST是否设成0.0.0.0:11434,设完要重启 Ollama 进程,Windows 下在任务栏退出再重开。

报错二:LiteLLM 启动报ModuleNotFoundError: No module named 'websockets'。[proxy]的依赖没装全,单独补:

pip install websockets

报错三:anthropic.BadRequestError: model does not support tool use。本地小模型的工具调用能力弱,Claude Code 大量依赖 tool use 来读写文件。7B 以下的模型经常在这块翻车,换qwen2.5-coder:14b或更大,或者本地 profile 只用来做问答,编码任务切到 TaoToken 的云端 profile。

报错四:CC Switch 切了 profile 但 Claude Code 没生效。Claude Code 读的是启动时的环境变量,切 profile 后要重开终端。另外确认 CC Switch 写的是~/.claude/apiConfigs.json,有些版本会写到别的路径,用claude config list核对当前生效的配置。

报错五:TaoToken 通道返回 401。环境变量TAOTOKEN_API_KEY没设,或者设了但 LiteLLM 进程是在设之前启动的。环境变量是进程启动时读取的,改完要重启 LiteLLM。

报错六:响应特别慢或超时。本地模型受显存限制,首次加载要几十秒。LiteLLM 默认超时可能不够,在litellm_settings里加request_timeout: 600。

6. 把入口固定下来:长期编码与 Key 管理

跑通之后,日常使用建议把 LiteLLM 做成开机自启的服务,不然每次都要手动开终端。Windows 可以用nssm注册成服务,macOS 用launchd,Linux 用systemd,核心就是把litellm --config ... --port 4000这条命令包起来。

CC Switch 里可以多存几个 profile:本地快速问答一个、TaoToken 云端编码一个、如果团队有多个 Key 再按项目分。切换成本就是点一下,比改环境变量省事。

TaoToken 的 Key 在控制台的 API Keys 页面管理,建议按用途分 Key,方便排查是哪个项目在消耗额度。接入文档里有不同语言 SDK 的示例,如果你不用 LiteLLM 这层,也可以让 Claude Code 直接指向 TaoToken 的 Anthropic 兼容入口,配置方式和上面 profile 里写的一样,只是ANTHROPIC_BASE_URL换成https://taotoken.net/api。

模型对话页面可以快速验证某个模型当前是否可用,不用每次都开 Claude Code 试。长期跑编码 Agent 的话,Coding Plan 的额度模型比按量计费更可控,尤其是让 Agent 连续改多个文件的时候。

最后留一个实用习惯:LiteLLM 的日志默认打在终端,把它重定向到文件,出问题时翻日志比猜快得多。本地模型和云端模型混用时,日志里能清楚看到每个请求走了哪条通道、耗时多少,调优的时候很有用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询