[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Alishahryar1--free-claude-code":3,"tool-Alishahryar1--free-claude-code":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":80,"owner_twitter":80,"owner_website":80,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":23,"env_os":96,"env_gpu":97,"env_ram":98,"env_deps":99,"category_tags":109,"github_topics":80,"view_count":23,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":110,"updated_at":111,"faqs":112,"releases":113},3809,"Alishahryar1\u002Ffree-claude-code","free-claude-code","Use claude-code for free in the terminal, VSCode extension or via discord like openclaw","free-claude-code 是一款轻量级代理工具，旨在让用户在终端、VSCode 插件或 Discord 中免费使用类 Claude Code 的编程体验，且无需 Anthropic 官方 API 密钥。它巧妙地将原本需要付费的 API 请求路由至免费或本地部署的大模型服务，如提供每分钟 40 次免费调用的 NVIDIA NIM、拥有数百种模型的 OpenRouter，以及完全本地运行的 LM Studio 和 llama.cpp。\n\n这一方案有效解决了开发者因高昂 API 费用或区域限制而无法顺畅使用高级代码助手的问题，实现了“零成本”接入。无论是希望降低开发成本的独立程序员、需要本地隐私保护的研究人员，还是想要尝试自主编码助手的普通技术爱好者，都能从中受益。\n\n其技术亮点在于“无缝替换”特性：用户仅需配置两个环境变量，即可让原版 Claude Code CLI 或插件直接运行，无需修改任何代码。此外，它还支持将不同模型（如 Opus、Sonnet）灵活映射到不同后端，具备智能速率限制以防止超限，甚至能解析非原生模型的思维链标签和工具调用格式，确保交互流畅自然。通过简单的扩展架","free-claude-code 是一款轻量级代理工具，旨在让用户在终端、VSCode 插件或 Discord 中免费使用类 Claude Code 的编程体验，且无需 Anthropic 官方 API 密钥。它巧妙地将原本需要付费的 API 请求路由至免费或本地部署的大模型服务，如提供每分钟 40 次免费调用的 NVIDIA NIM、拥有数百种模型的 OpenRouter，以及完全本地运行的 LM Studio 和 llama.cpp。\n\n这一方案有效解决了开发者因高昂 API 费用或区域限制而无法顺畅使用高级代码助手的问题，实现了“零成本”接入。无论是希望降低开发成本的独立程序员、需要本地隐私保护的研究人员，还是想要尝试自主编码助手的普通技术爱好者，都能从中受益。\n\n其技术亮点在于“无缝替换”特性：用户仅需配置两个环境变量，即可让原版 Claude Code CLI 或插件直接运行，无需修改任何代码。此外，它还支持将不同模型（如 Opus、Sonnet）灵活映射到不同后端，具备智能速率限制以防止超限，甚至能解析非原生模型的思维链标签和工具调用格式，确保交互流畅自然。通过简单的扩展架构，用户还能轻松接入新的模型提供商或消息平台，是追求高效、低成本开发流程的理想选择。","\u003Cdiv align=\"center\">\n\n# 🤖 Free Claude Code\n\n### Use Claude Code CLI & VSCode for free. No Anthropic API key required.\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg?style=for-the-badge)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Python 3.14](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.14-3776ab.svg?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![uv](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fuv\u002Fmain\u002Fassets\u002Fbadge\u002Fv0.json&style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n[![Tested with Pytest](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftesting-Pytest-00c0ff.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code\u002Factions\u002Fworkflows\u002Ftests.yml)\n[![Type checking: Ty](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftype%20checking-ty-ffcc00.svg?style=for-the-badge)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fty\u002F)\n[![Code style: Ruff](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20formatting-ruff-f5a623.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff)\n[![Logging: Loguru](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flogging-loguru-4ecdc4.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002FDelgan\u002Floguru)\n\nA lightweight proxy that routes Claude Code's Anthropic API calls to **NVIDIA NIM** (40 req\u002Fmin free), **OpenRouter** (hundreds of models), **LM Studio** (fully local), or **llama.cpp** (local with Anthropic endpoints).\n\n[Quick Start](#quick-start) · [Providers](#providers) · [Discord Bot](#discord-bot) · [Configuration](#configuration) · [Development](#development) · [Contributing](#contributing)\n\n---\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAlishahryar1_free-claude-code_readme_e08ccd45a0af.png\" alt=\"Free Claude Code in action\" width=\"700\">\n  \u003Cp>\u003Cem>Claude Code running via NVIDIA NIM, completely free\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n## Features\n\n| Feature                    | Description                                                                                     |\n| -------------------------- | ----------------------------------------------------------------------------------------------- |\n| **Zero Cost**              | 40 req\u002Fmin free on NVIDIA NIM. Free models on OpenRouter. Fully local with LM Studio            |\n| **Drop-in Replacement**    | Set 2 env vars. No modifications to Claude Code CLI or VSCode extension needed                  |\n| **4 Providers**            | NVIDIA NIM, OpenRouter (hundreds of models), LM Studio (local), llama.cpp (`llama-server`)      |\n| **Per-Model Mapping**      | Route Opus \u002F Sonnet \u002F Haiku to different models and providers. Mix providers freely             |\n| **Thinking Token Support** | Parses `\u003Cthink>` tags and `reasoning_content` into native Claude thinking blocks                |\n| **Heuristic Tool Parser**  | Models outputting tool calls as text are auto-parsed into structured tool use                   |\n| **Request Optimization**   | 5 categories of trivial API calls intercepted locally, saving quota and latency                 |\n| **Smart Rate Limiting**    | Proactive rolling-window throttle + reactive 429 exponential backoff + optional concurrency cap |\n| **Discord \u002F Telegram Bot** | Remote autonomous coding with tree-based threading, session persistence, and live progress      |\n| **Subagent Control**       | Task tool interception forces `run_in_background=False`. No runaway subagents                   |\n| **Extensible**             | Clean `BaseProvider` and `MessagingPlatform` ABCs. Add new providers or platforms easily        |\n\n## Quick Start\n\n### Prerequisites\n\n1. Get an API key (or use LM Studio \u002F llama.cpp locally):\n   - **NVIDIA NIM**: [build.nvidia.com\u002Fsettings\u002Fapi-keys](https:\u002F\u002Fbuild.nvidia.com\u002Fsettings\u002Fapi-keys)\n   - **OpenRouter**: [openrouter.ai\u002Fkeys](https:\u002F\u002Fopenrouter.ai\u002Fkeys)\n   - **LM Studio**: No API key needed. Run locally with [LM Studio](https:\u002F\u002Flmstudio.ai)\n   - **llama.cpp**: No API key needed. Run `llama-server` locally.\n2. Install [Claude Code](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code)\n\n### Install `uv`\n```bash\n# Install uv (required to run the project)\npip install uv\n```\nIf uv is already installed, run uv self update to get the latest version.\n\n### Clone & Configure\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\ncd free-claude-code\ncp .env.example .env\n```\n\nChoose your provider and edit `.env`:\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>NVIDIA NIM\u003C\u002Fb> (40 req\u002Fmin free, recommended)\u003C\u002Fsummary>\n\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-your-key-here\"\n\nMODEL_OPUS=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"\nMODEL_SONNET=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2-thinking\"\nMODEL_HAIKU=\"nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"                     # fallback\n\n# Enable for thinking models (kimi, nemotron). Leave false for others (e.g. Mistral).\nNIM_ENABLE_THINKING=true\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>OpenRouter\u003C\u002Fb> (hundreds of models)\u003C\u002Fsummary>\n\n```dotenv\nOPENROUTER_API_KEY=\"sk-or-your-key-here\"\n\nMODEL_OPUS=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_SONNET=\"open_router\u002Fopenai\u002Fgpt-oss-120b:free\"\nMODEL_HAIKU=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"\nMODEL=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"     # fallback\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>LM Studio\u003C\u002Fb> (fully local, no API key)\u003C\u002Fsummary>\n\n```dotenv\nMODEL_OPUS=\"lmstudio\u002Funsloth\u002FMiniMax-M2.5-GGUF\"\nMODEL_SONNET=\"lmstudio\u002Funsloth\u002FQwen3.5-35B-A3B-GGUF\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"         # fallback\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>llama.cpp\u003C\u002Fb> (fully local, no API key)\u003C\u002Fsummary>\n\n```dotenv\nLLAMACPP_BASE_URL=\"http:\u002F\u002Flocalhost:8080\u002Fv1\"\n\nMODEL_OPUS=\"llamacpp\u002Flocal-model\"\nMODEL_SONNET=\"llamacpp\u002Flocal-model\"\nMODEL_HAIKU=\"llamacpp\u002Flocal-model\"\nMODEL=\"llamacpp\u002Flocal-model\"\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Mix providers\u003C\u002Fb>\u003C\u002Fsummary>\n\nEach `MODEL_*` variable can use a different provider. `MODEL` is the fallback for unrecognized Claude models.\n\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-your-key-here\"\nOPENROUTER_API_KEY=\"sk-or-your-key-here\"\n\nMODEL_OPUS=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2.5\"\nMODEL_SONNET=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"                      # fallback\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Optional Authentication\u003C\u002Fb> (restrict access to your proxy)\u003C\u002Fsummary>\n\nSet `ANTHROPIC_AUTH_TOKEN` in `.env` to require clients to authenticate:\n\n```dotenv\nANTHROPIC_AUTH_TOKEN=\"your-secret-token-here\"\n```\n\n**How it works:**\n- If `ANTHROPIC_AUTH_TOKEN` is empty (default), no authentication is required (backward compatible)\n- If set, clients must provide the same token via the `ANTHROPIC_AUTH_TOKEN` header\n- The `claude-pick` script automatically reads the token from `.env` if configured\n\n**Example usage:**\n```bash\n# With authentication\nANTHROPIC_AUTH_TOKEN=\"your-secret-token-here\" \\\nANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" claude\n\n# claude-pick automatically uses the configured token\nclaude-pick\n```\n\nUse this feature if:\n- Running the proxy on a public network\n- Sharing the server with others but restricting access\n- Wanting an additional layer of security\n\n\u003C\u002Fdetails>\n\n### Run It\n\n**Terminal 1:** Start the proxy server:\n\n```bash\nuv run uvicorn server:app --host 0.0.0.0 --port 8082\n```\n\n**Terminal 2:** Run Claude Code:\n\n#### Powershell\n```powershell\n$env:ANTHROPIC_AUTH_TOKEN=\"freecc\"; $env:ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\"; claude\n```\n#### Bash\n```bash\nANTHROPIC_AUTH_TOKEN=\"freecc\" ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" claude\n```\n\nThat's it! Claude Code now uses your configured provider for free.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>VSCode Extension Setup\u003C\u002Fb>\u003C\u002Fsummary>\n\n1. Start the proxy server (same as above).\n2. Open Settings (`Ctrl + ,`) and search for `claude-code.environmentVariables`.\n3. Click **Edit in settings.json** and add:\n\n```json\n\"claudeCode.environmentVariables\": [\n  { \"name\": \"ANTHROPIC_BASE_URL\", \"value\": \"http:\u002F\u002Flocalhost:8082\" },\n  { \"name\": \"ANTHROPIC_AUTH_TOKEN\", \"value\": \"freecc\" }\n]\n```\n\n4. Reload extensions.\n5. **If you see the login screen**: Click **Anthropic Console**, then authorize. The extension will start working. You may be redirected to buy credits in the browser; ignore it — the extension already works.\n\nTo switch back to Anthropic models, comment out the added block and reload extensions.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Multi-Model Support (Model Picker)\u003C\u002Fb>\u003C\u002Fsummary>\n\n`claude-pick` is an interactive model selector that lets you choose any model from your active provider each time you launch Claude, without editing `MODEL` in `.env`.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F9a33c316-90f8-4418-9650-97e7d33ad645\n\n**1. Install [fzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf)**:\n\n```bash\nbrew install fzf        # macOS\u002FLinux\n```\n\n**2. Add the alias to `~\u002F.zshrc` or `~\u002F.bashrc`:**\n\n```bash\nalias claude-pick=\"\u002Fabsolute\u002Fpath\u002Fto\u002Ffree-claude-code\u002Fclaude-pick\"\n```\n\nThen reload your shell (`source ~\u002F.zshrc` or `source ~\u002F.bashrc`) and run `claude-pick`.\n\n**Or use a fixed model alias** (no picker needed):\n\n```bash\nalias claude-kimi='ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" ANTHROPIC_AUTH_TOKEN=\"freecc:moonshotai\u002Fkimi-k2.5\" claude'\n```\n\n\u003C\u002Fdetails>\n\n### Install as a Package (no clone needed)\n\n```bash\nuv tool install git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\nfcc-init        # creates ~\u002F.config\u002Ffree-claude-code\u002F.env from the built-in template\n```\n\nEdit `~\u002F.config\u002Ffree-claude-code\u002F.env` with your API keys and model names, then:\n\n```bash\nfree-claude-code    # starts the server\n```\n\n> To update: `uv tool upgrade free-claude-code`\n\n---\n\n## How It Works\n\n```\n┌─────────────────┐        ┌──────────────────────┐        ┌──────────────────┐\n│  Claude Code    │───────>│  Free Claude Code    │───────>│  LLM Provider    │\n│  CLI \u002F VSCode   │\u003C───────│  Proxy (:8082)       │\u003C───────│  NIM \u002F OR \u002F LMS  │\n└─────────────────┘        └──────────────────────┘        └──────────────────┘\n   Anthropic API                                             OpenAI-compatible\n   format (SSE)                                             format (SSE)\n```\n\n- **Transparent proxy**: Claude Code sends standard Anthropic API requests; the proxy forwards them to your configured provider\n- **Per-model routing**: Opus \u002F Sonnet \u002F Haiku requests resolve to their model-specific backend, with `MODEL` as fallback\n- **Request optimization**: 5 categories of trivial requests (quota probes, title generation, prefix detection, suggestions, filepath extraction) are intercepted and responded to locally without using API quota\n- **Format translation**: Requests are translated from Anthropic format to the provider's OpenAI-compatible format and streamed back\n- **Thinking tokens**: `\u003Cthink>` tags and `reasoning_content` fields are converted into native Claude thinking blocks\n\n---\n\n## Providers\n\n| Provider       | Cost         | Rate Limit | Best For                             |\n| -------------- | ------------ | ---------- | ------------------------------------ |\n| **NVIDIA NIM** | Free         | 40 req\u002Fmin | Daily driver, generous free tier     |\n| **OpenRouter** | Free \u002F Paid  | Varies     | Model variety, fallback options      |\n| **LM Studio**  | Free (local) | Unlimited  | Privacy, offline use, no rate limits |\n| **llama.cpp**  | Free (local) | Unlimited  | Lightweight local inference engine   |\n\nModels use a prefix format: `provider_prefix\u002Fmodel\u002Fname`. An invalid prefix causes an error.\n\n| Provider   | `MODEL` prefix    | API Key Variable     | Default Base URL              |\n| ---------- | ----------------- | -------------------- | ----------------------------- |\n| NVIDIA NIM | `nvidia_nim\u002F...`  | `NVIDIA_NIM_API_KEY` | `integrate.api.nvidia.com\u002Fv1` |\n| OpenRouter | `open_router\u002F...` | `OPENROUTER_API_KEY` | `openrouter.ai\u002Fapi\u002Fv1`        |\n| LM Studio  | `lmstudio\u002F...`    | (none)               | `localhost:1234\u002Fv1`           |\n| llama.cpp  | `llamacpp\u002F...`    | (none)               | `localhost:8080\u002Fv1`           |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>NVIDIA NIM models\u003C\u002Fb>\u003C\u002Fsummary>\n\nPopular models (full list in [`nvidia_nim_models.json`](nvidia_nim_models.json)):\n\n- `nvidia_nim\u002Fminimaxai\u002Fminimax-m2.5`\n- `nvidia_nim\u002Fqwen\u002Fqwen3.5-397b-a17b`\n- `nvidia_nim\u002Fz-ai\u002Fglm5`\n- `nvidia_nim\u002Fmoonshotai\u002Fkimi-k2.5`\n- `nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash`\n\nBrowse: [build.nvidia.com](https:\u002F\u002Fbuild.nvidia.com\u002Fexplore\u002Fdiscover) · Update list: `curl \"https:\u002F\u002Fintegrate.api.nvidia.com\u002Fv1\u002Fmodels\" > nvidia_nim_models.json`\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>OpenRouter models\u003C\u002Fb>\u003C\u002Fsummary>\n\nPopular free models:\n\n- `open_router\u002Farcee-ai\u002Ftrinity-large-preview:free`\n- `open_router\u002Fstepfun\u002Fstep-3.5-flash:free`\n- `open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free`\n- `open_router\u002Fopenai\u002Fgpt-oss-120b:free`\n\nBrowse: [openrouter.ai\u002Fmodels](https:\u002F\u002Fopenrouter.ai\u002Fmodels) · [Free models](https:\u002F\u002Fopenrouter.ai\u002Fcollections\u002Ffree-models)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>LM Studio models\u003C\u002Fb>\u003C\u002Fsummary>\n\nRun models locally with [LM Studio](https:\u002F\u002Flmstudio.ai). Load a model in the Chat or Developer tab, then set `MODEL` to its identifier.\n\nExamples with native tool-use support:\n\n- `LiquidAI\u002FLFM2-24B-A2B-GGUF`\n- `unsloth\u002FMiniMax-M2.5-GGUF`\n- `unsloth\u002FGLM-4.7-Flash-GGUF`\n- `unsloth\u002FQwen3.5-35B-A3B-GGUF`\n\nBrowse: [model.lmstudio.ai](https:\u002F\u002Fmodel.lmstudio.ai)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>llama.cpp models\u003C\u002Fb>\u003C\u002Fsummary>\n\nRun models locally using `llama-server`. Ensure you have a tool-capable GGUF. Set `MODEL` to whatever arbitrary name you'd like (e.g. `llamacpp\u002Fmy-model`), as `llama-server` ignores the model name when run via `\u002Fv1\u002Fmessages`.\n\nSee the Unsloth docs for detailed instructions and capable models:\n[https:\u002F\u002Funsloth.ai\u002Fdocs\u002Fmodels\u002Fqwen3.5#qwen3.5-small-0.8b-2b-4b-9b](https:\u002F\u002Funsloth.ai\u002Fdocs\u002Fmodels\u002Fqwen3.5#qwen3.5-small-0.8b-2b-4b-9b)\n\n\u003C\u002Fdetails>\n\n---\n\n## Discord Bot\n\nControl Claude Code remotely from Discord (or Telegram). Send tasks, watch live progress, and manage multiple concurrent sessions.\n\n**Capabilities:**\n\n- Tree-based message threading: reply to a message to fork the conversation\n- Session persistence across server restarts\n- Live streaming of thinking tokens, tool calls, and results\n- Unlimited concurrent Claude CLI sessions (concurrency controlled by `PROVIDER_MAX_CONCURRENCY`)\n- Voice notes: send voice messages; they are transcribed and processed as regular prompts\n- Commands: `\u002Fstop` (cancel a task; reply to a message to stop only that task), `\u002Fclear` (reset all sessions, or reply to clear a branch), `\u002Fstats`\n\n### Setup\n\n1. **Create a Discord Bot**: Go to [Discord Developer Portal](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications), create an application, add a bot, and copy the token. Enable **Message Content Intent** under Bot settings.\n\n2. **Edit `.env`:**\n\n```dotenv\nMESSAGING_PLATFORM=\"discord\"\nDISCORD_BOT_TOKEN=\"your_discord_bot_token\"\nALLOWED_DISCORD_CHANNELS=\"123456789,987654321\"\n```\n\n> Enable Developer Mode in Discord (Settings → Advanced), then right-click a channel and \"Copy ID\". Comma-separate multiple channels. If empty, no channels are allowed.\n\n3. **Configure the workspace** (where Claude will operate):\n\n```dotenv\nCLAUDE_WORKSPACE=\".\u002Fagent_workspace\"\nALLOWED_DIR=\"C:\u002FUsers\u002Fyourname\u002Fprojects\"\n```\n\n4. **Start the server:**\n\n```bash\nuv run uvicorn server:app --host 0.0.0.0 --port 8082\n```\n\n5. **Invite the bot** via OAuth2 URL Generator (scopes: `bot`, permissions: Read Messages, Send Messages, Manage Messages, Read Message History).\n\n### Telegram\n\nSet `MESSAGING_PLATFORM=telegram` and configure:\n\n```dotenv\nTELEGRAM_BOT_TOKEN=\"123456789:ABCdefGHIjklMNOpqrSTUvwxYZ\"\nALLOWED_TELEGRAM_USER_ID=\"your_telegram_user_id\"\n```\n\nGet a token from [@BotFather](https:\u002F\u002Ft.me\u002FBotFather); find your user ID via [@userinfobot](https:\u002F\u002Ft.me\u002Fuserinfobot).\n\n### Voice Notes\n\nSend voice messages on Discord or Telegram; they are transcribed and processed as regular prompts.\n\n| Backend                     | Description                                                                                                   | API Key              |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------- |\n| **Local Whisper** (default) | [Hugging Face Whisper](https:\u002F\u002Fhuggingface.co\u002Fopenai\u002Fwhisper-large-v3-turbo) — free, offline, CUDA compatible | not required         |\n| **NVIDIA NIM**              | Whisper\u002FParakeet models via gRPC                                                                              | `NVIDIA_NIM_API_KEY` |\n\n**Install the voice extras:**\n\n```bash\n# If you cloned the repo:\nuv sync --extra voice_local          # Local Whisper\nuv sync --extra voice                # NVIDIA NIM\nuv sync --extra voice --extra voice_local  # Both\n\n# If you installed as a package (no clone):\nuv tool install \"free-claude-code[voice_local] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\nuv tool install \"free-claude-code[voice] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\nuv tool install \"free-claude-code[voice,voice_local] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\n```\n\nConfigure via `WHISPER_DEVICE` (`cpu` | `cuda` | `nvidia_nim`) and `WHISPER_MODEL`. See the [Configuration](#configuration) table for all voice variables and supported model values.\n\n---\n\n## Configuration\n\n### Core\n\n| Variable             | Description                                                           | Default                                           |\n| -------------------- | --------------------------------------------------------------------- | ------------------------------------------------- |\n| `MODEL`              | Fallback model (`provider\u002Fmodel\u002Fname` format; invalid prefix → error) | `nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash`            |\n| `MODEL_OPUS`         | Model for Claude Opus requests (falls back to `MODEL`)                | `nvidia_nim\u002Fz-ai\u002Fglm4.7`                          |\n| `MODEL_SONNET`       | Model for Claude Sonnet requests (falls back to `MODEL`)              | `open_router\u002Farcee-ai\u002Ftrinity-large-preview:free` |\n| `MODEL_HAIKU`        | Model for Claude Haiku requests (falls back to `MODEL`)               | `open_router\u002Fstepfun\u002Fstep-3.5-flash:free`         |\n| `NVIDIA_NIM_API_KEY`    | NVIDIA API key                                                        | required for NIM                                  |\n| `NIM_ENABLE_THINKING`   | Send `chat_template_kwargs` + `reasoning_budget` on NIM requests. Enable for thinking models (kimi, nemotron); leave `false` for others (e.g. Mistral) | `false` |\n| `OPENROUTER_API_KEY` | OpenRouter API key                                                    | required for OpenRouter                           |\n| `LM_STUDIO_BASE_URL` | LM Studio server URL                                                  | `http:\u002F\u002Flocalhost:1234\u002Fv1`                        |\n| `LLAMACPP_BASE_URL`  | llama.cpp server URL                                                  | `http:\u002F\u002Flocalhost:8080\u002Fv1`                        |\n\n### Rate Limiting & Timeouts\n\n| Variable                   | Description                               | Default |\n| -------------------------- | ----------------------------------------- | ------- |\n| `PROVIDER_RATE_LIMIT`      | LLM API requests per window               | `40`    |\n| `PROVIDER_RATE_WINDOW`     | Rate limit window (seconds)               | `60`    |\n| `PROVIDER_MAX_CONCURRENCY` | Max simultaneous open provider streams    | `5`     |\n| `HTTP_READ_TIMEOUT`        | Read timeout for provider requests (s)    | `120`   |\n| `HTTP_WRITE_TIMEOUT`       | Write timeout for provider requests (s)   | `10`    |\n| `HTTP_CONNECT_TIMEOUT`     | Connect timeout for provider requests (s) | `2`     |\n\n### Messaging & Voice\n\n| Variable                   | Description                                                                                                                                                        | Default             |\n| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |\n| `MESSAGING_PLATFORM`       | `discord` or `telegram`                                                                                                                                            | `discord`           |\n| `DISCORD_BOT_TOKEN`        | Discord bot token                                                                                                                                                  | `\"\"`                |\n| `ALLOWED_DISCORD_CHANNELS` | Comma-separated channel IDs (empty = none allowed)                                                                                                                 | `\"\"`                |\n| `TELEGRAM_BOT_TOKEN`       | Telegram bot token                                                                                                                                                 | `\"\"`                |\n| `ALLOWED_TELEGRAM_USER_ID` | Allowed Telegram user ID                                                                                                                                           | `\"\"`                |\n| `CLAUDE_WORKSPACE`         | Directory where the agent operates                                                                                                                                 | `.\u002Fagent_workspace` |\n| `ALLOWED_DIR`              | Allowed directories for the agent                                                                                                                                  | `\"\"`                |\n| `MESSAGING_RATE_LIMIT`     | Messaging messages per window                                                                                                                                      | `1`                 |\n| `MESSAGING_RATE_WINDOW`    | Messaging window (seconds)                                                                                                                                         | `1`                 |\n| `VOICE_NOTE_ENABLED`       | Enable voice note handling                                                                                                                                         | `true`              |\n| `WHISPER_DEVICE`           | `cpu` \\| `cuda` \\| `nvidia_nim`                                                                                                                                    | `cpu`               |\n| `WHISPER_MODEL`            | Whisper model (local: `tiny`\u002F`base`\u002F`small`\u002F`medium`\u002F`large-v2`\u002F`large-v3`\u002F`large-v3-turbo`; NIM: `openai\u002Fwhisper-large-v3`, `nvidia\u002Fparakeet-ctc-1.1b-asr`, etc.) | `base`              |\n| `HF_TOKEN`                 | Hugging Face token for faster downloads (local Whisper, optional)                                                                                                  | —                   |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Advanced: Request optimization flags\u003C\u002Fb>\u003C\u002Fsummary>\n\nThese are enabled by default and intercept trivial Claude Code requests locally to save API quota.\n\n| Variable                          | Description                    | Default |\n| --------------------------------- | ------------------------------ | ------- |\n| `FAST_PREFIX_DETECTION`           | Enable fast prefix detection   | `true`  |\n| `ENABLE_NETWORK_PROBE_MOCK`       | Mock network probe requests    | `true`  |\n| `ENABLE_TITLE_GENERATION_SKIP`    | Skip title generation requests | `true`  |\n| `ENABLE_SUGGESTION_MODE_SKIP`     | Skip suggestion mode requests  | `true`  |\n| `ENABLE_FILEPATH_EXTRACTION_MOCK` | Mock filepath extraction       | `true`  |\n\n\u003C\u002Fdetails>\n\nSee [`.env.example`](.env.example) for all supported parameters.\n\n---\n\n## Development\n\n### Project Structure\n\n```\nfree-claude-code\u002F\n├── server.py              # Entry point\n├── api\u002F                   # FastAPI routes, request detection, optimization handlers\n├── providers\u002F             # BaseProvider, OpenAICompatibleProvider, NIM, OpenRouter, LM Studio, llamacpp\n│   └── common\u002F            # Shared utils (SSE builder, message converter, parsers, error mapping)\n├── messaging\u002F             # MessagingPlatform ABC + Discord\u002FTelegram bots, session management\n├── config\u002F                # Settings, NIM config, logging\n├── cli\u002F                   # CLI session and process management\n└── tests\u002F                 # Pytest test suite\n```\n\n### Commands\n\n```bash\nuv run ruff format     # Format code\nuv run ruff check      # Lint\nuv run ty check        # Type checking\nuv run pytest          # Run tests\n```\n\n### Extending\n\n**Adding an OpenAI-compatible provider** (Groq, Together AI, etc.) — extend `OpenAICompatibleProvider`:\n\n```python\nfrom providers.openai_compat import OpenAICompatibleProvider\nfrom providers.base import ProviderConfig\n\nclass MyProvider(OpenAICompatibleProvider):\n    def __init__(self, config: ProviderConfig):\n        super().__init__(config, provider_name=\"MYPROVIDER\",\n                         base_url=\"https:\u002F\u002Fapi.example.com\u002Fv1\", api_key=config.api_key)\n```\n\n**Adding a fully custom provider** — extend `BaseProvider` directly and implement `stream_response()`.\n\n**Adding a messaging platform** — extend `MessagingPlatform` in `messaging\u002F` and implement `start()`, `stop()`, `send_message()`, `edit_message()`, and `on_message()`.\n\n---\n\n## Contributing\n\n- Report bugs or suggest features via [Issues](https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code\u002Fissues)\n- Add new LLM providers (Groq, Together AI, etc.)\n- Add new messaging platforms (Slack, etc.)\n- Improve test coverage\n- Not accepting Docker integration PRs for now\n\n```bash\ngit checkout -b my-feature\nuv run ruff format && uv run ruff check && uv run ty check && uv run pytest\n# Open a pull request\n```\n\n---\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\nBuilt with [FastAPI](https:\u002F\u002Ffastapi.tiangolo.com\u002F), [OpenAI Python SDK](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python), [discord.py](https:\u002F\u002Fgithub.com\u002FRapptz\u002Fdiscord.py), and [python-telegram-bot](https:\u002F\u002Fpython-telegram-bot.org\u002F).\n","\u003Cdiv align=\"center\">\n\n# 🤖 免费 Claude Code\n\n### 免费使用 Claude Code CLI 和 VSCode，无需 Anthropic API 密钥。\n\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg?style=for-the-badge)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Python 3.14](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.14-3776ab.svg?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![uv](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fuv\u002Fmain\u002Fassets\u002Fbadge\u002Fv0.json&style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n[![使用 Pytest 测试](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftesting-Pytest-00c0ff.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code\u002Factions\u002Fworkflows\u002Ftests.yml)\n[![类型检查：Ty](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftype%20checking-ty-ffcc00.svg?style=for-the-badge)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fty\u002F)\n[![代码风格：Ruff](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20formatting-ruff-f5a623.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff)\n[![日志记录：Loguru](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flogging-loguru-4ecdc4.svg?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002FDelgan\u002Floguru)\n\n一个轻量级代理，可将 Claude Code 的 Anthropic API 请求路由至 **NVIDIA NIM**（每分钟 40 次免费）、**OpenRouter**（数百种模型）、**LM Studio**（完全本地运行）或 **llama.cpp**（本地运行并支持 Anthropic 端点）。\n\n[快速入门](#quick-start) · [提供商](#providers) · [Discord 机器人](#discord-bot) · [配置](#configuration) · [开发](#development) · [贡献](#contributing)\n\n---\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAlishahryar1_free-claude-code_readme_e08ccd45a0af.png\" alt=\"Free Claude Code 运行中\" width=\"700\">\n  \u003Cp>\u003Cem>Claude Code 通过 NVIDIA NIM 运行，完全免费\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n## 特性\n\n| 特性                    | 描述                                                                                     |\n| -------------------------- | ----------------------------------------------------------------------------------------------- |\n| **零成本**              | NVIDIA NIM 提供每分钟 40 次免费请求。OpenRouter 上有免费模型。LM Studio 可完全本地运行            |\n| **即插即用**    | 设置 2 个环境变量即可。无需修改 Claude Code CLI 或 VSCode 扩展程序                  |\n| **4 种提供商**            | NVIDIA NIM、OpenRouter（数百种模型）、LM Studio（本地）、llama.cpp（`llama-server`）      |\n| **按模型映射**      | 可将 Opus \u002F Sonnet \u002F Haiku 路由到不同模型和提供商。可自由混合使用不同的提供商             |\n| **思考标记支持** | 解析 `\\\u003Cthink\\>` 标签和 `reasoning_content` 为原生 Claude 思考块                |\n| **启发式工具解析器**  | 将模型输出的工具调用文本自动解析为结构化工具使用                   |\n| **请求优化**   | 本地拦截 5 类琐碎的 API 调用，节省配额并降低延迟                 |\n| **智能限流**    | 主动滚动窗口限流 + 反应式 429 指数退避 + 可选并发上限 |\n| **Discord \u002F Telegram 机器人** | 远程自主编码，支持基于树状结构的线程管理、会话持久化和实时进度显示      |\n| **子代理控制**       | 任务工具拦截会强制设置 `run_in_background=False`。防止子代理失控                   |\n| **可扩展性**             | 清晰的 `BaseProvider` 和 `MessagingPlatform` 抽象基类。轻松添加新的提供商或平台        |\n\n## 快速入门\n\n### 前提条件\n\n1. 获取 API 密钥（或在本地使用 LM Studio \u002F llama.cpp）：\n   - **NVIDIA NIM**：[build.nvidia.com\u002Fsettings\u002Fapi-keys](https:\u002F\u002Fbuild.nvidia.com\u002Fsettings\u002Fapi-keys)\n   - **OpenRouter**：[openrouter.ai\u002Fkeys](https:\u002F\u002Fopenrouter.ai\u002Fkeys)\n   - **LM Studio**：无需 API 密钥。可在本地使用 [LM Studio](https:\u002F\u002Flmstudio.ai) 运行。\n   - **llama.cpp**：无需 API 密钥。可在本地运行 `llama-server`。\n2. 安装 [Claude Code](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code)\n\n### 安装 `uv`\n```bash\n# 安装 uv（运行该项目所需）\npip install uv\n```\n如果已安装 uv，请运行 `uv self update` 以获取最新版本。\n\n### 克隆并配置\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\ncd free-claude-code\ncp .env.example .env\n```\n\n选择您的提供商并编辑 `.env` 文件：\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>NVIDIA NIM\u003C\u002Fb>（每分钟 40 次免费，推荐）\u003C\u002Fsummary>\n\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-your-key-here\"\n\nMODEL_OPUS=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"\nMODEL_SONNET=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2-thinking\"\nMODEL_HAIKU=\"nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"                     # 备用\n\n# 对于思考型模型（kimi、nemotron）启用此选项。其他模型（如 Mistral）则保持关闭。\nNIM_ENABLE_THINKING=true\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>OpenRouter\u003C\u002Fb>（数百种模型）\u003C\u002Fsummary>\n\n```dotenv\nOPENROUTER_API_KEY=\"sk-or-your-key-here\"\n\nMODEL_OPUS=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_SONNET=\"open_router\u002Fopenai\u002Fgpt-oss-120b:free\"\nMODEL_HAIKU=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"\nMODEL=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"     # 备用\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>LM Studio\u003C\u002Fb>（完全本地运行，无需 API 密钥）\u003C\u002Fsummary>\n\n```dotenv\nMODEL_OPUS=\"lmstudio\u002Funsloth\u002FMiniMax-M2.5-GGUF\"\nMODEL_SONNET=\"lmstudio\u002Funsloth\u002FQwen3.5-35B-A3B-GGUF\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"         # 备用\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>llama.cpp\u003C\u002Fb>（完全本地运行，无需 API 密钥）\u003C\u002Fsummary>\n\n```dotenv\nLLAMACPP_BASE_URL=\"http:\u002F\u002Flocalhost:8080\u002Fv1\"\n\nMODEL_OPUS=\"llamacpp\u002Flocal-model\"\nMODEL_SONNET=\"llamacpp\u002Flocal-model\"\nMODEL_HAIKU=\"llamacpp\u002Flocal-model\"\nMODEL=\"llamacpp\u002Flocal-model\"\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>混合提供商\u003C\u002Fb>\u003C\u002Fsummary>\n\n每个 `MODEL_*` 变量可以使用不同的提供商。`MODEL` 是未识别的 Claude 模型的备用选项。\n\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-your-key-here\"\nOPENROUTER_API_KEY=\"sk-or-your-key-here\"\n\nMODEL_OPUS=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2.5\"\nMODEL_SONNET=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"                      # 备用\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>可选认证\u003C\u002Fb>（限制对代理的访问）\u003C\u002Fsummary>\n\n在 `.env` 中设置 `ANTHROPIC_AUTH_TOKEN` 以要求客户端进行身份验证：\n\n```dotenv\nANTHROPIC_AUTH_TOKEN=\"your-secret-token-here\"\n```\n\n**工作原理：**\n- 如果 `ANTHROPIC_AUTH_TOKEN` 为空（默认值），则无需认证（向后兼容）。\n- 如果设置了该令牌，客户端必须通过 `ANTHROPIC_AUTH_TOKEN` 头部提供相同的令牌。\n- `claude-pick` 脚本会在配置完成后自动从 `.env` 中读取该令牌。\n\n**使用示例：**\n```bash\n# 启用认证\nANTHROPIC_AUTH_TOKEN=\"your-secret-token-here\" \\\nANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" claude\n\n# claude-pick 会自动使用已配置的令牌\nclaude-pick\n```\n\n在以下情况下可以使用此功能：\n- 在公共网络上运行代理\n- 与他人共享服务器但限制访问\n- 希望增加一层安全性\n\n\u003C\u002Fdetails>\n\n### 运行它\n\n**终端1：** 启动代理服务器：\n\n```bash\nuv run uvicorn server:app --host 0.0.0.0 --port 8082\n```\n\n**终端2：** 运行 Claude Code：\n\n#### PowerShell\n```powershell\n$env:ANTHROPIC_AUTH_TOKEN=\"freecc\"; $env:ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\"; claude\n```\n#### Bash\n```bash\nANTHROPIC_AUTH_TOKEN=\"freecc\" ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" claude\n```\n\n就是这样！Claude Code 现在将免费使用您配置的提供商。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>VSCode 扩展设置\u003C\u002Fb>\u003C\u002Fsummary>\n\n1. 启动代理服务器（同上）。\n2. 打开设置（`Ctrl + ,`），搜索 `claude-code.environmentVariables`。\n3. 单击 **在 settings.json 中编辑**，并添加：\n\n```json\n\"claudeCode.environmentVariables\": [\n  { \"name\": \"ANTHROPIC_BASE_URL\", \"value\": \"http:\u002F\u002Flocalhost:8082\" },\n  { \"name\": \"ANTHROPIC_AUTH_TOKEN\", \"value\": \"freecc\" }\n]\n```\n\n4. 重新加载扩展。\n5. **如果您看到登录界面**：点击 **Anthropic Console**，然后授权。扩展将开始工作。您可能会被重定向到浏览器购买积分；请忽略——扩展已经可以正常工作。\n\n要切换回 Anthropic 模型，请注释掉添加的代码块并重新加载扩展。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>多模型支持（模型选择器）\u003C\u002Fb>\u003C\u002Fsummary>\n\n`claude-pick` 是一个交互式模型选择器，允许您每次启动 Claude 时从当前活跃的提供商中选择任何模型，而无需编辑 `.env` 文件中的 `MODEL`。\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F9a33c316-90f8-4418-9650-97e7d33ad645\n\n**1. 安装 [fzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf)**：\n\n```bash\nbrew install fzf        # macOS\u002FLinux\n```\n\n**2. 将别名添加到 `~\u002F.zshrc` 或 `~\u002F.bashrc`：**\n\n```bash\nalias claude-pick=\"\u002Fabsolute\u002Fpath\u002Fto\u002Ffree-claude-code\u002Fclaude-pick\"\n```\n\n然后重新加载您的 shell（`source ~\u002F.zshrc` 或 `source ~\u002F.bashrc`），并运行 `claude-pick`。\n\n**或者使用固定模型别名**（无需选择器）：\n\n```bash\nalias claude-kimi='ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" ANTHROPIC_AUTH_TOKEN=\"freecc:moonshotai\u002Fkimi-k2.5\" claude'\n```\n\n\u003C\u002Fdetails>\n\n### 以软件包形式安装（无需克隆）\n\n```bash\nuv tool install git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\nfcc-init        # 从内置模板创建 ~\u002F.config\u002Ffree-claude-code\u002F.env\n```\n\n编辑 `~\u002F.config\u002Ffree-claude-code\u002F.env` 文件，填写您的 API 密钥和模型名称，然后：\n\n```bash\nfree-claude-code    # 启动服务器\n```\n\n> 要更新：`uv tool upgrade free-claude-code`\n\n---\n\n## 工作原理\n\n```\n┌─────────────────┐        ┌──────────────────────┐        ┌──────────────────┐\n│  Claude Code    │───────>│  Free Claude Code    │───────>│  LLM 提供商    │\n│  CLI \u002F VSCode   │\u003C───────│  代理 (:8082)       │\u003C───────│  NIM \u002F OR \u002F LMS  │\n└─────────────────┘        └──────────────────────┘        └──────────────────┘\n   Anthropic API                                             OpenAI 兼容格式\n   格式 (SSE)                                             格式 (SSE)\n```\n\n- **透明代理**：Claude Code 发送标准的 Anthropic API 请求；代理将其转发到您配置的提供商\n- **按模型路由**：Opus \u002F Sonnet \u002F Haiku 请求会解析到各自特定的后端，如果未指定则使用 `MODEL` 作为默认值\n- **请求优化**：5 类琐碎请求（配额探测、标题生成、前缀检测、建议、文件路径提取）会被拦截并在本地响应，而不消耗 API 配额\n- **格式转换**：请求会被从 Anthropic 格式转换为提供商的 OpenAI 兼容格式，并以流式传输返回\n- **思考标记**：`\u003Cthink>` 标签和 `reasoning_content` 字段会被转换为原生的 Claude 思考块\n\n---\n\n## 提供商\n\n| 提供商       | 成本         | 速率限制 | 最适合                             |\n| -------------- | ------------ | ---------- | ------------------------------------ |\n| **NVIDIA NIM** | 免费         | 40 次\u002F分钟 | 日常使用，慷慨的免费层级     |\n| **OpenRouter** | 免费 \u002F 付费  | 不同       | 模型多样性，备用选项      |\n| **LM Studio**  | 免费（本地） | 无限制     | 隐私保护，离线使用，无速率限制 |\n| **llama.cpp**  | 免费（本地） | 无限制     | 轻量级本地推理引擎   |\n\n模型使用前缀格式：`provider_prefix\u002Fmodel\u002Fname`。无效的前缀会导致错误。\n\n| 提供商   | `MODEL` 前缀    | API 密钥变量     | 默认基础 URL              |\n| ---------- | ----------------- | -------------------- | ----------------------------- |\n| NVIDIA NIM | `nvidia_nim\u002F...`  | `NVIDIA_NIM_API_KEY` | `integrate.api.nvidia.com\u002Fv1` |\n| OpenRouter | `open_router\u002F...` | `OPENROUTER_API_KEY` | `openrouter.ai\u002Fapi\u002Fv1`        |\n| LM Studio  | `lmstudio\u002F...`    | （无）               | `localhost:1234\u002Fv1`           |\n| llama.cpp  | `llamacpp\u002F...`    | （无）               | `localhost:8080\u002Fv1`           |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>NVIDIA NIM 模型\u003C\u002Fb>\u003C\u002Fsummary>\n\n热门模型（完整列表见 [`nvidia_nim_models.json`](nvidia_nim_models.json))：\n\n- `nvidia_nim\u002Fminimaxai\u002Fminimax-m2.5`\n- `nvidia_nim\u002Fqwen\u002Fqwen3.5-397b-a17b`\n- `nvidia_nim\u002Fz-ai\u002Fglm5`\n- `nvidia_nim\u002Fmoonshotai\u002Fkimi-k2.5`\n- `nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash`\n\n浏览：[build.nvidia.com](https:\u002F\u002Fbuild.nvidia.com\u002Fexplore\u002Fdiscover) · 更新列表：`curl \"https:\u002F\u002Fintegrate.api.nvidia.com\u002Fv1\u002Fmodels\" > nvidia_nim_models.json`\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>OpenRouter 模型\u003C\u002Fb>\u003C\u002Fsummary>\n\n流行的免费模型：\n\n- `open_router\u002Farcee-ai\u002Ftrinity-large-preview:free`\n- `open_router\u002Fstepfun\u002Fstep-3.5-flash:free`\n- `open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free`\n- `open_router\u002Fopenai\u002Fgpt-oss-120b:free`\n\n浏览：[openrouter.ai\u002Fmodels](https:\u002F\u002Fopenrouter.ai\u002Fmodels) · [免费模型](https:\u002F\u002Fopenrouter.ai\u002Fcollections\u002Ffree-models)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>LM Studio 模型\u003C\u002Fb>\u003C\u002Fsummary>\n\n使用 [LM Studio](https:\u002F\u002Flmstudio.ai) 在本地运行模型。在聊天或开发者选项卡中加载模型，然后将 `MODEL` 设置为其标识符。\n\n具有原生工具使用支持的示例：\n\n- `LiquidAI\u002FLFM2-24B-A2B-GGUF`\n- `unsloth\u002FMiniMax-M2.5-GGUF`\n- `unsloth\u002FGLM-4.7-Flash-GGUF`\n- `unsloth\u002FQwen3.5-35B-A3B-GGUF`\n\n浏览：[model.lmstudio.ai](https:\u002F\u002Fmodel.lmstudio.ai)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>llama.cpp 模型\u003C\u002Fb>\u003C\u002Fsummary>\n\n使用 `llama-server` 在本地运行模型。确保您拥有支持工具的 GGUF 文件。将 `MODEL` 设置为您喜欢的任意名称（例如 `llamacpp\u002Fmy-model`），因为 `llama-server` 在通过 `\u002Fv1\u002Fmessages` 运行时会忽略模型名称。\n\n有关详细说明和支持的模型，请参阅 Unsloth 文档：\n[https:\u002F\u002Funsloth.ai\u002Fdocs\u002Fmodels\u002Fqwen3.5#qwen3.5-small-0.8b-2b-4b-9b](https:\u002F\u002Funsloth.ai\u002Fdocs\u002Fmodels\u002Fqwen3.5#qwen3.5-small-0.8b-2b-4b-9b)\n\n\u003C\u002Fdetails>\n\n---\n\n## Discord 机器人\n\n通过 Discord（或 Telegram）远程控制 Claude Code。发送任务、实时查看进度，并管理多个并发会话。\n\n**功能：**\n\n- 基于树状结构的消息线程：回复某条消息即可分支对话\n- 会话在服务器重启后仍可保持\n- 实时流式传输思考过程中的 token、工具调用及结果\n- 无限制的 Claude CLI 并发会话（并发数由 `PROVIDER_MAX_CONCURRENCY` 控制）\n- 语音笔记：发送语音消息，系统会将其转录并作为普通提示进行处理\n- 命令：`\u002Fstop`（取消任务；回复特定消息仅停止该任务）、`\u002Fclear`（重置所有会话，或回复以清除某个分支）、`\u002Fstats`\n\n### 设置步骤\n\n1. **创建 Discord 机器人**：前往 [Discord 开发者门户](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications)，创建应用并添加机器人，复制生成的令牌。在机器人设置中启用 **Message Content Intent**。\n\n2. **编辑 `.env` 文件：**\n\n```dotenv\nMESSAGING_PLATFORM=\"discord\"\nDISCORD_BOT_TOKEN=\"your_discord_bot_token\"\nALLOWED_DISCORD_CHANNELS=\"123456789,987654321\"\n```\n\n> 在 Discord 中启用开发者模式（设置 → 高级），然后右键点击频道选择“复制 ID”。多个频道之间用逗号分隔。若为空，则不允许任何频道。\n\n3. **配置工作空间**（Claude 将在此处运行）：\n\n```dotenv\nCLAUDE_WORKSPACE=\".\u002Fagent_workspace\"\nALLOWED_DIR=\"C:\u002FUsers\u002Fyourname\u002Fprojects\"\n```\n\n4. **启动服务器：**\n\n```bash\nuv run uvicorn server:app --host 0.0.0.0 --port 8082\n```\n\n5. **通过 OAuth2 URL 生成器邀请机器人**（作用域：`bot`，权限：读取消息、发送消息、管理消息、读取消息历史）。\n\n### Telegram\n\n将 `MESSAGING_PLATFORM` 设置为 `telegram`，并进行如下配置：\n\n```dotenv\nTELEGRAM_BOT_TOKEN=\"123456789:ABCdefGHIjklMNOpqrSTUvwxYZ\"\nALLOWED_TELEGRAM_USER_ID=\"your_telegram_user_id\"\n```\n\n从 [@BotFather](https:\u002F\u002Ft.me\u002FBotFather) 获取令牌；使用 [@userinfobot](https:\u002F\u002Ft.me\u002Fuserinfobot) 查找您的用户 ID。\n\n### 语音笔记\n\n在 Discord 或 Telegram 上发送语音消息，系统会将其转录并作为普通提示进行处理。\n\n| 后端                     | 描述                                                                                                   | API 密钥              |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------- |\n| **本地 Whisper**（默认）    | [Hugging Face Whisper](https:\u002F\u002Fhuggingface.co\u002Fopenai\u002Fwhisper-large-v3-turbo) — 免费、离线、支持 CUDA | 不需要         |\n| **NVIDIA NIM**              | 通过 gRPC 提供的 Whisper\u002FParakeet 模型                                                                              | `NVIDIA_NIM_API_KEY` |\n\n**安装语音相关依赖：**\n\n```bash\n# 如果您克隆了仓库：\nuv sync --extra voice_local          # 本地 Whisper\nuv sync --extra voice                # NVIDIA NIM\nuv sync --extra voice --extra voice_local  # 两者都安装\n\n# 如果您直接以包形式安装（未克隆仓库）：\nuv tool install \"free-claude-code[voice_local] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\nuv tool install \"free-claude-code[voice] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\nuv tool install \"free-claude-code[voice,voice_local] @ git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\"\n```\n\n通过 `WHISPER_DEVICE`（`cpu` | `cuda` | `nvidia_nim`）和 `WHISPER_MODEL` 进行配置。所有语音相关变量及支持的模型值，请参阅 [配置](#configuration) 表格。\n\n---\n\n## 配置\n\n### 核心配置\n\n| 变量             | 描述                                                           | 默认                                           |\n| -------------------- | --------------------------------------------------------------------- | ------------------------------------------------- |\n| `MODEL`              | 备用模型（格式为 `provider\u002Fmodel\u002Fname`；无效前缀会导致错误） | `nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash`            |\n| `MODEL_OPUS`         | 用于 Claude Opus 请求的模型（回退至 `MODEL`）                | `nvidia_nim\u002Fz-ai\u002Fglm4.7`                          |\n| `MODEL_SONNET`       | 用于 Claude Sonnet 请求的模型（回退至 `MODEL`）              | `open_router\u002Farcee-ai\u002Ftrinity-large-preview:free` |\n| `MODEL_HAIKU`        | 用于 Claude Haiku 请求的模型（回退至 `MODEL`）               | `open_router\u002Fstepfun\u002Fstep-3.5-flash:free`         |\n| `NVIDIA_NIM_API_KEY`    | NVIDIA API 密钥                                                        | 使用 NIM 时必需                                  |\n| `NIM_ENABLE_THINKING`   | 在 NIM 请求中发送 `chat_template_kwargs` + `reasoning_budget`。对于具备思考能力的模型（如 kimi、nemotron）请启用；其他模型（如 Mistral）则应设为 `false` | `false` |\n| `OPENROUTER_API_KEY` | OpenRouter API 密钥                                                    | 使用 OpenRouter 时必需                           |\n| `LM_STUDIO_BASE_URL` | LM Studio 服务器地址                                                  | `http:\u002F\u002Flocalhost:1234\u002Fv1`                        |\n| `LLAMACPP_BASE_URL`  | llama.cpp 服务器地址                                                  | `http:\u002F\u002Flocalhost:8080\u002Fv1`                        |\n\n### 速率限制与超时\n\n| 变量                   | 描述                               | 默认 |\n| -------------------------- | ----------------------------------------- | ------- |\n| `PROVIDER_RATE_LIMIT`      | 每个时间窗口内的 LLM API 请求次数               | `40`    |\n| `PROVIDER_RATE_WINDOW`     | 速率限制的时间窗口（秒）               | `60`    |\n| `PROVIDER_MAX_CONCURRENCY` | 最大同时开启的提供商流数量    | `5`     |\n| `HTTP_READ_TIMEOUT`        | 对提供商请求的读取超时时间（秒）    | `120`   |\n| `HTTP_WRITE_TIMEOUT`       | 对提供商请求的写入超时时间（秒）   | `10`    |\n| `HTTP_CONNECT_TIMEOUT`     | 对提供商请求的连接超时时间（秒） | `2`     |\n\n### 消息与语音\n\n| 变量                   | 描述                                                                                                                                                        | 默认值             |\n| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |\n| `MESSAGING_PLATFORM`       | `discord` 或 `telegram`                                                                                                                                     | `discord`           |\n| `DISCORD_BOT_TOKEN`        | Discord 机器人令牌                                                                                                                                          | `\"\"`                |\n| `ALLOWED_DISCORD_CHANNELS` | 以逗号分隔的频道 ID（空表示不允许任何频道）                                                                                                                 | `\"\"`                |\n| `TELEGRAM_BOT_TOKEN`       | Telegram 机器人令牌                                                                                                                                         | `\"\"`                |\n| `ALLOWED_TELEGRAM_USER_ID` | 允许的 Telegram 用户 ID                                                                                                                                     | `\"\"`                |\n| `CLAUDE_WORKSPACE`         | 代理运行的目录                                                                                                                                             | `.\u002Fagent_workspace` |\n| `ALLOWED_DIR`              | 代理允许访问的目录                                                                                                                                         | `\"\"`                |\n| `MESSAGING_RATE_LIMIT`     | 每个时间窗口内的消息数量                                                                                                                                   | `1`                 |\n| `MESSAGING_RATE_WINDOW`    | 消息发送的时间窗口（秒）                                                                                                                                   | `1`                 |\n| `VOICE_NOTE_ENABLED`       | 是否启用语音备忘录处理                                                                                                                                     | `true`              |\n| `WHISPER_DEVICE`           | `cpu` \\| `cuda` \\| `nvidia_nim`                                                                                                                             | `cpu`               |\n| `WHISPER_MODEL`            | Whisper 模型（本地：`tiny`\u002F`base`\u002F`small`\u002F`medium`\u002F`large-v2`\u002F`large-v3`\u002F`large-v3-turbo`；NIM：`openai\u002Fwhisper-large-v3`、`nvidia\u002Fparakeet-ctc-1.1b-asr` 等） | `base`              |\n| `HF_TOKEN`                 | Hugging Face 令牌，用于加速下载（本地 Whisper，可选）                                                                                                       | —                   |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>高级：请求优化标志\u003C\u002Fb>\u003C\u002Fsummary>\n\n这些功能默认启用，会在本地拦截简单的 Claude Code 请求，以节省 API 配额。\n\n| 变量                          | 描述                    | 默认值 |\n| ------------------------------ | ------------------------ | ------- |\n| `FAST_PREFIX_DETECTION`           | 启用快速前缀检测   | `true`  |\n| `ENABLE_NETWORK_PROBE_MOCK`       | 拟真网络探测请求    | `true`  |\n| `ENABLE_TITLE_GENERATION_SKIP`    | 跳过标题生成请求    | `true`  |\n| `ENABLE_SUGGESTION_MODE_SKIP`     | 跳过建议模式请求    | `true`  |\n| `ENABLE_FILEPATH_EXTRACTION_MOCK` | 拟真文件路径提取    | `true`  |\n\n\u003C\u002Fdetails>\n\n所有支持的参数请参阅 [``.env.example`](.env.example)。\n\n---\n\n## 开发\n\n### 项目结构\n\n```\nfree-claude-code\u002F\n├── server.py              # 入口文件\n├── api\u002F                   # FastAPI 路由、请求检测及优化处理程序\n├── providers\u002F             # BaseProvider、OpenAICompatibleProvider、NIM、OpenRouter、LM Studio、llamacpp\n│   └── common\u002F            # 共享工具（SSE 构建器、消息转换器、解析器、错误映射）\n├── messaging\u002F             # MessagingPlatform ABC + Discord\u002FTelegram 机器人、会话管理\n├── config\u002F                # 配置、NIM 配置、日志记录\n├── cli\u002F                   # CLI 会话及进程管理\n└── tests\u002F                 # Pytest 测试套件\n```\n\n### 命令\n\n```bash\nuv run ruff format     # 格式化代码\nuv run ruff check      # 代码检查\nuv run ty check        # 类型检查\nuv run pytest          # 运行测试\n```\n\n### 扩展\n\n**添加一个与 OpenAI 兼容的提供商**（如 Groq、Together AI 等）——扩展 `OpenAICompatibleProvider`：\n\n```python\nfrom providers.openai_compat import OpenAICompatibleProvider\nfrom providers.base import ProviderConfig\n\nclass MyProvider(OpenAICompatibleProvider):\n    def __init__(self, config: ProviderConfig):\n        super().__init__(config, provider_name=\"MYPROVIDER\",\n                         base_url=\"https:\u002F\u002Fapi.example.com\u002Fv1\", api_key=config.api_key)\n```\n\n**添加一个完全自定义的提供商**——直接扩展 `BaseProvider` 并实现 `stream_response()`。\n\n**添加一个新的消息平台**——在 `messaging\u002F` 中扩展 `MessagingPlatform` 并实现 `start()`、`stop()`、`send_message()`、`edit_message()` 和 `on_message()`。\n\n---\n\n## 贡献\n\n- 通过 [Issues](https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code\u002Fissues) 报告问题或提出功能建议\n- 添加新的 LLM 提供商（如 Groq、Together AI 等）\n- 添加新的消息平台（如 Slack 等）\n- 提高测试覆盖率\n- 目前暂不接受 Docker 集成的 PR\n\n```bash\ngit checkout -b my-feature\nuv run ruff format && uv run ruff check && uv run ty check && uv run pytest\n# 打开一个拉取请求\n```\n\n---\n\n## 许可证\n\nMIT 许可证。详情请参阅 [LICENSE](LICENSE)。\n\n基于 [FastAPI](https:\u002F\u002Ffastapi.tiangolo.com\u002F)、[OpenAI Python SDK](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python)、[discord.py](https:\u002F\u002Fgithub.com\u002FRapptz\u002Fdiscord.py) 和 [python-telegram-bot](https:\u002F\u002Fpython-telegram-bot.org\u002F) 构建。","# Free Claude Code 快速上手指南\n\nFree Claude Code 是一个轻量级代理工具，允许你免费使用 Claude Code CLI 和 VSCode 插件。它通过将 Anthropic API 请求路由到 **NVIDIA NIM**（免费额度）、**OpenRouter**、**LM Studio** 或 **llama.cpp** 来实现零成本运行，无需 Anthropic API Key。\n\n## 环境准备\n\n### 系统要求\n- **Python**: 3.14+ (推荐使用 `uv` 管理环境)\n- **操作系统**: Windows \u002F macOS \u002F Linux\n- **前置依赖**:\n  - [Claude Code CLI](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code) (必须已安装)\n  - `uv` 包管理器\n\n### 获取 API Key (可选)\n根据你选择的后端服务准备密钥：\n- **NVIDIA NIM** (推荐): [点击获取 Key](https:\u002F\u002Fbuild.nvidia.com\u002Fsettings\u002Fapi-keys) (免费 40 次\u002F分钟)\n- **OpenRouter**: [点击获取 Key](https:\u002F\u002Fopenrouter.ai\u002Fkeys)\n- **本地部署**: 使用 LM Studio 或 llama.cpp 无需 Key。\n\n## 安装步骤\n\n### 1. 安装 uv\n如果尚未安装 `uv`，请执行以下命令：\n```bash\npip install uv\n```\n若已安装，建议更新到最新版：\n```bash\nuv self update\n```\n\n### 2. 克隆项目并配置\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\ncd free-claude-code\ncp .env.example .env\n```\n\n### 3. 编辑配置文件 (.env)\n使用编辑器打开 `.env` 文件，根据你的需求选择以下一种配置方案：\n\n#### 方案 A：NVIDIA NIM (推荐，免费且有额度)\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-你的密钥\"\n\n# 模型映射示例\nMODEL_OPUS=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"\nMODEL_SONNET=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2-thinking\"\nMODEL_HAIKU=\"nvidia_nim\u002Fstepfun-ai\u002Fstep-3.5-flash\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"\n\n# 如果使用的是支持思考的模型 (如 Kimi, Nemotron)，设为 true\nNIM_ENABLE_THINKING=true\n```\n\n#### 方案 B：OpenRouter (模型种类多)\n```dotenv\nOPENROUTER_API_KEY=\"sk-or-你的密钥\"\n\nMODEL_OPUS=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_SONNET=\"open_router\u002Fopenai\u002Fgpt-oss-120b:free\"\nMODEL_HAIKU=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"\nMODEL=\"open_router\u002Fstepfun\u002Fstep-3.5-flash:free\"\n```\n\n#### 方案 C：完全本地运行 (LM Studio)\n*需先在本地启动 LM Studio 并加载模型*\n```dotenv\nMODEL_OPUS=\"lmstudio\u002Funsloth\u002FMiniMax-M2.5-GGUF\"\nMODEL_SONNET=\"lmstudio\u002Funsloth\u002FQwen3.5-35B-A3B-GGUF\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\n```\n\n#### 方案 D：混合使用\n你可以为不同等级的模型指定不同的提供商：\n```dotenv\nNVIDIA_NIM_API_KEY=\"nvapi-你的密钥\"\nOPENROUTER_API_KEY=\"sk-or-你的密钥\"\n\nMODEL_OPUS=\"nvidia_nim\u002Fmoonshotai\u002Fkimi-k2.5\"\nMODEL_SONNET=\"open_router\u002Fdeepseek\u002Fdeepseek-r1-0528:free\"\nMODEL_HAIKU=\"lmstudio\u002Funsloth\u002FGLM-4.7-Flash-GGUF\"\nMODEL=\"nvidia_nim\u002Fz-ai\u002Fglm4.7\"\n```\n\n> **提示**：如果需要限制访问，可设置 `ANTHROPIC_AUTH_TOKEN=\"your-secret-token\"`，默认留空即可。\n\n## 基本使用\n\n### 第一步：启动代理服务器\n打开第一个终端窗口，运行：\n```bash\nuv run uvicorn server:app --host 0.0.0.0 --port 8082\n```\n保持该窗口运行，不要关闭。\n\n### 第二步：运行 Claude Code\n打开第二个终端窗口，根据系统设置环境变量后启动：\n\n**macOS \u002F Linux (Bash\u002FZsh):**\n```bash\nANTHROPIC_AUTH_TOKEN=\"freecc\" ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\" claude\n```\n\n**Windows (PowerShell):**\n```powershell\n$env:ANTHROPIC_AUTH_TOKEN=\"freecc\"; $env:ANTHROPIC_BASE_URL=\"http:\u002F\u002Flocalhost:8082\"; claude\n```\n\n现在，Claude Code 将通过你配置的免费模型后端运行。\n\n### 可选：VSCode 插件配置\n1. 确保上述代理服务器正在运行。\n2. 在 VSCode 中按下 `Ctrl + ,` 打开设置，搜索 `claude-code.environmentVariables`。\n3. 点击 **Edit in settings.json**，添加以下内容：\n```json\n\"claudeCode.environmentVariables\": [\n  { \"name\": \"ANTHROPIC_BASE_URL\", \"value\": \"http:\u002F\u002Flocalhost:8082\" },\n  { \"name\": \"ANTHROPIC_AUTH_TOKEN\", \"value\": \"freecc\" }\n]\n```\n4. 重新加载 VSCode 窗口。\n5. 如果出现登录界面，点击 **Anthropic Console** 授权即可（忽略浏览器中可能出现的购买提示，插件已可直接使用）。\n\n### 可选：免克隆安装 (作为全局工具)\n如果你不想克隆代码库，可以直接安装为命令行工具：\n```bash\nuv tool install git+https:\u002F\u002Fgithub.com\u002FAlishahryar1\u002Ffree-claude-code.git\nfcc-init\n```\n编辑生成的 `~\u002F.config\u002Ffree-claude-code\u002F.env` 文件后，直接运行：\n```bash\nfree-claude-code\n```","一名独立开发者需要在终端中频繁使用 Claude Code 辅助重构遗留代码，但受限于高昂的 API 费用和复杂的本地部署门槛。\n\n### 没有 free-claude-code 时\n- **成本压力巨大**：直接调用 Anthropic 官方 API 处理大量代码重构任务，导致每月账单迅速飙升，难以承受。\n- **本地模型接入繁琐**：若想免费使用本地大模型（如 LM Studio），需手动修改 Claude Code 源码或编写复杂的中间件来适配接口。\n- **资源利用率低**：无法灵活切换提供商，当某家服务限流或宕机时，开发流程被迫中断，缺乏自动降级机制。\n- **思维链支持缺失**：本地开源模型输出的 `\u003Cthink>` 标签无法被原生识别，导致推理过程显示混乱，影响阅读体验。\n\n### 使用 free-claude-code 后\n- **实现零成本开发**：通过配置环境变量，将请求无缝路由至 NVIDIA NIM（免费额度）或本地 LM Studio，彻底消除 API 费用。\n- **即插即用无需改码**：作为轻量级代理层，无需修改 Claude Code CLI 或 VSCode 插件的任何代码，仅需设置两个变量即可生效。\n- **智能多源调度**：支持将不同能力的模型（如 Opus、Sonnet）映射到不同后端，自动处理限流重试，保障开发连续性。\n- **原生思维链解析**：自动解析开源模型的推理标签并转换为 Claude 原生的思考块，让本地模型的输出同样清晰易读。\n\nfree-claude-code 通过无缝桥接免费算力与原生工具链，让开发者在零成本前提下享受企业级的 AI 编程体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAlishahryar1_free-claude-code_e08ccd45.png","Alishahryar1","Ali Khokhar","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FAlishahryar1_e01d03b5.jpg","Writing easily understandable code...",null,"Sunnyvale, CA","https:\u002F\u002Fgithub.com\u002FAlishahryar1",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",99.4,{"name":89,"color":90,"percentage":91},"Shell","#89e051",0.6,1601,267,"2026-04-05T10:24:40","MIT","Linux, macOS, Windows","非必需。若使用本地模型（LM Studio\u002Fllama.cpp），需根据所选模型大小配置相应 GPU；若使用 NVIDIA NIM\u002FOpenRouter 云端服务，则无需本地 GPU。","未说明（取决于是否运行本地模型及模型大小）",{"notes":100,"python":101,"dependencies":102},"该工具是一个代理服务器，主要依赖 'uv' 进行包管理和运行。默认推荐使用云端免费服务（NVIDIA NIM），此时对本地硬件无特殊要求。若选择完全本地运行（LM Studio 或 llama.cpp），需自行安装并运行对应的推理服务，硬件需求取决于所加载的具体大模型。支持通过环境变量灵活切换不同提供商和模型。","3.14",[103,104,105,106,107,108],"uv","uvicorn","loguru","ty","ruff","pytest",[26,15,53],"2026-03-27T02:49:30.150509","2026-04-06T05:37:37.899861",[],[]]