free-claude-code
和书籍生活在一起,永远不会叹气。——罗曼罗兰
Free Claude Code:一位“翻译官”站在你的终端里,让 Claude Code 免费开口说话
它叫 Free Claude Code。
一个轻量级的代理(proxy),专门把 Claude Code(CLI / VSCode 扩展)发出的 Anthropic API 请求,悄悄“改道”到别的地方去——比如 NVIDIA NIM(40 req/min 免费)、OpenRouter(海量模型)、DeepSeek(直连 API),甚至还能把对话带回家,交给 LM Studio / llama.cpp / Ollama 这类完全本地的模型服务器来处理。
它的仓库一句话介绍得很直白:
Use claude-code for free in the terminal, VSCode extension or via discord like openclaw
它像个擅长变装的向导:表面上你依然在用 Claude Code,实际上它已经在背后帮你把请求“领”到了你选的 LLM 供应商那里,并且尽力保持一切像 Anthropic 一样工作。
它会什么?(Features)
Free Claude Code 不是那种“只能跑起来”的工具,它更像一个认真做事的管家,习惯把细节也照顾好:
Zero Cost(零成本)
NVIDIA NIM 提供 40 req/min 免费;OpenRouter 也有免费模型;想更安静?还能直接走 LM Studio / Ollama / llama.cpp,完全本地、无限制。Drop-in Replacement(无痛替换)
你不需要改 Claude Code CLI 或 VSCode 扩展。它只要求你设定 2 个环境变量,就能把 Claude Code 的“嘴”接到你想接的模型上。6 Providers(六大后端)
NVIDIA NIM、OpenRouter、DeepSeek、LM Studio(本地)、llama.cpp(llama-server)、Ollama。Per-Model Mapping(按 Opus/Sonnet/Haiku 分流)
你可以把 “Opus / Sonnet / Haiku” 这三类请求分别送去不同的模型、不同的供应商,混搭也行。Thinking Token Support(思考块支持)
它会解析<think>标签和reasoning_content,把“思考内容”转换成 Claude 原生的 thinking blocks(在启用 thinking 时)。Heuristic Tool Parser(工具调用自动解析)
有些模型把 tool call 当文本吐出来,它会尝试自动把这些“文字化的工具调用”解析回结构化 tool use。Request Optimization(请求优化)
Claude Code 的一些“琐碎 API 请求”(比如 quota 探测、标题生成、前缀检测、建议模式、文件路径提取等)会被它在本地拦截并直接响应——省配额、省延迟。Smart Rate Limiting(聪明的限流)
包含滚动窗口节流 + 429 指数退避 + 可选并发上限。Discord / Telegram Bot(远程操控)
你可以在 Discord/Telegram 上发任务,让 Claude Code “远程自主编码”;支持树状线程、会话持久化、实时进度。Subagent Control(子代理控制)
它会拦截 task 工具,强制run_in_background=False,防止子代理失控狂奔。Extensible(易扩展)
提供干净的BaseProvider与MessagingPlatform抽象类(ABC),想加新 provider 或新平台,有路可走。
Quick Start:把它请进来(并让它开始工作)
Prerequisites
先准备好它要用的“燃料”(API Key 或本地服务):
选择一个提供商并获取 API key(或者用本地 provider):
- NVIDIA NIM:https://build.nvidia.com/settings/api-keys
- OpenRouter:https://openrouter.ai/keys
- DeepSeek:https://platform.deepseek.com/api_keys
- LM Studio:不需要 key,本地运行:https://lmstudio.ai
- llama.cpp:不需要 key,本地跑
llama-server - Ollama:不需要 key,本地跑
ollama serve:https://ollama.com
安装 Claude Code:https://github.com/anthropics/claude-code
安装 uv
Free Claude Code 选择了 uv 作为主要工具链(并且明确写了:本项目需要 Python 3.14)。
macOS/Linux:
1 | # Recommended installer (works on macOS/Linux without relying on system pip) |
Windows PowerShell:
1 | # Recommended installer (avoids relying on system pip) |
Clone & Configure:把它带回家,给它一份 .env
1 | git clone https://github.com/Alishahryar1/free-claude-code.git |
接下来,挑一个你喜欢的“后端人格”,把 .env 配好。
NVIDIA NIM(40 req/min free, recommended)
1 | NVIDIA_NIM_API_KEY="nvapi-your-key-here" |
OpenRouter(hundreds of models��
1 | OPENROUTER_API_KEY="sk-or-your-key-here" |
DeepSeek(direct API)
1 | DEEPSEEK_API_KEY="your-deepseek-key-here" |
LM Studio(fully local, no API key)
1 | MODEL_OPUS="lmstudio/unsloth/MiniMax-M2.5-GGUF" |
llama.cpp(fully local, no API key)
1 | LLAMACPP_BASE_URL="http://localhost:8080/v1" |
Ollama(fully local, no API key)
1 | OLLAMA_BASE_URL="http://localhost:11434" |
Mix providers:让它学会“分身术”
每个 MODEL_* 都可以来自不同 provider,MODEL 作为兜底:
1 | NVIDIA_NIM_API_KEY="nvapi-your-key-here" |
Optional Authentication:给它一把门锁(可选)
如果你把代理跑在公共网络上,或者你想让别人用、但不想随便谁都能用,那么可以设置:
1 | ANTHROPIC_AUTH_TOKEN="your-secret-token-here" |
它的规则很清楚:
- 若
ANTHROPIC_AUTH_TOKEN为空(默认),则不需要鉴权(兼容旧用法) - 若设置了,则客户端必须通过
ANTHROPIC_AUTH_TOKENheader 提供同样的 token claude-pick脚本会自动从.env读取 token(如果你配置了)
示例:
1 | # With authentication |
Run It:两扇门,一边是代理,一边是 Claude Code
它很像一位站在门口的接待员:你先让它站好岗,然后再让 Claude Code 走进来。
Terminal 1:启动代理服务
1 | uv run uvicorn server:app --host 0.0.0.0 --port 8082 |
Terminal 2:启动 Claude Code,并把它引到代理门口
注意:ANTHROPIC_BASE_URL 要指向代理的根 URL,不是 http://localhost:8082/v1。
PowerShell:
1 | $env:ANTHROPIC_AUTH_TOKEN="freecc"; $env:ANTHROPIC_BASE_URL="http://localhost:8082"; claude |
Bash:
1 | ANTHROPIC_AUTH_TOKEN="freecc" ANTHROPIC_BASE_URL="http://localhost:8082" claude |
就这样。Claude Code 会以为自己在跟 Anthropic 说话,而 Free Claude Code 会把它的话转交给你配置的 provider。
VSCode Extension Setup:让 VSCode 也认识这位“翻译官”
- 启动代理(同上)。
- 打开 Settings(
Ctrl + ,),搜索claude-code.environmentVariables。 - 点击 Edit in settings.json,加入:
1 | "claudeCode.environmentVariables": [ |
- Reload extensions。
- 如果你看到登录界面:点击 Anthropic Console 授权。扩展会开始工作。浏览器可能把你带去购买 credits;忽略它即可。
切回 Anthropic 官方模型:把新增块注释掉并 reload extensions。
IntelliJ Extension Setup:让 JetBrains 也跟上节奏
- 打开配置文件:
- Windows:
C:\Users\%USERNAME%\AppData\Roaming\JetBrains\acp-agents\installed.json - Linux/macOS:
~/.jetbrains/acp.json
- Windows:
- 找到
acp.registry.claude-acp,把:
1 | "env": {} |
改成:
1 | "env": { |
- 启动代理 server
- 重启 IDE
Multi-Model Support(Model Picker):它还会“递菜单”
它提供一个交互式模型选择器 claude-pick:每次启动 Claude 时,让你从当前 provider 的模型列表里挑一个,不用再去 .env 改来改去。
1)安装 fzf
1 | brew install fzf # macOS/Linux |
2)加一个 alias
1 | alias claude-pick="/absolute/path/to/free-claude-code/claude-pick" |
然后 source ~/.zshrc 或 source ~/.bashrc,运行 claude-pick 即可。
如果你不想选菜单,它也支持固定模型别名:
1 | alias claude-kimi='ANTHROPIC_BASE_URL="http://localhost:8082" ANTHROPIC_AUTH_TOKEN="freecc:moonshotai/kimi-k2.5" claude' |
Install as a Package:不 clone,也能把它请进系统里
它甚至准备好了“轻装上阵”的方式:
1 | uv tool install git+https://github.com/Alishahryar1/free-claude-code.git |
编辑 ~/.config/free-claude-code/.env(填 API keys 和模型名),然后:
1 | free-claude-code # starts the server |
更新方式也写得很干脆:
1 | uv tool upgrade free-claude-code |
How It Works:它如何把“Claude 的话”送到别处
它的工作像一条透明的管道:
1 | ┌─────────────────┐ ┌──────────────────────┐ ┌───────────────┐ |
它的性格特点很鲜明:
- 透明代理:Claude Code 发标准 Anthropic API;它负责转发到你配置的 provider
- 按模型分流:Opus / Sonnet / Haiku 各自解析到各自后端,
MODEL兜底 - 请求优化:拦截并本地响应一些“琐碎请求”,节省额度与延迟
- 格式处理:OpenRouter / LM Studio / llama.cpp / Ollama 走原生 Anthropic Messages;NIM 与 DeepSeek 走 OpenAI chat 的共享翻译层
- 思考 tokens:在 thinking 开关开启时,把
<think>/reasoning_content转成 Claude 原生 thinking blocks
并且它暴露 Claude 兼容的探测路由:GET /v1/models、POST /v1/messages、POST /v1/messages/count_tokens,以及常见探测端点的 HEAD/OPTIONS。
Providers:它认识的朋友们
| Provider | Cost | Rate Limit | Best For |
|---|---|---|---|
| NVIDIA NIM | Free | 40 req/min | Daily driver, generous free tier |
| OpenRouter | Free / Paid | Varies | Model variety, fallback options |
| DeepSeek | Usage-based | Varies | Direct access to DeepSeek chat/reasoner |
| LM Studio | Free (local) | Unlimited | Privacy, offline use, no rate limits |
| llama.cpp | Free (local) | Unlimited | Lightweight local inference engine |
| Ollama | Free (local) | Unlimited | Easy local LLM runtime, native Anthropic API |
模型名采用前缀格式:provider_prefix/model/name。前缀错了,它会报错(它很认真,不会装作没看见)。
| Provider | MODEL prefix |
API Key Variable | Default Base URL |
|---|---|---|---|
| NVIDIA NIM | nvidia_nim/... |
NVIDIA_NIM_API_KEY |
integrate.api.nvidia.com/v1 |
| OpenRouter | open_router/... |
OPENROUTER_API_KEY |
openrouter.ai/api/v1 |
| DeepSeek | deepseek/... |
DEEPSEEK_API_KEY |
api.deepseek.com |
| LM Studio | lmstudio/... |
(none) | localhost:1234/v1 |
| llama.cpp | llamacpp/... |
(none) | localhost:8080/v1 |
| Ollama | ollama/... |
(none) | localhost:11434 |
Discord Bot:把 Claude Code 放进聊天软件里“远程驾驶”
它不满足于只在你本机乖乖工作,它还愿意当你的“远程执行者”。
你可以在 Discord(或 Telegram)发任务、看进度、管理会话,它自称能力包括:
- 树状线程:回复某条消息就能分叉对话
- 会话持久化:重启服务也不丢
- 实时流式输出:thinking tokens、tool calls、结果都能直播
- 不限并发 Claude CLI 会话(并发由
PROVIDER_MAX_CONCURRENCY控制) - 语音消息:语音会被转写再当 prompt 处理
- 命令:
/stop、/clear、/stats
Discord Setup(按 README 的步骤来)
- 在 Discord Developer Portal 创建 Bot,拿 token,开启 Message Content Intent。
- 配
.env:
1 | MESSAGING_PLATFORM="discord" |
- 配 workspace(Claude 在哪里操作):
1 | CLAUDE_WORKSPACE="./agent_workspace" |
- 启动 server:
1 | uv run uvicorn server:app --host 0.0.0.0 --port 8082 |
- 用 OAuth2 URL Generator 邀请 bot(scopes:
bot,权限包含读写消息、管理消息、读历史)。
Telegram Setup
1 | MESSAGING_PLATFORM=telegram |
Voice Notes:它还会听你说话
语音笔记支持两条路:
| Backend | Description | API Key |
|---|---|---|
| Local Whisper (default) | Hugging Face Whisper — free, offline, CUDA compatible | not required |
| NVIDIA NIM | Whisper/Parakeet models via gRPC | NVIDIA_NIM_API_KEY |
安装 voice extras(按 README 原文命令):
1 | # If you cloned the repo: |
Configuration:它的开关很多,但都写在桌面上
它把配置分成了几大类:Core、Rate Limiting & Timeouts、Messaging & Voice、以及优化开关等。README 明确说:更多参数看 .env.example。
Core 里最关键的是这些(节选):
MODEL:兜底模型(必须是provider/model/name)MODEL_OPUS/MODEL_SONNET/MODEL_HAIKU:按 Claude 模型层级分流ENABLE_MODEL_THINKING与ENABLE_*_THINKING:思考块开关PROVIDER_RATE_LIMIT/PROVIDER_RATE_WINDOW/PROVIDER_MAX_CONCURRENCY:限流与并发LM_STUDIO_BASE_URL、LLAMACPP_BASE_URL、OLLAMA_BASE_URL:本地服务地址
它还默认开启了“请求优化”拦截开关(节选):
FAST_PREFIX_DETECTION=trueENABLE_NETWORK_PROBE_MOCK=trueENABLE_TITLE_GENERATION_SKIP=trueENABLE_SUGGESTION_MODE_SKIP=trueENABLE_FILEPATH_EXTRACTION_MOCK=true
Development:如果你想看它怎么长大的
Project Structure
1 | free-claude-code/ |
Commands(开发者日常四件套)
1 | uv run ruff format # Format code |
Extending:它欢迎新朋友加入舞会
README 给了扩展示例,像是在说:“你想加新 provider?可以,按这个姿势来。”
Adding an OpenAI-compatible provider(示例)
1 | from providers.openai_compat import OpenAIChatTransport |
还包括:
- 加原生 Anthropic provider:继承
AnthropicMessagesTransport,然后在providers.registry注册 - 加完全自定义 provider:继承
BaseProvider,实现stream_response()并注册 - 加新消息平台:继承
MessagingPlatform,实现start/stop/send_message/edit_message/on_message
Contributing:它想要的帮忙
它的心愿清单也写得坦白:
- 在 Issues 报 bug 或提功能
- 添加新的 LLM providers(Groq、Together AI 等)
- 添加新的 messaging platforms(Slack 等)
- 提升测试覆盖率
- 暂时不接受 Docker 集成 PR
并且给了贡献流程:
1 | git checkout -b my-feature |
License
MIT License(MIT)。详见仓库的 LICENSE。
它还点名了自己的“搭档们”:FastAPI、OpenAI Python SDK、discord.py、python-telegram-bot。
结语:它不是在“替代 Claude”,而是在帮 Claude 找到更自由的路
Free Claude Code 更像一位礼貌但手段高明的“代理人”:
它不打扰你原本的使用习惯,不要求你重学工具,不让你改 Claude Code 的一行代码——它只是安静地站在 :8082,接住每一次请求,然后把请求送往你选的世界。
你可以让它把 Claude Code 的话交给 NVIDIA NIM 的免费额度;
也可以让它带着模型漫游 OpenRouter;
你甚至可以把这一切关进自己的电脑里,交给 LM Studio / llama.cpp / Ollama——让对话离你更近、更私密、更可控。
当 Claude Code 迈开脚步的时候,它就在旁边轻轻说一句:
“去吧,我来负责把路铺好。”
