LLM 网关大模型后端AI 应用【免费下载链接】free-claude-codeUse Claude Code, Codex, VSCode, Pi, and OpenCode (and 6 other harnesses) for free (1.3B free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness multi-model) like OpenClaw (voice supported ToS friendly)项目地址https://gitcode.com/GitHub_Trending/fr/free-claude-code点击查看免费下载smoke/是 free-claude-code 仓库中一套独立于常规 CItests/与e2e/的本地产品级 E2E 冒烟测试套件。它允许在开发者本机启动子进程、真实调用 Provider、连接本地模型服务LM Studio / llama.cpp / Ollama并可选地发送/删除真实机器人消息。本文基于 smoke/README.md 完整讲解其分层结构installers / prereq / product、全部 Target 与所需环境、运行命令、失败分类体系并结合仓库源码smoke/conftest.py、smoke/lib/config.py、smoke/lib/outcomes.py 等深入解析其实现原理。读完本文你将能够独立运行、裁剪、并行化并解读这套 smoke 套件的任意场景。一、smoke/ 是什么本地专用的产品 E2E 套件smoke/目录的定位与常规测试有本质区别smoke/README.md 开篇即声明smoke/is local-only. It can launch subprocesses, call real providers, touch local model servers, and optionally send/delete bot messages. Installer checks also live here as an opt-in suite. Regular CI collects onlytests/ande2e/.含义拆解如下仅限本地运行它会启动真实子进程、连接真实 Provider、访问本地模型服务器甚至可能向 Telegram/Discord 发送并删除机器人消息因此绝不进入常规 CICI 只收集tests/与e2e/。安装器检查是可选套件smoke/installers/作为 opt-in 子套件存在且 smoke/installers/AGENTS.md 明确要求测试必须通过真实脚本函数进行下载与外部安装器一律 stub绝不安装真实工具、绝不使用 live Provider、绝不修改用户已安装的工具与配置每个场景都必须使用私有文件、配置、PATH 与缓存存储。结果落盘无论是否真正执行只要运行pytest smokeskip 条目都会写入.smoke-results/目录。二、套件分层installers / prereq / productsmoke/README.md 定义了三级分类Taxonomy每一层的目的与验收标准都不同目录定位关键约束smoke/installers/安装器、卸载器、harness 生命周期检查隔离文件与模拟下载不安装真实工具详见 smoke/installers/AGENTS.mdsmoke/prereq/存活探针server、routes、auth、CLI 脚本、Provider ping、本地/models、机器人权限仅作为前置条件prerequisites不算产品覆盖smoke/product/端到端产品场景功能 smoke 覆盖的唯一来源smoke/features.py 的开头模块注释把这一分层逻辑讲得很清楚Public product behavior must have deterministic pytest contract coverage plus a product E2E scenario when that behavior is a user-facing product path. Liveness and route probes live insmoke/prereqand do not count as product coverage.即公共产品行为 确定性 pytest 契约测试tests/与e2e/ 产品级 E2E 场景smoke/product/而smoke/prereq/的存活与路由探针不计入产品覆盖。这一契约 产品 E2E双层思想贯穿整个套件契约层tests/中的确定性测试如 tests/api/test_auth.py、tests/application/test_routing.py保护协议形状与内部边界产品层smoke/product/中的 live 测试验证真实用户路径多轮对话、自适应思考、工具调用、断开恢复等。smoke/features.py中的FeatureCoverage数据类正是这一思想的载体每条记录同时携带pytest_contract_tests、live_prereq_tests、product_e2e_tests、smoke_targets、required_env与skip_policy字段将特性 → 子特性 → 场景 → 环境 → 预期行为 → 失败类别的映射固化为唯一事实源。2.1 与之配套的能力契约图smoke/capabilities.py与smoke/features.py配套的是 smoke/capabilities.py模块注释称其为 architectural companion。其中CapabilityContract记录了每条子特性契约的拥有模块边界owner如free_claude_code.application.code_sessions.service.CodeService、输入输出与失败语义以及对应的契约测试与 smoke 测试。例如provider_routing能力的claude_model_resolution子特性由free_claude_code.application.routing.ModelRouter拥有由 tests/application/test_routing.py 与test_model_mapping_configuration_is_consistent探针共同保护。这套能力图的价值在于当内部实现被重构时契约层tests与产品层smoke仍然可以各自独立验证能力归属不因重构而丢失。三、必会本地命令三步走3.1 收集用例与首次试跑smoke/README.md 给出的两条基础命令PowerShell 语法uv run pytest smoke --collect-only -q uv run pytest smoke -n 0 -s --tbshort--collect-only -q只收集用例、不执行用于快速预览将要运行哪些场景例如确认目标 Provider 模型已按预期被参数化展开。第二条命令在未设置FCC_LIVE_SMOKE1时会跳过一切用例但仍会把 skip 条目写入.smoke-results/——这正是 smoke/conftest.py 中pytest_collection_modifyitems的实现SmokeConfig.load().live为假时为每个 item 追加pytest.mark.skip(reasonset FCC_LIVE_SMOKE1 to run local smoke tests)。-n 0关闭 pytest-xdist 并行pyproject 默认-n auto --distworksteal见 pyproject.toml 的[tool.pytest.ini_options]-s保留子进程输出--tbshort压缩回溯信息。3.2 只运行安装器检查$env:FCC_LIVE_SMOKE 1 uv run pytest smoke/installers该子套件不依赖任何真实工具或 Provider 凭据且按 smoke/installers/AGENTS.md 的规则模拟下载、隔离环境因此 CI 之外可以随时在本机运行用于回归安装/卸载/升级与跨 harness 交互流程。3.3 完整产品 smoke 运行$env:FCC_LIVE_SMOKE 1 uv run pytest smoke -n 0 -s --tbshort这是最常用的完整跑法FCC_LIVE_SMOKE1放行所有 live 用例-n 0保证顺序执行消息平台、CLI 子进程等场景需要确定性的执行顺序。四、并行化与 Provider 矩阵Provider smoke 场景可以跨 Provider 并行、同一 Provider 内顺序执行$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS providers uv run pytest smoke -n auto --distloadgroup -s --tbshort实现要点可验证于 smoke/conftest.pypytest_generate_tests钩子读取SmokeConfig把每个已配置 Provider 的 smoke 模型展开为一个参数化用例id为 Provider 名每个参数化用例被打上pytest.mark.xdist_group(fprovider:{provider})配合--distloadgroup实现Provider 间并行、Provider 内串行provider_model_params在未配置任何 Provider smoke 模型时返回一个带 skip 标记的smoke_disabled占位参数保证收集阶段不会报错。4.1 Provider smoke 模型来源默认值、覆盖与归一化Provider product E2E每个已配置 Provider 各跑一次与MODEL、MODEL_FABLE、MODEL_OPUS、MODEL_SONNET、MODEL_HAIKU无关。默认模型来自 smoke/lib/config.py 的PROVIDER_SMOKE_DEFAULT_MODELS字典例如deepseek/deepseek-v4-pro、nvidia_nim/nvidia/nemotron-3-super-120b-a12b、open_router/nvidia/nemotron-3-super-120b-a12b:free可被FCC_SMOKE_MODEL_PROVIDER覆盖$env:FCC_SMOKE_MODEL_DEEPSEEK deepseek-v4-pro # 或 deepseek-v4-flash_normalize_provider_modelsmoke/lib/config.py的规则是值中若已包含 Provider 前缀parse_provider_type(model) provider则原样使用否则自动拼接为{provider}/{model}。如果没有任何 Provider smoke 模型被配置live 产品 smoke 会以missing_env失败除非显式设置FCC_ALLOW_NO_PROVIDER_SMOKE1专供 harness 开发场景。这一选中的 Provider 缺失即失败的策略同样体现在 smoke/features.py 的provider_matrix特性 skip_policy 中。五、Target 矩阵默认与 opt-in5.1 默认 Target不发送真实机器人消息、不加载语音后端默认集合由 smoke/lib/config.py 的DEFAULT_TARGETS定义api、auth、cli、clients、config、extensibility、llamacpp、lmstudio、messaging、ollama、providers、rate_limit、toolsTargetProduct 场景所需环境apimessages、count_tokens 完整 payload、errors、/stop、优化仅流式 messages 需要已配置 Providerauth规范 bearer 认证、冲突的 legacy headers、无效/缺失认证无测试会设置隔离 tokencliserver 入口、Claude CLI 自适应思考、自动 WebSearch、Auto-mode 分类器、会话清理Claude CLI 二进制 真实 CLI 用 ProviderAuto mode 需要已连接的 OpenAI 账号WebSearch 需要FCC_SMOKE_RUN_WEB_TOOLS1clientsVS Code 与 JetBrains 协议载荷Pi、OpenCode、Aider、Cline、Hermes、DeepSeek Harness、Grok Build、Muse Code CLI 提示已配置 Provider已安装 Pi/OpenCode/Aider/Cline 二进制Hermes、DSH、Grok、Muse 使用本地 fake upstreamconfigenv 优先级、removed-env 迁移、proxy/timeouts无extensibilityProvider runtime 与平台工厂构造无messagingfake Discord/Telegram 全流程、literal clear scopes、trees、持久化、语音取消无providers多轮文本、自适应思考历史、工具、断开、错误已配置 Provider可选FCC_SMOKE_MODEL_*tools强制 tool_use 与 tool_result 延续支持工具且已配置的 Providerrate_limit断开清理与后续请求已配置 Providerlmstudio本地/models 经代理的 OpenAI-chat 版 Messages运行中的 LM Studio 服务器llamacpp本地/models 经代理的 OpenAI-chat 版 Messages运行中的 llama-serverollama本地/v1/models 经代理的 OpenAI-chat 版 Messages运行中的 Ollama 服务器5.2 opt-in / 副作用 Target这些 Target 会真实消耗配额或触碰外部 API必须显式开启对应 smoke/lib/config.py 的SIDE_EFFECT_TARGETS与OPT_IN_TARGETSTargetProduct 场景所需环境nvidia_nim_cliClaude Code CLI 在 NIM 模型矩阵上的特性矩阵NVIDIA_NIM_API_KEY、Claude CLInvidia_nim_visionClaude 风格图像 tool result 以像素形式到达 NIM 视觉模型NVIDIA_NIM_API_KEY、FCC_SMOKE_MODEL_NVIDIA_NIM_VISIONopenrouter_free_cliClaude Code CLI 在 OpenRouter 免费模型矩阵上的特性矩阵OPENROUTER_API_KEY、Claude CLItelegramgetMe、send、edit、delete、可选手动 inboundtoken 与 chat/user IDdiscordchannel 访问、send、edit、delete、可选手动 inboundtoken 与 channel IDvoice本地 Whisper 或 NVIDIA NIM 转录生成的 WAVVOICE_NOTE_ENABLEDtrue、FCC_SMOKE_RUN_VOICE1值得注意的是smoke/lib/config.py 还维护了一张TARGET_ALIASES别名表如contract→api、thinking→providers、vscode→clients、nim_cli→nvidia_nim_cli_parse_targets在解析FCC_SMOKE_TARGETS时会把别名归一化到正式 Target 名当值包含all时则展开为全部 TargetDEFAULT_TARGETS | SIDE_EFFECT_TARGETS | OPT_IN_TARGETS。5.3 Target 如何路由用例在 smoke/conftest.py 的pytest_runtest_setup钩子中pytest 读取用例上的smoke_targetmarker例如smoke/product/test_api_product_live.py顶部pytestmark [pytest.mark.live, pytest.mark.smoke_target(api)]若该 Target 不在FCC_SMOKE_TARGETS解析结果中则直接pytest.skip(smoke target disabled: ...)——这就是Target 裁剪机制的实现入口也是失败分类中target_disabled的来源。六、实战示例八组典型运行smoke/README.md 提供了覆盖多 Provider 矩阵、本地服务器、消息平台、NIM/OpenRouter CLI 矩阵与单用例回归的完整示例全部继承如下并补充必要注释1多 Provider 矩阵本地 云端混合$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_PROVIDER_MATRIX open_router,nvidia_nim,deepseek,lmstudio,llamacpp,ollama uv run pytest smoke/product -n 0 -s --tbshortFCC_SMOKE_PROVIDER_MATRIX以逗号分隔 Provider 前缀限定只有这些 Provider 参与场景此例把云端open_router / nvidia_nim / deepseek与本地lmstudio / llamacpp / ollama六类后端一并验证。2仅针对 Ollama 的 prereq product 组合$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS ollama $env:OLLAMA_BASE_URL http://localhost:11434 uv run pytest smoke/prereq smoke/product -n 0 -s --tbshort先跑smoke/prereq中的存活探针本地/v1/models可达性再跑smoke/product中的 Ollama OpenAI-chat 代理 Messages 场景二者共用同一OLLAMA_BASE_URL。3消息平台 语音后端$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS telegram,discord,voice $env:FCC_SMOKE_RUN_VOICE 1 uv run pytest smoke/product -n 0 -s --tbshort注意语音需要显式FCC_SMOKE_RUN_VOICE1否则语音后端不会加载见 smoke/lib/config.py 的TARGET_REQUIRED_ENV。4NVIDIA NIM CLI 矩阵$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS nvidia_nim_cli $env:FCC_SMOKE_NIM_MODELS nvidia/nemotron-3.5-lightning-30b-a3b,moonshotai/kimi-k3,minimaxai/minimax-m3,nvidia/nemotron-3-super-120b-a12b uv run pytest smoke/product -n 0 -s --tbshortFCC_SMOKE_NIM_MODELS替换默认特征化模型集默认集定义于 smoke/lib/config.py 的NVIDIA_NIM_CLI_DEFAULT_MODELS若只传FCC_SMOKE_NIM_EXTRA_MODELS则会在默认集之后追加模型nvidia_nim_cli_model_refs中的去重与顺序保证见 smoke/lib/config.py。5OpenRouter 免费 CLI 矩阵$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS openrouter_free_cli $env:FCC_SMOKE_OPENROUTER_FREE_MODELS nvidia/nemotron-3-super-120b-a12b:free,poolside/laguna-s-2.1:free,poolside/laguna-xs-2.1:free uv run pytest smoke/product -n 0 -s --tbshort与 NIM 矩阵同理FCC_SMOKE_OPENROUTER_FREE_MODELS替换默认集默认集见OPENROUTER_FREE_CLI_DEFAULT_MODELS_EXTRA_MODELS变体追加。6Claude Auto mode OpenAI 已连接账号的单用例回归$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS cli $env:FCC_SMOKE_PROVIDER_MATRIX openai $env:FCC_SMOKE_MODEL_OPENAI gpt-5.6-luna uv run pytest smoke/product/test_client_product_live.py -n 0 -s --tbshort -k claude_auto_mode_openai_connected通过-k关键字精确筛选claude_auto_mode_openai_connected用例FCC_SMOKE_MODEL_OPENAI为该 Provider 指定 smoke 模型connected-account 类 Provider 的配置判定依赖该变量见 smoke/lib/config.py。7无副作用 Target 的快速回归$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS messaging,config,extensibility uv run pytest smoke/product -n 0 -s --tbshort这三类 Target 都不需要外部凭据messaging 走 fake 平台config/extensibility 使用隔离 env 文件可随时安全回归。8NVIDIA NIM 视觉回归PowerShell 与 POSIX 双版本$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS nvidia_nim_vision $env:FCC_SMOKE_MODEL_NVIDIA_NIM_VISION meta/llama-3.2-11b-vision-instruct uv run pytest smoke/product/test_nvidia_nim_vision_product_live.py -n 0 -s --tbshortFCC_LIVE_SMOKE1 \ FCC_SMOKE_TARGETSnvidia_nim_vision \ FCC_SMOKE_MODEL_NVIDIA_NIM_VISIONmeta/llama-3.2-11b-vision-instruct \ uv run pytest smoke/product/test_nvidia_nim_vision_product_live.py -n 0 -s --tbshortFCC_SMOKE_MODEL_NVIDIA_NIM_VISION是必填显式视觉模型见 smoke/lib/config.py 的nvidia_nim_vision_model只有设置了该变量才返回模型且绝不会回退到文本模型这正是 smoke/features.py 中vision_protocol_matrix特性 skip unless the dedicated vision target and explicit model are configured 策略的实现基础。七、Codex Code session 模式专项7.1 本地模拟 Provider 下的四种模式smoke/README.md 为 Codex 提供专项运行用本地模拟 Provider驱动已安装的 Codex使用一次性 session 与文件夹验证Ask、Auto-review、Full access、返回 Use config四种权限模式并检查子代理 review 在父回复之后完成及后续消息的延续行为全程不消耗 Provider 配额$env:FCC_LIVE_SMOKE 1 $env:FCC_SMOKE_TARGETS clients uv run pytest smoke/product/test_codex_modes_product_live.py -n 0 -s -k local_e2e对应用例test_codex_modes_local_e2e、test_codex_child_review_local_e2e在 smoke/features.py 的code_session_modes特性中登记契约层由 tests/application/test_code_sessions.py、tests/runtime/test_codex_app_server.py 等共同保护。7.2 真实模型 smoke严格零成本路由若要做真实推理验证设置FCC_SMOKE_CODEX_FREE_MODEL为显式选择的open_router/model引用并以-k free_provider_e2e运行同一文件。该用例会检查 OpenRouter 当前 prompt 与 completion 价格均为零且只使用该路由绝不回退到付费模型。本地用例不需要该设置与任何 Provider 凭据。两次运行都会打印已安装的 Codex 版本受限模式要求原生 sandbox 支持且绝不会替你设置 sandbox 或改动你的 Codex 配置。八、完整环境变量参考smoke/README.md 的 Environment 一节定义了全部运行时变量结合 smoke/lib/config.py 的SmokeConfig.load()可看到每个变量的默认值与解析逻辑变量作用默认值 / 说明FCC_LIVE_SMOKE1开启 live smoke 执行未设置时全部用例被conftest.py跳过FCC_ALLOW_NO_PROVIDER_SMOKE1允许无 Provider 的 live smokeharness 开发用默认无 Provider 时 product smoke 以missing_env失败FCC_SMOKE_TARGETS逗号分隔 Target 列表或all默认DEFAULT_TARGETS支持别名归一化FCC_SMOKE_PROVIDER_MATRIX逗号分隔的 Provider 前缀白名单为空表示不限制FCC_SMOKE_MODEL_PROVIDER单个 Provider 的 smoke 模型覆盖使用大写 Provider ID如FCC_SMOKE_MODEL_KILO值可含 Provider 前缀或仅为模型名FCC_SMOKE_MODEL_NVIDIA_NIM_VISIONNIM 视觉模型opt-innvidia_nim_vision必填绝不回退文本模型FCC_SMOKE_MODEL_MISTRAL_REASONINGMistral 原生 reasoning smoke 模型覆盖默认mistral/mistral-medium-3-5FCC_SMOKE_NIM_MODELSNIM CLI 矩阵模型替换默认集默认见NVIDIA_NIM_CLI_DEFAULT_MODELS置空会报错FCC_SMOKE_NIM_EXTRA_MODELSNIM CLI 矩阵追加模型在默认/替换集之后追加并去重FCC_SMOKE_OPENROUTER_FREE_MODELSOpenRouter 免费 CLI 矩阵模型替换默认集默认见OPENROUTER_FREE_CLI_DEFAULT_MODELSFCC_SMOKE_OPENROUTER_FREE_EXTRA_MODELSOpenRouter 免费 CLI 矩阵追加模型追加语义同上FCC_SMOKE_TIMEOUT_S每次请求/子进程超时默认45秒FCC_SMOKE_CLAUDE_BINClaude CLI 可执行文件名默认claudeFCC_SMOKE_RUN_WEB_TOOLS1启用真实 Provider 自动 WebSearch 已安装 Claude Code WebSearch 场景含一次公开 DuckDuckGo 请求默认关闭FCC_SMOKE_TELEGRAM_CHAT_IDTelegram chat/user IDsend/edit/delete配合TELEGRAM_BOT_TOKENFCC_SMOKE_DISCORD_CHANNEL_IDDiscord channel IDsend/edit/delete配合DISCORD_BOT_TOKENFCC_SMOKE_INTERACTIVE1启用 Telegram/Discord 手动 inbound 检查默认关闭FCC_SMOKE_RUN_VOICE1允许语音转录后端加载/运行默认关闭此外两点运行时细节值得注意运行设置使用隔离的受管~/.fcc/.envFCC_ENV_FILE只在一次性 legacy 迁移 smoke 中被使用对应removed_env_migration特性。测试内的默认提示词为FCC_SMOKE_PROMPT默认Reply with exactly: FCC_SMOKE_PONG用于校验真实 Provider 的确定性回复。九、Windows 与嵌套uv run的坑smoke/README.md 明确提示子进程使用与测试运行器相同的 Python 解释器而不是嵌套uv run。原因在 smoke/lib/child_process.py 的模块注释中讲得很透彻Nesteduv runcan try to refresh console scripts while they are locked (fcc-server.exein use), causing flaky smoke.即嵌套uv run可能在fcc-server.exe被占用时尝试刷新 console scripts导致 Windows 上锁冲突与 smoke 抖动。因此cmd_fcc_server()与cmd_fcc_version()都直接以sys.executable -c from free_claude_code.cli.entrypoints import serve; serve()启动见 smoke/lib/child_process.py。同样地smoke/lib/server.py 的start_server在启动本地 smoke 服务器时会通过find_free_port()寻找空闲端口设置HOST127.0.0.1、MESSAGING_PLATFORMnone、FCC_OPEN_BROWSER0等隔离环境然后轮询/health超时即probe_timeout语义并把进程日志写入.smoke-results/。十、失败分类体系triaging 的核心语言所有 smoke 产物写入.smoke-results/且会对名称包含KEY、TOKEN、SECRET、WEBHOOK或AUTH的环境变量值做脱敏SECRET_KEY_PARTS实现见 smoke/lib/config.py 的redacted函数。10.1 六类分类类别含义是否失败missing_env缺少必需凭据、二进制、Provider 配置、本地 Provider 服务器/模型或 opt-in 标志默认 skip显式选中时失败upstream_unavailable真实 Provider 或 bot API 不可达默认 skip显式选中时失败probe_timeoutsmoke 驱动到达目标但 CLI/探针未在超时内完成默认 skip显式选中时失败product_failure应用接受场景但返回错误形状、崩溃、泄漏状态或违反产品契约失败harness_bugsmoke 测试或驱动自身做了无效假设失败target_disabled因FCC_SMOKE_TARGETS有意选择了其他 Target 而跳过skip10.2 分类规则的三条主线product_failure与harness_bug是真正失败missing_env、upstream_unavailable、probe_timeout默认是 skip。例外当用户通过FCC_SMOKE_PROVIDER_MATRIX显式选中了某个 Provider 时选中但缺失的 Provider 会升级为失败对应 smoke/features.py 中provider_matrix的 skip_policyselected providers missing credentials are failing missing_env。分类不是靠猜upstream_unavailable由 smoke/lib/outcomes.py 的is_upstream_unavailable_text依据具体信号判定——包括connection refused、connect timeout、read timeout、service unavailable、rate limit exceeded、overloaded、at capacity等文本标记以及匹配429/5xx的 HTTP 状态正则target_disabled则由conftest.py的 skip reason smoke target disabled 识别。10.3 报告产物pytest_sessionfinish 钩子在会话结束时调用SmokeReport.write()实现见 smoke/lib/report.py把每条用例的 nodeid、outcome、classification、duration、markers 与脱敏后的 detail 写入report-worker-timestamp.json。由于文件名携带worker_id来自PYTEST_XDIST_WORKER默认main并行运行时每个 worker 各写一份报告方便按 worker 归并分析。十一、源码中的特性清单速览smoke/features.py 的FEATURE_INVENTORY是套件的唯一事实源任何公共产品行为都必须在此登记契约测试与产品 E2E 场景。按业务域归纳接入兼容层drop_in_claude_code_replacement、drop_in_codex_replacement、anthropic_api_routes、claude_auto_mode_classifier、vscode_extension、intellij_extensionCLI/harness 层pi_cli_integration、opencode_cli_integration、aider_cli_integration、cline_cli_integration、hermes_cli_integration、dsh_cli_integration、grok_cli_integration、muse_cli_integration、package_cli_entrypoints、claude_cli_drop_inProvider 与路由层provider_matrix、zero_cost_provider_access、per_model_mapping、mixed_provider_mapping、model_fallback、provider_hot_swap、smart_rate_limiting协议转换层thinking_token_support、native_tool_assembly、vision_protocol_matrix、streaming_error_mapping、count_tokens_contract本地端点层lmstudio_endpoint、llamacpp_endpoint、ollama_endpoint消息平台层discord_telegram_bot、messaging_commands、tree_threading、restart_restore、session_persistence、subagent_control、voice_notes配置与扩展层config_env_precedence、removed_env_migration、extensible_provider_platform_abcs、provider_proxy_timeout_config、request_optimization、optional_authentication、probe_routes、code_session_modes。每个特性条目都给出skip_policy何时跳过、何时必须失败与required_env所需环境例如code_session_modes的策略是本地行为在 Codex 与原生 sandbox 前提可用时必须通过免费推理需显式选择并校验价格voice_notes的策略是fake 取消流程必跑后端转录为 opt-in。这份清单既是对照表也是排查某个功能为何被跳过的权威依据。十二、总结如何把 smoke/ 用起来把整套体系收敛为一张可操作清单先收集uv run pytest smoke --collect-only -q预览用例未设FCC_LIVE_SMOKE1时一切都会被跳过但这本身就能验证收集与参数化是否正确。按 Target 裁剪用FCC_SMOKE_TARGETS指定要验证的模块api/providers/clients/messaging/ollama等conftest.py会跳过未选中的 Target。控制 Provider 范围FCC_SMOKE_PROVIDER_MATRIX限定参与 ProviderFCC_SMOKE_MODEL_PROVIDER覆盖单 Provider 模型显式选中的 Provider 缺失时升级为失败。并行与顺序无状态 Target 用-n auto --distloadgroup跨 Provider 并行涉及 CLI 子进程、消息平台、语音的场景用-n 0保序。解读结果打开.smoke-results/report-*.json按六类分类 triage——product_failure与harness_bug必须修复missing_env/upstream_unavailable/probe_timeout在未显式选中时属于环境性 skiptarget_disabled表示未选中该 Target。Windows 注意子进程复用同一解释器不要嵌套uv run避免fcc-server.exe锁冲突。这套契约测试tests 存活探针prereq 产品 E2Eproduct 失败分类outcomes的四层体系把 free-claude-code 的复杂能力矩阵多协议转换、多 harness 接入、多 Provider 路由、消息平台与语音变成了可裁剪、可并行、可 triage 的本地验证流程是任何想为该项目贡献或深度集成前必备的验证手段。赞分享LLM 网关大模型后端AI 应用【免费下载链接】free-claude-codeUse Claude Code, Codex, VSCode, Pi, and OpenCode (and 6 other harnesses) for free (1.3B free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness multi-model) like OpenClaw (voice supported ToS friendly)项目地址https://gitcode.com/GitHub_Trending/fr/free-claude-code点击查看免费下载相关推荐Sunshine 自托管游戏串流入门三步跑通 4K60 串流Sunshine 自托管游戏串流入门三步跑通 4K60 串流 Sunshine 是一个自托管的游戏串流主机装在你的 PC 上画面实时编码后推送给 Moon音视频后端gitsigns.nvim 测试指南命令体系、版本矩阵与确定性测试实践gitsigns.nvim 测试指南命令体系、版本矩阵与确定性测试实践 本篇技术指南围绕 gitsigns.nvim 仓库的 etc/testing.md h开发工具DeepChat E2E Smoke 冒烟测试体系详解从 Playwright 配置到本地流式渲染验证DeepChat E2E Smoke 冒烟测试体系详解从 Playwright 配置到本地流式渲染验证 本指南围绕 DeepChat 仓库中的端到端冒烟测试套AI Agent人工智能AI 应用桌面应用MCP Clients上一篇Vue.js富文本编辑器终极解决方案Element Tiptap深度解析下一篇Spring Security OAuth迁移指南从旧版本到Spring Authorization Server的终极方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?