Claude Code 接入本地 llama.cpp
Qwen3.6-27B 已经通过 llama-server 稳定运行后,我再让 Claude Code 连接本地服务。服务端启动方式见使用 llama.cpp、Claude Code 和 Codex 搭建本地 Agent 编码环境。
配置本地模型
Claude Code 的用户级配置文件是 ~/.claude/settings.json。llama-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 隧道。