☰
手把手教你用 Ollama 零成本离线运行 Claude Code:把 Base URL 改到 TaoToken 的完整配置
2026/10/15 21:32:03 网站建设 项目流程

1. 为什么要在本地用 Ollama 跑 Claude Code

Claude Code 是 Anthropic 官方推出的终端编程助手,它能直接读写项目文件、执行 shell 命令、自动修 Bug,交互体验接近一个坐在你旁边的工程师。但官方订阅价格对个人开发者不算友好,而且所有代码都要发到远端,公司内部项目往往不允许。

Ollama 从 0.15 版本开始兼容 Anthropic Messages API 协议,这件事的意义在于:Claude Code 客户端只认ANTHROPIC_BASE_URL这个环境变量,只要有一个服务能按 Anthropic 的消息格式响应,它就会把对方当成官方后端。于是我们可以让 Claude Code 把请求发给本地 Ollama,用 Qwen2.5-Coder、DeepSeek、gpt-oss 这类开源模型完成日常的增删改查、脚本生成、MVP 搭建。

这套方案适合三类人:一是想零成本体验 Claude Code 工作流的个人开发者;二是代码不能出内网、需要离线推理的团队;三是本地算力有限、想通过 TaoToken 这类兼容 Anthropic 协议的网关把请求转发到云端模型的人。本文会先讲纯本地 Ollama 的配置,再讲当本地模型扛不住复杂任务时,如何把 Base URL 切到 TaoToken 的 API 通道,形成"本地优先、云端兜底"的双通道结构。

需要提前说明的是,Ollama 默认监听http://localhost:11434,Claude Code 需要的路径是/v1/messages,Ollama 已经内置了这个端点,不需要额外装反向代理。整个链路是:Claude Code → HTTP 请求 → Ollama → 本地模型推理 → 返回 Anthropic 格式响应。理解这条链路,后面排查问题会轻松很多。

2. 前置准备:Ollama 安装与 Claude Code 客户端

2.1 安装 Ollama 并确认版本

去 Ollama 官网下载对应平台的安装包,Windows 是.exe,macOS 是.dmg,Linux 用一条脚本。装完后打开终端验证:

ollama --version # 输出参考:ollama version is 0.15.2

版本必须 ≥ 0.15.0,低于这个版本没有 Anthropic Messages API 兼容层,Claude Code 会直接报 404。如果你之前装过旧版,先卸载再装新版,或者用ollama update升级。

2.2 拉取适合代码生成的模型

模型选择直接决定体验。我实测下来,20B 级别的模型在 16GB 内存的机器上能跑,但速度一般;7B 级别流畅但复杂逻辑容易翻车。推荐两个方向:

# 本地主力:gpt-oss:20b,平衡速度与代码质量 ollama pull gpt-oss:20b # 备选:Qwen2.5-Coder 系列,中文注释友好 ollama pull qwen2.5-coder:7b # 复杂任务可临时调用云端大模型(Ollama 提供一定免费额度) ollama pull qwen3-coder:480b-cloud

拉取完成后用ollama list确认模型已在本地。注意模型文件动辄几个 GB,磁盘空间要留够。

2.3 安装 Claude Code 客户端

Windows PowerShell 里直接跑官方安装脚本:

irm https://claude.ai/install.ps1 | iex

macOS 和 Linux 用 npm 更省事:

npm install -g @anthropic-ai/claude-code

装完后如果终端提示claude: command not found,说明安装目录没进 PATH。Windows 下通常是%USERPROFILE%\.local\bin,手动加进系统环境变量再重开终端即可。这一步踩坑的人最多,别急着怀疑安装失败。

2.4 启动 Ollama 服务并确认端口

Ollama 安装后一般会作为后台服务自动运行。手动确认:

# 检查服务是否在监听 curl http://localhost:11434/api/tags

如果返回模型列表的 JSON,说明服务正常。如果连接被拒绝,手动启动:

# Linux/macOS ollama serve # Windows 服务未启动时,重新打开 Ollama 应用即可

默认端口 11434,如果被占用可以改OLLAMA_HOST环境变量,但改完记得同步修改 Claude Code 的 Base URL。

3. 可复制配置:Base URL 与 Key 的完整片段

这一节是全文核心,配置写错一个字都跑不通。Claude Code 读取三个环境变量:ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_API_KEY。本地 Ollama 不校验 Key,随便填一个非空字符串即可,但变量必须存在,否则客户端会报鉴权错误。

3.1 纯本地 Ollama 配置(PowerShell)

# 指向本地 Ollama 服务 $env:ANTHROPIC_BASE_URL = "http://localhost:11434" # 伪造令牌,Ollama 不校验但变量不能为空 $env:ANTHROPIC_AUTH_TOKEN = "ollama" $env:ANTHROPIC_API_KEY = "none" # 启动并指定本地模型 claude --model gpt-oss:20b

3.2 纯本地 Ollama 配置(bash/zsh)

export ANTHROPIC_BASE_URL="http://localhost:11434" export ANTHROPIC_AUTH_TOKEN="ollama" export ANTHROPIC_API_KEY="none" claude --model gpt-oss:20b

3.3 切换到 TaoToken 通道的配置

当本地模型处理不了复杂重构,或者你人在外面用笔记本、本地没跑 Ollama 时,把 Base URL 换成 TaoToken 的 API 地址即可,其余变量结构不变:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="你的 TaoToken API Key" export ANTHROPIC_API_KEY="你的 TaoToken API Key" claude --model claude-sonnet-4-5

Key 在 TaoToken 控制台的 API Keys 页面生成,模型 ID 用官方命名即可。这套配置的好处是:本地和云端共用同一份 Claude Code 客户端,只切换环境变量,工作流完全一致。

3.4 用 settings.json 固化配置

每次开终端都 export 太麻烦,Claude Code 支持项目级配置文件。在项目根目录建.claude/settings.json:

{ "env": { "ANTHROPIC_BASE_URL": "http://localhost:11434", "ANTHROPIC_AUTH_TOKEN": "ollama", "ANTHROPIC_API_KEY": "none" }, "model": "gpt-oss:20b" }

如果要走 TaoToken,把ANTHROPIC_BASE_URL改成https://taotoken.net/api,两个 Key 字段填真实 Key,model改成对应模型 ID。这个文件可以提交到团队仓库,新人 clone 下来就能用,省去口口相传的配置成本。

注意:.claude/settings.json里的 Key 是明文,走 TaoToken 时建议用.claude/settings.local.json并加进.gitignore,避免密钥泄露。

3.5 三件套对照表

场景Base URLKeyModel ID
本地 Ollamahttp://localhost:11434ollama(任意非空)gpt-oss:20b
TaoToken 云端https://taotoken.net/api控制台生成的 Keyclaude-sonnet-4-5
远程 Ollamahttp://你的服务器IP:11434ollamaqwen2.5-coder:7b

三件套缺一不可,尤其是 Model ID,写错会直接报模型不存在。

4. 验证请求:一条命令确认链路走通

配置写完别急着开干,先用最小请求验证链路。Claude Code 本身没有 ping 命令,但我们可以直接对 Base URL 发一条 Anthropic 格式的请求,看返回结构对不对。

4.1 用 curl 直接打 Ollama 的 messages 端点

curl http://localhost:11434/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: ollama" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "gpt-oss:20b", "max_tokens": 128, "messages": [ {"role": "user", "content": "用一句话说明什么是递归"} ] }'

如果返回 JSON 里带content字段和模型生成的文本,说明 Ollama 的 Anthropic 兼容层工作正常。如果返回 404,检查 Ollama 版本;返回 401,检查x-api-key头是否带上。

4.2 用 Claude Code 做端到端验证

环境变量设好后,进入一个空目录,直接启动:

claude --model gpt-oss:20b

进去后输入一句简单指令,比如"帮我写一个打印当前时间的 Python 脚本"。观察两件事:一是终端有没有正常流式输出,二是它有没有真的去创建文件。如果它回复"需要先初始化 Git",说明工具链联动已经生效,回一句"帮我初始化"即可。

4.3 验证 TaoToken 通道

切换 Base URL 后重复上面的 curl,把地址换成https://taotoken.net/api/v1/messages,Key 换成真实 Key:

curl https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: 你的Key" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 128, "messages": [{"role": "user", "content": "回复 OK"}] }'

返回正常文本就说明通道打通。这一步能帮你把"客户端配置问题"和"服务端问题"彻底分开,排障效率翻倍。

4.4 实测一个完整任务

我试过让本地 gpt-oss:20b 写一个单文件看板应用,需求是"新增任务、拖拽换位、LocalStorage 持久化"。它把 HTML/CSS/JS 全写在一个文件里,dragstart 和 drop 监听逻辑都补上了,还主动执行了打开浏览器的命令。复杂逻辑上确实不如云端大模型,但日常脚本和 CRUD 完全够用。

5. 常见报错排查:401、proxy failed、reading choices

配置过程中最容易撞的几个坑,我按报错原文整理成对照表,遇到直接查。

5.1 401 Unauthorized

API Error: 401 {"type":"error","error":{"type":"authentication_error"}}

原因通常是ANTHROPIC_AUTH_TOKEN或ANTHROPIC_API_KEY为空。Ollama 虽然不校验,但 Claude Code 客户端在发请求前会检查变量是否存在,为空直接本地拦截。解决:两个变量都设成非空字符串,本地填ollama,走 TaoToken 填真实 Key。

5.2 local proxy failed / connection refused

Error: connect ECONNREFUSED 127.0.0.1:11434

Ollama 服务没起来,或者端口不是 11434。先curl http://localhost:11434/api/tags确认,连不上就手动ollama serve。如果改过OLLAMA_HOST,Base URL 要同步改。Windows 上还有一种情况是 Ollama 应用没启动,托盘图标里点一下即可。

5.3 reading 'choices' of undefined

TypeError: Cannot read properties of undefined (reading 'choices')

这个报错说明客户端收到了 OpenAI 格式的响应,但 Claude Code 期望 Anthropic 格式。常见于 Base URL 指向了只支持 OpenAI 协议的端点。解决:确认地址是http://localhost:11434(Ollama 的 Anthropic 兼容端点)或https://taotoken.net/api,不要指向/v1/chat/completions这类 OpenAI 路径。

5.4 OAuth 相关报错

OAuth error: invalid_grant

Claude Code 启动时会尝试走官方 OAuth 流程,如果检测到ANTHROPIC_BASE_URL被改写但仍残留官方登录态,会报这个错。解决:清掉~/.claude下的凭据缓存,或者用claude logout退出官方账号,让客户端完全走环境变量指定的通道。

5.5 模型不存在

model "xxx" not found

Model ID 拼写错误,或者模型没拉取。ollama list看本地有什么,ollama pull补拉。走 TaoToken 时确认模型 ID 与控制台文档一致。

5.6 响应极慢或超时

本地模型推理速度取决于显存和内存。20B 模型在纯 CPU 上跑,首 token 可能要等十几秒。可以换更小的模型,或者把max_tokens调低。如果走 TaoToken 还慢,检查本地网络到网关的连通性。

排障顺序建议:先 curl 打 Base URL 确认服务端,再启动 Claude Code 确认客户端,最后看模型 ID。三层分开定位,比盲目改配置快得多。

6. 本地与云端双通道的长期用法

纯本地方案的优势是零成本和数据不出内网,但本地模型在复杂重构、长上下文推理上确实有天花板。我的做法是保留两套环境变量,用 shell 别名快速切换:

# ~/.bashrc 或 ~/.zshrc alias cc-local='ANTHROPIC_BASE_URL=http://localhost:11434 ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_API_KEY=none claude --model gpt-oss:20b' alias cc-cloud='ANTHROPIC_BASE_URL=https://taotoken.net/api ANTHROPIC_AUTH_TOKEN=$TAOTOKEN_KEY ANTHROPIC_API_KEY=$TAOTOKEN_KEY claude --model claude-sonnet-4-5'

日常改 Bug、写脚本用cc-local,遇到需要深度推理的任务切cc-cloud。TaoToken 的 Coding Plan 适合长期高频编码场景,按量计费比订阅制灵活,具体额度在控制台能看到。如果你想把本地 Ollama 暴露给团队用,可以在内网服务器上跑 Ollama,把 Base URL 指向那台机器的 IP,团队成员共用一份算力,比每人本地跑一份模型省资源。

配置这件事,跑通一次之后就是复制粘贴。真正花时间的是模型选型和提示词调优,那部分只能靠实际项目慢慢磨。先把链路打通,剩下的交给日常使用去验证。

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

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

立即咨询