Ollama 安装使用 CC Switch 配置 Claude Code 使用 TaoToken 的完整指南
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 proxyAnthropic 协议入口→ OllamaOpenAI 协议→ 本地模型。如果你还想让本地模型和云端模型共用一个入口可以在 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:11434macOS / Linux 用export OLLAMA_HOST0.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 --versionTaoToken 这边去控制台拿一个 API Key地址是https://taotoken.net/api。这个 Key 后面会写进 LiteLLM 配置作为云端模型的凭证。如果你暂时只想跑本地模型这一步可以先跳过但建议一起配好因为 CC Switch 的价值就在于多 profile 切换。注意LiteLLM 的 proxy 依赖比较多如果pip install litellm[proxy]卡在下载换国内镜像源重试别用任何网络加速工具直接换源就行。3. 可复制配置litellm_config.yaml 与 CC Switch profileLiteLLM 的核心是配置文件。在任意目录建一个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启动 proxylitellm --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.jsonWindows 是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应该返回一个 JSONdata数组里能看到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 用launchdLinux 用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 的日志默认打在终端把它重定向到文件出问题时翻日志比猜快得多。本地模型和云端模型混用时日志里能清楚看到每个请求走了哪条通道、耗时多少调优的时候很有用。

相关新闻

Allegro模块复用实战:从原理图到PCB的完整流程

Allegro模块复用实战:从原理图到PCB的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 4:04:03 阅读更多 →
C# WinForm嵌入外部EXE窗口的实战方案

C# WinForm嵌入外部EXE窗口的实战方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 4:04:03 阅读更多 →
i茅台自动预约实战:Docker一键部署与避坑指南

i茅台自动预约实战:Docker一键部署与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 4:05:00 阅读更多 →

最新新闻

代币设计,别先纠结总量,先搭建系统运行规则

代币设计,别先纠结总量,先搭建系统运行规则

很多项目在设计代币经济模型时,容易陷入一个典型误区:开篇就讨论代币应该发行多少枚。大家习惯把总量当成代币设计的第一要务,反复斟酌是 1 亿枚、10 亿枚还是 1000 亿枚,仿佛敲定数字,代币经济就搭建完成。但站在产品…

2026/9/30 21:08:11 阅读更多 →
丝杆升降机选型与多台联动配置全指南

丝杆升降机选型与多台联动配置全指南

1. 引言 丝杆升降机(蜗轮丝杆升降机)是工业自动化中常用的直线运动执行机构,广泛应用于升降平台、输送线、舞台机械、光伏跟踪支架等场景。面对「怎么选型」「厂家在哪找」「多台怎么联动」这三个高频问题,本文给出从选型参数、鲁…

2026/9/30 21:08:11 阅读更多 →
Python asyncio 高并发 Modbus TCP 采集实战:200台设备秒级轮询

Python asyncio 高并发 Modbus TCP 采集实战:200台设备秒级轮询

1. 项目缘起与整体架构思路1.1 为什么会有这个采集需求做过机房动环监控或者仓储环境监测的朋友应该都有体会:当温湿度探头数量从几台涨到几十台、上百台之后,传统的轮询方式就开始力不从心了。我之前接手的一个项目,现场有 200 多台支持 POE…

2026/9/30 21:08:11 阅读更多 →
C语言真值问题:非0即真 vs 结果为1,一文讲透

C语言真值问题:非0即真 vs 结果为1,一文讲透

这段困惑,我经历过的“C语言中到底是非0表示真,还是1表示真?”这个问题,太经典了。我敢说,十个学C语言的人,至少有八个在初学阶段被这个问题绕晕过。刷题平台上的讨论区、大学课程群的深夜提问、甚至工作多…

2026/9/30 21:08:11 阅读更多 →
于文华为何淡出?民歌天后主动关掉流量大门只为陪家人

于文华为何淡出?民歌天后主动关掉流量大门只为陪家人

每次刷到那些九十年代的晚会录像,我都有一种说不出的感慨。画面带着旧式滤镜,画质泛着雪花,台上的人笑得很用力,台下的观众鼓掌也特别真诚。前几天我恰好刷到一段老视频,穿红裙的女歌手扎着两条利落的辫子,…

2026/9/30 21:08:11 阅读更多 →
SGD梯度更新实战解析

SGD梯度更新实战解析

根据黑板上的第二问要求,我们需要使用 SGD(随机梯度下降) 来求解。1. 题目条件提取从图片中可以看到具体的设定:初始参数:$w_0 0$, $b_0 0$学习率:$\alpha 0.1$ (图中写作 $\eta0.1$ 或 $\al…

2026/9/30 21:07:10 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/30 15:27:04 阅读更多 →