claude code 安装配置全流程:从 npm 到 ollama 本地模型接入 1. 从零跑通 claude code 本地链路Node.js 环境与 npm 安装踩坑记录claude code 是 Anthropic 推出的终端 AI 编程助手能直接在命令行里读写项目文件、执行命令、跑测试适合习惯在终端里干活的开发者。它默认走 Anthropic 官方接口但国内网络环境下直接调用会碰到地区限制所以很多人会转向本地模型方案——用 ollama 跑一个开源模型再把 claude code 的请求指过去。这篇就按“Node.js 环境准备 → npm 安装 claude code → 配置 ollama 本地模型 → 验证调用链路”的顺序把每一步命令和配置文件都写清楚你照着敲就能跑通。先说清楚这套方案适合谁手上有 16GB 以上内存的开发机、想低成本体验 claude code 工作流、或者单纯想拿本地模型练手的人。如果你追求的是接近 Claude 3.5 Sonnet 的代码能力本地小模型会有明显差距这点后面会细说。环境准备这块claude code 要求 Node.js 18 及以上。我试过在 Node 16 上装npm 能装成功但运行时报语法错误所以版本别将就。检查当前版本node -v npm -v如果版本低于 18推荐用 nvm 管理多版本比直接升级系统 Node 干净# 安装 nvmmacOS/Linux curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 配置 source ~/.bashrc # 或 ~/.zshrc # 安装并使用 Node 20 LTS nvm install 20 nvm use 20 node -v # 应输出 v20.x.xWindows 用户可以用 nvm-windows或者直接去 Node 官网下 LTS 安装包安装时勾选“Add to PATH”。装完记得重开一个终端否则 PATH 不生效。Node 环境就绪后全局安装 claude codenpm install -g anthropic-ai/claude-code这条命令会从 npm 源拉包。如果卡住不动先换国内镜像源再装npm config set registry https://registry.npmmirror.com npm install -g anthropic-ai/claude-code装完验证claude --version能打印出版本号就说明二进制已经进 PATH 了。如果提示command not found八成是 npm 全局 bin 目录没加进环境变量。用npm config get prefix看下路径Linux/macOS 一般是/usr/local或~/.nvm/versions/node/v20.x.x把这个路径下的bin加进PATH即可。到这一步 claude code 本体就装好了但直接敲claude会因为它默认连 Anthropic 官方接口而报地区不支持。接下来要解决的就是“把请求指向哪里”的问题。有两条路一是改环境变量指向兼容接口二是用 claude-code-router 做多模型路由。前者配置简单、适合只想接一个本地 ollama 的场景后者灵活、能同时挂多个供应商。下面两节分别展开。2. TaoToken 前置准备API Key、Base URL 与模型 ID 三件套怎么拿在把 claude code 指向本地 ollama 之前先花几分钟把“接口三件套”的概念理清楚后面无论接本地还是接云端都靠这三样Base URL请求发到哪、API Key身份凭证、Model ID用哪个模型。很多人配置失败不是命令敲错而是这三样里有一个对不上。如果你打算先用一个稳定的云端接口把 claude code 跑通、再换本地模型对比效果可以走 TaoToken 这条链路。它的作用是提供一个兼容 Anthropic 接口规范的入口claude code 不用改代码只改环境变量就能指过去。具体操作第一步打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册账号。注册流程就是常规的邮箱加密码不赘述。第二步进控制台创建 API Key。地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole_key。点“创建密钥”复制出来的一长串就是你的ANTHROPIC_AUTH_TOKEN。这个 Key 只显示一次丢了只能重建建议先粘到本地记事本。第三步确认 Base URL。TaoToken 的接口地址是 https://taotoken.net/api 注意这里不带任何查询参数直接填这个根路径。claude code 会自动在它后面拼/v1/messages这类路径。第四步选 Model ID。进模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodels 能看到当前可用的模型列表把你要用的那个 ID 记下来比如claude-sonnet-4-5这种格式。Model ID 必须一字不差大小写和连字符都要对。这四步做完你手上就有了完整的三件套配置项对应值填到哪Base URLhttps://taotoken.net/apiANTHROPIC_BASE_URLAPI Key控制台创建的密钥ANTHROPIC_AUTH_TOKENModel ID模型列表里的 IDclaude --model 参数如果你只想接本地 ollama那 Base URL 就填http://localhost:11434API Key 随便填个占位符ollama 默认不校验Model ID 填你ollama list里看到的模型名。三件套的逻辑是一样的区别只是值不同。这里插一句关于 Coding Plan 的说明。如果你后面要长期用 claude code 做项目开发、跑 Agent 任务按量计费可能不如包月划算可以看下 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_plan 的套餐说明对比一下自己的调用量再决定。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 里面有各语言 SDK 的调用示例配置卡住时可以对照。3. 可复制配置环境变量、settings.json 与 ollama 本地模型接入这一节是全文的核心把配置片段原样贴出来你复制改改就能用。claude code 读取配置有两个来源环境变量和settings.json文件。环境变量优先级更高适合临时切换settings.json适合固化配置。先看环境变量方案。Linux/macOS 在~/.bashrc或~/.zshrc末尾追加# TaoToken 云端接口配置 export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的密钥 export ANTHROPIC_MODELclaude-sonnet-4-5Windows 在“系统属性 → 环境变量 → 用户变量”里新建这三条变量名一样值换成对应的。改完重开终端。如果你要接本地 ollama把上面三行换成# ollama 本地模型配置 export ANTHROPIC_BASE_URLhttp://localhost:11434 export ANTHROPIC_AUTH_TOKENollama export ANTHROPIC_MODELqwen2.5-coder:7b注意ANTHROPIC_AUTH_TOKEN这里填ollama只是占位ollama 默认不校验 token但 claude code 启动时会检查这个变量是否存在不填会报错。再看settings.json方案。文件路径按系统区分macOS/Linux~/.claude/settings.jsonWindowsC:\Users\你的用户名\.claude\settings.json内容格式{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的密钥, ANTHROPIC_MODEL: claude-sonnet-4-5 }, permissions: { allow: [ Read, Write, Bash(git status), Bash(npm test) ] } }permissions.allow这块控制 claude code 能自动执行哪些操作不配的话每次读写文件都会弹确认。建议先只放Read跑顺了再逐步加Write和具体命令。ollama 这边要先确认服务在跑、模型已拉取# 启动 ollama 服务如果没在后台跑 ollama serve # 另开终端拉模型7b 对内存要求低些 ollama pull qwen2.5-coder:7b # 确认模型在列表里 ollama listollama list输出的第一列就是 Model ID填到ANTHROPIC_MODEL里。ollama 默认监听11434端口如果改过端口Base URL 也要跟着改。如果你要用 claude-code-router 做多模型路由安装和配置是另一套npm install -g musistudio/claude-code-router ccr uiccr ui会起一个本地 Web 界面在浏览器里配置供应商、模型、路由规则比手改 JSON 直观。配置完点保存并重启然后用ccr code启动 claude code。它的配置文件在~/.claude-code-router/config.jsonUI 改的就是这个文件。不过实测下来claude-code-router 接 ollama 时对某些参数支持不完整比如high这种推理档位会报错属于插件本身的兼容问题。如果你只是想快速跑通建议先用环境变量直连 ollama稳定后再考虑 router。4. 验证请求从 claude --version 到模型真实回复的完整链路配置写完不代表通了得逐层验证。我习惯从下往上查先确认 ollama 服务活着再确认 claude code 能连上最后确认模型真的回了话。第一层ollama 服务自检curl http://localhost:11434/api/tags正常会返回一个 JSON里面列出已拉取的模型。如果连接被拒说明ollama serve没跑起来或者端口被占。Windows 上 ollama 装完一般会注册成后台服务用ollama list能出结果就说明服务在。第二层claude code 版本与配置读取claude --version claude --help--version确认二进制可用--help里能看到--model参数说明。然后检查环境变量是否被正确读取echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_MODELWindows 用echo %ANTHROPIC_BASE_URL%。如果输出为空说明环境变量没生效重开终端或检查拼写。第三层发起一次真实请求。进一个测试目录启动 claude codemkdir ~/cc-test cd ~/cc-test claude --model qwen2.5-coder:7b启动后会进入交互界面。输入一句简单指令比如“用 Python 写一个冒泡排序”观察输出。如果模型开始逐字返回代码说明整条链路通了。如果卡住不动或报错看下一节的排查表。用 TaoToken 云端接口时验证命令类似claude --model claude-sonnet-4-5然后输入“解释一下这段代码的作用”能收到回复就说明 Base URL 和 Key 都对。还有一种非交互式验证适合写脚本时用claude -p 输出当前目录下的文件列表 --model qwen2.5-coder:7b-p是 print 模式执行完直接退出不进入交互界面。这个模式在 CI 里很有用。验证通过后你会看到类似这样的输出结构 用 Python 写一个冒泡排序 好的下面是实现 def bubble_sort(arr): n len(arr) for i in range(n): for j in range(n - i - 1): if arr[j] arr[j 1]: arr[j], arr[j 1] arr[j 1], arr[j] return arr如果本地 7b 模型输出质量不理想别急着怀疑配置先换个更大的模型试试比如qwen2.5-coder:14b或deepseek-coder-v2。模型能力差异在这类任务上体现得很明显。5. 常见报错逐条排查401、local proxy failed、reading choices 与 OAuth配置过程中最容易撞上的几类报错我按出现频率排一下每条给出原因和修法。401 Unauthorized / invalid api key这是 Key 不对或没传。检查ANTHROPIC_AUTH_TOKEN是否设置、有没有多余空格、是不是复制时漏了字符。用 TaoToken 的话去控制台重新生成一个 Key 再试。ollama 场景下这个报错通常是因为 token 变量为空填个ollama占位即可。local proxy failed / connection refusedclaude code 连不上 Base URL。先curl一下那个地址看通不通。如果是localhost:11434确认 ollama 在跑如果是云端地址检查网络和 URL 拼写。常见错误是把 Base URL 写成了带/v1/messages的完整路径实际上只要填到/api或根路径就行。Error reading choices / unexpected response format接口返回的 JSON 结构不符合 claude code 预期。这多半发生在用非 Anthropic 兼容接口时。ollama 的原生 API 和 Anthropic 的 Messages API 格式不同claude code 需要的是后者。解决办法是用一个做协议转换的中间层或者确认你用的接口确实兼容 Anthropic 格式。TaoToken 的接口是兼容的直接填 Base URL 即可。OAuth error / authentication failedclaude code 尝试走 OAuth 登录流程但失败了。这通常是因为它没读到环境变量退回到了默认的登录方式。确认ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN都在环境里并且重开了终端。如果用了settings.json检查 JSON 格式有没有语法错误可以用python -m json.tool ~/.claude/settings.json验证。model not foundANTHROPIC_MODEL填的模型名不存在。ollama 场景下用ollama list核对云端场景下去模型列表页核对。注意有些模型名带版本后缀比如:7b、:latest不能省。ccr 启动后 claude code 仍走默认接口claude-code-router 需要用它自己的命令启动 claude code也就是ccr code而不是直接敲claude。直接敲claude会绕过 router 的配置。另外 router 的配置改完要点“保存并重启”只保存不重启不生效。排查时有个通用技巧加--debug参数启动能看到详细的请求日志。claude --debug --model qwen2.5-coder:7b日志里会打印实际请求的 URL、请求头和响应状态码对着看基本能定位问题。6. 长期使用建议模型选择、权限控制与 Coding Plan 接入跑通只是第一步长期用起来还有几个点值得注意。模型选择上本地 ollama 跑 7b 模型做简单补全和解释够用但涉及多文件重构、复杂逻辑推理就力不从心。14b 以上会好一些代价是内存占用和响应速度。如果项目对代码质量要求高建议云端接口和本地模型搭配用日常问答走本地省成本关键任务切云端。切换方式就是改ANTHROPIC_MODEL环境变量或者启动时用--model指定。权限控制别偷懒。settings.json里的permissions.allow列表决定了 claude code 能自动做什么。生产项目里建议只放Read和只读类命令写操作和Bash执行保持手动确认。这样即使模型判断失误也不会直接改坏文件。关于 Coding Plan如果你每天都要用 claude code 跑任务按量计费累积起来可能不低。包月方案在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_plan 有详细说明可以按自己的日均调用量估算一下。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 遇到接口层面的问题先查这里。API Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keys 可以创建多个 Key 分配给不同项目方便追踪用量。最后提一个实操细节claude code 会在项目目录下生成.claude文件夹存会话历史。如果项目要提交到 git记得把.claude/加进.gitignore避免把本地会话记录推上去。这个文件夹里可能有你的调试过程和环境信息不适合公开。整套流程走下来从装 Node 到模型回话顺利的话半小时内能搞定。卡住的地方大概率在环境变量没生效或模型名对不上按第 5 节的排查表逐条过一遍基本都能解决。