让Claude Code使用本地LLM
我如何使用 Fatih C. Akyon 的 claude-codex-settings 插件集合配置 Claude Code 与 Ollama 一起工作。
上周我想运行 Claude Code 时使用本地模型而不是支付 API 调用费用。经过一些研究,我发现了 claude-codex-settings —— Fatih C. Akyon 的一个仓库,其中包含有用的 Claude Code 插件,包括用于 LLM 代理集成的 ccproxy-tools。
设置过程并不简单,但结果值得:零 API 成本和离线能力。
1、什么是 claude-codex-settings?
fcakyon/claude-codex-settings 是一个 Claude Code 插件和配置的集合。该仓库包括:
- ccproxy-tools:用于 ccproxy(基于 LiteLLM 的代理)的集成插件
- 各种 Claude Code 设置和优化
- 不同 LLM 提供商的设置向导
ccproxy-tools 插件使连接 Claude Code 与替代后端(如 Ollama、OpenAI、GitHub Copilot,甚至通过 OAuth 的 Claude Pro/Max)变得容易。
2、开始使用
首先,您需要在 Claude Code 中注册插件市场:
/plugin marketplace add fcakyon/claude-codex-settings输出:
Successfully added marketplace: claude-settings重要提示: 市场注册为 claude-settings,而不是仓库名称。这最初让我措手不及。
2.1 安装 ccproxy-tools
现在使用正确的市场名称安装插件:
/plugin install ccproxy-tools@claude-settings我的第一次尝试使用了错误的名称(@fcakyon-claude-plugins)并且静默失败。正确的市场名称是 @claude-settings。
2.2 安装 ccproxy 包
插件需要 claude-ccproxy 包。确保您已安装 uv,然后:
uv tool install claude-ccproxy --with 'litellm[proxy]' --force警告: 不要从 PyPI 安装仅 ccproxy ——那是不同的、已废弃的包。正确的包是 claude-ccproxy。
+ claude-ccproxy==1.2.0
+ litellm==1.80.11
Installed 1 executable: ccproxy
2.3 运行设置向导
插件包含一个交互式设置向导:
/ccproxy-tools:setup这将引导您选择提供商:
- Claude Pro/Max (OAuth)
- GitHub Copilot (LiteLLM)
- OpenAI API (LiteLLM)
- Gemini API (LiteLLM)
我最初尝试使用 Claude Pro/Max 但遇到了 OAuth 问题(下面会更多说明)。最后我改用了 Ollama。
3、我的设置:使用 DeepSeek R1 的 Ollama
OAuth 障碍
当我第一次尝试使用 Claude Pro/Max 启动 ccproxy 时:
ccproxy start我得到了这个错误:
OAuth command for provider 'anthropic' failed with exit code 2:
jq: error: Could not open file ~/.claude/.credentials.json:
No such file or directoryOAuth 流程期望一个 Claude Code CLI 不会自动创建的凭据文件。与其进一步调试这个问题,我转向了 Ollama。
3.1 为 Ollama 配置
我已经运行了带有 DeepSeek R1 的 Ollama。下面是我如何配置 ccproxy 来使用它。
~/.ccproxy/config.yaml —— 模型路由:
model_list:
- model_name: default
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
- model_name: deepseek-r1
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
# Map Claude model names to Ollama
- model_name: claude-sonnet-4-5-20250929
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
- model_name: claude-opus-4-5-20251101
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
- model_name: claude-haiku-4-5-20251001
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
- model_name: claude-3-5-haiku-20241022
litellm_params:
model: ollama/deepseek-r1:1.5b
api_base: http://localhost:11434
litellm_settings:
callbacks:
- ccproxy.handler
drop_params: true
general_settings:
forward_client_headers_to_llm_api: true
master_key: sk-dummy~/.ccproxy/ccproxy.yaml —— 禁用 OAuth:
ccproxy:
debug: true
handler: "ccproxy.handler:CCProxyHandler"
# Disable OAuth for Ollama
oat_sources: {}
hooks:
- ccproxy.hooks.rule_evaluator
- ccproxy.hooks.model_router
- ccproxy.hooks.capture_headers
default_model_passthrough: true
rules: []
litellm:
host: 127.0.0.1
port: 4000
num_workers: 4
debug: true
detailed_debug: false关键更改:oat_sources: {} 完全禁用 OAuth。
3.2 启动和测试代理
启动代理:
ccproxy stop 2>/dev/null ccproxy start --detach LiteLLM started in background Log file: ~/.ccproxy/litellm.log健康检查:
curl -s -H "Authorization: Bearer sk-dummy" http://localhost:4000/health | jq '.healthy_count' 6所有 6 个模型端点都健康。
API 测试:
curl -s -X POST "http://localhost:4000/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-dummy" \
-d '{"model":"deepseek-r1","messages":[{"role":"user","content":"Hello"}],"max_tokens":50}'
{
"model": "ollama/deepseek-r1:1.5b",
"choices": [{
"message": {
"content": "Hello! How can I assist you today? 😊",
"role": "assistant"
}
}]
}DeepSeek 通过代理响应。成功!
3.3 将 Claude Code 连接到代理
最后一步 —— 更新 ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_AUTH_TOKEN": "sk-dummy"
}
}现在 Claude Code 将通过 ccproxy 将所有请求路由到您的本地 Ollama 实例。
3.4 故障排除:我遇到的错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 插件静默失败 | 错误的市场名称 | 使用 @claude-settings 而不是 @fcakyon-claude-plugins |
| "No executables provided" | 错误的 PyPI 包 | 安装 claude-ccproxy,而不是 ccproxy |
| "credentials.json not found" | OAuth 期望 Claude Desktop | 为 Ollama 设置 oat_sources: {} |
| "No api key passed in" | 缺少认证头 | 使用 Bearer sk-dummy |
| 端口 4000 被占用 | 先前代理运行 | 先运行 ccproxy stop |
4、结束语
Fatih C. Akyon 的 claude-codex-settings 仓库提供了一种干净的方式来使用额外集成扩展 Claude Code。特别是 ccproxy-tools 插件使以下操作变得简单:
- 使用本地 LLM(Ollama、LM Studio)
- 连接到替代云提供商(OpenAI、Gemini)
- 可能通过 OAuth 使用 Claude Pro/Max 订阅
对于我的用例 —— 使用本地 Ollama 模型运行 Claude Code —— 设置花费了大约 2 小时,包括调试。结果:
Proxy: http://localhost:4000
Auth: Bearer sk-dummy
Backend: Ollama (localhost:11434)
Model: deepseek-r1:1.5b
Status: 6/6 endpoints healthy ✓零 API 成本、完全隐私、离线工作。
原文链接:Using Local LLM Models with Claude Code: A Step-by-Step Guide with ccproxy-tools
汇智网翻译整理,转载请标明出处