mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
chore(release): bump version to 3.15.0
This commit is contained in:
@@ -0,0 +1,498 @@
|
||||
# CC Switch v3.15.0
|
||||
|
||||
> Claude Desktop becomes a first-class managed surface with third-party provider switching via proxy gateway, role-based model mapping, major reverse-proxy hardening, Codex OAuth live model discovery, and a filter-driven usage dashboard Hero card
|
||||
|
||||
**[中文版 →](v3.15.0-zh.md) | [日本語版 →](v3.15.0-ja.md)**
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
CC Switch v3.15.0 is a major release following the v3.14.x line, centered on **promoting Claude Desktop to a first-class managed surface**. It ships third-party provider switching through the in-app proxy gateway, role-based model mapping (`sonnet` / `opus` / `haiku`) with a `supports1m` long-context flag, Copilot/Codex OAuth provider reuse, a redesigned Claude Code import flow, app-switcher differentiation between "Claude Code" and "Claude Desktop", and 44 provider presets translated from the Claude Code catalog into the new Claude Desktop surface.
|
||||
|
||||
Around proxy reliability, this release performs a systematic hardening pass: P0–P3 patches across routing / lifecycle / retry / failover / rectifier paths; pooled HTTPS connection reuse for non-Anthropic backends to cut per-request latency; cache hit-rate improvements for Codex and OpenAI Responses (emit `prompt_cache_key` only when a real client-provided session identity exists, canonicalize JSON keys in outgoing request bodies plus `tool_call` arguments and `tool_result` content, and thread `session_id` into the usage logger); correct Anthropic ↔ OpenAI `tool_choice` mapping; Vertex AI full URLs are no longer truncated; Gemini request models are now extracted from the URI path; takeover detection is tightened; and IPv6 listen addresses are supported. ChatGPT Codex OAuth providers no longer depend on hardcoded model lists — CC Switch now fetches a live model list from the ChatGPT backend on demand.
|
||||
|
||||
Claude Code's model mapping is now role-based (`sonnet` / `opus` / `haiku`) with display names and a new `supports1m` boolean flag, replacing the legacy `[1M]` suffix and decoupling routing decisions from raw model IDs. The usage dashboard adds a **filter-driven Hero card** that exposes cache-normalized real total tokens and cache hit rate, updated live as the active date range / provider / model filters change; paired with a fix for cache-cost semantics and the noisy pricing warning storm that fired on every request. Robustness improvements in the OpenAI Responses API usage parsing path mean missing or malformed upstream `usage` no longer crashes the VSCode Claude Code extension with a `null` output.
|
||||
|
||||
The provider ecosystem expands further: new BytePlus, Volcengine Agentplan, ClaudeAPI, ClaudeCN, RunAPI, RelaxyCode, PatewayAI, and Baidu Qianfan Coding Plan partner presets; DouBao Seed is promoted to partner status; and provider cards now surface a "routing support" badge so users can tell at a glance which providers can be served through Local Routing. This release also fixes a long tail of issues across Codex sessions, OAuth, Claude Desktop forms, Linux segfaults, terminal fallbacks, and ships several GitHub Actions dependency bumps.
|
||||
|
||||
**Release date**: 2026-05-16
|
||||
|
||||
**Stats**: 127 commits | 211 files changed | +17,980 insertions | -2,748 deletions
|
||||
|
||||
---
|
||||
|
||||
## Highlights
|
||||
|
||||
- **Claude Desktop Becomes a First-Class Managed Surface**: Third-party provider switching through the in-app proxy gateway, role-based model mapping (`sonnet` / `opus` / `haiku`) with a `supports1m` long-context flag, Copilot/Codex OAuth provider reuse, and 44 provider presets translated from the Claude Code catalog. Note: 20 Claude Desktop presets now default to direct mode instead of proxy mode — verify connectivity after upgrade if you previously relied on proxy routing.
|
||||
- **Major Reverse-Proxy Hardening**: P0–P3 lifecycle / retry / failover / rectifier patches; pooled HTTPS reuse for non-Anthropic backends; Codex / Responses cache hit-rate improvements; correct Anthropic ↔ OpenAI `tool_choice` mapping; Vertex AI URL preservation; Gemini path-based model extraction; refined takeover detection; IPv6 listen address support.
|
||||
- **Provider Ecosystem Expansion**: New BytePlus, Volcengine Agentplan, ClaudeAPI, ClaudeCN, RunAPI, RelaxyCode, PatewayAI, and Baidu Qianfan Coding Plan partner presets; DouBao Seed promoted to partner status; routing-support badges on provider cards.
|
||||
- **Role-Based Model Mapping with 1M Flag**: Role-based `sonnet` / `opus` / `haiku` routing with display names and a `supports1m` flag replaces the legacy `[1M]` suffix.
|
||||
- **Codex OAuth Live Model Discovery**: ChatGPT Codex providers fetch the live model list from the ChatGPT backend on demand.
|
||||
- **Usage Dashboard Filter-Driven Hero**: Surfaces cache-normalized real total tokens and cache hit rate, updated live as date / provider / model filters change.
|
||||
- **DeepSeek Tool Calls + Zero-Usage Final Delta**: DeepSeek tool calls now return `reasoning_content` alongside `tool_calls` (#2543, thanks @bling-yshs); the final `message_delta` always includes a usage block (even when zero) so strict Anthropic clients no longer crash on `null` (#2485, thanks @Myoontyee).
|
||||
- **OpenAI Responses API Usage Parsing Robustness**: Missing or malformed upstream `usage` no longer crashes the VSCode Claude Code extension (#2422, thanks @magucas).
|
||||
|
||||
---
|
||||
|
||||
## Added
|
||||
|
||||
### Claude Desktop Third-Party Provider Switching via Proxy Gateway
|
||||
|
||||
CC Switch now treats **Claude Desktop** as a first-class managed surface alongside Claude Code / Codex / Gemini / OpenCode / OpenClaw / Hermes.
|
||||
|
||||
- New dedicated Claude Desktop panel that brokers third-party providers to Claude Desktop through CC Switch's in-app proxy gateway
|
||||
- Routing-support badge on cards for providers that need Local Routing
|
||||
- Role-based model route mapping locked to `sonnet` / `opus` / `haiku`
|
||||
- Copilot / Codex OAuth providers can be reused in the Claude Desktop panel
|
||||
- Redesigned Claude Code settings import flow
|
||||
- App switcher visually distinguishes "Claude Code" from "Claude Desktop", and the app visibility settings use the "Claude Code" label
|
||||
- 44 Claude Desktop provider presets translated from the Claude Code preset catalog
|
||||
|
||||
### Routing Support Badges on Provider Cards
|
||||
|
||||
Provider cards in both the Claude Code and Codex panels now show a routing-support badge so users can tell at a glance which providers can be served through Local Routing.
|
||||
|
||||
### Codex OAuth Live Model List
|
||||
|
||||
ChatGPT Codex providers no longer rely on a hardcoded model selection — CC Switch fetches a **live model list** from the ChatGPT backend on demand.
|
||||
|
||||
### Role-Based Model Mapping with 1M Flag
|
||||
|
||||
Claude Code model mapping is now role-based (`sonnet` / `opus` / `haiku`) with display names and a `supports1m` boolean flag, replacing the legacy `[1M]` suffix and decoupling routing from raw model IDs.
|
||||
|
||||
### Filter-Driven Usage Hero
|
||||
|
||||
The usage dashboard's Hero summary is now filter-driven, updating live as the active date range / provider / model filters change; it surfaces **cache-normalized real total tokens** and cache hit rate so the Hero figures line up with the detail list below.
|
||||
|
||||
### Provider Form "Save Anyway" Prompt
|
||||
|
||||
Softened provider form input validation by turning non-blocking input issues into a "save anyway" prompt, so a harmless field issue no longer blocks saving (#2307, thanks @allenxln).
|
||||
|
||||
### Universal Provider Duplicate Action
|
||||
|
||||
Added a "duplicate" button for universal providers from the provider list (#2416, thanks @hubutui).
|
||||
|
||||
### Persisted Tauri Window State
|
||||
|
||||
Window position and size now persist across launches (#2377, thanks @BillSaul).
|
||||
|
||||
### Tray Icon Tooltip
|
||||
|
||||
The system tray icon now surfaces a status tooltip on hover (#2417, thanks @Coconut-Fish).
|
||||
|
||||
### Warp Terminal Session Launch
|
||||
|
||||
Added support for launching Warp and executing a saved session inside it (#2466, thanks @tisonkun).
|
||||
|
||||
### DeepSeek `reasoning_content` for Tool Calls
|
||||
|
||||
DeepSeek tool-call responses now return `reasoning_content` and `tool_calls` together, so callers can render both (#2543, thanks @bling-yshs).
|
||||
|
||||
### Baidu Qianfan Coding Plan (Claude Code)
|
||||
|
||||
Added a Baidu Qianfan Coding Plan preset (#2322, thanks @jimmyzhuu).
|
||||
|
||||
### Compshare Coding Plan Preset (Cross-App)
|
||||
|
||||
The Compshare Coding Plan preset now lands across claude / codex / hermes / openclaw.
|
||||
|
||||
### Partner Provider Presets
|
||||
|
||||
Added **BytePlus**, **Volcengine Agentplan**, **ClaudeAPI**, **ClaudeCN**, **RunAPI**, **RelaxyCode**, and **PatewayAI** partner presets; promoted **DouBao Seed** to partner status (refreshed endpoint and links).
|
||||
|
||||
### 44 Claude Desktop Provider Presets
|
||||
|
||||
Translated 44 provider presets from the Claude Code preset catalog into the new Claude Desktop panel.
|
||||
|
||||
---
|
||||
|
||||
## Changed
|
||||
|
||||
### 20 Claude Desktop Presets Default to Direct Mode
|
||||
|
||||
20 Claude Desktop presets now ship in direct mode instead of routing through the proxy by default, reducing setup friction for users who don't need proxy-specific compatibility shims. If you previously relied on proxy routing for these presets, verify connectivity after upgrading.
|
||||
|
||||
### Claude Desktop Operational Notes
|
||||
|
||||
Switching a Claude Desktop provider writes CC Switch's managed 3P profile and **requires restarting Claude Desktop** to take effect; proxy-mode providers require CC Switch's Local Routing to stay running while in use.
|
||||
|
||||
### Failover / Local Routing Guardrails
|
||||
|
||||
Failover controls now require the target app's Local Routing takeover to be enabled before they can be turned on; stopping only the proxy service is blocked while any app still depends on takeover state, preventing the "proxy stopped but the app still thinks takeover is running" inconsistency.
|
||||
|
||||
### Usage Accounting Semantics Changed
|
||||
|
||||
Usage summaries now report **cache-normalized real total tokens** and **cache hit rate**. Historical token and cost figures may **shift** after deduplication and pricing recalculation — the new numbers are more accurate but will not equal the values reported in earlier versions.
|
||||
|
||||
### Provider Preset Rendering Order
|
||||
|
||||
Preset lists now render in the author-defined array order, with partners prioritized first, replacing the previous implicit sort.
|
||||
|
||||
### Model Mapping Hint Copy Simplified
|
||||
|
||||
`modelMappingOffHint` was rewritten as action-oriented copy across zh / en / ja.
|
||||
|
||||
### CC Switch Brand Surface Unified to ccswitch.io
|
||||
|
||||
All in-app and README "official website" references now point at ccswitch.io as the sole official site; the release notes template also surfaces ccswitch.io.
|
||||
|
||||
### Theme Switch Simplified
|
||||
|
||||
Removed the circular reveal animation during theme switches; theme changes are now an instant cross-fade.
|
||||
|
||||
### Claude Code App Switcher Differentiation
|
||||
|
||||
The app switcher visually distinguishes "Claude Code" from "Claude Desktop", and the app visibility settings use the "Claude Code" label.
|
||||
|
||||
### CI: Claude Review Upgraded to Opus 4.7
|
||||
|
||||
The Claude review GitHub Action is upgraded to Opus 4.7; the prompt is tuned to reduce nitpick noise; a new `@claude` review-only Code Action is added; PR head SHA is pinned for checkout; the `--max-turns 5` limit is removed.
|
||||
|
||||
### GitHub Actions Dependency Bumps
|
||||
|
||||
- `actions/checkout` 4 → 6 (#2517)
|
||||
- `pnpm/action-setup` 5 → 6 (#2518)
|
||||
- `softprops/action-gh-release` 2 → 3 (#2519)
|
||||
- `actions/stale` 9 → 10 (#2520)
|
||||
|
||||
### DeepSeek Presets Switched to V4
|
||||
|
||||
DeepSeek presets now ship V4 (flash / pro) with refreshed pricing seeds.
|
||||
|
||||
### Codex 1M Context Toggle Hidden in Edit Form
|
||||
|
||||
The 1M context-window toggle is no longer surfaced in the Codex provider edit form, reducing the density of knobs that have no effect in current Codex deployments.
|
||||
|
||||
### OpenClaudeCode Migrated to MicuAPI Domain
|
||||
|
||||
The OpenClaudeCode preset is migrated to the MicuAPI domain; Micu API links are refreshed to `micuapi.ai`.
|
||||
|
||||
### CrazyRouter Endpoints Switched to `cn` Subdomain
|
||||
|
||||
CrazyRouter preset endpoints now use the `cn` subdomain.
|
||||
|
||||
### RelaxyCode Custom Icon
|
||||
|
||||
The RelaxyCode preset icon is switched to a custom `relaxcode.png` asset.
|
||||
|
||||
### Kimi For Coding Doc URL
|
||||
|
||||
The Kimi For Coding website URL is updated to the `/code/docs/` path.
|
||||
|
||||
### SiliconFlow International Site Shows USD
|
||||
|
||||
The SiliconFlow international site now correctly shows USD for balance display (it previously displayed CNY incorrectly).
|
||||
|
||||
---
|
||||
|
||||
## Fixed
|
||||
|
||||
### OpenAI Responses API Usage Parsing Robustness
|
||||
|
||||
Hardened `build_anthropic_usage_from_responses()` and the Responses → Anthropic SSE translator so a missing or malformed upstream `usage` no longer produces `"usage": null` in `message_delta`. This unblocks strict Anthropic clients (notably the VSCode Claude Code extension) that crashed with `Cannot read properties of null (reading 'output_tokens')` against providers such as Codex OAuth and DashScope's `compatible-mode/v1/responses` endpoint. Added OpenAI field-name fallbacks (`prompt_tokens` / `completion_tokens`), null / empty / partial object handling, and preserved cache token fields even when input/output tokens are missing (#2422, thanks @magucas).
|
||||
|
||||
### Proxy Reliability Patches (P0–P3)
|
||||
|
||||
Multiple rounds of routing / lifecycle / retry / rectifier patches across the request-forwarder paths; extracted a shared `handle_rectifier_retry_failure` helper and a shared `auth_header_value` helper.
|
||||
|
||||
### Proxy: Pooled HTTPS Connection Reuse for Non-Anthropic Backends
|
||||
|
||||
Non-Anthropic backends now reuse pooled HTTPS connections instead of opening a fresh TLS session per request, materially reducing per-request latency.
|
||||
|
||||
### Proxy: Forward Client's Actual HTTP Method
|
||||
|
||||
The proxy no longer hard-codes `POST` — it forwards the client's actual HTTP method, so non-POST upstream endpoints (e.g. GET `/v1/models`) now work correctly.
|
||||
|
||||
### Proxy: Per-Attempt Counters and `max_retries` Wiring
|
||||
|
||||
Client-request counters are moved out of the per-attempt loop; `AppProxyConfig.max_retries` is now correctly wired into the request forwarder.
|
||||
|
||||
### Proxy: Failover Decision Refinements
|
||||
|
||||
Refined retryable vs. unretryable error classification in the request forwarder.
|
||||
|
||||
### Proxy: Takeover Detection Tightening
|
||||
|
||||
Takeover detection is tightened; disabling takeover uses fallback restore, so leftover state no longer strands a provider.
|
||||
|
||||
### Proxy: Anthropic ↔ OpenAI `tool_choice` Mapping
|
||||
|
||||
During format conversion, Anthropic's `tool_choice` is now correctly mapped to the OpenAI Chat nested form.
|
||||
|
||||
### Proxy: Gemini Request Model Extracted from URI Path
|
||||
|
||||
Gemini request models are now extracted from the URI path (instead of the body), so transformed traffic reports the right model name.
|
||||
|
||||
### Proxy: Auth Header Error Handling
|
||||
|
||||
`get_auth_headers` now returns `Result` instead of panicking on bad credentials.
|
||||
|
||||
### Proxy: IPv6 Listen Address Validation
|
||||
|
||||
The Proxy panel now accepts IPv6 listen addresses.
|
||||
|
||||
### Proxy: Codex / Responses Cache Hit Rate
|
||||
|
||||
Improved cache hit rate for Codex and OpenAI Responses requests by stabilizing cache key derivation: emit `prompt_cache_key` only when the client actually carries a session identity, so unrelated conversations no longer collapse onto a single key; canonicalize (sort) JSON keys in outgoing request bodies and in `tool_call` arguments / `tool_result` content for byte-identical prefix-cache reuse; thread `session_id` into the usage logger for request correlation.
|
||||
|
||||
### Proxy: JSON Schema Underscore Fields Preserved
|
||||
|
||||
Private-parameter filtering now preserves underscore-prefixed field names inside JSON Schema name maps (`properties`, `patternProperties`, `definitions`, `$defs`), so user-defined schema keys like `_id` and `_meta` pass through the filter intact.
|
||||
|
||||
### Proxy: Read Tool Empty Pages
|
||||
|
||||
Drop empty pages from `Read` tool inputs so providers no longer reject the request (#2472, thanks @Kwensiu).
|
||||
|
||||
### Proxy: Per-Request Hot-Path Trim
|
||||
|
||||
Trimmed per-request hot-path work and database wait time.
|
||||
|
||||
### Proxy: Real Provider Model Names Under Takeover
|
||||
|
||||
Under takeover, the Claude Code menu now exposes the real provider model names instead of a stale alias.
|
||||
|
||||
### Proxy: Zero Usage in Final `message_delta`
|
||||
|
||||
The final `message_delta` event now always includes a usage block (even when zero) so strict Anthropic clients no longer crash on `null` (#2485, thanks @Myoontyee).
|
||||
|
||||
### Proxy: Streaming `message_delta` Deduplication
|
||||
|
||||
Deduplicated `message_delta` events that some upstreams emit twice (#2366, thanks @codeasier).
|
||||
|
||||
### Proxy: Scoped `reasoning_content` Preserved for Tool Calls
|
||||
|
||||
Tool-call paths now correctly preserve the scoped `reasoning_content` field during transformation; Kimi / Moonshot's OpenAI Chat compatibility path keeps the field while generic OpenAI-compatible requests stay free of it (#2367, thanks @codeasier).
|
||||
|
||||
### Proxy: Vertex AI Full URL Preserved
|
||||
|
||||
Full Vertex AI URLs are no longer truncated during proxy forwarding (#2415, thanks @xpfo-go).
|
||||
|
||||
### Proxy: Leading Billing Header Stripped from System Content
|
||||
|
||||
Some upstreams prepend a billing-header chunk to the system message; this content is now stripped (#2350).
|
||||
|
||||
### Proxy: Claude Auth Strategy Derived from `ANTHROPIC_*` Env Var
|
||||
|
||||
The Claude auth strategy is now derived from the actual `ANTHROPIC_*` env variable name rather than an opaque heuristic.
|
||||
|
||||
### Third-Party Claude Providers: Disable Model Test
|
||||
|
||||
Model probing is disabled for third-party Claude gateways that don't implement `/v1/models` consistently.
|
||||
|
||||
### Model-Fetch: `/models` for Anthropic-Compatible Subpath Providers
|
||||
|
||||
`/models` discovery now works for Anthropic-compatible subpath providers.
|
||||
|
||||
### Copilot: Claude Model IDs Resolved Against Live `/models`
|
||||
|
||||
Copilot-backed providers now resolve Claude model IDs against the live `/models` list to avoid stale ID mismatches.
|
||||
|
||||
### Codex: Session Title No Longer Pulls in `environment_context`
|
||||
|
||||
Codex session title extraction no longer pulls in the `environment_context` noise (#2439, thanks @eclipsehx).
|
||||
|
||||
### Codex: Subagent Sessions Hidden
|
||||
|
||||
Codex subagent sessions are now hidden from the main session list (#2445, thanks @LanternCX).
|
||||
|
||||
### Codex Startup Live Import Duplication
|
||||
|
||||
Fixed a duplicate-import bug in the Codex startup live-import path (#2590, thanks @DhruvShankpal).
|
||||
|
||||
### Codex Provider Switch No Longer Disturbs History
|
||||
|
||||
Switching the active Codex provider no longer changes existing session history (#2349, thanks @SaladDay).
|
||||
|
||||
### Codex Usage Log Wording
|
||||
|
||||
Corrected a misleading log message for Codex session usage (#2473, thanks @tisonkun).
|
||||
|
||||
### Claude: Persist `max` Effort via Env
|
||||
|
||||
`max` effort now correctly persists across restart via the env variable (#2493, thanks @makoMakoGo).
|
||||
|
||||
### Claude Desktop: Model Route Matching Without `[1M]` Suffix
|
||||
|
||||
Route matching no longer requires the legacy `[1M]` suffix.
|
||||
|
||||
### Claude Desktop: Provider Form Input Focus Loss
|
||||
|
||||
Fixed an input in the Claude Desktop provider form that lost focus while being edited.
|
||||
|
||||
### Claude Desktop: Spurious Proxy-Stopped Status Alert
|
||||
|
||||
Removed an alert that fired spuriously when the proxy was intentionally stopped.
|
||||
|
||||
### Claude Desktop: Empty Toolbar Capsule Hidden
|
||||
|
||||
The empty toolbar capsule is now hidden when Claude Desktop is the active app.
|
||||
|
||||
### UI: Monitor Badge Icon Centering
|
||||
|
||||
Centered the Monitor badge icon in the app switcher.
|
||||
|
||||
### Linux: Theme Selection Segfault
|
||||
|
||||
Prevented a segfault triggered by selecting a theme on Linux (#2502, thanks @definfo).
|
||||
|
||||
### Terminal: iTerm Fallback on Cold Launch
|
||||
|
||||
Prevented iTerm from being selected as a fallback on cold launch when it isn't actually installed (#2448, thanks @hulkbig).
|
||||
|
||||
### Config: JSON Keys Sorted Alphabetically
|
||||
|
||||
Config writes now sort JSON keys alphabetically for deterministic output (#2469, thanks @fuleinist).
|
||||
|
||||
### "Import Existing" Made Side-Effect Free
|
||||
|
||||
The "import existing" action is now side-effect free (#2429, thanks @xwil1).
|
||||
|
||||
### Coding Plan: Zhipu Weekly Tier Named by Reset Time
|
||||
|
||||
Corrected the Zhipu weekly tier name to match the actual reset time (#2420, thanks @TuYv).
|
||||
|
||||
### DashScope: Usage Parsing Robustness
|
||||
|
||||
Hardened DashScope usage parsing so a malformed payload no longer crashes the VSCode Claude Code extension (#2425, thanks @magucas).
|
||||
|
||||
### Usage: Deduplicate Proxy and Session-Log Sources
|
||||
|
||||
Deduplicated usage records sourced from both the proxy and session logs.
|
||||
|
||||
### Usage: Cache Cost Semantics + Pricing Warn Storm
|
||||
|
||||
Corrected cache-cost semantics and silenced the noisy pricing warning that fired on every request.
|
||||
|
||||
### CI: Frontend Formatting + Linux Clippy Restored
|
||||
|
||||
Restored frontend formatting and Linux clippy checks in CI.
|
||||
|
||||
### Proxy Test Helper Clippy Warning
|
||||
|
||||
Fixed a clippy warning in the proxy test helper.
|
||||
|
||||
---
|
||||
|
||||
## Removed
|
||||
|
||||
### Hermes Agent Usage Tracking Integration
|
||||
|
||||
Removed the Hermes Agent usage tracking integration originally planned for this cycle — upstream behavior changes made the integration impractical to maintain. The integration was **never enabled in any released version**; the "zero-cost rendering" bug discovered during its development was fixed before the integration was rolled back.
|
||||
|
||||
### Theme Switch Circular Reveal Animation
|
||||
|
||||
Removed the circular reveal animation used during theme switches — it stuttered on slower compositors and added little visible value.
|
||||
|
||||
### DDSHub Partner Integration
|
||||
|
||||
Removed DDSHub as a partner preset and dropped the cross-link blurbs from the READMEs.
|
||||
|
||||
---
|
||||
|
||||
## Docs
|
||||
|
||||
### README Sponsor Refresh (zh / en / ja)
|
||||
|
||||
Added BytePlus, ClaudeCN, RunAPI, and PatewayAI sponsor entries; cross-linked BytePlus and Volcengine entries; refreshed the CrazyRouter $2 credit claim flow, the Compshare blurb, the Right Code blurb, and other sponsor logos and listings; flattened the LionCC logo onto a white background; switched the Chinese README's sponsor logo to the Volcengine artwork; added Hermes Agent to the README subtitles.
|
||||
|
||||
### Release Notes Template
|
||||
|
||||
The release notes template now surfaces `ccswitch.io`.
|
||||
|
||||
### Brand Surface
|
||||
|
||||
Documented `ccswitch.io` as the sole official website across READMEs and in-app references.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Upgrade Notes
|
||||
|
||||
### 20 Claude Desktop Presets Default to Direct Mode
|
||||
|
||||
These 20 presets previously routed through the proxy by default and now default to direct mode. If you were using one of these presets pre-upgrade and depended on the proxy path for connectivity (for example because the proxy applies a special rectifier or transformation layer), verify connectivity after upgrading; you can manually switch them back to proxy mode from the CC Switch panel if needed.
|
||||
|
||||
### Claude Desktop Operational Constraints
|
||||
|
||||
Switching a Claude Desktop provider **requires restarting Claude Desktop** to take effect; proxy-mode providers require CC Switch's Local Routing to stay running while in use — quitting CC Switch or stopping Local Routing will cut off any proxy-mode Claude Desktop providers.
|
||||
|
||||
### Failover Requires Takeover Enabled
|
||||
|
||||
Before enabling Failover, make sure the target app's Local Routing takeover is enabled, otherwise the Failover control will refuse to start; stopping the proxy service while any app still depends on takeover state is blocked, so you need to disable takeover at the app layer first before stopping the proxy.
|
||||
|
||||
### Usage Figures May Diverge from History
|
||||
|
||||
Usage summaries now use cache-normalized real total tokens + cache hit rate. Historical token and cost figures may **shift** after deduplication and pricing recalculation — the new numbers are more accurate but will not equal what earlier versions reported.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Risk Notice
|
||||
|
||||
This release inherits the risk notices originally introduced in v3.12.3 / v3.13.0 for reverse-proxy-style features.
|
||||
|
||||
**GitHub Copilot Reverse Proxy**: Using Copilot's reverse-proxy path may violate GitHub / Microsoft's terms of service. See the [v3.12.3 release notes](v3.12.3-en.md#️-risk-notice) for details.
|
||||
|
||||
**Codex OAuth Reverse Proxy**: Using the Codex OAuth reverse proxy with a ChatGPT subscription may violate OpenAI's terms of service. See the [v3.13.0 release notes](v3.13.0-en.md#️-risk-notice) for details.
|
||||
|
||||
**Claude Desktop Third-Party Provider Switching via Proxy Gateway**: Routing Claude Desktop traffic through CC Switch's in-app proxy gateway to a third-party provider exposes those requests to that provider's billing, compliance, and data-retention policies — read the target provider's terms of service before using.
|
||||
|
||||
By enabling these features, users **accept all associated risks**. CC Switch is not responsible for any account restrictions, warnings, or service suspensions that result from using these features.
|
||||
|
||||
---
|
||||
|
||||
## Download & Installation
|
||||
|
||||
Visit [Releases](https://github.com/farion1231/cc-switch/releases/latest) to download the appropriate version.
|
||||
|
||||
### System Requirements
|
||||
|
||||
| OS | Minimum Version | Architecture |
|
||||
| ------- | ---------------------------- | ----------------------------------- |
|
||||
| Windows | Windows 10 or later | x64 |
|
||||
| macOS | macOS 12 (Monterey) or later | Intel (x64) / Apple Silicon (arm64) |
|
||||
| Linux | See table below | x64 / ARM64 |
|
||||
|
||||
### Windows
|
||||
|
||||
| File | Description |
|
||||
| ---------------------------------------- | ----------------------------------------------------- |
|
||||
| `CC-Switch-v3.15.0-Windows.msi` | **Recommended** - MSI installer, supports auto-update |
|
||||
| `CC-Switch-v3.15.0-Windows-Portable.zip` | Portable, extract and run, no registry writes |
|
||||
|
||||
### macOS
|
||||
|
||||
| File | Description |
|
||||
| -------------------------------- | ------------------------------------------------------- |
|
||||
| `CC-Switch-v3.15.0-macOS.dmg` | **Recommended** - DMG installer, drag into Applications |
|
||||
| `CC-Switch-v3.15.0-macOS.zip` | Extract and drag into Applications, Universal Binary |
|
||||
| `CC-Switch-v3.15.0-macOS.tar.gz` | For Homebrew installation and auto-update |
|
||||
|
||||
> macOS builds are Apple code-signed and notarized — install directly.
|
||||
|
||||
### Homebrew (macOS)
|
||||
|
||||
```bash
|
||||
brew tap farion1231/ccswitch
|
||||
brew install --cask cc-switch
|
||||
```
|
||||
|
||||
Update:
|
||||
|
||||
```bash
|
||||
brew upgrade --cask cc-switch
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
> Linux artifacts are published for both **x86_64** and **ARM64** (`aarch64`). The architecture is included in the asset filename — pick the one matching your machine's `uname -m` output:
|
||||
>
|
||||
> - `CC-Switch-v3.15.0-Linux-x86_64.AppImage` / `.deb` / `.rpm`
|
||||
> - `CC-Switch-v3.15.0-Linux-arm64.AppImage` / `.deb` / `.rpm`
|
||||
|
||||
| Distribution | Recommended | Installation |
|
||||
| --------------------------------------- | ----------- | ---------------------------------------------------------------------- |
|
||||
| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` or `sudo apt install ./CC-Switch-*.deb` |
|
||||
| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` or `sudo dnf install ./CC-Switch-*.rpm` |
|
||||
| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` |
|
||||
| Arch Linux / Manjaro | `.AppImage` | Add execute permission and run, or use AUR |
|
||||
| Other distros / not sure | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` |
|
||||
@@ -0,0 +1,498 @@
|
||||
# CC Switch v3.15.0
|
||||
|
||||
> Claude Desktop が一等管理パネルに昇格(プロキシゲートウェイ経由のサードパーティプロバイダー切り替えを含む)、ロールベースのモデルマッピング、リバースプロキシの大幅強化、Codex OAuth ライブモデル検出、Usage ダッシュボードのフィルター駆動 Hero カード
|
||||
|
||||
**[English →](v3.15.0-en.md) | [中文 →](v3.15.0-zh.md)**
|
||||
|
||||
---
|
||||
|
||||
## 概要
|
||||
|
||||
CC Switch v3.15.0 は v3.14.x に続く大型バージョンアップで、コアの焦点は **Claude Desktop を一等管理パネルに昇格させること**にあります。これに合わせて、内蔵プロキシゲートウェイを介したサードパーティプロバイダーの切り替え、ロールベースのモデルマッピング(sonnet / opus / haiku)+ `supports1m` ロングコンテキストフラグ、Copilot / Codex OAuth プロバイダーの再利用、再設計された Claude Code インポートフロー、App スイッチャーでの「Claude Code」と「Claude Desktop」の視覚的な区別、そして Claude Code プリセットディレクトリから翻訳された 44 個の Claude Desktop プリセットを提供します。
|
||||
|
||||
リバースプロキシの信頼性については、本リリースで系統的なハードニングを行いました: P0–P3 の複数回にわたるルーティング / ライフサイクル / リトライ / フェイルオーバー / 補正器の修正; 非 Anthropic バックエンドで HTTPS コネクションプールを再利用してリクエスト単位のレイテンシを低減; Codex と OpenAI Responses のキャッシュヒット率改善(`prompt_cache_key` は本物のクライアントセッション識別子がある場合のみ送信、外部リクエストボディと `tool_call` 引数 / `tool_result` 内容の JSON キーを正規化してソート、`session_id` を Usage ロガーに通す); Anthropic ↔ OpenAI `tool_choice` の正しい相互変換; Vertex AI の完全な URL を切り詰めない; Gemini は URI パスからモデル名を抽出するように変更; Local Routing のテイクオーバー検出をより精緻化; IPv6 リッスンアドレスのサポート。Codex OAuth 系の Claude プロバイダーはハードコードされたモデルリストに依存しなくなり、CC Switch が必要に応じて ChatGPT バックエンドからライブモデルリストを取得します。
|
||||
|
||||
Claude Code のモデルマッピングはロールベース(`sonnet` / `opus` / `haiku`)+ 表示名に変更され、`supports1m` 真偽値フラグが導入されました。これは旧来の `[1M]` サフィックス記法に取って代わり、ルーティング判定と元のモデル ID を分離します。Usage ダッシュボードには**フィルター駆動 Hero カード**が追加され、キャッシュ正規化後の真の総トークン数とキャッシュヒット率を表示し、現在の日付範囲 / プロバイダー / モデルのフィルターに追従してリアルタイム更新します。あわせてキャッシュコストのセマンティクスエラーと、リクエストごとに発生していた pricing 警告ノイズを修正しました。OpenAI Responses API の usage 解析パスを堅牢化し、上流の欠損または不正な `usage` のせいで VSCode Claude Code プラグインが `null` 出力でクラッシュしないようにしました。
|
||||
|
||||
プロバイダーエコシステムはさらに拡張されました: BytePlus、Volcengine Agentplan、ClaudeAPI、ClaudeCN、RunAPI、RelaxyCode、PatewayAI、Baidu Qianfan Coding Plan のパートナープリセットを追加; Doubao Seed をパートナープリセットに昇格; プロバイダーカードに「Local Routing 対応」バッジを表示。本リリースでは、Codex セッション、OAuth、Claude Desktop フォーム、Linux segfault、ターミナルフォールバックなどに関する多くの細部の問題も修正し、複数の GitHub Actions 依存関係をアップグレードしました。
|
||||
|
||||
**リリース日**: 2026-05-16
|
||||
|
||||
**Stats**: 127 commits | 211 files changed | +17,980 insertions | -2,748 deletions
|
||||
|
||||
---
|
||||
|
||||
## ハイライト
|
||||
|
||||
- **Claude Desktop が一等管理パネルに**: 内蔵プロキシゲートウェイを介したサードパーティプロバイダーの切り替え、ロールベースのモデルマッピング(sonnet / opus / haiku)+ `supports1m` ロングコンテキストフラグ、Copilot / Codex OAuth プロバイダーの再利用、Claude Code プリセットディレクトリから翻訳された 44 個のプリセットを提供。注意: 20 個の Claude Desktop プリセットがデフォルトでプロキシモードから直接接続モードに切り替わったため、アップグレード後にプロキシルーティングに依存している場合は接続性を検証してください
|
||||
- **リバースプロキシの大幅強化**: P0–P3 のライフサイクル / リトライ / フェイルオーバー / 補正器の修正; 非 Anthropic バックエンドの HTTPS コネクションプール再利用; Codex / Responses キャッシュヒット率改善; Anthropic ↔ OpenAI `tool_choice` の正しいマッピング; Vertex AI URL の完全保持; Gemini パスベースのモデル抽出; テイクオーバー検出の精緻化; IPv6 リッスンアドレスのサポート
|
||||
- **プロバイダーエコシステムの拡張**: BytePlus、Volcengine Agentplan、ClaudeAPI、ClaudeCN、RunAPI、RelaxyCode、PatewayAI、Baidu Qianfan Coding Plan のパートナープリセットを追加; Doubao Seed をパートナーに昇格; プロバイダーカードに「ルーティングプロキシ対応」バッジを表示
|
||||
- **ロールベースのモデルマッピング + 1M フラグ**: ロールベースの sonnet / opus / haiku ルーティング + 表示名 + `supports1m` フラグ。旧来の `[1M]` サフィックスに取って代わる
|
||||
- **Codex OAuth ライブモデル検出**: ChatGPT Codex 系プロバイダーは必要に応じて ChatGPT バックエンドからライブモデルリストを取得
|
||||
- **Usage ダッシュボードのフィルター駆動 Hero**: キャッシュ正規化後の真の総トークン数とキャッシュヒット率を表示し、現在の日付 / プロバイダー / モデルフィルターに追従してリアルタイム更新
|
||||
- **DeepSeek ツール呼び出し + ゼロ usage 最終 delta**: DeepSeek のツール呼び出しが `reasoning_content` も返却するように (#2543, 感謝 @bling-yshs); 最終 `message_delta` は常に usage ブロックを含む(すべてゼロでも)ため、厳格な Anthropic クライアントが `null` でクラッシュしなくなった (#2485, 感謝 @Myoontyee)
|
||||
- **OpenAI Responses API usage 解析の堅牢化**: 上流の欠損または不正な usage によって VSCode Claude Code プラグインがクラッシュしないように (#2422, 感謝 @magucas)
|
||||
|
||||
---
|
||||
|
||||
## 追加機能
|
||||
|
||||
### Claude Desktop サードパーティプロバイダーのプロキシ切り替え
|
||||
|
||||
CC Switch は初めて **Claude Desktop** を一等管理対象パネルとして扱い、Claude Code / Codex / Gemini / OpenCode / OpenClaw / Hermes と並列に位置づけます。
|
||||
|
||||
- Claude Desktop 専用パネルを追加し、CC Switch 内蔵プロキシゲートウェイを介してサードパーティプロバイダーを Claude Desktop に代理転送
|
||||
- ルーティングプロキシを必要とするプロバイダーには、カード上に「Local Routing 対応」バッジを表示
|
||||
- ロールベースのモデルルーティングマッピングで `sonnet` / `opus` / `haiku` にロック
|
||||
- Copilot / Codex OAuth プロバイダーを Claude Desktop パネルで再利用可能
|
||||
- 再設計された Claude Code 設定インポートフロー
|
||||
- App スイッチャーで「Claude Code」と「Claude Desktop」を視覚的に区別、アプリ可視性設定では「Claude Code」ラベルを使用
|
||||
- Claude Code プリセットディレクトリから翻訳された 44 個の Claude Desktop プロバイダープリセット
|
||||
|
||||
### プロバイダーカード: ルーティングプロキシ対応バッジ
|
||||
|
||||
Claude Code と Codex パネルのプロバイダーカードに「ルーティングプロキシ対応」バッジを追加し、Local Routing 経由で提供可能なプロバイダーを一目で識別できるようにしました。
|
||||
|
||||
### Codex OAuth ライブモデルリスト
|
||||
|
||||
ChatGPT Codex 系プロバイダーはハードコードされたモデル選択に依存しなくなり、CC Switch が必要に応じて ChatGPT バックエンドから**ライブモデルリスト**を取得します。
|
||||
|
||||
### ロールベースのモデルマッピング + 1M フラグ
|
||||
|
||||
Claude Code のモデルマッピングはロールベース(`sonnet` / `opus` / `haiku`)+ 表示名に変更され、`supports1m` 真偽値フラグが導入されました。これは旧来の `[1M]` サフィックス記法に取って代わり、ルーティング判定と元のモデル ID を分離します。
|
||||
|
||||
### Usage ダッシュボードのフィルター駆動 Hero
|
||||
|
||||
Usage ダッシュボードの Hero サマリーがフィルター駆動になり、現在の日付範囲 / プロバイダー / モデルフィルターに追従してリアルタイムに変化します。**キャッシュ正規化後の真の総トークン数**とキャッシュヒット率を表示することで、Hero の数値が下部の詳細リストと整合するようになります。
|
||||
|
||||
### プロバイダーフォームの「とりあえず保存」
|
||||
|
||||
プロバイダーフォームの入力検証を緩和し、非ブロッキングな入力上の問題を「とりあえず保存」型のヒントに変更しました。無害な軽微なフィールド問題が原因で保存が阻まれることがなくなります (#2307, 感謝 @allenxln)。
|
||||
|
||||
### Universal プロバイダーの複製アクション
|
||||
|
||||
プロバイダーリスト内の universal プロバイダーに「複製」ボタンを追加しました (#2416, 感謝 @hubutui)。
|
||||
|
||||
### Tauri ウィンドウ状態の永続化
|
||||
|
||||
ウィンドウの位置とサイズが再起動をまたいで保持されるようになりました (#2377, 感謝 @BillSaul)。
|
||||
|
||||
### トレイアイコンのホバーヒント
|
||||
|
||||
システムトレイアイコンにホバー時のステータスヒントを表示するようになりました (#2417, 感謝 @Coconut-Fish)。
|
||||
|
||||
### Warp ターミナルセッション起動
|
||||
|
||||
Warp ターミナルのサポートを追加し、保存されたセッションを Warp で実行できるようになりました (#2466, 感謝 @tisonkun)。
|
||||
|
||||
### DeepSeek ツール呼び出し `reasoning_content`
|
||||
|
||||
DeepSeek のツール呼び出しレスポンスが `reasoning_content` と `tool_calls` を同時に返却するようになり、呼び出し側が両方を一緒にレンダリングできるようになりました (#2543, 感謝 @bling-yshs)。
|
||||
|
||||
### Baidu Qianfan Coding Plan(Claude Code)
|
||||
|
||||
Baidu Qianfan Coding Plan プリセットを追加しました (#2322, 感謝 @jimmyzhuu)。
|
||||
|
||||
### Compshare Coding Plan プリセット(クロスアプリ)
|
||||
|
||||
Compshare Coding Plan プリセットを claude / codex / hermes / openclaw の全アプリに展開しました。
|
||||
|
||||
### パートナープロバイダープリセット
|
||||
|
||||
**BytePlus**、**Volcengine Agentplan**、**ClaudeAPI**、**ClaudeCN**、**RunAPI**、**RelaxyCode**、**PatewayAI** のパートナープリセットを追加; **Doubao Seed** をパートナープリセットに昇格(エンドポイントとリンクをリフレッシュ)。
|
||||
|
||||
### 44 個の Claude Desktop プロバイダープリセット
|
||||
|
||||
Claude Code プリセットディレクトリから 44 個のプロバイダープリセットを翻訳し、新しい Claude Desktop パネルに投入しました。
|
||||
|
||||
---
|
||||
|
||||
## 変更
|
||||
|
||||
### 20 個の Claude Desktop プリセットがデフォルトで直接接続モードに
|
||||
|
||||
20 個の Claude Desktop プリセットがデフォルトでプロキシモードから直接接続モードに切り替わり、プロキシ互換シムを必要としないユーザーの導入摩擦を低減しました。アップグレード前にこれらのプリセットのプロキシルーティング経由の接続性に依存していた場合は、アップグレード後に検証してください。
|
||||
|
||||
### Claude Desktop の操作制約
|
||||
|
||||
Claude Desktop のプロバイダーを切り替えると CC Switch 管理の 3P プロファイルが書き込まれます。**Claude Desktop の再起動**が必要です; プロキシモードのプロバイダーは、使用中 CC Switch の Local Routing が動作し続けている必要があります。
|
||||
|
||||
### Failover / Local Routing 連動検証
|
||||
|
||||
Failover コントロールは、ターゲットアプリの Local Routing テイクオーバーが有効になっていないと開けないように変更しました。プロキシサービスのみを止めてもテイクオーバー状態に依存するアプリがある場合はブロックされ、「プロキシは止めたがアプリはまだテイクオーバー中と認識している」という不整合を回避します。
|
||||
|
||||
### Usage 統計のセマンティクス変更
|
||||
|
||||
Usage サマリーは**キャッシュ正規化後の真の総トークン数**と**キャッシュヒット率**を報告するようになりました。データの重複排除と価格再計算により、過去のトークン数とコスト数値は**ずれる可能性があります** — 新しい数値の方が正確ですが、旧バージョンの数値とは一致しません。
|
||||
|
||||
### プロバイダープリセットのレンダリング順序
|
||||
|
||||
プリセットリストは作者が定義した配列順序でレンダリングされるようになり、パートナーが先頭に並びます。以前の暗黙的なソートを置き換えます。
|
||||
|
||||
### モデルマッピングヒント文面の簡素化
|
||||
|
||||
`modelMappingOffHint` を中 / 英 / 日でアクション指向の簡潔な文面に書き直しました。
|
||||
|
||||
### CC Switch ブランド公式サイトを ccswitch.io に統一
|
||||
|
||||
アプリ内および README 内のすべての「公式サイト」参照を、唯一の公式サイトとして ccswitch.io に統一しました; Release notes テンプレートにも ccswitch.io を反映。
|
||||
|
||||
### テーマ切り替えの簡素化
|
||||
|
||||
テーマ切り替え時の円形拡散アニメーションを削除し、即座にクロスフェードする方式に変更しました。
|
||||
|
||||
### Claude Code App スイッチャーの視覚的な区別
|
||||
|
||||
App スイッチャーで「Claude Code」と「Claude Desktop」を視覚的に区別し、アプリ可視性設定では「Claude Code」ラベルを使用するようにしました。
|
||||
|
||||
### CI: Claude Review を Opus 4.7 にアップグレード
|
||||
|
||||
Claude review GitHub Action を Opus 4.7 にアップグレード; nitpick ノイズを減らすためプロンプトを調整; `@claude` レビュー専用 Code Action を追加; PR head SHA を checkout 用にロック; `--max-turns 5` 制限を削除。
|
||||
|
||||
### GitHub Actions 依存関係のアップグレード
|
||||
|
||||
- `actions/checkout` 4 → 6 (#2517)
|
||||
- `pnpm/action-setup` 5 → 6 (#2518)
|
||||
- `softprops/action-gh-release` 2 → 3 (#2519)
|
||||
- `actions/stale` 9 → 10 (#2520)
|
||||
|
||||
### DeepSeek プリセットを V4 に
|
||||
|
||||
DeepSeek プリセットが V4(flash / pro)+ リフレッシュされた価格シードを出荷するようになりました。
|
||||
|
||||
### Codex 1M コンテキストトグルを編集フォームから隠す
|
||||
|
||||
Codex プロバイダー編集フォームでは 1M コンテキストトグルを表示しなくなり、現在の Codex デプロイメントには実効性のないノブの密度を低減しました。
|
||||
|
||||
### OpenClaudeCode を MicuAPI ドメインに移行
|
||||
|
||||
OpenClaudeCode プリセットを MicuAPI ドメインに移行; Micu API リンクを `micuapi.ai` にリフレッシュ。
|
||||
|
||||
### CrazyRouter エンドポイントを `cn` サブドメインに切り替え
|
||||
|
||||
CrazyRouter プリセットのエンドポイントを `cn` サブドメインに変更しました。
|
||||
|
||||
### RelaxyCode カスタムアイコン
|
||||
|
||||
RelaxyCode プリセットのアイコンをカスタム `relaxcode.png` アセットに変更しました。
|
||||
|
||||
### Kimi For Coding ドキュメント URL
|
||||
|
||||
Kimi For Coding のウェブサイト URL を `/code/docs/` パスに更新しました。
|
||||
|
||||
### SiliconFlow 国際版で USD 表示
|
||||
|
||||
SiliconFlow 国際版の残高を正しく USD で表示するように修正しました(以前は誤って CNY と表示)。
|
||||
|
||||
---
|
||||
|
||||
## 修正
|
||||
|
||||
### OpenAI Responses API usage 解析の堅牢化
|
||||
|
||||
`build_anthropic_usage_from_responses()` と Responses → Anthropic SSE トランスレーターを強化し、上流の欠損または不正な `usage` が `message_delta` 内で `"usage": null` を生成しないようにしました。これにより、厳格な Anthropic クライアント(典型例: VSCode Claude Code プラグイン)が一部のプロバイダー(Codex OAuth、DashScope の `compatible-mode/v1/responses` エンドポイント)で `Cannot read properties of null (reading 'output_tokens')` でクラッシュしていた問題が解消されます。OpenAI フィールド名のフォールバック(`prompt_tokens` / `completion_tokens`)、null / 空 / 部分オブジェクトの処理、input/output tokens が欠損していても cache token フィールドを保持する処理を追加しました (#2422, 感謝 @magucas)。
|
||||
|
||||
### プロキシ信頼性パッチ(P0–P3)
|
||||
|
||||
request-forwarder パス全体で複数回にわたるルーティング / ライフサイクル / リトライ / 補正器の修正を実施; 共有された `handle_rectifier_retry_failure` ヘルパーと `auth_header_value` ヘルパーを抽出。
|
||||
|
||||
### プロキシ: 非 Anthropic バックエンドの HTTPS コネクションプール再利用
|
||||
|
||||
非 Anthropic バックエンドはプールされた HTTPS コネクションを再利用し、リクエストごとに新しい TLS セッションを開かなくなりました。リクエスト単位のレイテンシが大幅に低減します。
|
||||
|
||||
### プロキシ: クライアントの実際の HTTP メソッドを転送
|
||||
|
||||
`POST` のハードコーディングをやめ、クライアントの実際の HTTP メソッドに従って転送するようになりました; 上流の非 POST エンドポイント(例: GET `/v1/models`)が正常に動作します。
|
||||
|
||||
### プロキシ: 試行ごとのカウンター + `max_retries` の接続
|
||||
|
||||
クライアントリクエストカウンターを試行ごとのループから外に移動; `AppProxyConfig.max_retries` がリクエストフォワーダーに正しく接続されるようになりました。
|
||||
|
||||
### プロキシ: フェイルオーバー判定の精緻化
|
||||
|
||||
リクエストフォワーダー内でのリトライ可能 / 不可能エラーの分類がより正確になりました。
|
||||
|
||||
### プロキシ: テイクオーバー検出の精緻化
|
||||
|
||||
テイクオーバー検出をより厳密にしました; テイクオーバー OFF 時はフォールバック復旧パスを通り、残留状態によってプロバイダーが固まらないようにします。
|
||||
|
||||
### プロキシ: Anthropic ↔ OpenAI `tool_choice` の相互変換
|
||||
|
||||
フォーマット変換時に Anthropic の `tool_choice` を OpenAI Chat のネスト形式に正しくマッピングするようになりました。
|
||||
|
||||
### プロキシ: Gemini リクエストのモデルを URI パスから抽出
|
||||
|
||||
Gemini リクエストのモデルを URI パスから抽出するようになりました(body からは取らない)。変換後のトラフィックが正しいモデル名を報告します。
|
||||
|
||||
### プロキシ: 認証ヘッダーのエラー処理
|
||||
|
||||
`get_auth_headers` が `Result` を返すようになり、認証情報に問題がある場合にパニックしなくなりました。
|
||||
|
||||
### プロキシ: IPv6 リッスンアドレスの検証
|
||||
|
||||
プロキシパネルが IPv6 リッスンアドレスを受け付けるようになりました。
|
||||
|
||||
### プロキシ: Codex / Responses キャッシュヒット率の改善
|
||||
|
||||
安定したキャッシュキー導出によって Codex と OpenAI Responses リクエストのキャッシュヒット率を改善: クライアントが本当にセッション識別子を持参してきた場合にのみ `prompt_cache_key` を送信し、無関係な会話が同じキーに潰されないようにする; 外部リクエストボディと `tool_call` 引数 / `tool_result` 内容内の JSON キーを正規化してソートし、プレフィックスキャッシュがバイト単位でマッチできるようにする; `session_id` を usage ロガーに通してリクエストを関連付けする。
|
||||
|
||||
### プロキシ: JSON Schema のアンダースコアフィールド保持
|
||||
|
||||
プライベートパラメータフィルタリングが JSON Schema name map(`properties`、`patternProperties`、`definitions`、`$defs`)内のアンダースコア接頭辞のフィールド名を保持するようになりました。ユーザー定義 schema キー(`_id`、`_meta` など)がフィルターを正常に通り抜けられます。
|
||||
|
||||
### プロキシ: Read ツールの空白ページ除去
|
||||
|
||||
`Read` ツールの入力から空白ページを除去し、プロバイダーがリクエストを拒否しないようにしました (#2472, 感謝 @Kwensiu)。
|
||||
|
||||
### プロキシ: リクエスト単位のホットパス軽量化
|
||||
|
||||
リクエストごとのホットパスのオーバーヘッドとデータベース待ち時間を削減しました。
|
||||
|
||||
### プロキシ: テイクオーバー下で真のプロバイダーモデル名を表示
|
||||
|
||||
テイクオーバー実行時に、Claude Code メニューが古いエイリアスではなく真のプロバイダーモデル名を露出するようになりました。
|
||||
|
||||
### プロキシ: 最終 `message_delta` は常に usage を含む
|
||||
|
||||
最終 `message_delta` イベントには常に usage ブロックが含まれるようになりました(すべてゼロでも)。厳格な Anthropic クライアントが `null` でクラッシュしなくなります (#2485, 感謝 @Myoontyee)。
|
||||
|
||||
### プロキシ: ストリーミング `message_delta` の重複排除
|
||||
|
||||
一部の上流が二重に送信する `message_delta` イベントの重複排除を行います (#2366, 感謝 @codeasier)。
|
||||
|
||||
### プロキシ: ツール呼び出しパスでの `reasoning_content` 保持
|
||||
|
||||
ツール呼び出しパスの変換時に scoped `reasoning_content` フィールドを正しく保持するようにしました; Kimi / Moonshot の OpenAI Chat 互換パスではこのフィールドを保持し、汎用 OpenAI 互換リクエストでは引き続き付加しません (#2367, 感謝 @codeasier)。
|
||||
|
||||
### プロキシ: Vertex AI の完全 URL 保持
|
||||
|
||||
Vertex AI の完全 URL がプロキシ転送時に切り詰められないようにしました (#2415, 感謝 @xpfo-go)。
|
||||
|
||||
### プロキシ: system content 先頭の課金ヘッダーを除去
|
||||
|
||||
一部の上流が system message の先頭に挿入する課金ヘッダー内容を除去するようにしました (#2350)。
|
||||
|
||||
### プロキシ: Claude 認証ストラテジーを `ANTHROPIC_*` 環境変数名から導出
|
||||
|
||||
不透明なヒューリスティックに依存するのをやめ、認証ストラテジーを実際の `ANTHROPIC_*` 環境変数名から導出するようにしました。
|
||||
|
||||
### サードパーティ Claude プロバイダー: モデルテストの無効化
|
||||
|
||||
`/v1/models` を一貫して実装していないサードパーティ Claude ゲートウェイに対して、モデルプローブを無効化しました。
|
||||
|
||||
### Model-Fetch: Anthropic 互換サブパスプロバイダーの `/models`
|
||||
|
||||
`/models` ディスカバリーが Anthropic 互換のサブパスプロバイダーに対しても動作するようになりました。
|
||||
|
||||
### Copilot: Claude モデル ID をライブ `/models` と照合
|
||||
|
||||
Copilot バックエンドのプロバイダーはライブ `/models` リストを使って Claude モデル ID を照合し、古い ID の不整合を回避するようになりました。
|
||||
|
||||
### Codex: セッションタイトルが `environment_context` を取り込まないように
|
||||
|
||||
Codex のセッションタイトル抽出が `environment_context` のノイズを引き込まなくなりました (#2439, 感謝 @eclipsehx)。
|
||||
|
||||
### Codex: subagent セッションを非表示
|
||||
|
||||
Codex の subagent セッションをメインセッションリストから非表示にしました (#2445, 感謝 @LanternCX)。
|
||||
|
||||
### Codex 起動時の live import 重複排除
|
||||
|
||||
Codex 起動時の live import パスにおける重複インポートのバグを修正しました (#2590, 感謝 @DhruvShankpal)。
|
||||
|
||||
### Codex プロバイダー切り替えで履歴を擾乱しないように
|
||||
|
||||
アクティブな Codex プロバイダーの切り替えが既存のセッション履歴を変更しなくなりました (#2349, 感謝 @SaladDay)。
|
||||
|
||||
### Codex usage ログの文言修正
|
||||
|
||||
Codex セッション usage の誤解を招くログを 1 件修正しました (#2473, 感謝 @tisonkun)。
|
||||
|
||||
### Claude: `max` effort を env 経由で永続化
|
||||
|
||||
`max` effort が再起動をまたいで env 変数経由で正しく永続化されるようになりました (#2493, 感謝 @makoMakoGo)。
|
||||
|
||||
### Claude Desktop: モデルルーティングで `[1M]` サフィックスを要求しないように
|
||||
|
||||
ルーティングマッチングがレガシーな `[1M]` サフィックスを要求しなくなりました。
|
||||
|
||||
### Claude Desktop: プロバイダーフォームの入力フォーカス消失
|
||||
|
||||
Claude Desktop プロバイダーフォームで入力ボックス編集中にフォーカスを失う問題を修正しました。
|
||||
|
||||
### Claude Desktop: 偽の「プロキシ停止」ステータス通知
|
||||
|
||||
プロキシが能動的に停止された際に誤って発火するヒントを削除しました。
|
||||
|
||||
### Claude Desktop: 空のツールバーカプセル非表示
|
||||
|
||||
Claude Desktop がアクティブアプリの場合、空のツールバーカプセルを非表示にします。
|
||||
|
||||
### UI: Monitor バッジアイコンのセンタリング
|
||||
|
||||
App スイッチャー内の Monitor バッジアイコンをセンタリングしました。
|
||||
|
||||
### Linux: テーマ選択で segfault
|
||||
|
||||
Linux でテーマを選択した際の segfault を防止しました (#2502, 感謝 @definfo)。
|
||||
|
||||
### ターミナル: コールドスタート時の iTerm fallback
|
||||
|
||||
コールドスタート時に存在しない iTerm をフォールバックに選んでしまうのを防止しました (#2448, 感謝 @hulkbig)。
|
||||
|
||||
### 設定: JSON キーを辞書順でソート
|
||||
|
||||
設定の書き込みが JSON キーを辞書順にソートするようになり、出力が決定的になりました (#2469, 感謝 @fuleinist)。
|
||||
|
||||
### 「既存をインポート」を副作用なしに
|
||||
|
||||
「既存をインポート」操作を副作用なしに変更しました (#2429, 感謝 @xwil1)。
|
||||
|
||||
### Coding Plan: Zhipu の週次ウィンドウをリセット時刻で命名
|
||||
|
||||
Zhipu の週次ウィンドウのティア名を実際のリセット時刻に合うように修正しました (#2420, 感謝 @TuYv)。
|
||||
|
||||
### DashScope: usage 解析の堅牢化
|
||||
|
||||
DashScope の usage 解析を強化し、不正なペイロードが VSCode Claude Code プラグインをクラッシュさせないようにしました (#2425, 感謝 @magucas)。
|
||||
|
||||
### Usage: プロキシとセッションログの重複排除
|
||||
|
||||
プロキシとセッションログという 2 つのソースをまたいで usage レコードの重複排除を行います。
|
||||
|
||||
### Usage: キャッシュコストのセマンティクス + pricing 警告の嵐
|
||||
|
||||
キャッシュコストのセマンティクスを修正し、リクエストごとに発生していたノイズの多い pricing 警告を解消しました。
|
||||
|
||||
### CI: フロントエンドフォーマット + Linux clippy の復活
|
||||
|
||||
CI のフロントエンドフォーマットと Linux clippy の実行を復活させました。
|
||||
|
||||
### プロキシテストヘルパー clippy 警告
|
||||
|
||||
プロキシテストヘルパーの clippy 警告を 1 件修正しました。
|
||||
|
||||
---
|
||||
|
||||
## 削除
|
||||
|
||||
### Hermes Agent usage トラッキング統合
|
||||
|
||||
本サイクルでオンラインにする予定だった Hermes Agent usage トラッキング統合を削除しました — 上流の動作変更によって、この統合のメンテナンスが現実的でなくなりました。この統合は**いかなるリリース版でも有効化されたことはなく**; 開発過程で発見された「ゼロコストレンダリング」バグは統合をロールバックする前に修正済みです。
|
||||
|
||||
### テーマ切り替えの円形拡散アニメーション
|
||||
|
||||
テーマ切り替え時の円形拡散アニメーションを削除しました — 性能の弱いコンポジターでカクつき、視覚的なメリットが限定的でした。
|
||||
|
||||
### DDSHub パートナー統合
|
||||
|
||||
DDSHub をパートナープリセットから削除し、各 README 内の相互リンクセクションも削除しました。
|
||||
|
||||
---
|
||||
|
||||
## ドキュメント
|
||||
|
||||
### README スポンサー更新(中 / 英 / 日)
|
||||
|
||||
BytePlus、ClaudeCN、RunAPI、PatewayAI のスポンサーエントリを追加; BytePlus と Volcengine のエントリを相互リンク; CrazyRouter の $2 クレジット受領フロー、Compshare の説明、Right Code の説明、その他スポンサーのロゴおよびリストアイテムをリフレッシュ; LionCC のロゴを白背景にフラット化; 中国語 README のスポンサーロゴを Volcengine 画像に切り替え; README のサブタイトルに Hermes Agent を追加。
|
||||
|
||||
### Release notes テンプレート
|
||||
|
||||
Release notes テンプレート内に `ccswitch.io` を反映しました。
|
||||
|
||||
### ブランド公式サイト
|
||||
|
||||
各 README およびアプリ内参照で `ccswitch.io` を唯一の公式サイトとしてドキュメント化しました。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ アップグレード時の注意
|
||||
|
||||
### 20 個の Claude Desktop プリセットがデフォルトで直接接続モードに
|
||||
|
||||
これら 20 個のプリセットは以前はデフォルトでプロキシ経由でルーティングされていましたが、現在はデフォルトで直接接続です。アップグレード前にこのうちのいずれかを使用しており、かつプロキシルーティングの接続性に依存していた場合(例: プロキシに特殊な補正器や変換層がある場合)、接続性を検証してください; 必要に応じて、CC Switch パネル内で手動でプロキシモードに戻すことができます。
|
||||
|
||||
### Claude Desktop の操作制約
|
||||
|
||||
Claude Desktop プロバイダーの切り替えには、**Claude Desktop の再起動**が必要です; プロキシモードのプロバイダーは、使用中 CC Switch の Local Routing が動作し続けている必要があります — CC Switch を終了させたり Local Routing を停止させたりすると、プロキシモードの Claude Desktop プロバイダーへの接続が切断されます。
|
||||
|
||||
### Failover にはテイクオーバーの有効化が必要
|
||||
|
||||
Failover を有効化する前に、ターゲットアプリの Local Routing テイクオーバーが有効になっていることを確認してください。さもないと Failover コントロールは起動を拒否します; プロキシサービスを止めたいがテイクオーバーに依存するアプリがある場合はブロックされるため、アプリ層で先にテイクオーバーを止めてからプロキシを停止する必要があります。
|
||||
|
||||
### Usage 統計の数値が過去と一致しない可能性
|
||||
|
||||
Usage サマリーはキャッシュ正規化後の真の総トークン数 + キャッシュヒット率を使用するようになりました。データの重複排除と価格再計算により、過去のトークン数とコスト数値は**ずれる可能性があります** — 新しい数値の方が正確ですが、旧バージョンの数値とは一致しません。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ リスク通知
|
||||
|
||||
本リリースは、リバースプロキシ系機能について v3.12.3 / v3.13.0 で提起されたリスク通知を継承します。
|
||||
|
||||
**GitHub Copilot リバースプロキシ**: Copilot のリバースプロキシパスを使用すると、GitHub / Microsoft の利用規約に違反する可能性があります。詳細は [v3.12.3 リリースノート](v3.12.3-ja.md#️-リスクに関する注意事項) を参照してください。
|
||||
|
||||
**Codex OAuth リバースプロキシ**: ChatGPT サブスクリプションを使用した Codex OAuth リバースプロキシは、OpenAI の利用規約に違反する可能性があります。詳細は [v3.13.0 リリースノート](v3.13.0-ja.md#️-リスクに関する注意事項) を参照してください。
|
||||
|
||||
**Claude Desktop サードパーティプロバイダーのプロキシ切り替え**: CC Switch 内蔵プロキシゲートウェイ経由で Claude Desktop のリクエストをサードパーティプロバイダーに転送する際、サードパーティプロバイダーの課金、コンプライアンス、データ保持に関する制約はそれぞれ異なります。利用前にターゲットプロバイダーの利用規約をお読みください。
|
||||
|
||||
ユーザーが上記機能を有効化することで、**すべてのリスクを自己責任で**受諾したものとみなされます。CC Switch は、これらの機能の使用に起因するアカウントの制限、警告、サービス停止について一切の責任を負いません。
|
||||
|
||||
---
|
||||
|
||||
## ダウンロード・インストール
|
||||
|
||||
[Releases](https://github.com/farion1231/cc-switch/releases/latest) から対応バージョンをダウンロードしてください。
|
||||
|
||||
### システム要件
|
||||
|
||||
| OS | 最小バージョン | アーキテクチャ |
|
||||
| ------- | ------------------------ | ----------------------------------- |
|
||||
| Windows | Windows 10 以降 | x64 |
|
||||
| macOS | macOS 12 (Monterey) 以降 | Intel (x64) / Apple Silicon (arm64) |
|
||||
| Linux | 下表参照 | x64 / ARM64 |
|
||||
|
||||
### Windows
|
||||
|
||||
| ファイル | 説明 |
|
||||
| ---------------------------------------- | ------------------------------------------- |
|
||||
| `CC-Switch-v3.15.0-Windows.msi` | **推奨** - MSI インストーラー、自動更新対応 |
|
||||
| `CC-Switch-v3.15.0-Windows-Portable.zip` | ポータブル版、解凍して実行、レジストリ不要 |
|
||||
|
||||
### macOS
|
||||
|
||||
| ファイル | 説明 |
|
||||
| -------------------------------- | ------------------------------------------------------ |
|
||||
| `CC-Switch-v3.15.0-macOS.dmg` | **推奨** - DMG インストーラー、Applications にドラッグ |
|
||||
| `CC-Switch-v3.15.0-macOS.zip` | 解凍して Applications にドラッグ、Universal Binary |
|
||||
| `CC-Switch-v3.15.0-macOS.tar.gz` | Homebrew インストールと自動更新用 |
|
||||
|
||||
> macOS 版は Apple のコード署名および公証済みで、直接インストールして使用できます。
|
||||
|
||||
### Homebrew(macOS)
|
||||
|
||||
```bash
|
||||
brew tap farion1231/ccswitch
|
||||
brew install --cask cc-switch
|
||||
```
|
||||
|
||||
更新:
|
||||
|
||||
```bash
|
||||
brew upgrade --cask cc-switch
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
> Linux 向けの成果物は **x86_64** と **ARM64**(`aarch64`)の両方が提供されます。ファイル名にアーキテクチャ識別子が含まれているため、`uname -m` の出力に応じて選択してください:
|
||||
>
|
||||
> - `CC-Switch-v3.15.0-Linux-x86_64.AppImage` / `.deb` / `.rpm`
|
||||
> - `CC-Switch-v3.15.0-Linux-arm64.AppImage` / `.deb` / `.rpm`
|
||||
|
||||
| ディストリビューション | 推奨形式 | インストール方法 |
|
||||
| --------------------------------------- | ----------- | -------------------------------------------------------------------------- |
|
||||
| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` または `sudo apt install ./CC-Switch-*.deb` |
|
||||
| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` または `sudo dnf install ./CC-Switch-*.rpm` |
|
||||
| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` |
|
||||
| Arch Linux / Manjaro | `.AppImage` | 実行権限を付与して実行、または AUR を使用 |
|
||||
| その他のディストリビューション / 不明 | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` |
|
||||
@@ -0,0 +1,498 @@
|
||||
# CC Switch v3.15.0
|
||||
|
||||
> Claude Desktop 升级为一等管理面板(含第三方供应商代理切换)、按角色的模型映射、反向代理大幅强化、Codex OAuth 实时模型发现、用量看板筛选驱动 Hero 卡
|
||||
|
||||
**[English →](v3.15.0-en.md) | [日本語版 →](v3.15.0-ja.md)**
|
||||
|
||||
---
|
||||
|
||||
## 概览
|
||||
|
||||
CC Switch v3.15.0 是 v3.14.x 之后的一次大版本更新,核心聚焦在**把 Claude Desktop 升级为一等管理面板**,并配套提供第三方供应商通过内置代理网关进行切换、按角色的模型映射(sonnet / opus / haiku)+ `supports1m` 长上下文标志、Copilot/Codex OAuth 供应商复用、重新设计的 Claude Code 导入流程、App 切换器对"Claude Code"和"Claude Desktop"的可视化区分,以及 44 个从 Claude Code 预设目录翻译而来的 Claude Desktop 预设。
|
||||
|
||||
围绕反向代理的可靠性,本版本进行了一次系统性硬化:P0–P3 多轮针对路由 / 生命周期 / 重试 / 故障转移 / 补正器的修补;非 Anthropic 后端启用 HTTPS 连接池复用以降低单请求延迟;Codex 与 OpenAI Responses 缓存命中率提升(`prompt_cache_key` 仅在有真实客户端会话标识时发送、对外请求体与 `tool_call` 参数 / `tool_result` 内容的 JSON key 规范化排序、`session_id` 串入用量记录器);Anthropic ↔ OpenAI `tool_choice` 正确互转;Vertex AI 完整 URL 不再被截断;Gemini 改为从 URI 路径提取模型名;Local Routing 接管检测更精细;可监听 IPv6 地址。Codex OAuth 类 Claude 供应商不再依赖硬编码的模型列表,CC Switch 会按需从 ChatGPT 后端拉取实时模型列表。
|
||||
|
||||
Claude Code 的模型映射改为基于角色(`sonnet` / `opus` / `haiku`)+ 显示名,并引入 `supports1m` 布尔标志,替代旧版的 `[1M]` 后缀写法,把路由决策与原始模型 ID 解耦。用量看板新增**筛选驱动的 Hero 卡**,展示缓存归一化后的真实总 token 与缓存命中率,并跟随当前日期范围 / 供应商 / 模型筛选实时更新;配套修复了缓存成本语义错误以及每个请求都触发的定价警告噪声。在 OpenAI Responses API usage 解析路径上做了鲁棒化处理,让上游缺失或畸形的 `usage` 不再让 VSCode Claude Code 插件因 `null` 输出崩溃。
|
||||
|
||||
供应商生态进一步扩张:新增 BytePlus、火山 Agentplan、ClaudeAPI、ClaudeCN、RunAPI、RelaxyCode、PatewayAI、百度千帆 Coding Plan 合作伙伴预设;豆包 Seed 升级为合作伙伴预设;供应商卡片现在会显示"是否支持 Local Routing"的徽章。本版本还修复了大量 Codex 会话、OAuth、Claude Desktop 表单、Linux 段错误、终端 fallback 等场景下的细节问题,并完成了多项 GitHub Actions 依赖升级。
|
||||
|
||||
**发布日期**:2026-05-16
|
||||
|
||||
**更新规模**:127 commits | 211 files changed | +17,980 / -2,748 lines
|
||||
|
||||
---
|
||||
|
||||
## 重点内容
|
||||
|
||||
- **Claude Desktop 成为一等管理面板**:通过内置代理网关提供第三方供应商切换、按角色的模型映射(sonnet / opus / haiku)+ `supports1m` 长上下文标志、Copilot/Codex OAuth 供应商复用、44 个从 Claude Code 预设目录翻译过来的预设。注意:20 个 Claude Desktop 预设默认从代理模式切到直连模式,升级后如依赖代理路由请验证连通性
|
||||
- **反向代理大幅强化**:P0–P3 生命周期 / 重试 / 故障转移 / 补正器修补;非 Anthropic 后端 HTTPS 连接池复用;Codex/Responses 缓存命中率提升;Anthropic ↔ OpenAI `tool_choice` 正确映射;Vertex AI URL 完整保留;Gemini 路径式模型提取;接管检测细化;支持 IPv6 监听地址
|
||||
- **供应商生态扩张**:新增 BytePlus、火山 Agentplan、ClaudeAPI、ClaudeCN、RunAPI、RelaxyCode、PatewayAI、百度千帆 Coding Plan 合作伙伴预设;豆包 Seed 升级合作伙伴;供应商卡片显示"路由代理支持"徽章
|
||||
- **按角色的模型映射 + 1M 标志**:基于角色的 sonnet / opus / haiku 路由 + 显示名 + `supports1m` 标志,替代旧的 `[1M]` 后缀
|
||||
- **Codex OAuth 实时模型发现**:ChatGPT Codex 类供应商按需从 ChatGPT 后端拉取实时模型列表
|
||||
- **用量看板筛选驱动 Hero**:展示缓存归一化的真实总 token 和缓存命中率,跟随当前日期 / 供应商 / 模型筛选实时更新
|
||||
- **DeepSeek 工具调用 + 零 usage 最终 delta**:DeepSeek 工具调用一并返回 `reasoning_content` (#2543, 感谢 @bling-yshs);最终 `message_delta` 总是带 usage 块(即便全为 0),严格 Anthropic 客户端不再因 `null` 崩溃 (#2485, 感谢 @Myoontyee)
|
||||
- **OpenAI Responses API usage 解析鲁棒化**:让上游缺失或畸形 usage 不再让 VSCode Claude Code 插件崩溃 (#2422, 感谢 @magucas)
|
||||
|
||||
---
|
||||
|
||||
## 新功能
|
||||
|
||||
### Claude Desktop 第三方供应商代理切换
|
||||
|
||||
CC Switch 第一次把 **Claude Desktop** 作为一等受管面板对待,与 Claude Code / Codex / Gemini / OpenCode / OpenClaw / Hermes 并列。
|
||||
|
||||
- 新增 Claude Desktop 专属面板,通过 CC Switch 内置代理网关把第三方供应商代理给 Claude Desktop
|
||||
- 为需要路由代理的供应商在卡片上呈现"是否支持 Local Routing"的徽章
|
||||
- 按角色的模型路由映射,锁定到 `sonnet` / `opus` / `haiku`
|
||||
- Copilot / Codex OAuth 供应商在 Claude Desktop 面板中可复用
|
||||
- 重新设计的 Claude Code 设置导入流程
|
||||
- App 切换器视觉区分"Claude Code"与"Claude Desktop",应用可见性设置中使用"Claude Code"标签
|
||||
- 44 个从 Claude Code 预设目录翻译过来的 Claude Desktop 供应商预设
|
||||
|
||||
### 供应商卡片:路由代理支持徽章
|
||||
|
||||
Claude Code 与 Codex 面板中的供应商卡片新增"路由代理支持"徽章,方便一眼识别哪些供应商可以通过 Local Routing 提供服务。
|
||||
|
||||
### Codex OAuth 实时模型列表
|
||||
|
||||
ChatGPT Codex 类供应商不再依赖硬编码的模型选择,CC Switch 会按需从 ChatGPT 后端拉取**实时模型列表**。
|
||||
|
||||
### 按角色的模型映射 + 1M 标志
|
||||
|
||||
Claude Code 模型映射改为基于角色(`sonnet` / `opus` / `haiku`)+ 显示名,并引入 `supports1m` 布尔标志,替代旧版 `[1M]` 后缀,把路由决策与原始模型 ID 解耦。
|
||||
|
||||
### 用量看板筛选驱动 Hero
|
||||
|
||||
用量看板的 Hero 摘要现在是筛选驱动的,跟随当前日期范围 / 供应商 / 模型筛选实时变化;展示**缓存归一化后的真实总 token**与缓存命中率,让 Hero 数字与下方明细列表对齐。
|
||||
|
||||
### 供应商表单"先存上再说"
|
||||
|
||||
软化供应商表单的输入校验,把非阻塞性的输入问题改为"先存上再说"的提示,不会因为一个无伤大雅的字段问题阻止保存 (#2307, 感谢 @allenxln)。
|
||||
|
||||
### Universal 供应商复制动作
|
||||
|
||||
为 universal 供应商在供应商列表中新增"复制"按钮 (#2416, 感谢 @hubutui)。
|
||||
|
||||
### 持久化 Tauri 窗口状态
|
||||
|
||||
窗口位置和尺寸现在跨重启保留 (#2377, 感谢 @BillSaul)。
|
||||
|
||||
### 托盘图标 hover 提示
|
||||
|
||||
系统托盘图标现在悬浮显示状态提示 (#2417, 感谢 @Coconut-Fish)。
|
||||
|
||||
### Warp 终端会话启动
|
||||
|
||||
新增对 Warp 终端的支持,可在 Warp 中执行保存的会话 (#2466, 感谢 @tisonkun)。
|
||||
|
||||
### DeepSeek 工具调用 `reasoning_content`
|
||||
|
||||
DeepSeek 工具调用响应现在同时返回 `reasoning_content` 和 `tool_calls`,调用方可以两者一并渲染 (#2543, 感谢 @bling-yshs)。
|
||||
|
||||
### 百度千帆 Coding Plan(Claude Code)
|
||||
|
||||
新增百度千帆 Coding Plan 预设 (#2322, 感谢 @jimmyzhuu)。
|
||||
|
||||
### Compshare Coding Plan 预设(跨应用)
|
||||
|
||||
Compshare Coding Plan 预设跨 claude / codex / hermes / openclaw 全应用就位。
|
||||
|
||||
### 合作伙伴供应商预设
|
||||
|
||||
新增 **BytePlus**、**火山 Agentplan**、**ClaudeAPI**、**ClaudeCN**、**RunAPI**、**RelaxyCode**、**PatewayAI** 合作伙伴预设;**豆包 Seed** 升级合作伙伴预设(端点和链接刷新)。
|
||||
|
||||
### 44 个 Claude Desktop 供应商预设
|
||||
|
||||
从 Claude Code 预设目录翻译 44 个供应商预设进入新的 Claude Desktop 面板。
|
||||
|
||||
---
|
||||
|
||||
## 变更
|
||||
|
||||
### 20 个 Claude Desktop 预设默认切到直连模式
|
||||
|
||||
20 个 Claude Desktop 预设默认从代理模式切到直连模式,降低对不需要代理兼容垫片的用户的上手摩擦。如果你升级前依赖代理路由这些预设的连通性,请升级后验证。
|
||||
|
||||
### Claude Desktop 操作约束
|
||||
|
||||
切换 Claude Desktop 供应商会写入 CC Switch 管理的 3P profile,**需要重启 Claude Desktop** 才能生效;代理模式的供应商在使用期间需要 CC Switch 的 Local Routing 保持运行。
|
||||
|
||||
### Failover / Local Routing 联动校验
|
||||
|
||||
Failover 控件现在要求目标应用的 Local Routing 接管已启用才能开启;只关代理服务但仍有应用依赖接管状态的情况会被拦下,避免出现"代理关了但应用仍以为接管在跑"的不一致。
|
||||
|
||||
### 用量统计语义变化
|
||||
|
||||
用量摘要现在报告**缓存归一化后的真实总 token**和**缓存命中率**。历史 token 与成本数字在数据去重 + 价格重算后**可能会有偏移**——新数字更准,但不会等于旧版给出的数字。
|
||||
|
||||
### 供应商预设渲染顺序
|
||||
|
||||
预设列表现在按作者定义的数组顺序渲染,合作伙伴排前面,替代之前的隐式排序。
|
||||
|
||||
### 模型映射提示文案简化
|
||||
|
||||
`modelMappingOffHint` 跨中 / 英 / 日重写为动作导向的简洁文案。
|
||||
|
||||
### CC Switch 品牌官网统一到 ccswitch.io
|
||||
|
||||
应用内和 README 中所有"官网"引用都统一到 ccswitch.io 作为唯一官方网站;Release notes 模板也呈现 ccswitch.io。
|
||||
|
||||
### 主题切换简化
|
||||
|
||||
移除主题切换时的圆形扩散动画,改为即时交叉淡入。
|
||||
|
||||
### Claude Code App 切换器视觉区分
|
||||
|
||||
App 切换器视觉上区分"Claude Code"和"Claude Desktop",应用可见性设置中使用"Claude Code"标签。
|
||||
|
||||
### CI:Claude Review 升级到 Opus 4.7
|
||||
|
||||
Claude review GitHub Action 升级到 Opus 4.7;调整 prompt 降低 nitpick 噪声;新增 `@claude` 仅 review 的 Code Action;锁定 PR head SHA 用于 checkout;移除 `--max-turns 5` 限制。
|
||||
|
||||
### GitHub Actions 依赖升级
|
||||
|
||||
- `actions/checkout` 4 → 6 (#2517)
|
||||
- `pnpm/action-setup` 5 → 6 (#2518)
|
||||
- `softprops/action-gh-release` 2 → 3 (#2519)
|
||||
- `actions/stale` 9 → 10 (#2520)
|
||||
|
||||
### DeepSeek 预设切到 V4
|
||||
|
||||
DeepSeek 预设现在出货 V4(flash / pro)+ 刷新定价种子。
|
||||
|
||||
### Codex 1M 上下文开关在编辑表单隐藏
|
||||
|
||||
Codex 供应商编辑表单中不再呈现 1M 上下文开关,降低对当前 Codex 部署无实际效果的旋钮密度。
|
||||
|
||||
### OpenClaudeCode 迁移到 MicuAPI 域名
|
||||
|
||||
OpenClaudeCode 预设迁移到 MicuAPI 域名;Micu API 链接刷新到 `micuapi.ai`。
|
||||
|
||||
### CrazyRouter 端点切到 `cn` 子域
|
||||
|
||||
CrazyRouter 预设端点改用 `cn` 子域。
|
||||
|
||||
### RelaxyCode 自定义图标
|
||||
|
||||
RelaxyCode 预设图标改用自定义 `relaxcode.png` 资源。
|
||||
|
||||
### Kimi For Coding 文档 URL
|
||||
|
||||
Kimi For Coding 网站 URL 更新到 `/code/docs/` 路径。
|
||||
|
||||
### SiliconFlow 国际站显示 USD
|
||||
|
||||
SiliconFlow 国际站的余额显示正确为 USD(之前错显 CNY)。
|
||||
|
||||
---
|
||||
|
||||
## 修复
|
||||
|
||||
### OpenAI Responses API usage 解析鲁棒化
|
||||
|
||||
强化 `build_anthropic_usage_from_responses()` 与 Responses → Anthropic SSE 翻译器,让上游缺失或畸形的 `usage` 不再在 `message_delta` 中产出 `"usage": null`。这解决了严格 Anthropic 客户端(典型如 VSCode Claude Code 插件)在某些供应商(Codex OAuth、DashScope 的 `compatible-mode/v1/responses` 端点)下崩在 `Cannot read properties of null (reading 'output_tokens')` 的问题。增加 OpenAI 字段名回退(`prompt_tokens` / `completion_tokens`)、null / 空 / 部分对象处理、即使 input/output tokens 缺失也保留缓存 token 字段 (#2422, 感谢 @magucas)。
|
||||
|
||||
### 代理可靠性补丁(P0–P3)
|
||||
|
||||
跨 request-forwarder 路径多轮路由 / 生命周期 / 重试 / 补正器修补;抽取共享的 `handle_rectifier_retry_failure` helper 与 `auth_header_value` helper。
|
||||
|
||||
### 代理:非 Anthropic 后端 HTTPS 连接池复用
|
||||
|
||||
非 Anthropic 后端复用池化的 HTTPS 连接,不再每个请求开新 TLS session,显著降低单请求延迟。
|
||||
|
||||
### 代理:转发客户端真实 HTTP 方法
|
||||
|
||||
不再硬编码 `POST`,按客户端实际的 HTTP 方法转发;上游的非 POST 端点(如 GET `/v1/models`)现在能正常工作。
|
||||
|
||||
### 代理:每次尝试计数器 + `max_retries` 接线
|
||||
|
||||
客户端请求计数器移出每次尝试的循环;`AppProxyConfig.max_retries` 现在正确接到请求转发器。
|
||||
|
||||
### 代理:故障转移判定细化
|
||||
|
||||
请求转发器中重试 / 不可重试错误的分类更准确。
|
||||
|
||||
### 代理:接管检测细化
|
||||
|
||||
接管检测更紧;关接管时走 fallback 恢复,避免遗留状态把供应商卡住。
|
||||
|
||||
### 代理:Anthropic ↔ OpenAI `tool_choice` 互转
|
||||
|
||||
格式转换时把 Anthropic 的 `tool_choice` 正确映射到 OpenAI Chat 的嵌套形式。
|
||||
|
||||
### 代理:Gemini 请求模型从 URI 路径提取
|
||||
|
||||
Gemini 请求模型从 URI 路径提取(不再从 body 取),转换后的流量上报正确的模型名。
|
||||
|
||||
### 代理:认证 header 错误处理
|
||||
|
||||
`get_auth_headers` 现在返回 `Result`,凭据有问题时不再 panic。
|
||||
|
||||
### 代理:IPv6 监听地址校验
|
||||
|
||||
代理面板现在接受 IPv6 监听地址。
|
||||
|
||||
### 代理:Codex / Responses 缓存命中率提升
|
||||
|
||||
通过稳定缓存键派生提高 Codex 与 OpenAI Responses 请求的缓存命中率;只在客户端确实带了会话标识时才发 `prompt_cache_key`,避免不相关对话被坍缩到同一个 key 上;对外请求体与 `tool_call` 参数 / `tool_result` 内容里的 JSON key 做规范化排序以便前缀缓存能字节级匹配;把 `session_id` 串到 usage 日志记录器做请求关联。
|
||||
|
||||
### 代理:JSON Schema 下划线字段保留
|
||||
|
||||
私参过滤现在保留 JSON Schema name map(`properties`、`patternProperties`、`definitions`、`$defs`)内的下划线前缀字段名,用户自定义 schema key(如 `_id`、`_meta`)能正常穿过过滤。
|
||||
|
||||
### 代理:Read 工具空白页剔除
|
||||
|
||||
从 `Read` 工具输入中剔除空白页,避免供应商拒绝请求 (#2472, 感谢 @Kwensiu)。
|
||||
|
||||
### 代理:单请求热路径瘦身
|
||||
|
||||
缩减每个请求的热路径开销和数据库等待时间。
|
||||
|
||||
### 代理:接管下展示真实供应商模型名
|
||||
|
||||
接管运行时,Claude Code 菜单现在暴露真实供应商模型名,不是陈旧的 alias。
|
||||
|
||||
### 代理:最终 `message_delta` 总是带 usage
|
||||
|
||||
最终 `message_delta` 事件现在总是包含 usage 块(即使全为 0),严格 Anthropic 客户端不再因为 `null` 崩溃 (#2485, 感谢 @Myoontyee)。
|
||||
|
||||
### 代理:流式 `message_delta` 去重
|
||||
|
||||
对某些上游会发两次的 `message_delta` 事件做去重 (#2366, 感谢 @codeasier)。
|
||||
|
||||
### 代理:工具调用路径的 `reasoning_content` 保留
|
||||
|
||||
工具调用路径转换时正确保留 scoped `reasoning_content` 字段;Kimi / Moonshot 的 OpenAI Chat 兼容路径保留该字段,通用 OpenAI 兼容请求保持不带 (#2367, 感谢 @codeasier)。
|
||||
|
||||
### 代理:Vertex AI 完整 URL 保留
|
||||
|
||||
Vertex AI 的完整 URL 在代理转发时不再被截断 (#2415, 感谢 @xpfo-go)。
|
||||
|
||||
### 代理:剥离 system content 开头的计费 header
|
||||
|
||||
某些上游会在 system message 开头插一段计费 header 内容,现在被剥离 (#2350)。
|
||||
|
||||
### 代理:Claude 鉴权策略从 `ANTHROPIC_*` 环境变量名派生
|
||||
|
||||
不再依赖不透明的启发式,鉴权策略从实际的 `ANTHROPIC_*` 环境变量名派生。
|
||||
|
||||
### 第三方 Claude 供应商:禁用模型测试
|
||||
|
||||
对那些不一致实现 `/v1/models` 的第三方 Claude 网关,关闭模型探测。
|
||||
|
||||
### Model-Fetch:Anthropic 兼容子路径供应商的 `/models`
|
||||
|
||||
`/models` 发现现在对 Anthropic 兼容的子路径供应商生效。
|
||||
|
||||
### Copilot:Claude 模型 ID 对比实时 `/models`
|
||||
|
||||
Copilot 后端的供应商现在用实时 `/models` 列表来比对 Claude 模型 ID,避免陈旧 ID 不一致。
|
||||
|
||||
### Codex:会话标题不再吸入 `environment_context`
|
||||
|
||||
Codex 会话标题提取不再把 `environment_context` 的噪声拉进来 (#2439, 感谢 @eclipsehx)。
|
||||
|
||||
### Codex:隐藏 subagent 会话
|
||||
|
||||
Codex subagent 会话从主会话列表隐藏 (#2445, 感谢 @LanternCX)。
|
||||
|
||||
### Codex 启动期 live import 去重
|
||||
|
||||
修复 Codex 启动期 live import 路径里的重复导入 bug (#2590, 感谢 @DhruvShankpal)。
|
||||
|
||||
### Codex 供应商切换不再扰动历史
|
||||
|
||||
切换激活 Codex 供应商不再改动现有会话历史 (#2349, 感谢 @SaladDay)。
|
||||
|
||||
### Codex 用量日志措辞修正
|
||||
|
||||
修正一条 Codex 会话用量的误导性日志 (#2473, 感谢 @tisonkun)。
|
||||
|
||||
### Claude:`max` effort 通过 env 持久化
|
||||
|
||||
`max` effort 现在能跨重启正确通过 env 变量持久化 (#2493, 感谢 @makoMakoGo)。
|
||||
|
||||
### Claude Desktop:模型路由不再要求 `[1M]` 后缀
|
||||
|
||||
路由匹配不再要求遗留的 `[1M]` 后缀。
|
||||
|
||||
### Claude Desktop:供应商表单输入失焦
|
||||
|
||||
修复 Claude Desktop 供应商表单中输入框编辑时丢失焦点的问题。
|
||||
|
||||
### Claude Desktop:假的"代理停止"状态提示
|
||||
|
||||
移除代理主动停止时假触发的提示。
|
||||
|
||||
### Claude Desktop:空工具栏胶囊隐藏
|
||||
|
||||
当 Claude Desktop 是激活应用时,空的工具栏胶囊会被隐藏。
|
||||
|
||||
### UI:Monitor 徽章图标居中
|
||||
|
||||
在 App 切换器里居中 Monitor 徽章图标。
|
||||
|
||||
### Linux:选择主题触发 segfault
|
||||
|
||||
防止在 Linux 上选择主题触发 segfault (#2502, 感谢 @definfo)。
|
||||
|
||||
### 终端:冷启动时 iTerm fallback
|
||||
|
||||
防止冷启动时把不存在的 iTerm 选为 fallback (#2448, 感谢 @hulkbig)。
|
||||
|
||||
### 配置:JSON key 字母序排序
|
||||
|
||||
配置写入现在按字母序排 JSON key,输出确定 (#2469, 感谢 @fuleinist)。
|
||||
|
||||
### "导入已有"无副作用化
|
||||
|
||||
"导入已有"操作改为无副作用 (#2429, 感谢 @xwil1)。
|
||||
|
||||
### Coding Plan:智谱周窗口按重置时间命名
|
||||
|
||||
修正智谱周窗口的等级名以匹配实际重置时间 (#2420, 感谢 @TuYv)。
|
||||
|
||||
### DashScope:usage 解析鲁棒化
|
||||
|
||||
强化 DashScope usage 解析,畸形 payload 不会再让 VSCode Claude Code 插件崩 (#2425, 感谢 @magucas)。
|
||||
|
||||
### 用量:代理和会话日志去重
|
||||
|
||||
跨代理和会话日志两个来源的用量记录去重。
|
||||
|
||||
### 用量:缓存成本语义 + 定价警告风暴
|
||||
|
||||
修正缓存成本语义,并消除每个请求都触发的噪声定价警告。
|
||||
|
||||
### CI:前端格式化 + Linux clippy 恢复
|
||||
|
||||
恢复前端格式化与 Linux clippy 在 CI 中的运行。
|
||||
|
||||
### 代理测试 helper clippy 警告
|
||||
|
||||
修复代理测试 helper 中的一个 clippy 警告。
|
||||
|
||||
---
|
||||
|
||||
## 移除
|
||||
|
||||
### Hermes Agent 用量追踪集成
|
||||
|
||||
移除原本计划在本周期上线的 Hermes Agent 用量追踪集成——上游行为变化让维护这个集成变得不切实际。该集成**从未在任何已发布版本中启用**;开发过程中发现的"零成本渲染" bug 在回滚集成前已经修复。
|
||||
|
||||
### 主题切换圆形扩散动画
|
||||
|
||||
移除主题切换时的圆形扩散动画——在性能较弱的合成器上会卡顿,视觉收益有限。
|
||||
|
||||
### DDSHub 合作伙伴整合
|
||||
|
||||
移除 DDSHub 作为合作伙伴预设,并删除各 README 中的交叉链接段落。
|
||||
|
||||
---
|
||||
|
||||
## 文档
|
||||
|
||||
### README 赞助商刷新(中 / 英 / 日)
|
||||
|
||||
新增 BytePlus、ClaudeCN、RunAPI、PatewayAI 赞助商条目;交叉链接 BytePlus 与火山条目;刷新 CrazyRouter 的 $2 额度领取流程、Compshare 描述、Right Code 描述、其他赞助商的 logo 与列表项;把 LionCC logo 抹平到白底;中文 README 的赞助商 logo 切到火山图;在 README 副标题中加入 Hermes Agent。
|
||||
|
||||
### Release notes 模板
|
||||
|
||||
Release notes 模板中呈现 `ccswitch.io`。
|
||||
|
||||
### 品牌官网
|
||||
|
||||
在各 README 与应用内引用中把 `ccswitch.io` 文档化为唯一官方网站。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 升级提醒
|
||||
|
||||
### 20 个 Claude Desktop 预设默认切到直连模式
|
||||
|
||||
这 20 个预设之前默认通过代理路由,现在默认直连。如果你升级前正好用着其中某个、又依赖代理路由的连通性(比如代理里有特殊补正器或转换层),请验证一下连通性;如有需要,可在 CC Switch 面板里手动切回代理模式。
|
||||
|
||||
### Claude Desktop 操作约束
|
||||
|
||||
切换 Claude Desktop 供应商需要**重启 Claude Desktop** 才能生效;代理模式的供应商在使用期间需要 CC Switch 的 Local Routing 保持运行——退出 CC Switch 或停止 Local Routing 会让代理模式的 Claude Desktop 供应商断流。
|
||||
|
||||
### Failover 需要接管启用
|
||||
|
||||
启用 Failover 前请先确认目标应用的 Local Routing 接管已开启,否则 Failover 控件会拒绝启动;想关代理服务但仍有应用依赖接管的情况会被拦下,需要先在应用层关掉接管再停代理。
|
||||
|
||||
### 用量统计数字可能与历史不一致
|
||||
|
||||
用量摘要现在用缓存归一化的真实总 token + 缓存命中率。历史 token 与成本数字在数据去重 + 价格重算后**可能会有偏移**——新数字更准,但不会等于旧版给出的数字。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 风险提示
|
||||
|
||||
本版本在涉及反向代理类功能上沿用 v3.12.3 / v3.13.0 提出的风险提示。
|
||||
|
||||
**GitHub Copilot 反向代理**:使用 Copilot 的反代路径可能违反 GitHub / Microsoft 服务条款。详情见 [v3.12.3 release notes](v3.12.3-zh.md#️-风险提示)。
|
||||
|
||||
**Codex OAuth 反向代理**:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 [v3.13.0 release notes](v3.13.0-zh.md#️-风险提示)。
|
||||
|
||||
**Claude Desktop 第三方供应商代理切换**:通过 CC Switch 内置代理网关把 Claude Desktop 的请求转到第三方供应商时,第三方供应商对计费、合规与数据留存的约束各不相同,请在使用前阅读目标供应商的服务条款。
|
||||
|
||||
用户启用上述功能即表示**自行承担所有风险**。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
|
||||
|
||||
---
|
||||
|
||||
## 下载与安装
|
||||
|
||||
访问 [Releases](https://github.com/farion1231/cc-switch/releases/latest) 下载对应版本。
|
||||
|
||||
### 系统要求
|
||||
|
||||
| 系统 | 最低版本 | 架构 |
|
||||
| ------- | -------------------------- | ----------------------------------- |
|
||||
| Windows | Windows 10 及以上 | x64 |
|
||||
| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
|
||||
| Linux | 见下表 | x64 / ARM64 |
|
||||
|
||||
### Windows
|
||||
|
||||
| 文件 | 说明 |
|
||||
| ---------------------------------------- | ----------------------------------- |
|
||||
| `CC-Switch-v3.15.0-Windows.msi` | **推荐** - MSI 安装包,支持自动更新 |
|
||||
| `CC-Switch-v3.15.0-Windows-Portable.zip` | 便携版,解压即用,不写入注册表 |
|
||||
|
||||
### macOS
|
||||
|
||||
| 文件 | 说明 |
|
||||
| -------------------------------- | --------------------------------------------- |
|
||||
| `CC-Switch-v3.15.0-macOS.dmg` | **推荐** - DMG 安装包,拖入 Applications 即可 |
|
||||
| `CC-Switch-v3.15.0-macOS.zip` | 解压后拖入 Applications,Universal Binary |
|
||||
| `CC-Switch-v3.15.0-macOS.tar.gz` | 用于 Homebrew 安装和自动更新 |
|
||||
|
||||
> macOS 版本已通过 Apple 代码签名和公证,可直接安装使用。
|
||||
|
||||
### Homebrew(macOS)
|
||||
|
||||
```bash
|
||||
brew tap farion1231/ccswitch
|
||||
brew install --cask cc-switch
|
||||
```
|
||||
|
||||
更新:
|
||||
|
||||
```bash
|
||||
brew upgrade --cask cc-switch
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
> Linux 资产同时提供 **x86_64** 和 **ARM64**(`aarch64`)两种架构。资产文件名中包含架构标识,请按你机器的 `uname -m` 输出选择对应版本:
|
||||
>
|
||||
> - `CC-Switch-v3.15.0-Linux-x86_64.AppImage` / `.deb` / `.rpm`
|
||||
> - `CC-Switch-v3.15.0-Linux-arm64.AppImage` / `.deb` / `.rpm`
|
||||
|
||||
| 发行版 | 推荐格式 | 安装方式 |
|
||||
| --------------------------------------- | ----------- | ---------------------------------------------------------------------- |
|
||||
| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` 或 `sudo apt install ./CC-Switch-*.deb` |
|
||||
| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` 或 `sudo dnf install ./CC-Switch-*.rpm` |
|
||||
| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` |
|
||||
| Arch Linux / Manjaro | `.AppImage` | 添加执行权限后直接运行,或使用 AUR |
|
||||
| 其他发行版 / 不确定 | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` |
|
||||
Reference in New Issue
Block a user