free-claude-code 是一个 Python 代理,把官方 Claude Code CLI 与 VSCode 扩展发出的 Anthropic API 请求,转发到 NVIDIA NIM、OpenRouter、DeepSeek、LM Studio、llama.cpp、Ollama 等免费或本地后端,让没有 Anthropic 订阅的开发者继续沿用 Claude Code 的命令行工作流。
来源:README 标题与 'How It Works' 节 查看 GitHub 仓库 →Claude Code 是 Anthropic 官方的命令行编码代理,定价较高且对部分地区不可用,社区一直在找'用其他模型驱动同一套 CLI'的方案。本项目通过 Anthropic 协议代理把这件事做成 drop-in:客户端只需设置 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN 两个环境变量,CLI/VSCode/JetBrains 插件无需改动。覆盖 6 个后端(含 3 个本地引擎),其中 NVIDIA NIM 提供 40 req/min 免费额度,本地后端则可完全离线、私有化部署。配套的 Discord/Telegram 机器人把 Claude Code 远程化(树状对话、会话持久化、语音转写),属于在'免费替代'之外加了协作维度。
来源:README 'Use Claude Code CLI & VSCode for free' 子标题、Features 表、Discord Bot 节本地启动 FastAPI 服务监听 8082 端口,暴露 Claude Code 客户端预期的 /v1/messages、/v1/messages/count_tokens、/v1/models 等路由(含 HEAD/OPTIONS 探测),对客户端而言是一个完整的 Anthropic 后端。客户端只需设置 ANTHROPIC_BASE_URL=http://localhost:8082 与可选的 ANTHROPIC_AUTH_TOKEN,无需修改 CLI 或 VSCode 扩展。
来源:README 'Run It' / 'How It Works',api/routes.py通过 MODEL_OPUS、MODEL_SONNET、MODEL_HAIKU 三个环境变量,把 Claude Code 内部针对不同 Claude 型号发出的请求分别落到不同 provider 的不同模型,未匹配时回退到 MODEL。可以做到 Opus 走 OpenRouter 的 deepseek-r1、Haiku 走本地 LM Studio 这种混合编排。模型名采用 'provider_prefix/model/name' 三段式,prefix 不合法直接报错。
来源:README 'Mix providers' 与 Configuration 表,api/model_router.py对 NVIDIA NIM、DeepSeek(chat completions 模式)等 OpenAI 兼容后端,把 OpenAI 流式 SSE 翻译回 Claude 期望的 Anthropic Messages SSE 协议;对 OpenRouter、LM Studio、llama.cpp、Ollama 这些原生支持 Anthropic Messages 的后端则直通转发。该层逻辑集中在 core/anthropic/ 下 12 个模块(content、conversion、sse、stream_contracts、tools、thinking、tokens 等)。
来源:README 'Format handling' 段,core/anthropic/ 目录把 OpenAI 风格的
在本地拦截 5 类 Claude Code 发出的'琐碎请求'(额度探测、标题生成、前缀检测、建议、文件路径抽取)直接本地应答,节省额度与延迟。叠加 rolling-window 限速(默认 40 req / 60s)、并发上限(PROVIDER_MAX_CONCURRENCY=5)、429 指数退避,专门针对 NVIDIA NIM 这类强限流后端。
来源:README Features 表 'Request Optimization' 与 'Smart Rate Limiting',api/optimization_handlers.py、core/rate_limit.py把 Claude Code 会话挂在聊天机器人后面:树状消息分支(reply 即开新会话)、跨重启的会话持久化、思考流与工具调用的实时推送、并发会话数由配置控制、可选语音消息(本地 Whisper 或 NVIDIA NIM Riva 转写后作为 prompt)。内部以 MessagingPlatform ABC 抽象,便于扩展其他 IM。
来源:README 'Discord Bot' 节,messaging/ 目录支持 'uv tool install git+...' 全局安装,无需 clone;fcc-init 命令把内置 .env 模板复制到 ~/.config/free-claude-code/.env,free-claude-code 命令直接拉起服务。pyproject 用 hatchling 构建,console_scripts 暴露两个入口(serve 与 init)。
来源:README 'Install as a Package',pyproject.toml [project.scripts]一个独立的 shell 脚本(仓库根目录 claude-pick),借助 fzf 在启动 Claude 时交互选模型,token 中编码模型名(如 ANTHROPIC_AUTH_TOKEN=freecc:moonshotai/kimi-k2.5)传给代理,无需每次改 .env。
来源:README 'Multi-Model Support',仓库根目录 claude-pick 脚本整体是 'FastAPI 反向代理 + 协议转换层 + Provider/Messaging 双插件体系' 三段结构。api/ 是入口层,包含 routes、app、dependencies、model_router、optimization_handlers、detection、validation_log、web_server_tools,以及 web_tools/ 子包负责 Claude Code 内置 web 搜索/抓取工具的本地代理(egress、outbound、parsers、streaming)。core/anthropic/ 是协议适配核心,把 OpenAI 流式响应、reasoning_content、文本化 tool call 等 12 类细节统一翻译成 Anthropic Messages SSE 帧(sse、stream_contracts、emitted_sse_tracker、native_sse_block_policy 这种命名表明对发帧顺序做了状态机维护)。providers/ 在 pyproject 的打包列表中声明,README 描述其包含 BaseProvider ABC + OpenAIChatTransport + AnthropicMessagesTransport 三层,新接入只需继承对应基类并向 registry 注册 ProviderConfig。messaging/ 同样以 ABC 解耦,目前内置 Discord/Telegram,含 command_dispatcher、event_parser、limiter、handler。cli/ 维护命令行 session 与 process_registry,负责 'free-claude-code' 长驻服务管理。config/ 集中 settings、constants、logging、nim 与 provider_catalog,环境变量先经 pydantic-settings 解析。整体模块切分较细,但每一层职责清晰;唯一略显碎片的是 core/anthropic/ 拆成 12 个文件,部分(如 provider_stream_error.py、emitted_sse_tracker.py)可合并以降低导航成本。
来源:tree.txt + pyproject.toml [tool.hatch.build.targets.wheel] + README 'Project Structure'/'Extending'infra: 无 Docker(README 明确暂不接受 Docker PR),交付形态为 'uv tool install' 全局命令或 'uv run uvicorn' 本地服务;构建使用 hatchling;CI 用 GitHub Actions(.github/workflows/tests.yml)+ Dependabot;代码质量栈 ruff(lint+format)、ty(类型检查)、pytest(含 pytest-asyncio、pytest-xdist 并发跑) | key_deps: httpx[socks] — 出站 HTTP/SSE 与可选 SOCKS 代理, pydantic v2 + pydantic-settings — 配置与协议建模, tiktoken — token 计数, loguru — 结构化日志, openai — 复用其 SDK 处理 OpenAI 兼容后端, discord.py + python-telegram-bot — 远程操控机器人, aiohttp — 备用 HTTP 客户端, 可选 voice/voice_local:nvidia-riva-client 或 torch + transformers + librosa(本地 Whisper) | language: Python 3.14(pyproject 强制 requires-python>=3.14) | framework: FastAPI + uvicorn
来源:pyproject.toml [project] 与 [dependency-groups]、[tool.*],README 'Development' 段1. 没有 Anthropic 订阅 / 当地无法直接访问 Anthropic 的开发者,借助 NVIDIA NIM 免费额度(40 req/min)继续使用 Claude Code 的命令行编码工作流;2. 对代码私有化、离线开发有要求的团队,配合 Ollama / LM Studio / llama.cpp 把 Claude Code 全程跑在本地模型上,不出网;3. 需要对不同 Claude 模型层级走不同后端的进阶用户(如 Opus 走付费高质模型、Sonnet 走 OpenRouter 免费推理、Haiku 走本地小模型),通过 MODEL_OPUS / SONNET / HAIKU 做混合编排;4. 想把 Claude Code 远程化的个人或小团队,用 Discord/Telegram 机器人接入,支持树状对话、会话持久化与语音输入。
来源:README Features 表、Providers 表、Discord Bot 节GitHub Releases 暂无记录(截至本次分析)。pyproject.toml 中声明 version='2.0.0',重大变更通过 README 'Migration' 提示发布——例如本版本移除 NIM_ENABLE_THINKING / ENABLE_THINKING,改用 ENABLE_MODEL_THINKING 作为统一开关并支持 Opus/Sonnet/Haiku 三档独立覆盖。
来源:GitHub Releases API(空)+ pyproject.toml [project].version + README Migration 段对在意'继续用 Claude Code,但不愿/不能付 Anthropic 订阅'的开发者,free-claude-code 是当前最完整的代理方案:6 个后端覆盖云端免费、付费、本地三类场景,drop-in 兼容 CLI 与三大 IDE 插件,工程基础设施完整。务实建议:1) 优先用 'uv tool install + fcc-init' 而不是 clone,升级路径更干净;2) 起步先只配 NVIDIA NIM 这一个 provider 跑通,再叠加 per-model 路由——一上来 Opus/Sonnet/Haiku 全配很容易踩 prefix 校验错误;3) 对稳定性要求高的生产场景,建议固定 fork 的 commit 而不是跟主分支,因为协议转换层对上游 Anthropic 的演化敏感、又没有版本化 release notes;4) 如果只是想本地跑、不需要远程操控,不要装 voice / voice_local extras,torch + transformers 在 Python 3.14 上的依赖装起来很慢;5) 如果团队需要多人共享、容器化部署、版本化 changelog,目前不合适——README 明说不接受 Docker PR、没有 release,不属于产品级运维形态。
来源:综合分析:pyproject.toml + README 全文 + 模块结构推断