Claude Code 接本地大模型,是很多开发者这两年最想验证的一条组合:终端里保持 Claude Code 那套读文件、改代码、跑命令的工作流,但模型不再走云端 API,而是换成跑在自己机器上的开源模型。这个方案确实能落地,但它不是拿来和付费工具比高低的魔法方案。本地模型的参数量、推理速度和代码能力都有客观边界,接起来之后能不能顺手,取决于模型选择、转换层配置、上下文管理和任务拆分方式。
这篇文章不绑定某个具体版本,重点讲链路和排查方法。我会按自己实测的顺序拆开讲:先说什么环境能跑,再给最小可运行配置,然后走一遍全栈开发任务,最后列出一套排查链路。适合已经了解命令行、想在数据本地化或离线场景下自建 AI 开发流程的开发者看。前端、后端、测试这些概念不需要精通,但你要能接受在终端里干活。
1. 先搞清楚 Claude Code 接本地大模型解决的是什么问题
1.1 Claude Code 本身在终端里做什么
Claude Code 是 Anthropic 提供的官方命令行 AI 编码工具。它和聊天式 AI 不同,不是你在网页里问一句、它答一句就结束。它直接跑在项目目录里,可以读取项目文件、修改代码、执行 shell 命令、运行测试、操作 Git,然后基于真实执行结果继续工作。因为这个特性,它更适合处理“需要反复改、反复验证”的编码任务,而不是一次性问答。
我这里说“读取”和“修改”是保守的。实际使用中,它会在你的允许下执行安装依赖、启动服务、运行脚本这类操作。权限边界在交互过程中会不断弹出来让你确认。
1.2 为什么有人要把模型从云端换成本地
动机通常集中在四类:
- 数据安全:源代码、业务数据、内部配置不出本机,适合对数据外发敏感的项目。
- 离线可用:网络不稳定、内网开发、出差场景下也能保持工作流。
- 成本结构:本地推理用的是自己机器的资源,不依赖云端调用配额,但硬件成本要自己承担。
- 响应可控:模型服务在本地跑,延迟相对稳定,不依赖云端排队。
这些需求在团队内部工具、合规项目、个人学习场景里最常出现。如果你只是想在网页上聊聊天,完全不需要走这条链路。
1.3 关键边界:能接上不等于能替代云端
本地模型和云端旗舰模型的能力差距是客观存在的。小参数模型可以完成“分析目录、生成接口、修复报错”这类任务,但在大规模重构、复杂架构讨论、长链路调试上表现会明显吃力。
Claude Code 对工具调用、结构化输出有要求,本地小模型不一定能稳定完成。能接上是一回事,能在真实项目里稳定干活是另一回事。
所以看这篇文章时,我建议你带着一个判断标准:先跑通,再评估能力边界。别因为“能启动”就觉得“全都能干”。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 运行环境和前置条件:先用最低成本把链路搭起来
2.1 硬件分档
本地大模型的硬件要求主要在显存和内存。模型参数越大、量化精度越高,占用越高。下面这个表是通用参考,实际以你下载的模型量化格式和推理框架为准。
| 硬件水平 | 可运行模型的量级 | 推荐任务 |
|---|---|---|
| 16GB 内存 + 无独显 | 7B/8B 量化小模型,速度偏慢 | 简单代码解释、生成单文件 |
| 8GB 显存 | 7B/8B 量化模型 | 单任务编码辅助 |
| 16GB 显存 | 14B 量化模型 | 项目级小任务修改 |
| 24GB 显存 | 32B 量化或更高 | 多文件、带工具调用的任务 |
| Apple Silicon 16GB 统一内存以上 | 7B/14B 量化 | 能跑,速度和内存带宽直接相关 |
如果只是学习,先用 7B/8B 量化模型起步就够了。不要一上来就下 70B 的模型,下载慢、加载慢,显存不够还会直接失败。
2.2 软件前置条件
- 操作系统:macOS、Linux 都比较顺畅。Windows 下建议用 WSL,能少很多路径和权限问题。
- Node.js:Claude Code 基于 Node.js 分发,建议先装一个较新的 LTS 版本,用
node -v验证。 - Claude Code 本身:通过 npm 全局安装。
- 本地推理服务:常见选择是 Ollama,因为它跨平台、命令简单、模型下载方便。也可以用 LM Studio 或 vLLM,按你熟悉程度选一个。关键不是哪个工具更好,而是你愿意长期维护哪个。
bash复制# 安装 Claude Code(示例)
npm install -g @anthropic-ai/claude-code
# 验证是否安装成功
claude --version
# 以 Ollama 为例,查看本机已下载的模型(示例)
ollama list
如果你本机已经装了 Ollama,默认服务端口通常是 11434,具体以你的版本和配置为准。这里有个容易忽略的点:Claude Code 本身装好之后不一定能在当前目录直接读项目文件,你必须在项目目录里启动它,它才能看到项目内容。
2.3 模型选择看三点
编码任务优先选专门做过代码训练的模型,而不是通用对话模型。比如 Qwen-Coder 系列、Llama 系列、DeepSeek 系列里都有偏代码的版本,具体型号以你下载时仓库里能看到的稳定版为准。
选择时重点看三点:
- 上下文长度:至少 8K 以上,做多文件修改最好 32K 以上。上下文太短,模型改到一半会“忘记”你前面的要求。
- 工具调用能力:Claude Code 需要模型按约定输出工具调用。模型太小或指令微调不到位,这一步最容易失败。
- 量化方式:显存紧张时选量化版本,但量化程度越高,能力损失越明显。同一个模型,4-bit 量化和 8-bit 量化的表现差异肉眼可见。
2.4 单独建一个实验目录
第一次连接配置,强烈建议不要在正式项目里做。单独建一个实验目录,里面放一个小的示例项目,等链路完全跑通,再迁移到真实项目。
原因很简单:Claude Code 能执行命令,你要试环境变量、试模型名称、重启服务。这些动作放在正式项目里,很容易把目录搞乱,甚至误改已有代码。第一次测试的目标不是完成任务,而是验证链路本身。
3. 最小可运行配置:把 Claude Code 指向本地模型
3.1 接口格式是关键
Claude Code 默认和 Anthropic Messages API 通信。本地模型推理服务通常暴露的是 OpenAI 兼容接口。要让两者对上,就需要一个“转换层”把请求和响应格式翻译一遍。
请求从 Claude Code 出发,按照 Anthropic Messages API 的格式送到 base URL 指定的地址。如果这个地址是转换层,转换层会把请求翻译成 OpenAI Chat Completions 格式,再发给本地模型服务。模型响应沿原路返回,再由转换层翻译回 Anthropic 格式。Claude Code 看到的就是一次正常 API 调用。
这里补充一句:转换层是本地开发架构里的普通组件,和网络连接方式无关。选择转换层时认准三条:项目最近还在维护、文档里明确写出支持你用的本地推理服务、启动方式清晰。不要从网上找来历不明的脚本直接往生产环境里塞。
如果你的本地推理服务本身已经提供 Anthropic Messages 兼容端点,那就更简单,直接把 base URL 指向服务本身的地址。这一步要以你所用服务当前版本的文档为准。
3.2 核心环境变量
把 Claude Code 指向自定义模型服务,主要靠这几个环境变量:
| 变量 | 作用 | 示例值 |
|---|---|---|
| ANTHROPIC_BASE_URL | 模型服务或转换层的地址 | http://127.0.0.1:8000 |
| ANTHROPIC_AUTH_TOKEN | 认证占位,本地服务一般不校验 | local-test-token |
| ANTHROPIC_MODEL | 模型名称,必须和服务端能识别的名称一致 | qwen2.5-coder:7b |
bash复制export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_AUTH_TOKEN="local-test-token"
export ANTHROPIC_MODEL="qwen2.5-coder:7b"
如果你不想在当前会话里暴露这些变量,可以写进终端配置文件或 Claude Code 的项目级配置。但要注意,不要把任何真实 token 写进代码仓库,尤其是会被模型读取的说明文件。
3.3 启动和最小验证
配置完环境变量后,用一条最简单指令启动:
bash复制claude "读取当前目录文件列表,简述项目结构"
判断是否成功看几个信号:
- 命令能正常启动,没有 401、404、connection refused。
- 模型返回内容符合预期,没有把目录结构理解错。
- 耗时在可接受范围内。首轮启动如果模型需要加载到显存,多等几十秒很正常。
- 第一次回复完整,没有被截断。
我会先用这条指令测三件事:API 通不通、模型认不认、输出完不完整。三件事都正常,再往下做真实任务。
3.4 配置检查顺序
如果启动时连不上,先不要改复杂参数。按这个顺序查:
- 转换层或本地推理服务有没有启动:用 curl 访问它的健康检查地址。
- ANTHROPIC_BASE_URL 是否写对,有没有多斜杠、少端口。
- ANTHROPIC_MODEL 是否和服务端模型列表一致。
- Claude Code 当前版本是否识别这些环境变量。
很多报错看起来像是 Claude Code 的问题,实际是服务没启动或地址写错。
4. 全栈开发实战:从零开始做一个可运行的 CRUD 项目
4.1 把任务拆成可以验证的小步骤
我建议用一个入门级全栈任务验证整个链路:一个带前端页面的待办事项应用,后端提供增删改查接口,前端页面调用接口展示数据,数据存在本地 SQLite 或 JSON 文件里。
这个任务不复杂,但覆盖了后端、前端、数据库、验证四件事,够用来判断本地模型的实际能力。不要加复杂业务逻辑,先跑通。
技术栈要在指令里明确指定,比如后端用 Python FastAPI,前端用原生 HTML + JavaScript,存储用 SQLite。明确技术栈能减少模型反复猜测,也能让验证标准更清楚。
4.2 分步执行,不要一次提一个大需求
给本地模型的指令,拆得越细,成功概率越高。我一般会把整个开发流程拆成四轮:
- 第一轮:让模型初始化项目结构,写清楚目录用途。
- 第二轮:让模型生成后端接口,先实现“列出待办事项”和“新增待办事项”两个接口。
- 第三轮:让模型生成前端页面,调用后端接口完成展示和新增。
- 第四轮:让模型启动服务,用 curl 验证接口返回,查看页面是否能正常加载。
每轮任务都要限定范围。比如“新增待办事项接口,字段包括 id、title、completed、created_at,返回 JSON 格式”,比“做一个完整后端”更容易得到可用的结果。
4.3 让模型先读关键文件,而不是从头读全项目
本地模型的上下文窗口有限,不要让模型自己从头读一遍整个项目。更好的做法是在项目根目录写一个说明文件,把技术栈、目录约定、启动命令写清楚,然后告诉模型“先读说明,再按约定修改”。
如果项目文件很多,直接在指令里点名关键文件,例如:
code复制修改 backend/app.py 中的 /api/todos 路由,保持现有返回结构不变。
这样模型不用浪费上下文去猜测,改动也更可控。
4.4 验证标准
一轮任务结束,不要只看模型说“做完了”,要自己确认输出:
- 后端接口用 curl 能不能拿到数据。
- 前端页面能不能打开,控制台有没有报错。
- 新增一条待办事项后,刷新页面数据还在不在。
- 服务能不能重复启动,有没有把数据写坏。
我会让模型在完成每轮任务后,主动列出它改了哪些文件、为什么这么改、如何验证。它能说清楚,说明理解到位;说不清楚,就要回退检查。
4.5 工具调用的权限意识
Claude Code 会请求执行命令。第一次使用,建议在确认命令内容后再允许,尤其是安装依赖、启动服务、操作数据库这类动作。
在实验目录里可以放开一点,但也要看日志。如果模型在修改一个文件时顺带执行了无关命令,先停下来,检查指令是否不够明确。这不是模型“坏”,更可能是任务边界没划清。
5. 关键参数和判断标准:不要只看能不能启动
5.1 核心参数
本地模型接入 Claude Code 后,真正影响日常体验的参数主要是这几个:
| 参数 | 影响 | 建议 |
|---|---|---|
| 上下文长度 | 决定模型能同时看到多少文件内容 | 多文件任务优先选上下文更长的模型 |
| 最大输出 token | 单次回复是否被截断 | 偏低会看到回复突然中断,先调高 |
| 温度 | 输出随机性 | 编码任务建议调低,减少自由发挥 |
| 会话并发数 | 越多会话占用越多显存和内存 | 本地模型一般保持 1 到 2 个会话 |
如果模型服务支持在配置或请求里设置这些参数,按实际任务调。如果默认值已经够用,不用每项都改。很多人一上来就把所有参数拉满,反而把问题搞复杂。
5.2 速度怎么判断
不能只看“启动挺快”。真正要看的指标是:
- 首 token 延迟:你发出指令后,多久开始看到回复。
- 总耗时:一条包含多次工具调用的任务,多久跑完。
- 吞吐:连续 10 条简单任务,平均每条多久。
如果首 token 很快但总耗时很长,大概率是模型每次工具调用后都在反复读文件或执行命令,属于工作流开销,不全是推理速度问题。
5.3 质量怎么判断
本地模型输出的代码,先过这三关:
- 语法正确:能不能被解释器或编译器直接接受。
- 风格一致:和项目现有代码风格是不是同一个路子。
- 最小改动:有没有把无关代码也一起改了。
很多小模型生成的代码“能跑”,但常常引入多余依赖或改变原有命名习惯。这种情况下,我会在指令里加一条“只做必要修改,不要重构无关部分”。
5.4 稳定性怎么判断
稳定性不是“跑通一次就算稳定”。建议做一轮小的压力验证:
- 连续跑 10 条简单任务,记录成功、失败、超时。
- 运行 30 分钟以上,观察显存和内存有没有持续上涨。
- 中途手动中断一次,确认服务能恢复,不会把项目文件写坏。
如果连续任务出现随机失败,先看是不是显存不足导致推理服务崩溃,再检查是不是上下文太长导致模型后半段输出异常。
注意:不要一上来就开最大并发。先用一条样例确认输入、输出和日志都正常,再考虑同时跑多个任务。
6. 常见报错和排查链路
6.1 连接和认证类错误
现象:claude 命令启动后提示 401、403、connection refused 或 connection reset。
排查顺序:
- 先 curl 本地服务地址,确认服务没挂。
- 确认 ANTHROPIC_BASE_URL 没有写错端口或路径。
- 确认 ANTHROPIC_AUTH_TOKEN 是占位值而不是空值,很多服务要求字段存在。
- 看转换层日志,确认请求有没有真正到达本地模型服务。
这类问题绝大多数不是 Claude Code 的问题,而是服务没启动或地址写错。
6.2 模型名称或格式错误
现象:提示 model not found、404 Not Found,或者请求发出后模型完全没有响应。
排查顺序:
- 查询服务端当前模型列表,确认 ANTHROPIC_MODEL 写的名称和它一致。
- 如果服务端返回的是“模型名:tag”格式,环境变量里也要带上。
- 如果模型名称没问题,还是 404,重点检查转换层是否把请求路径转发正确。
6.3 回复截断
现象:回复在前半段正常,到某个位置突然停止,或者最后缺少收尾内容。
排查顺序:
- 先调大最大输出 token。
- 再看是不是上下文被占满,导致模型只能输出一小段。
- 如果是工具调用过程中截断,可能是模型能力不足以在结构约束下完成输出,需要换更大的模型。
6.4 卡住不动或无输出
现象:指令发出后长时间没有反应,或者模型一直转圈。
排查顺序:
- 先看本地推理服务的日志,是还在推理还是已经报错。
- 看系统资源占用,显存或内存满了会表现为“卡住”。
- 尝试一条极短的指令,比如“回复 OK”,排除上下文过长的问题。
- 如果短指令也卡住,重启推理服务,再试一次。
6.5 代码质量不对
现象:接口能通,但生成的代码风格乱、逻辑错、改坏既有功能。
这种情况不是配置问题,而是模型本身的能力边界。可以考虑换更大参数的模型、换专门的代码模型、把任务拆得更细,或者只在简单任务上使用本地模型,关键阶段切换到能力更强的模型。
7. 边界、安全与长期使用建议
7.1 本地模型不是云端模型的替代品,是补充
整体跑下来,我的判断是:这条链路真正适合数据敏感、离线开发、内部工具、个人学习这些场景。它和云端模型是互补关系,不是替代关系。
- 小任务、单文件、模板代码:本地模型完全能胜任。
- 大重构、复杂架构、长链路排查:本地模型会明显吃力,建议换能力更强的模型。
- 只有一个 8GB 显存的机器,不要指望它独立完成一个上线的商业项目,但用来辅助学习和写内部脚本绰绰有余。
如果你在 2026 年这个时间点刚开始尝试这条链路,我的建议是:不要追求“我装的模型参数越大越好”,而是先让一个 7B 模型稳定跑完一轮全栈小任务。这个稳定跑通的经验,比模型本身值钱。
7.2 安全注意事项
Claude Code 能在你机器上执行命令,这是效率来源,也是风险点。长期使用要注意几点:
- 第一次接入,在临时目录或虚拟机里做完整的连接测试。
- 不要在正式项目的生产环境里放开所有工具权限,先检查命令再允许执行。
- 密钥、token、数据库连接串不要写进模型会读取的公开文件。
- 模型输出可能包含不安全的代码,尤其是从网络复制的指令,先审查再运行。
- 本地模型数据不出本机是个优点,但本地日志和转换层日志也要定期清理,避免积累敏感信息。
- 个人开发者使用前,先确认 Claude Code 的许可条款允许你的用法;企业环境还要让运维和安全团队评估自定义端点是否符合内部规范。
7.3 长期使用的配置管理
如果确定要长期使用,建议把以下东西固定下来:
- 一份环境变量配置脚本,写好注释放本机,方便重装后恢复。
- 每个项目单独记录使用哪个模型、哪个上下文长度、哪个转换层版本。
- 定期更新 Claude Code 和本地推理服务,更新的同时重新跑一遍最小验证。
- 把一次成功的“最小可用配置”存档,以后项目遇到问题可以直接对照。
这样做的原因是:本地模型生态变化很快,模型名称、接口格式、配置项都可能调整。不记录,你今天能跑通的配置,过两个月可能就失效了。
7.4 每次接入新环境时的验证清单
每次在新环境里接入 Claude Code + 本地大模型,我都会按这个顺序走一遍:
- 服务在不在:curl 本地端点。
- 模型认不认:查询模型列表,核对名称。
- 环境变量对不对:检查 ANTHROPIC 前缀的配置。
- 小任务通不通:让模型读取目录结构。
- 真实任务稳不稳:跑一个小的 CRUD 项目。
- 资源够不够:观察长时间运行后的显存和内存。
六步全过,这条链路才算真正可用。如果某一步卡住,先回到上一步检查,不要跳过重来。很多问题不是工具能力不够,而是前置环境和输入材料没有处理干净。
