Claude Code 接入本地 llama.cpp

太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处

Qwen3.6-27B 已经通过 llama-server 稳定运行后,我再让 Claude Code 连接本地服务。服务端启动方式见使用 llama.cpp、Claude Code 和 Codex 搭建本地 Agent 编码环境

配置本地模型

Claude Code 的用户级配置文件是 ~/.claude/settings.jsonllama-server 使用的模型别名是 Qwen3.6-27B,客户端配置沿用同一个名称:

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "与 LLAMA_API_KEY 相同",
    "ANTHROPIC_BASE_URL": "http://localhost:30104",
    "ANTHROPIC_MODEL": "Qwen3.6-27B",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "Qwen3.6-27B",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "Qwen3.6-27B",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "Qwen3.6-27B",
    "ANTHROPIC_DEFAULT_FABLE_MODEL": "Qwen3.6-27B",
    "CLAUDE_CODE_SUBAGENT_MODEL": "Qwen3.6-27B",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "90"
  },
  "theme": "auto",
  "statusLine": {
    "type": "command",
    "command": "node -e \"let s='';process.stdin.on('data',d=>s+=d).on('end',()=>{const j=JSON.parse(s),c=j.context_window||{},i=c.total_input_tokens||0,o=c.total_output_tokens||0,m=(j.model&&(j.model.display_name||j.model.id))||'model';console.log(m+' | Claude '+(i+o)+'/'+(c.context_window_size||200000)+' ('+(c.used_percentage||0)+'%) | Server 262144')})\"",
    "padding": 1
  }
}

ANTHROPIC_AUTH_TOKEN 填写 llama-server 使用的 API Key,不要加 Bearer 前缀。ANTHROPIC_BASE_URL 是服务地址,其他模型字段都指向同一个本地模型。

显示上下文状态

statusLine 读取 Claude Code 传入的会话 JSON。Claude Code 按 200000 token 管理这个本地模型,llama-server 的实际上下文是 262144,所以状态栏同时显示两个数值:

Qwen3.6-27B | Claude 16700/200000 (8.4%) | Server 262144

第一次收到模型响应后,状态栏才会出现 token 数据。CLAUDE_CODE_AUTO_COMPACT_WINDOW 把自动压缩窗口设为 200000 token,CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 把阈值设为 90,大约到 180000 token 时开始压缩,给服务端继续生成和接收工具结果留出空间。

可以输入 /context 查看上下文占用,或输入 /compact 手动压缩。状态栏里的 Server 262144 只是显示服务端容量,不会把 Claude Code 的自动压缩上限扩大到 262144。

验证普通回复和工具调用

先测试普通对话:

claude --model Qwen3.6-27B -p --max-turns 1 --no-session-persistence "只回复 OK"

实际返回 OK。再测试 Bash 工具调用:

claude --model Qwen3.6-27B -p --max-turns 2 --no-session-persistence "使用 Bash 执行 git rev-parse --short HEAD,只回复命令输出"

这次实际返回了仓库提交短哈希。普通回复只证明模型能生成文本,第二项才验证 Claude Code 能发起工具调用并接收结果。

安全边界

这里使用 HTTP 是因为客户端和 llama-server 在同一台机器。服务跨机器时,不能把带 Bearer Token 的 HTTP 接口直接暴露到公网,应使用 HTTPS 反向代理、VPN 或 SSH 隧道。

参考资料