free-claude-code 是什么?

free-claude-code 是一个 Python 代理,把官方 Claude Code CLI 与 VSCode 扩展发出的 Anthropic API 请求,转发到 NVIDIA NIM、OpenRouter、DeepSeek、LM Studio、llama.cpp、Ollama 等免费或本地后端,让没有 Anthropic 订阅的开发者继续沿用 Claude Code 的命令行工作流。

⭐ 24,232 Stars 🍴 3,588 Forks Python MIT 作者: Alishahryar1
来源: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 节

核心功能

Anthropic API drop-in 代理转发

本地启动 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
Per-Model 路由(Opus / Sonnet / Haiku 各自映射)

通过 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
OpenAI Chat ↔ Anthropic Messages SSE 双向转换

对 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/ 目录
Thinking Token 与 Tool 调用的兼容处理

把 OpenAI 风格的 标签和 reasoning_content 字段,以及部分模型直接以文本形式输出的 tool call,启发式地解析回 Claude 原生的 thinking blocks 与结构化 tool_use。可按 Claude 模型层级(Opus/Sonnet/Haiku)独立开关 thinking,便于对齐目标 backend 的实际能力。

来源:README 'Thinking Token Support' / 'Heuristic Tool Parser',core/anthropic/thinking.py、tools.py
请求优化与 Rate Limit 防护

在本地拦截 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
Discord / Telegram 远程操控

把 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]
claude-pick 模型选择器

一个独立的 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' 段

快速上手

# 装 uv 并指定 Python 3.14 curl -LsSf https://astral.sh/uv/install.sh | sh uv python install 3.14 # 包式安装(无需 clone) uv tool install git+https://github.com/Alishahryar1/free-claude-code.git fcc-init # 在 ~/.config/free-claude-code/.env 生成配置模板 # 编辑 ~/.config/free-claude-code/.env,最少填一个 provider,例如 NVIDIA NIM: # NVIDIA_NIM_API_KEY="nvapi-..." # MODEL="nvidia_nim/z-ai/glm4.7" # 起代理 free-claude-code # 监听 :8082 # 另开一个终端,把 Claude Code 指向代理 ANTHROPIC_AUTH_TOKEN="freecc" ANTHROPIC_BASE_URL="http://localhost:8082" claude # 升级:uv tool upgrade free-claude-code
来源:README 'Install as a Package' / 'Run It' / NVIDIA NIM 配置块

使用场景

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 节

优势与局限

优势

  • Drop-in 兼容性强:客户端只需两个环境变量,CLI / VSCode / JetBrains 插件零改动,迁移成本极低(README 'Drop-in Replacement')
  • 覆盖面广:6 个后端覆盖云端免费(NIM/OpenRouter)、按量付费(DeepSeek)、纯本地(LM Studio/llama.cpp/Ollama)三大场景,配合 per-model 路由可灵活混搭
  • 工程化扎实:ruff + ty + pytest(含 xdist 并发) + Dependabot + GitHub Actions tests workflow,pyproject 用现代 hatchling,符合 2025-2026 Python 项目最佳实践
  • 协议层做得细:core/anthropic/ 12 个模块明确处理了 SSE 帧顺序、thinking blocks、tool 调用文本回收、token 计数等 Anthropic 协议中的高频差异点;本地拦截 5 类琐碎请求显著节省额度
  • 可扩展点清晰:BaseProvider / OpenAIChatTransport / AnthropicMessagesTransport 三层 ABC 让新增 provider 只写适配类即可;MessagingPlatform 同理
  • 文档详尽:README 700+ 行覆盖 6 种 provider、IDE 插件设置、机器人配置、语音转写、所有环境变量,对新用户摩擦小

局限

  • 可维护性风险:requires-python>=3.14(2025 年 10 月发布),生态尚未广泛适配,部分依赖(torch、transformers、librosa)的 3.14 轮子可能不全;普通用户在系统 Python 上会直接装不上
  • 稳定性风险:Anthropic SSE 协议与 thinking block 在持续演化,依赖 'OpenAI chat → Anthropic messages' 的转换层是脆弱点,上游协议小改动可能破坏工具调用、思考流的解析(README 'Heuristic Tool Parser' 自承启发式)
  • 可测试性局限:tests/ 目录未在仓库根 tree 前 80 项中体现,pyproject 标记了 live/interactive/provider/messaging/voice 等需手动触发的真服务集成 marker,说明大量端到端路径无法在纯单元测试覆盖;CI 主要保证 lint+typecheck+offline 单元
  • 可扩展性局限:Provider/Messaging 抽象只到协议适配层,更深的能力(如 prompt 注入、缓存、多租户隔离)没有公开接入点;想做 'OAuth 多用户共享代理' 等场景需要侵入式改 routes/dependencies
  • 运维风险:项目明确暂不接受 Docker PR,无官方容器;没有 GitHub Releases(用 pyproject 的 version 字段做发布管理),升级与回滚靠 uv tool upgrade,缺乏版本化 changelog 让企业用户难评估变更面
  • 性能未给数据:README 未提供吞吐、并发、SSE 转换延迟的实测数据;NVIDIA NIM 40 req/min 是后端硬限,叠加本地限速器,多 IDE 窗口同时跑可能很快撞顶
来源:综合 pyproject.toml、tree.txt、README 各节内容,对照实际代码模块命名

最新版本

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 全文 + 模块结构推断
透明度声明
本页内容由 AI(大语言模型)基于以下公开材料自动生成:GitHub README、代码目录结构、依赖文件、Release 信息。 分析时间: 2026-04-28 00:59. 质量评分: 100/100.

数据来源:README、GitHub API、依赖文件