From 6495da03b7ac7a917af7e1661f5876d923a3be44 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 22 Apr 2026 11:51:32 +0800 Subject: [PATCH] docs(release-notes): add v3.14.0 release notes (en/zh/ja) Cover Hermes Agent onboarding (6th managed app), Claude Opus 4.7 rollout, Gemini Native API proxy, "Local Routing" rename, application-level window controls, Copilot premium consumption deep optimization, session list virtualization, Usage date range picker, Stream Check error classification, pricing v8->v9 reseed, and related breaking changes. 18 external PR contributions credited in all three locales. --- docs/release-notes/v3.14.0-en.md | 469 +++++++++++++++++++++++++++++++ docs/release-notes/v3.14.0-ja.md | 469 +++++++++++++++++++++++++++++++ docs/release-notes/v3.14.0-zh.md | 468 ++++++++++++++++++++++++++++++ 3 files changed, 1406 insertions(+) create mode 100644 docs/release-notes/v3.14.0-en.md create mode 100644 docs/release-notes/v3.14.0-ja.md create mode 100644 docs/release-notes/v3.14.0-zh.md diff --git a/docs/release-notes/v3.14.0-en.md b/docs/release-notes/v3.14.0-en.md new file mode 100644 index 00000000..0760a24f --- /dev/null +++ b/docs/release-notes/v3.14.0-en.md @@ -0,0 +1,469 @@ +# CC Switch v3.14.0 + +> Hermes Agent becomes the 6th managed app, Claude Opus 4.7 rolls out across the preset matrix, Gemini Native API proxy, "Local Routing" rename, and application-level window controls + +**[中文版 →](v3.14.0-zh.md) | [日本語版 →](v3.14.0-ja.md)** + +--- + +## Overview + +CC Switch v3.14.0 is a major release centered on onboarding **Hermes Agent as the 6th first-class managed app** and rolling out **Claude Opus 4.7** across the full aggregator and Bedrock preset matrix. Hermes support covers a database v9 → v10 migration, a complete Rust command surface, YAML-backed `~/.hermes/config.yaml` read/write with atomic backups, MCP sync, Skills sync, SQLite + JSONL session management, and dedicated frontend panels including a Memory editor. All four API protocols aligned with Hermes Agent 0.10.0 (`chat_completions`, `anthropic_messages`, `codex_responses`, `bedrock_converse`) are selectable. Providers owned by the user-authored `providers:` dict are rendered as read-only cards, and deep YAML configuration is delegated directly to the Hermes Web UI. + +Beyond Hermes, this release adds a **Gemini Native API proxy** (`api_format = "gemini_native"`) so the proxy can forward directly to Google's `generateContent` endpoint with full streaming, schema conversion, and shadow request support; renames the legacy "Local Proxy Takeover" to **Local Routing** across UI copy, README, and docs in all three locales; introduces **application-level window controls**, an opt-in setting that materially improves the experience on Linux Wayland where compositor-drawn buttons can become inert; and bundles late additions for launching `hermes dashboard` from the toolbar, a LemonData preset across all six apps, a DDSHub Codex endpoint, plus several Hermes health-check and Usage modal fixes. + +On the session side, the message list is **virtualized** via `@tanstack/react-virtual` so conversations with thousands of records scroll smoothly and long messages collapse by default; the Usage dashboard adds a **date range picker** (Today / 1d / 7d / 14d / 30d + custom date-time calendar) and a page-jump input; **Stream Check error classification** now surfaces color-coded toasts with refreshed default probe models and an explicit "model not found" branch; and switching to official providers is **blocked while Local Routing is active** to avoid account-suspension risk. The pricing database is reseeded from v8 → v9 with ~50 new model entries (Claude 4.7, Opus 4.7 Adaptive Thinking, Grok 4, Qwen 3.5/3.6, MiniMax M2.5/M2.7, Doubao Seed 2.0 series, GLM-5/5.1 and others) and corrected stale prices. + +**Release Date**: 2026-04-21 + +**Update Scale**: 100 commits | 219 files changed | +20,548 / -3,569 lines + +--- + +## Highlights + +- **Hermes Agent Support (6th Managed App)**: Database v9 → v10 migration, full Rust command surface, YAML read/write with atomic backups, MCP sync, Skills sync, SQLite + JSONL session management, dedicated frontend panels, and four API protocols (`chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`) +- **Claude Opus 4.7 Rollout**: Adaptive thinking whitelisting, per-million pricing seed, Bedrock SKU (`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`, dropping the legacy `-v1` suffix); all aggregator and Bedrock presets migrated to Opus 4.7 as the default Opus model +- **Claude `max` Effort Tier**: Effort dropdown upgraded from `high` to `max` +- **Gemini Native API Proxy**: New `api_format = "gemini_native"` forwards directly to Google's `generateContent` with full streaming / schema conversion / shadow request support +- **GitHub Copilot Enterprise Server**: GHES authentication and endpoint configuration for Copilot-backed Claude providers +- **Copilot Premium Consumption Deep Optimization**: Proactive thinking-block stripping before forwarding, `tool_result` classification fix, subagent detection, `x-interaction-id` billing merge, orphan `tool_result` sanitization, and default warmup downgrade — a systematic reduction in premium interaction consumption +- **Session List Virtualization**: Long conversations scroll smoothly and long messages collapse by default to reduce text layout cost +- **Codex / OpenClaw Session Title Extraction**: Meaningful title extraction with 2-line display; strips OpenClaw `message_id` suffix noise +- **Usage Date Range Picker**: Today / 1d / 7d / 14d / 30d preset tabs + custom date-time calendar; page-jump input on paginated lists +- **Stream Check Error Classification**: Color-coded error toasts; refreshed default probe models; explicit "model not found" detection +- **Block Official Provider Switching During Local Routing**: Routing official API traffic through the local proxy carries account-suspension risk — switches are blocked with a warning toast +- **Pricing Database Refresh (v8 → v9)**: ~50 new model entries and corrected stale prices +- **Application-Level Window Controls**: Opt-in setting to render CC Switch's own min/max/close buttons, materially improving Linux Wayland experience +- **Hermes in Unified Skills Management**: Skill install, enable, and filter now cover Hermes +- **Hermes / OpenClaw Config Directory Override**: Point CC Switch at a custom `~/.hermes/config.yaml` or `openclaw.json` location +- **Launch Hermes Dashboard from Toolbar**: When the Hermes Web UI probe fails, the toolbar entry offers to run `hermes dashboard` in the user's preferred terminal +- **New Partner Presets**: LemonData across all six apps; DDSHub Codex endpoint; StepFun Step Plan + +--- + +## Added + +### Hermes Agent Support (6th Managed App) + +CC Switch now treats Hermes Agent as a first-class managed app alongside Claude / Codex / Gemini / OpenCode / OpenClaw. + +- **Database Migration v9 → v10**: Adds `enabled_hermes` columns to `mcp_servers` and `skills` tables (`DEFAULT 0`, auto-migrated, no data loss) +- **YAML Configuration Read/Write**: `~/.hermes/config.yaml` read/write with atomic backups; `tests/hermes_roundtrip.rs` guards against dropped OAuth MCP `auth` blocks or pollution of unrelated YAML keys +- **Four API Protocols**: Aligned with Hermes Agent 0.10.0 — `chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`; new deeplinks default to `chat_completions` +- **User `providers:` Dict Read-Only Rendering**: User-authored providers in the YAML appear as read-only cards in CC Switch; deep configuration delegates to the Hermes Web UI +- **Additive Switching**: Unlike Claude / Codex's "override" style, all Hermes providers coexist in the same YAML + +### Hermes Memory Panel + +- New Memory panel for editing `MEMORY.md` / `USER.md` directly, with an enable switch, character-count limits, and a live save flow +- Replaces the Prompts entry for Hermes + +### Hermes Provider Presets (~50) + +- Covers Nous Research, Shengsuanyun, OpenRouter, DeepSeek, Together AI, StepFun, Zhipu GLM, Bailian, Kimi, MiniMax, DouBao, BaiLing, ModelScope, KAT-Coder, PackyCode, Cubence, AIGoCode, RightCode, AICodeMirror, AICoding, CrazyRouter, SSSAiCode, Micu, CTok.ai, DDSHub, E-FlowCode, LionCCAPI, PIPELLM, Compshare, SiliconFlow, AiHubMix, DMXAPI, TheRouter, Novita, Nvidia, and Xiaomi MiMo + +### Launch Hermes Dashboard from Toolbar + +- When the Hermes Web UI probe fails, the toolbar entry opens a confirm dialog offering to run `hermes dashboard` in the user's preferred terminal +- Spawned via a temp bash / batch script; `hermes dashboard` opens the browser itself once ready, so no polling is required +- The Memory panel and Health banner keep the existing toast behavior +- Also corrects the stale `hermes web` hint in the offline toast (the real command is `hermes dashboard`) +- Linux terminal detection reordered to try `which` before stat'ing `/usr/bin`, `/bin`, `/usr/local/bin` + +### Claude Opus 4.7 Support + +- New Claude Opus 4.7 with adaptive thinking whitelisting, per-million pricing seed, and Bedrock SKU (`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`, dropping the legacy `-v1` suffix) +- All aggregator and Bedrock presets migrated to Opus 4.7 as the default Opus model + +### Claude `max` Effort Tier + +- Claude effort dropdown upgraded from `high` to `max` for extended reasoning capacity + +### Gemini Native API Proxy + +- New `api_format = "gemini_native"` so the proxy can forward directly to Google's `generateContent` API (#1918, thanks @yovinchen) +- Full streaming, schema conversion, and shadow request support +- Adds `gemini_url.rs`, `gemini_schema.rs`, `gemini_shadow.rs`, `streaming_gemini.rs`, and `transform_gemini.rs` under the proxy providers module + +### GitHub Copilot Enterprise Server (GHES) + +- GHES authentication and endpoint configuration for Copilot-backed Claude providers (#2175, thanks @hotelbe) + +### Session List Virtualization + +- Virtualized the session list via `@tanstack/react-virtual` so long conversations (thousands of records) scroll smoothly +- Long session messages are collapsed by default to reduce text layout cost + +### Codex / OpenClaw Session Title Extraction + +- Meaningful title auto-extraction for Codex and OpenClaw sessions with 2-line display +- Strips OpenClaw `message_id` suffix noise + +### Usage Date Range Picker + +- New date range selector on the usage dashboard with preset tabs (Today / 1d / 7d / 14d / 30d) + custom date + time calendar (#2002, thanks @yovinchen) +- Page-jump input added on paginated lists + +### Model Mapping Quick-Set + +- New quick-set button next to model mapping fields in provider forms for faster edits (#2179, thanks @lispking) + +### Stream Check Error Classification + +- Stream Check errors are classified and surfaced as color-coded toasts +- Refreshed default probe models to match each vendor's current lineup +- Explicit detection for "model not found" responses + +### Block Official Provider Switching During Local Routing + +- Switching to official providers is blocked while Local Routing is active, with a warning toast +- Reason: routing official API traffic through the local proxy carries account-suspension risk + +### Pricing Database Refresh (v8 → v9) + +- Reseed-on-migration pricing table +- ~50 new model pricing entries including Claude 4.7, Opus 4.7 Adaptive Thinking, Grok 4, Qwen 3.5/3.6, MiniMax M2.5/M2.7, Doubao Seed 2.0 series, GLM-5/5.1 +- Corrected stale prices for DeepSeek, Kimi K2.5, and others + +### Application-Level Window Controls + +- Opt-in setting to render CC Switch's own minimize / toggle-maximize / close buttons instead of system decorations (#1119, thanks @git1677967754) +- Materially improves the experience on Linux Wayland where compositor-drawn buttons can become inert + +### Hermes in Unified Skills Management + +- Hermes is added to the unified Skills surface +- Skill install, enable, and filter now cover the Hermes app alongside Claude / Codex / Gemini / OpenCode / OpenClaw + +### OpenClaw Config Directory Override + +- New settings option to point CC Switch at a custom `openclaw.json` location (#1518, thanks @mrFranklin) + +### Hermes Config Directory Override + +- New settings option to point CC Switch at a custom `~/.hermes/config.yaml` location, backed by data-driven dispatch + +### StepFun Step Plan Preset + +- StepFun Step Plan (EN / ZH) provider presets (#2155, thanks @hengm3467) + +### New API Usage Script Template + +- Added a User-Agent header to the New API usage script template for better upstream compatibility + +### LemonData Provider Preset (All Six Apps) + +- LemonData registered as a third-party partner preset across Claude, Codex, Gemini, OpenCode, OpenClaw, and Hermes +- Icon assets and zh / en / ja partner-promotion copy +- Claude preset uses `ANTHROPIC_API_KEY` auth; OpenAI-compatible apps target `gpt-5.4` + +### DDSHub Codex Preset + +- Added a Codex-compatible endpoint for DDSHub at the same host as its Claude service +- Base URL omits the `/v1` suffix because the gateway auto-routes OpenAI SDK paths + +--- + +## Changed + +### "Local Proxy Takeover" → "Local Routing" + +- Unified the terminology across UI copy, README, and docs in all three locales +- Functional behavior is unchanged + +### Hermes `Auto` api_mode Removed + +- Users must pick an explicit protocol; new deeplinks default to `chat_completions` +- Eliminates URL-based heuristic surprises + +### Hermes Provider Form + +- Added an API mode dropdown and per-provider model editor +- Binds per-provider models to the top-level `model:` when switching active providers + +### Hermes Deep Config Delegation + +- Deep YAML knobs are no longer duplicated in the CC Switch form — they are delegated to the Hermes Web UI via a direct launch action + +### Hermes Toolbar Layout + +- Swapped the Hermes Web UI button from `ExternalLink` to `LayoutDashboard` (clicking may spawn `hermes dashboard` rather than just opening a URL) +- Moved MCP to the final toolbar slot so Hermes matches the Claude / Codex / Gemini / OpenCode layout + +### `ANTHROPIC_REASONING_MODEL` Removed from Claude Quick-Set + +- Decoupled the reasoning capability from model selection; the legacy field is no longer surfaced in the quick-set form + +### Per-Provider Proxy Config Removed + +- Consolidated into global Local Routing +- Provider-level proxy toggle and associated storage are gone + +### Unified Toolbar Icon Button Width + +- Normalized icon-button widths across Claude / Codex / Gemini / OpenCode / OpenClaw / Hermes panels for a consistent header look + +### Rust Toolchain Pinned to 1.95 + +- Adopted clippy 1.95 suggestions across the workspace and pinned the toolchain to prevent nightly drift + +### Tray Menu ID Constant + +- The tray identifier moved from the hardcoded string `"main"` to a `TRAY_ID` constant (`"cc-switch"`) across all call sites (#1978, thanks @lidaxian121) + +### Copilot Premium Consumption Deep Optimization + +A systematic overhaul to reduce Copilot reverse-proxy premium interaction consumption across multiple dimensions: + +- **Proactive Thinking Block Stripping Before Forwarding**: Anthropic's `thinking` / `redacted_thinking` blocks are rejected by OpenAI-compatible endpoints. Previously, the request failed upstream, burning one premium interaction before the `thinking_rectifier` could retry. A new proactive strip step (Copilot optimization pipeline step 3.5, after `tool_result` merging) eliminates that wasted interaction +- **Request Classification Fix**: Messages containing `tool_result` are now classified as agent continuation instead of user-initiated, preventing every tool call from being falsely counted as a premium interaction +- **Subagent Detection**: Identifies subagents via `__SUBAGENT_MARKER__` with `metadata._agent_` fallback, setting `x-interaction-type=conversation-subagent` +- **Deterministic `x-interaction-id` Billing Merge**: Derives `x-interaction-id` from the session ID so multiple requests within the same session collapse into a single billing interaction +- **Orphan `tool_result` Sanitization**: Cleans up orphan `tool_result` entries to prevent upstream errors that would trigger retries and duplicate billing +- **Warmup Downgrade Enabled by Default**: Uses `gpt-5-mini` as the default downgrade model +- **Optimization Pipeline Reorder**: classify → sanitize → merge → warmup, so classification sees raw `tool_result` semantics +- Fixed a `CopilotOptimizerConfig` default-value inconsistency (unified to `gpt-5-mini`) + +### Usage Script Intranet Support + +- Removed private-IP / suspicious-hostname blocking from usage scripts, unblocking enterprise intranet, Docker, and self-hosted API endpoints +- Built-in templates still enforce HTTPS (except localhost) and same-origin checks; custom templates remain user-controlled with those request-URL checks skipped + +### Failover Queue Notes + +- Provider notes now appear in failover queue selectors and queue rows for easier identification across multi-provider queues (#2138, thanks @Coconut-Fish) + +--- + +## Fixed + +### Header Auto-Compact Latching After Maximize + +- The toolbar no longer stays compacted after maximize/restore; compaction now reevaluates on size changes + +### Hermes YAML Pollution & OAuth MCP `auth` Drop + +- Round-tripping through CC Switch no longer drops OAuth MCP `auth` blocks or pollutes unrelated YAML keys +- Guard tests added via `tests/hermes_roundtrip.rs` + +### Hermes Active Provider Display + +- Hermes UI now correctly surfaces the active provider and wires add / enable / remove actions + +### Hermes Provider Persistence + +- Providers persist under `custom_providers:` so `api_mode` and `model` survive restarts and config reloads + +### Hermes Health Check Borrowing OpenClaw Schema + +- Hermes providers were routed through `check_additive_app_stream` (the OpenClaw dispatcher), which reads camelCase `baseUrl` / `apiKey` / `api` and surfaced "OpenClaw provider is missing baseUrl" even when every Hermes field was filled +- Introduced `check_hermes_stream` with Hermes-specific extractors that map `api_mode` (`chat_completions` / `anthropic_messages` / `codex_responses`) to the matching `check_claude_stream` `api_format`; `bedrock_converse` returns as unsupported +- `api_mode` is now resolved before URL / API key extraction, so `bedrock_converse` users see the real cause rather than a misleading "missing base_url" + +### Usage Query Modal for Hermes & OpenClaw + +- `getProviderCredentials` now reads flat `settingsConfig` fields for Hermes (snake_case `base_url` / `api_key`) and OpenClaw (camelCase `baseUrl` / `apiKey`), so the "official balance" template auto-selects for matching providers like SiliconFlow +- Refactored the BALANCE and TOKEN_PLAN test paths to reuse the precomputed `providerCredentials` instead of re-reading `env.ANTHROPIC_*` directly, fixing the "empty key" error for non-Claude apps even when the key was configured + +### Codex `cache_control` Preservation + +- Preserve `cache_control` when merging system prompts during Codex format conversion (#1946, thanks @yovinchen) + +### Claude Prompt Cache Key Leak + +- Stopped sending prompt cache keys during Claude chat conversions (#2003, thanks @yovinchen) + +### Proxy Hop-by-Hop Header Stripping + +- Strip hop-by-hop response headers (Connection, Keep-Alive, Transfer-Encoding, etc.) per RFC 7230 (#2060, thanks @yovinchen) + +### Permissive Proxy CORS Removed + +- Removed the permissive CORS layer from the proxy (#1915, thanks @zerone0x) + +### Backend Error Details in Proxy Toast + +- Surface backend error payload details in proxy-related toast messages instead of a generic failure string + +### Usage Log Deduplication + +- Deduplicated proxy and session-log usage records so the same request is no longer double-counted +- Synced the request log time range with the dashboard's 1d / 7d / 30d selector + +### Common Config Checkbox Persistence + +- Checkbox state for Claude / Codex / Gemini common-config toggles now persists correctly across reopens (#2191, thanks @zxZeng) + +### Claude Plugin `settings.json` Sync + +- Editing the current provider now syncs back to `settings.json` for the Claude plugin path (#1905, thanks @chengww5217) + +### Google Official Gemini Env Preservation + +- Saving the Google Official Gemini provider no longer clobbers the `env` block + +### OpenCode JSON5 Parser for Trailing Commas + +- OpenCode config reads now tolerate trailing commas via a JSON5 parser (#2023, thanks @wwminger) + +### Preset Refreshes + +- Refreshed stale context windows for DeepSeek and Claude 1M +- Refreshed stale model IDs; backfilled Hermes model lists +- Fixed the Nous endpoint and replaced the Hermes placeholder icon with Nous brand artwork +- Pruned unused official Hermes presets + +### Auto-Expand Collapsed Messages on Search Hit + +- Collapsed messages now auto-expand when a search match lands inside hidden content + +### Unknown Subscription Quota Tiers Hidden + +- Provider cards no longer render unknown subscription quota tiers + +### Weekly Limit Label Unified + +- Aligned the `weekly_limit` tier label with the official 7-day naming across locales + +### Root-Level Skill Repo Install + +- Fixed skill installation when the repository root itself is a skill + +### Session ID Parsing Clippy + +- Removed a redundant closure in session ID parsing (clippy warning) + +### Stream Check Default Models Refresh + +- Updated stream-check default probe models to match each vendor's current lineup + +### Skills Import Sync + +- Imported Skills are now immediately synced into enabled app directories instead of only being recorded in the database (#2101, thanks @yaoguohh) +- The UI no longer shows "installed" while the target app directory is missing the skill + +### Ghostty Session Restore + +- Fixed Ghostty session restore launch by using shell execution with `--working-directory` (#1976, thanks @Suda202) +- Avoids `cwd` escaping issues when the path contains spaces or special characters + +--- + +## Docs + +### README Sponsor Updates + +- Updated SiliconFlow signup bonus to ¥16 +- Trimmed the SSSAiCode sponsor blurb +- Updated partner logos +- Added LemonData as a new sponsor + +### Global Proxy Hint Clarified + +- Clarified the global proxy hint about local routing across all three locales + +### Takeover → Routing Rename + +- Renamed takeover docs to routing and updated anchors across all languages + +### PIPELLM Website URL + +- Updated the PIPELLM sponsor website URL to `code.pipellm.ai` + +--- + +## ⚠️ Breaking Changes + +### Hermes requires explicit `api_mode` + +- The `Auto` mode is gone; imported or deeplinked providers default to `chat_completions` +- Users with prior `Auto` configs will be prompted to pick a protocol + +### `ANTHROPIC_REASONING_MODEL` removed from Claude quick-set + +- The legacy field is no longer exposed; existing settings are cleaned up automatically + +### Per-provider proxy configuration removed + +- Migrate to the global Local Routing setting +- Existing per-provider proxy values are ignored + +### Database schema v9 → v10 + +- Adds `enabled_hermes` columns to `mcp_servers` and `skills` +- Auto-migrated with `DEFAULT 0`; no data loss + +### Pricing table reseeded (v8 → v9) + +- The `model_pricing` table is cleared and reseeded on first launch to pick up new models and corrected prices + +### XCodeAPI preset removed + +- Users of the XCodeAPI preset should switch to another provider + +--- + +## ⚠️ 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 [v3.12.3 release notes](v3.12.3-en.md#️-risk-notice). + +**Codex OAuth Reverse Proxy**: Using the Codex OAuth reverse proxy with a ChatGPT subscription may violate OpenAI's terms of service. See [v3.13.0 release notes](v3.13.0-en.md#️-risk-notice). + +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 | + +### Windows + +| File | Description | +| ---------------------------------------- | ----------------------------------------------- | +| `CC-Switch-v3.14.0-Windows.msi` | **Recommended** - MSI installer, supports auto-update | +| `CC-Switch-v3.14.0-Windows-Portable.zip` | Portable, extract and run, no registry writes | + +### macOS + +| File | Description | +| -------------------------------- | -------------------------------------------------------- | +| `CC-Switch-v3.14.0-macOS.dmg` | **Recommended** - DMG installer, drag into Applications | +| `CC-Switch-v3.14.0-macOS.zip` | Extract and drag into Applications, Universal Binary | +| `CC-Switch-v3.14.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 + +| 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` | diff --git a/docs/release-notes/v3.14.0-ja.md b/docs/release-notes/v3.14.0-ja.md new file mode 100644 index 00000000..2f0abf72 --- /dev/null +++ b/docs/release-notes/v3.14.0-ja.md @@ -0,0 +1,469 @@ +# CC Switch v3.14.0 + +> Hermes Agent が 6 番目の管理対象アプリに、Claude Opus 4.7 をプリセットマトリクス全体へ展開、Gemini Native API プロキシ、「Local Routing」への名称統一、アプリケーションレベルのウィンドウコントロール + +**[中文版 →](v3.14.0-zh.md) | [English →](v3.14.0-en.md)** + +--- + +## 概要 + +CC Switch v3.14.0 は、**Hermes Agent を 6 番目の一等管理対象アプリケーション**として CC Switch に取り込み、**Claude Opus 4.7** をアグリゲーターおよび Bedrock プリセットのマトリクス全体に展開することを中心に据えた大型リリースです。Hermes サポートは、データベース v9 → v10 マイグレーション、完全な Rust コマンド面、アトミックバックアップ付きの YAML ベースな `~/.hermes/config.yaml` 読み書き、MCP 同期、Skills 同期、SQLite + JSONL セッション管理、および Memory エディターを含む専用のフロントエンドパネルをカバーします。Hermes Agent 0.10.0 スキーマに整合する 4 つの API プロトコル(`chat_completions`、`anthropic_messages`、`codex_responses`、`bedrock_converse`)すべてを選択可能です。ユーザーが直接記述した `providers:` dict のエントリは読み取り専用カードとして表示され、深い YAML 設定は Hermes Web UI に委譲されます。 + +Hermes に加えて、本リリースでは **Gemini Native API プロキシ**(`api_format = "gemini_native"`)を追加し、プロキシがリクエストを Google の `generateContent` エンドポイントに直接転送できるようにしました(完全なストリーミング、スキーマ変換、シャドウリクエストをサポート)。また、旧「Local Proxy Takeover」を三言語の UI / README / ドキュメント全体で **Local Routing** に統一リネームし、コンポジターが描画するボタンが無反応になり得る Linux Wayland などのシーンで、CC Switch が自前で最小化 / 最大化 / 閉じるボタンを描画できるオプション「**アプリケーションレベルのウィンドウコントロール**」を導入しました。さらにリリース直前に、ツールバーからの `hermes dashboard` 直接起動、LemonData の全アプリプリセット、DDSHub の Codex エンドポイント、および複数の Hermes ヘルスチェックと Usage モーダルの修正が追加されました。 + +セッション側では、`@tanstack/react-virtual` によるセッションリストの**仮想化**で数千件のレコードを持つ長い会話も滑らかにスクロールでき、長いメッセージはデフォルトで折り畳まれます。Usage ダッシュボードには**日付範囲ピッカー**(今日 / 1d / 7d / 14d / 30d + カスタム日時カレンダー)とページジャンプ入力が追加され、**Stream Check エラー分類**は色分けされたトーストで提示され、デフォルトの探索モデルが更新され、「モデルが見つからない」レスポンスを個別に識別するようになりました。また、Local Routing が有効な間に公式プロバイダーへの切り替えを**強制的にブロック**する保護を追加し、公式 API トラフィックがローカルプロキシを経由することによるアカウント停止リスクを防ぎます。Pricing データベースは v8 → v9 で再シードされ、約 50 件の新しいモデルエントリ(Claude 4.7、Opus 4.7 Adaptive Thinking、Grok 4、Qwen 3.5/3.6、MiniMax M2.5/M2.7、Doubao Seed 2.0 系列、GLM-5/5.1 など)を追加し、いくつかの古い価格を修正しました。 + +**リリース日**: 2026-04-21 + +**更新規模**: 100 commits | 219 files changed | +20,548 / -3,569 lines + +--- + +## ハイライト + +- **Hermes Agent サポート(6 番目の管理対象アプリ)**: データベース v9 → v10 マイグレーション、完全な Rust コマンド面、アトミックバックアップ付き YAML 読み書き、MCP 同期、Skills 同期、SQLite + JSONL セッション管理、専用フロントエンドパネル、4 つの API プロトコル(`chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`) +- **Claude Opus 4.7 の全面展開**: 適応的思考のホワイトリスト、百万トークン単位の価格シード、Bedrock SKU(`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`、旧 `-v1` サフィックスを廃止)、全アグリゲーター / Bedrock プリセットを Opus 4.7 をデフォルト Opus モデルに移行 +- **Claude `max` エフォートティア**: エフォートのドロップダウンを `high` から `max` に引き上げ +- **Gemini Native API プロキシ**: 新しい `api_format = "gemini_native"` により、プロキシが Google の `generateContent` に直接転送可能に(完全なストリーミング / スキーマ変換 / シャドウリクエスト対応) +- **GitHub Copilot Enterprise Server**: Copilot ベースの Claude プロバイダーに GHES 認証とエンドポイント設定を追加 +- **Copilot 交互消費の大幅最適化**: 転送前の thinking ブロック主動削除、`tool_result` メッセージ分類修正、subagent 検出、`x-interaction-id` 課金マージ、孤立 `tool_result` のサニタイズ、Warmup ダウングレードのデフォルト有効化など、premium 交互消費を系統的に削減 +- **セッションリスト仮想化**: 長い会話が滑らかにスクロール。長いメッセージはデフォルトで折り畳まれ、テキストレイアウトコストを削減 +- **Codex / OpenClaw セッションタイトル抽出**: 意味のあるタイトルを自動抽出(2 行表示)、OpenClaw の `message_id` 末尾ノイズを除去 +- **Usage 日付範囲ピッカー**: Today / 1d / 7d / 14d / 30d プリセットタブ + カスタム日時カレンダー。ページネーションリストにページジャンプ入力 +- **Stream Check エラー分類**: エラーを分類し色分けトーストで提示。デフォルト探索モデル更新。「モデルが見つからない」レスポンスを明示的に検出 +- **Local Routing 有効時の公式プロバイダー切り替えブロック**: 公式 API トラフィックをローカルプロキシ経由で流すとアカウント停止のリスクがあるため、切り替えを強制ブロックして警告トーストを表示 +- **Pricing データベース刷新(v8 → v9)**: 約 50 件の新しいモデルエントリを追加し、古い価格を修正 +- **アプリケーションレベルのウィンドウコントロール**: CC Switch が自前で最小化 / 最大化トグル / 閉じるボタンを描画するオプション設定。Linux Wayland での体験を大きく改善 +- **統一 Skills 管理への Hermes 追加**: Skill のインストール / 有効化 / フィルターが Hermes をカバー +- **Hermes / OpenClaw 設定ディレクトリのカスタマイズ**: 設定で `~/.hermes/config.yaml` や `openclaw.json` のカスタム位置を指定可能 +- **ツールバーからの Hermes Dashboard 起動**: Hermes Web UI のプローブに失敗した際、ツールバーエントリからユーザーの優先ターミナルで `hermes dashboard` を実行可能 +- **新パートナープリセット**: LemonData を全 6 アプリにわたって追加、DDSHub の Codex エンドポイント、StepFun Step Plan + +--- + +## 新機能 + +### Hermes Agent サポート(6 番目の管理対象アプリ) + +CC Switch は Hermes Agent を Claude / Codex / Gemini / OpenCode / OpenClaw と並ぶ一等の管理対象アプリとして初めてサポートします。 + +- **データベースマイグレーション v9 → v10**: `mcp_servers` と `skills` テーブルに `enabled_hermes` カラムを追加(`DEFAULT 0`、自動マイグレーション、データ損失なし) +- **YAML 設定の読み書き**: `~/.hermes/config.yaml` をアトミックバックアップ付きで読み書き。`tests/hermes_roundtrip.rs` が OAuth MCP `auth` ブロックの消失や無関係なキーの汚染を防止 +- **4 つの API プロトコル**: Hermes Agent 0.10.0 と整合する `chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`。新しいディープリンクはデフォルトで `chat_completions` +- **ユーザー `providers:` dict の読み取り専用表示**: YAML に手書きされたプロバイダーエントリは CC Switch で読み取り専用カードとして表示され、深い設定は Hermes Web UI に委譲 +- **加算的な切り替え**: Claude / Codex の「上書き」型切り替えと異なり、Hermes ではすべてのプロバイダーが同じ YAML に共存 + +### Hermes Memory パネル + +- `MEMORY.md` / `USER.md` を直接編集できる Memory パネルを追加(有効化スイッチ、文字数制限、ライブ保存フロー付き) +- Hermes の Prompts エントリを置き換え + +### Hermes プロバイダープリセット(約 50 個) + +- Nous Research、Shengsuanyun(胜算云)、OpenRouter、DeepSeek、Together AI、StepFun、Zhipu GLM、Bailian(百炼)、Kimi、MiniMax、DouBao(豆包)、BaiLing(百灵)、ModelScope(魔搭)、KAT-Coder、PackyCode、Cubence、AIGoCode、RightCode、AICodeMirror、AICoding、CrazyRouter、SSSAiCode、Micu、CTok.ai、DDSHub、E-FlowCode、LionCCAPI、PIPELLM、Compshare、SiliconFlow、AiHubMix、DMXAPI、TheRouter、Novita、Nvidia、Xiaomi MiMo をカバー + +### ツールバーからの Hermes Dashboard 起動 + +- Hermes Web UI のプローブに失敗した際、ツールバーエントリがユーザーの優先ターミナルで `hermes dashboard` を実行する確認ダイアログを表示 +- 一時 bash / batch スクリプト経由で起動。`hermes dashboard` 自身が準備完了後にブラウザを開くため、ポーリングは不要 +- Memory パネルと Health バナーは既存のトースト動作を維持 +- オフラインのトーストにあった古い `hermes web` のヒントも修正(正しいコマンドは `hermes dashboard`) +- Linux ターミナル検出の順序を変更し、`/usr/bin`、`/bin`、`/usr/local/bin` を stat する前に `which` を試すように + +### Claude Opus 4.7 サポート + +- Claude Opus 4.7 を追加。適応的思考のホワイトリスト、百万トークン単位の価格シード、Bedrock SKU(`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`、旧 `-v1` サフィックスを廃止) +- 全アグリゲーター / Bedrock プリセットをデフォルト Opus モデルとして Opus 4.7 に移行 + +### Claude `max` エフォートティア + +- Claude エフォートドロップダウンを `high` から `max` に引き上げ、より強力な推論容量を解放 + +### Gemini Native API プロキシ + +- 新しい `api_format = "gemini_native"` により、プロキシが Google の `generateContent` API に直接転送可能 (#1918, 感謝 @yovinchen) +- 完全なストリーミング、スキーマ変換、シャドウリクエストに対応 +- proxy providers モジュール下に `gemini_url.rs`、`gemini_schema.rs`、`gemini_shadow.rs`、`streaming_gemini.rs`、`transform_gemini.rs` を追加 + +### GitHub Copilot Enterprise Server(GHES) + +- Copilot ベースの Claude プロバイダーに GHES 認証とエンドポイント設定を追加 (#2175, 感謝 @hotelbe) + +### セッションリスト仮想化 + +- `@tanstack/react-virtual` によりセッションリストを仮想化。数千件のレコードを持つ長い会話も滑らかにスクロール +- 長いセッションメッセージはデフォルトで折り畳まれ、テキストレイアウトコストを削減 + +### Codex / OpenClaw セッションタイトル抽出 + +- Codex と OpenClaw セッションから意味のあるタイトルを自動抽出し、2 行表示 +- OpenClaw の `message_id` 末尾ノイズを除去 + +### Usage 日付範囲ピッカー + +- Usage ダッシュボードに日付範囲セレクターを追加。プリセットタブ(Today / 1d / 7d / 14d / 30d)+ カスタム日時カレンダー (#2002, 感謝 @yovinchen) +- ページネーションリストにページジャンプ入力を追加 + +### モデルマッピングのクイック入力 + +- プロバイダーフォームのモデルマッピングフィールドの横にクイック入力ボタンを追加し、編集を高速化 (#2179, 感謝 @lispking) + +### Stream Check エラー分類 + +- Stream Check エラーを分類し、色分けトーストとして提示 +- デフォルトの探索モデルを各ベンダーの現行ラインナップに合わせて更新 +- 「モデルが見つからない」レスポンスを明示的に検出 + +### Local Routing 有効時の公式プロバイダー切り替えブロック + +- Local Routing が有効な状態で公式プロバイダーに切り替えようとすると、強制的にブロックされ警告トーストが表示される +- 理由: 公式 API トラフィックをローカルプロキシ経由で流すとアカウント停止のリスクがあるため + +### Pricing データベース刷新(v8 → v9) + +- マイグレーション時に定価テーブルを再シード +- Claude 4.7、Opus 4.7 Adaptive Thinking、Grok 4、Qwen 3.5/3.6、MiniMax M2.5/M2.7、Doubao Seed 2.0 系列、GLM-5/5.1 などを含む約 50 件の新しいモデルエントリを追加 +- DeepSeek、Kimi K2.5 などの古い価格を修正 + +### アプリケーションレベルのウィンドウコントロール + +- CC Switch が自前で最小化 / 最大化トグル / 閉じるボタンを描画するオプション設定を追加。システム装飾の代わりに使用 (#1119, 感謝 @git1677967754) +- コンポジター描画ボタンが無反応になり得る Linux Wayland での体験を大きく改善 + +### 統一 Skills 管理への Hermes 追加 + +- 統一 Skills サーフェスに Hermes を追加 +- Skill のインストール / 有効化 / フィルターが、Claude / Codex / Gemini / OpenCode / OpenClaw と並んで Hermes アプリをカバー + +### OpenClaw 設定ディレクトリのカスタマイズ + +- CC Switch が参照する `openclaw.json` のカスタム位置を設定できるオプションを追加 (#1518, 感謝 @mrFranklin) + +### Hermes 設定ディレクトリのカスタマイズ + +- CC Switch が参照する `~/.hermes/config.yaml` のカスタム位置を設定できるオプションを追加。データ駆動 dispatch でサポート + +### StepFun Step Plan プリセット + +- StepFun Step Plan(EN / ZH)プロバイダープリセットを追加 (#2155, 感謝 @hengm3467) + +### New API 用量スクリプトテンプレート + +- New API の用量スクリプトテンプレートに User-Agent ヘッダーを追加し、上流互換性を向上 + +### LemonData プロバイダープリセット(全 6 アプリ) + +- LemonData をサードパーティパートナープリセットとして Claude、Codex、Gemini、OpenCode、OpenClaw、Hermes の全 6 アプリに登録 +- アイコンアセットと zh / en / ja 三言語のパートナー推奨文面を追加 +- Claude プリセットは `ANTHROPIC_API_KEY` 認証を使用。OpenAI 互換アプリは `gpt-5.4` をターゲット + +### DDSHub Codex プリセット + +- DDSHub の Codex 互換エンドポイントを追加(Claude サービスと同じホスト) +- ベース URL は `/v1` サフィックスを省略(ゲートウェイが OpenAI SDK パスを自動ルーティング) + +--- + +## 変更 + +### 「Local Proxy Takeover」→「Local Routing」 + +- 三言語の UI 文言、README、ドキュメント全体で用語を統一リネーム +- 機能的な動作は変更なし + +### Hermes `Auto` api_mode の削除 + +- ユーザーは明示的にプロトコルを選択する必要あり。新しいディープリンクはデフォルトで `chat_completions` +- URL ベースのヒューリスティックによる意外な挙動を排除 + +### Hermes プロバイダーフォーム + +- API モードドロップダウンとプロバイダー単位のモデルエディターを追加 +- アクティブなプロバイダーを切り替える際、プロバイダー単位のモデルをトップレベルの `model:` にバインド + +### Hermes 深い設定の委譲 + +- 深い YAML 設定は CC Switch フォームで重複させず、「Hermes Web UI を起動」ボタン経由で Web UI に直接委譲 + +### Hermes ツールバーレイアウト + +- Hermes Web UI ボタンのアイコンを `ExternalLink` から `LayoutDashboard` に変更(クリック時に単に URL を開くのではなく `hermes dashboard` を起動する場合があるため、パネル型アイコンのほうが意味的に正確) +- MCP をツールバーの末尾に移動し、Hermes のレイアウトを Claude / Codex / Gemini / OpenCode と揃える + +### Claude Quick-Set から `ANTHROPIC_REASONING_MODEL` を削除 + +- 推論能力とモデル選択を分離。レガシーフィールドは Quick-Set フォームから除外 + +### プロバイダー単位のプロキシ設定を削除 + +- グローバルな Local Routing に統合 +- プロバイダー単位のプロキシトグルと関連ストレージは削除済み + +### ツールバーアイコンボタン幅の統一 + +- Claude / Codex / Gemini / OpenCode / OpenClaw / Hermes パネルの間でアイコンボタン幅を正規化し、ヘッダーの見た目を統一 + +### Rust Toolchain を 1.95 にピン留め + +- ワークスペース全体で clippy 1.95 の提案を採用し、nightly ドリフトを防ぐためツールチェーンをピン留め + +### トレイメニュー ID 定数 + +- トレイ識別子をハードコーディング文字列 `"main"` から `TRAY_ID` 定数(`"cc-switch"`)に移行。すべての呼び出し箇所で同期 (#1978, 感謝 @lidaxian121) + +### Copilot 交互消費の大幅最適化 + +Copilot リバースプロキシの premium 交互消費を削減するための系統的な最適化。以下の複数の改善をカバー: + +- **転送前に thinking ブロックを主動削除**: Anthropic の `thinking` / `redacted_thinking` ブロックは OpenAI 互換エンドポイントに拒否される。従来は上流でリクエストが失敗して premium 交互を 1 回消費した後、`thinking_rectifier` によってリトライされていた。新しい主動削除ステップ(Copilot 最適化パイプラインの 3.5 ステップ目、`tool_result` マージ後)により、この無駄な premium 消費を直接解消 +- **リクエスト分類の修正**: `tool_result` を含むメッセージをユーザー発起の新規リクエストではなく、エージェント継続として分類。ツール呼び出しが毎回 premium 交互としてカウントされる問題を防止 +- **subagent 検出**: `__SUBAGENT_MARKER__` と `metadata._agent_` フォールバックで subagent を識別し、`x-interaction-type=conversation-subagent` を設定 +- **決定論的 `x-interaction-id` による課金マージ**: セッション ID から `x-interaction-id` を導出し、同一セッション内の複数リクエストを 1 回の課金交互に統合 +- **孤立 `tool_result` のサニタイズ**: 孤立した `tool_result` を整理し、上流エラーによるリトライおよび重複課金を防止 +- **Warmup ダウングレードをデフォルトで有効化**: `gpt-5-mini` をデフォルトのダウングレードモデルとして使用 +- **最適化パイプラインの並び替え**: classify → sanitize → merge → warmup の順序で、分類が生の `tool_result` セマンティクスを参照可能に +- `CopilotOptimizerConfig` のデフォルト値の不一致を修正(`gpt-5-mini` に統一) + +### 用量スクリプトのイントラネットサポート + +- 用量スクリプトからプライベート IP / 不審なホスト名のブロッキングを削除し、エンタープライズイントラネット、Docker、自己ホスト API エンドポイントを解放 +- ビルトインテンプレートは引き続き HTTPS(localhost を除く)と同一オリジンチェックを強制。カスタムテンプレートはユーザー制御のまま、リクエスト URL のチェックをスキップ + +### Failover キューの備考表示 + +- プロバイダーの備考が failover キューセレクターとキュー行に表示され、マルチプロバイダーキューでの識別が容易に (#2138, 感謝 @Coconut-Fish) + +--- + +## バグ修正 + +### 最大化後のツールバー自動折り畳みラッチ + +- ウィンドウの最大化 / 復元後、ツールバーが折り畳まれたままになる問題を修正。折り畳み判定はサイズ変更時に再評価される + +### Hermes YAML 汚染と OAuth MCP `auth` 消失 + +- CC Switch 経由でラウンドトリップしても OAuth MCP `auth` ブロックが消失したり、無関係な YAML キーが汚染されたりしなくなった +- `tests/hermes_roundtrip.rs` をガードテストとして追加 + +### Hermes アクティブプロバイダー表示 + +- Hermes UI がアクティブプロバイダーを正しく表示するようになり、追加 / 有効化 / 削除アクションが正しく動作 + +### Hermes プロバイダーの永続化 + +- プロバイダーは `custom_providers:` の下に永続化され、`api_mode` と `model` が再起動 / 設定再読み込みを生き延びる + +### Hermes ヘルスチェックが OpenClaw のスキーマを流用していた問題 + +- 以前 Hermes プロバイダーは `check_additive_app_stream`(OpenClaw のディスパッチャー)にルーティングされており、これは camelCase の `baseUrl` / `apiKey` / `api` を読むため、Hermes フィールドをすべて記入しても "OpenClaw provider is missing baseUrl" と表示されていた +- `check_hermes_stream` を導入し、Hermes 専用のエクストラクターで `api_mode`(`chat_completions` / `anthropic_messages` / `codex_responses`)を対応する `check_claude_stream` の `api_format` にマッピング。`bedrock_converse` は非対応として返す +- URL / API キーの抽出前に `api_mode` を解決することで、`bedrock_converse` を選んだユーザーには「missing base_url」という誤解を招くメッセージではなく実際の原因が表示される + +### Hermes / OpenClaw 向け Usage クエリモーダル + +- `getProviderCredentials` が Hermes(snake_case の `base_url` / `api_key`)と OpenClaw(camelCase の `baseUrl` / `apiKey`)のフラットな `settingsConfig` フィールドを読むようになり、SiliconFlow などマッチするプロバイダーで「official balance」テンプレートが自動選択される +- BALANCE と TOKEN_PLAN テストパスをリファクタリングし、`env.ANTHROPIC_*` を直接再読するのではなく、事前計算された `providerCredentials` を再利用するように変更。これにより非 Claude アプリでキーが設定されていても「empty key」エラーが出ていた問題を修正 + +### Codex `cache_control` 保持 + +- Codex フォーマット変換中に system prompt をマージする際の `cache_control` を保持 (#1946, 感謝 @yovinchen) + +### Claude プロンプトキャッシュキーのリーク + +- Claude chat 変換時にプロンプトキャッシュキーを送信しないように修正 (#2003, 感謝 @yovinchen) + +### プロキシ Hop-by-Hop レスポンスヘッダーの削除 + +- RFC 7230 に従ってプロキシレスポンスの hop-by-hop ヘッダー(Connection、Keep-Alive、Transfer-Encoding など)を削除 (#2060, 感謝 @yovinchen) + +### プロキシの寛容な CORS レイヤー削除 + +- プロキシの寛容な CORS レイヤーを削除 (#1915, 感謝 @zerone0x) + +### プロキシトーストでのバックエンドエラー詳細表示 + +- プロキシ関連のトーストメッセージで、汎用的な失敗文字列ではなくバックエンドのエラーペイロードの詳細を表示 + +### Usage ログの重複排除 + +- プロキシとセッションログの用量レコードを重複排除し、同じリクエストが二重にカウントされないように修正 +- リクエストログの時間範囲をダッシュボードの 1d / 7d / 30d セレクターと同期 + +### Common Config チェックボックスの永続化 + +- Claude / Codex / Gemini の common-config トグルのチェック状態が再オープンをまたいで正しく保持されるように修正 (#2191, 感謝 @zxZeng) + +### Claude プラグイン `settings.json` 同期 + +- 現在のプロバイダーを編集すると、Claude プラグインパスの `settings.json` に同期されるように修正 (#1905, 感謝 @chengww5217) + +### Google Official Gemini の env 保持 + +- Google Official Gemini プロバイダーを保存しても `env` ブロックが消えないように修正 + +### OpenCode の JSON5 による末尾カンマ解析 + +- OpenCode 設定読み取りが JSON5 パーサーにより末尾カンマを許容するように修正 (#2023, 感謝 @wwminger) + +### プリセットの刷新 + +- DeepSeek と Claude 1M の古いコンテキストウィンドウを刷新 +- 古いモデル ID を刷新。Hermes のモデルリストをバックフィル +- Nous エンドポイントを修正し、Hermes のプレースホルダーアイコンを Nous ブランドのアートワークに置き換え +- 未使用の公式 Hermes プリセットを整理 + +### 検索ヒット時の折り畳みメッセージの自動展開 + +- 隠されたコンテンツ内部で検索マッチが発生した場合、折り畳みメッセージを自動展開してマッチを示す + +### 不明なサブスクリプション配額ティアの非表示 + +- プロバイダーカードは不明なサブスクリプション配額ティアを表示しないように変更 + +### weekly_limit ラベルの統一 + +- `weekly_limit` ティアラベルを公式の「7 日」命名にロケール間で揃えた + +### ルートレベルの Skill リポジトリインストール + +- リポジトリのルート自体が skill の場合のインストール失敗を修正 + +### Session ID 解析の clippy 警告 + +- session ID 解析内の冗長なクロージャを削除(clippy 警告) + +### Stream Check デフォルトモデルの刷新 + +- Stream Check のデフォルト探索モデルを各ベンダーの現行ラインナップに合わせて更新 + +### Skills インポートの同期 + +- インポートされた Skills はデータベースに記録されるだけでなく、有効化されたアプリディレクトリにも即座に同期されるように変更 (#2101, 感謝 @yaoguohh) +- UI が「インストール済み」と表示しているのに対象アプリディレクトリに skill が存在しない状態を解消 + +### Ghostty セッション復元 + +- Ghostty セッション復元の起動を `--working-directory` 付きのシェル実行に変更 (#1976, 感謝 @Suda202) +- パスにスペースや特殊文字が含まれる場合の `cwd` エスケープ問題を回避 + +--- + +## ドキュメント + +### README スポンサー更新 + +- SiliconFlow のサインアップボーナスを ¥16 に更新 +- SSSAiCode のスポンサー文面を簡潔化 +- パートナーロゴを更新 +- 新しいスポンサーとして LemonData を追加 + +### グローバルプロキシヒントの明確化 + +- 三言語でグローバルプロキシと Local Routing の関係を明確化 + +### Takeover → Routing ドキュメントのリネーム + +- テイクオーバー関連ドキュメントを三言語で routing にリネームし、アンカーを同期更新 + +### PIPELLM ウェブサイト URL + +- PIPELLM スポンサーのウェブサイト URL を `code.pipellm.ai` に更新 + +--- + +## ⚠️ 重要な変更(Breaking) + +### Hermes は明示的な `api_mode` が必須 + +- `Auto` モードは廃止。インポートまたはディープリンクで取得したプロバイダーはデフォルトで `chat_completions` +- 既存の `Auto` 設定のユーザーはプロトコルを選択するよう促される + +### Claude Quick-Set から `ANTHROPIC_REASONING_MODEL` を削除 + +- レガシーフィールドは公開されなくなった。既存の設定は自動的にクリーンアップされる + +### プロバイダー単位のプロキシ設定を削除 + +- グローバル Local Routing 設定に移行 +- 既存のプロバイダー単位のプロキシ値は無視される + +### データベーススキーマ v9 → v10 + +- `mcp_servers` と `skills` に `enabled_hermes` カラムを追加 +- `DEFAULT 0` で自動マイグレーション、データ損失なし + +### Pricing テーブルの再シード(v8 → v9) + +- 新しいモデルと修正済み価格を取り込むため、初回起動時に `model_pricing` テーブルがクリアされ再シードされる + +### XCodeAPI プリセットの削除 + +- XCodeAPI プリセットを使用していたユーザーは別のプロバイダーに切り替える必要がある + +--- + +## ⚠️ リスクに関する注意事項 + +本リリースは、リバースプロキシ型機能について 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#️-リスクに関する注意事項) を参照してください。 + +これらの機能を有効にすることで、ユーザーは**すべての関連リスクを自己責任で受諾**したものとみなされます。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 | + +### Windows + +| ファイル | 説明 | +| ---------------------------------------- | ------------------------------------------- | +| `CC-Switch-v3.14.0-Windows.msi` | **推奨** - MSI インストーラー、自動更新対応 | +| `CC-Switch-v3.14.0-Windows-Portable.zip` | ポータブル版、解凍して実行、レジストリ不要 | + +### macOS + +| ファイル | 説明 | +| -------------------------------- | -------------------------------------------------------- | +| `CC-Switch-v3.14.0-macOS.dmg` | **推奨** - DMG インストーラー、Applications にドラッグ | +| `CC-Switch-v3.14.0-macOS.zip` | 解凍して Applications にドラッグ、Universal Binary | +| `CC-Switch-v3.14.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 + +| ディストリビューション | 推奨形式 | インストール方法 | +| --------------------------------------- | ----------- | ---------------------------------------------------------------------- | +| 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` | diff --git a/docs/release-notes/v3.14.0-zh.md b/docs/release-notes/v3.14.0-zh.md new file mode 100644 index 00000000..7f2a0d58 --- /dev/null +++ b/docs/release-notes/v3.14.0-zh.md @@ -0,0 +1,468 @@ +# CC Switch v3.14.0 + +> Hermes Agent 成为第 6 个受管应用、Claude Opus 4.7 全面接入、Gemini Native API 代理、Local Routing 统一重命名、应用级窗口控件 + +**[English →](v3.14.0-en.md) | [日本語版 →](v3.14.0-ja.md)** + +--- + +## 概览 + +CC Switch v3.14.0 是一次大版本更新,核心焦点是把 **Hermes Agent 作为第 6 个一等受管应用**接入 CC Switch,并把 **Claude Opus 4.7** 铺设到全部聚合器与 Bedrock 预设矩阵。Hermes 支持覆盖数据库 v9 → v10 迁移、完整的 Rust 命令面、基于 YAML 的 `~/.hermes/config.yaml` 读写(含原子备份)、MCP 同步、Skills 同步、SQLite + JSONL 会话管理,以及专属的前端面板和 Memory 编辑面板;与 Hermes Agent 0.10.0 schema 对齐的四种协议(`chat_completions`、`anthropic_messages`、`codex_responses`、`bedrock_converse`)全部可选。用户自行维护的 `providers:` dict 条目以只读卡片形式呈现,深度 YAML 配置则直接委托给 Hermes Web UI。 + +除了 Hermes,本次还新增了 **Gemini Native API 代理**(`api_format = "gemini_native"`),让代理可以把请求直接转发到 Google 的 `generateContent` 端点,完整支持流式、schema 转换和 shadow 请求;把老的 "Local Proxy Takeover" 在三语 UI / README / 文档中统一重命名为 **Local Routing**;新增 **应用级窗口控件**,在 Linux Wayland 等合成器绘制按钮失灵的场景下可选让 CC Switch 自绘最小化 / 最大化 / 关闭按钮;并在本版本发布前额外合入了从工具栏直接启动 `hermes dashboard`、LemonData 全应用预设、DDSHub Codex 端点以及若干 Hermes 健康检查与 Usage 模态框的修复。 + +会话侧通过 `@tanstack/react-virtual` **虚拟化会话列表**,让上千条记录的长会话也能流畅滚动,长消息默认折叠;Usage 面板新增**日期范围选择器**(今日 / 1d / 7d / 14d / 30d + 自定义日期时间)和翻页输入;**Stream Check 错误分类**以彩色 toast 呈现,默认探测模型重新梳理,"模型不存在"响应被单独识别;并新增在 Local Routing 激活时**阻止切换到官方供应商**的保护,以免官方流量被引入本地代理造成账号风险。Pricing 数据库 v8 → v9 重新种入约 50 个新模型条目(包括 Claude 4.7、Opus 4.7 Adaptive Thinking、Grok 4、Qwen 3.5/3.6、MiniMax M2.5/M2.7、Doubao Seed 2.0 系列、GLM-5/5.1 等),并修正了多项陈旧价格。 + +**发布日期**:2026-04-21 + +**更新规模**:100 commits | 219 files changed | +20,548 / -3,569 lines + +--- + +## 重点内容 + +- **Hermes Agent 支持(第 6 个受管应用)**:数据库 v9 → v10 迁移、完整 Rust 命令面、YAML 读写带原子备份、MCP 同步、Skills 同步、SQLite + JSONL 会话管理、专属前端面板、四种 API 协议(`chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`) +- **Claude Opus 4.7 全面接入**:自适应思维白名单、按百万 token 定价种子、Bedrock SKU(`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`,丢弃老 `-v1` 后缀),全部聚合器 / Bedrock 预设升级为默认 Opus 模型 +- **Claude `max` 推理力度**:推理下拉从 `high` 升级到 `max` +- **Gemini Native API 代理**:新增 `api_format = "gemini_native"`,代理可直达 Google `generateContent`,完整流式 / schema 转换 / shadow 请求 +- **GitHub Copilot 企业版**:为 Copilot 型 Claude 供应商新增 GHES 认证与端点配置 +- **Copilot 次数消耗深度优化**:转发前主动剥离 thinking 块、`tool_result` 消息归类修正、subagent 检测、`x-interaction-id` 合并计费、orphan `tool_result` 清理、默认启用 warmup 降级 —— 系统性降低 premium 交互消耗 +- **会话列表虚拟化**:长会话流畅滚动,长消息默认折叠降低文字布局成本 +- **Codex / OpenClaw 会话标题提取**:自动抽取有意义标题,两行显示,剥离 OpenClaw `message_id` 尾噪声 +- **Usage 日期范围选择器**:Today / 1d / 7d / 14d / 30d 预设 + 自定义日期时间日历;分页列表支持页码跳转输入 +- **Stream Check 错误分类**:错误按类别分色 toast;默认探测模型刷新;单独识别 "model not found" +- **Local Routing 激活时阻止官方供应商切换**:官方流量走本地代理有账号暂停风险,强制拦截并 toast 警告 +- **Pricing 数据库刷新(v8 → v9)**:新增 ~50 条模型条目并修正陈旧价格 +- **应用级窗口控件**:可选让 CC Switch 自绘 min/max/close,显著改善 Linux Wayland 体验 +- **Hermes 接入统一 Skills 管理**:Skills 安装 / 启用 / 过滤现覆盖 Hermes +- **Hermes / OpenClaw 配置目录自定义**:在设置里指定 `~/.hermes/config.yaml` 或 `openclaw.json` 的自定义位置 +- **从工具栏启动 Hermes Dashboard**:Web UI 探测失败时,点击可在用户首选终端中启动 `hermes dashboard` +- **新合作伙伴预设**:LemonData 覆盖全部 6 个应用;DDSHub 新增 Codex 端点;StepFun Step Plan + +--- + +## 新功能 + +### Hermes Agent 支持(第 6 个受管应用) + +CC Switch 首次支持 Hermes Agent 作为一等受管应用,与 Claude / Codex / Gemini / OpenCode / OpenClaw 并列。 + +- **数据库迁移 v9 → v10**:为 `mcp_servers` 和 `skills` 表新增 `enabled_hermes` 列(`DEFAULT 0` 自动迁移,无数据丢失) +- **YAML 配置读写**:`~/.hermes/config.yaml` 读写带原子备份;`tests/hermes_roundtrip.rs` 守护不损坏不相关键和 OAuth MCP `auth` 块 +- **四种 API 协议**:与 Hermes Agent 0.10.0 对齐的 `chat_completions` / `anthropic_messages` / `codex_responses` / `bedrock_converse`;新 deeplink 默认为 `chat_completions` +- **用户 `providers:` dict 只读呈现**:用户在 YAML 里手写的 providers 条目在 CC Switch 中以只读卡片展示,深度配置跳转到 Hermes Web UI +- **累加式切换**:与 Claude / Codex 的"覆盖式"切换不同,Hermes 所有供应商共存于同一 YAML + +### Hermes Memory 面板 + +- 新增 Memory 面板直接编辑 `MEMORY.md` / `USER.md`,带启用开关、字符数限制和保存流 +- 替换 Hermes 的 Prompts 入口 + +### Hermes 供应商预设(约 50 个) + +- 覆盖 Nous Research、胜算云、OpenRouter、DeepSeek、Together AI、StepFun、智谱 GLM、百炼、Kimi、MiniMax、豆包、百灵、魔搭、KAT-Coder、PackyCode、Cubence、AIGoCode、RightCode、AICodeMirror、AICoding、CrazyRouter、SSSAiCode、Micu、CTok.ai、DDSHub、E-FlowCode、LionCCAPI、PIPELLM、Compshare、SiliconFlow、AiHubMix、DMXAPI、TheRouter、Novita、Nvidia、小米 MiMo + +### 从工具栏启动 Hermes Dashboard + +- Hermes Web UI 探测失败时,工具栏按钮改为弹出确认框,提供在用户首选终端里运行 `hermes dashboard` +- 通过临时 bash / batch 脚本启动,`hermes dashboard` 就绪后自动打开浏览器,无需轮询 +- Memory 面板和 Health banner 保留原有 toast 行为 +- 顺便修正了离线 toast 里过时的 `hermes web` 提示(正确命令是 `hermes dashboard`) +- Linux 终端探测改为先 `which` 后 stat,提升兼容性 + +### Claude Opus 4.7 支持 + +- 新增 Claude Opus 4.7 及其自适应思维白名单、按百万 token 定价种子、Bedrock SKU(`anthropic.claude-opus-4-7` / `global.anthropic.claude-opus-4-7`,丢弃老 `-v1` 后缀) +- 全部聚合器 / Bedrock 预设升级为默认 Opus 模型 + +### Claude `max` 推理力度 + +- Claude 推理下拉从 `high` 升级到 `max`,解锁更强的思考容量 + +### Gemini Native API 代理 + +- 新增 `api_format = "gemini_native"`,代理可直接转发到 Google `generateContent` API (#1918, 感谢 @yovinchen) +- 完整支持流式、schema 转换、shadow 请求 +- 在 proxy providers 模块下新增 `gemini_url.rs`、`gemini_schema.rs`、`gemini_shadow.rs`、`streaming_gemini.rs`、`transform_gemini.rs` + +### GitHub Copilot 企业版(GHES) + +- 为 Copilot 型 Claude 供应商新增 GHES 认证与端点配置 (#2175, 感谢 @hotelbe) + +### 会话列表虚拟化 + +- 通过 `@tanstack/react-virtual` 虚拟化会话列表,上千条记录流畅滚动 +- 长会话消息默认折叠,减少文字布局开销 + +### Codex / OpenClaw 会话标题提取 + +- Codex 和 OpenClaw 会话自动抽取有意义的标题,两行显示 +- 剥离 OpenClaw `message_id` 后缀噪声 + +### Usage 日期范围选择器 + +- Usage 面板新增日期范围选择器,预设 Tab(Today / 1d / 7d / 14d / 30d)+ 自定义日期 + 时间日历 (#2002, 感谢 @yovinchen) +- 分页列表新增页码跳转输入 + +### 模型映射快速填入 + +- 供应商表单的模型映射字段旁新增快速填入按钮,加快编辑 (#2179, 感谢 @lispking) + +### Stream Check 错误分类 + +- 按类别为 Stream Check 错误上色并以 toast 呈现 +- 刷新所有厂商默认探测模型到当前主力机型 +- 对 "model not found" 响应做单独识别 + +### Local Routing 激活时阻止官方供应商切换 + +- 在 Local Routing 激活状态下,切换到官方供应商会被强制拦截并弹出警告 toast +- 原因:官方 API 流量经由本地代理存在账号暂停风险 + +### Pricing 数据库刷新(v8 → v9) + +- 迁移时重新种入定价表 +- 新增约 50 条模型条目,覆盖 Claude 4.7、Opus 4.7 Adaptive Thinking、Grok 4、Qwen 3.5/3.6、MiniMax M2.5/M2.7、Doubao Seed 2.0 系列、GLM-5/5.1 +- 修正 DeepSeek、Kimi K2.5 等陈旧价格 + +### 应用级窗口控件 + +- 新增可选设置,让 CC Switch 自绘最小化 / 切换最大化 / 关闭按钮,代替系统装饰 (#1119, 感谢 @git1677967754) +- 在合成器按钮可能失灵的 Linux Wayland 上显著改善体验 + +### Hermes 接入统一 Skills 管理 + +- 统一的 Skills 界面新增 Hermes +- Skills 安装 / 启用 / 过滤现覆盖 Hermes,与 Claude / Codex / Gemini / OpenCode / OpenClaw 并列 + +### OpenClaw 配置目录自定义 + +- 新增设置项,允许把 CC Switch 指向自定义的 `openclaw.json` 位置 (#1518, 感谢 @mrFranklin) + +### Hermes 配置目录自定义 + +- 新增设置项,允许把 CC Switch 指向自定义的 `~/.hermes/config.yaml` 位置,底层通过数据驱动 dispatch + +### StepFun Step Plan 预设 + +- 新增 StepFun Step Plan(EN / ZH)供应商预设 (#2155, 感谢 @hengm3467) + +### New API 用量脚本模板 + +- 为 New API 用量脚本模板新增 User-Agent 头,提升上游兼容性 + +### LemonData 全应用预设 + +- LemonData 作为第三方合作伙伴预设覆盖 Claude / Codex / Gemini / OpenCode / OpenClaw / Hermes 全部 6 个应用 +- 含图标资源和 zh / en / ja 三语合作伙伴推广文案 +- Claude 预设使用 `ANTHROPIC_API_KEY` 认证,OpenAI 兼容应用目标为 `gpt-5.4` + +### DDSHub Codex 预设 + +- 新增 DDSHub 的 Codex 兼容端点(与 Claude 服务同 host) +- base URL 省略 `/v1` 后缀,由网关自动路由 OpenAI SDK 路径 + +--- + +## 变更 + +### "Local Proxy Takeover" → "Local Routing" + +- 三语 UI 文案、README、文档中全部统一重命名 +- 功能行为保持不变 + +### Hermes `Auto` api_mode 移除 + +- 用户必须显式选择协议;新 deeplink 默认为 `chat_completions` +- 消除了基于 URL 的启发式识别带来的意外 + +### Hermes 供应商表单 + +- 新增 API mode 下拉和按供应商的模型编辑器 +- 切换激活供应商时,把按供应商的模型绑定到顶层 `model:` + +### Hermes 深度配置委托 + +- 深度 YAML 配置不再在 CC Switch 表单里重复,直接通过"启动 Hermes Web UI"按钮交给 Web UI + +### Hermes 工具栏布局 + +- Web UI 按钮图标从 `ExternalLink` 换成 `LayoutDashboard` —— 点击可能启动 `hermes dashboard` 而非仅仅打开 URL,面板式图标语义更准 +- MCP 移到工具栏末尾,与 Claude / Codex / Gemini / OpenCode 的布局对齐 + +### Claude Quick-Set 移除 `ANTHROPIC_REASONING_MODEL` + +- 把推理能力和模型选择解耦,quick-set 表单不再暴露该遗留字段 + +### 按供应商代理配置移除 + +- 统一到全局的 Local Routing +- 按供应商的代理开关和存储都已移除 + +### 统一工具栏图标按钮宽度 + +- 在 Claude / Codex / Gemini / OpenCode / OpenClaw / Hermes 面板之间规格化图标按钮宽度,表头视觉一致 + +### Rust Toolchain 锁定 1.95 + +- 全仓库采纳 clippy 1.95 建议并锁定 toolchain,防止 nightly 漂移 + +### 托盘菜单 ID 常量 + +- 托盘标识符从硬编码字符串 `"main"` 改为 `TRAY_ID` 常量(`"cc-switch"`),所有调用点同步 (#1978, 感谢 @lidaxian121) + +### Copilot 次数消耗深度优化 + +一次系统性优化专门降低 Copilot 反向代理的 premium 交互消耗,涵盖以下多项改进: + +- **转发前主动剥离 thinking 块**:Anthropic 的 `thinking` / `redacted_thinking` 块会被 OpenAI 兼容端点拒绝,过去一次请求先失败消耗一次 premium 交互、再由 `thinking_rectifier` 触发重试。新增主动剥离步骤(Copilot 优化管线第 3.5 步,位于 `tool_result` 合并之后),直接省掉那一次无谓的 premium 消耗 +- **请求分类修正**:含 `tool_result` 的消息归类为代理继续,而不是用户发起的新请求 —— 避免每次工具调用都被错误计入 premium 次数 +- **subagent 检测**:通过 `__SUBAGENT_MARKER__` 和 `metadata._agent_` 回退识别 subagent,设置 `x-interaction-type=conversation-subagent` +- **确定性 `x-interaction-id` 合并计费**:从 session ID 推导 `x-interaction-id`,把同一会话内的多次请求合并为一次计费交互 +- **Orphan `tool_result` 清理**:清理孤立的 `tool_result`,避免触发上游错误导致重试和重复计费 +- **Warmup 降级默认开启**:使用 `gpt-5-mini` 作为默认降级模型 +- **优化管线重排**:classify → sanitize → merge → warmup,让分类看到原始 `tool_result` 语义 +- 修复 `CopilotOptimizerConfig` 默认值不一致(统一到 `gpt-5-mini`) + +### 用量脚本内网支持 + +- 移除 usage script 的私网 IP / 可疑主机名屏蔽,解锁企业内网、Docker、自建 API 端点 +- 内置模板仍强制 HTTPS(localhost 除外)和同源检查;自定义模板仍由用户控制,这类请求 URL 检查跳过 + +### Failover 队列备注 + +- 供应商备注现在在 failover 队列选择器和队列行中显示,方便在多供应商队列里识别 (#2138, 感谢 @Coconut-Fish) + +--- + +## Bug 修复 + +### 工具栏最大化后持续折叠 + +- 窗口最大化 / 还原后,工具栏不再卡在折叠状态;折叠判定会随尺寸变化重新计算 + +### Hermes YAML 污染与 OAuth MCP `auth` 丢失 + +- 经 CC Switch 往返写入不再丢失 OAuth MCP `auth` 块、也不污染不相关的 YAML 键 +- 新增 `tests/hermes_roundtrip.rs` 作为守护测试 + +### Hermes 激活供应商展示 + +- Hermes UI 现在正确展示激活供应商,并连通添加 / 启用 / 移除动作 + +### Hermes 供应商持久化 + +- 供应商持久化到 `custom_providers:` 下,`api_mode` 和 `model` 可跨重启 / 配置重载存活 + +### Hermes 健康检查错借 OpenClaw schema + +- 以前 Hermes 供应商被路由到 `check_additive_app_stream`(OpenClaw 的调度器),后者读 camelCase 的 `baseUrl` / `apiKey` / `api`,导致即便 Hermes 字段全填还是报 "OpenClaw provider is missing baseUrl" +- 新增 `check_hermes_stream`,用 Hermes 专用提取器把 `api_mode`(`chat_completions` / `anthropic_messages` / `codex_responses`)映射到对应的 `check_claude_stream` `api_format`,`bedrock_converse` 明确标记为不支持 +- 先解析 `api_mode` 再抽 URL / API key,让 `bedrock_converse` 用户看到真实原因,而不是误导性的 "missing base_url" + +### Usage 查询模态框支持 Hermes / OpenClaw + +- `getProviderCredentials` 新增对 Hermes(snake_case `base_url` / `api_key`)和 OpenClaw(camelCase `baseUrl` / `apiKey`)的扁平 `settingsConfig` 字段读取,让 SiliconFlow 等匹配供应商自动选中 "official balance" 模板 +- 重构 BALANCE 和 TOKEN_PLAN 测试路径复用 `providerCredentials`,不再直接读 `env.ANTHROPIC_*`,修正了非 Claude 应用即使配置了 key 也报 "empty key" 的问题 + +### Codex `cache_control` 保留 + +- 在 Codex 格式转换合并 system prompt 时保留 `cache_control` (#1946, 感谢 @yovinchen) + +### Claude prompt cache key 泄漏 + +- Claude chat 转换时不再发送 prompt cache key (#2003, 感谢 @yovinchen) + +### 代理逐跳响应头剥离 + +- 按 RFC 7230 剥离代理响应的 hop-by-hop 头(Connection、Keep-Alive、Transfer-Encoding 等) (#2060, 感谢 @yovinchen) + +### 代理 CORS 层移除 + +- 移除代理中过于宽松的 CORS 层 (#1915, 感谢 @zerone0x) + +### 代理 toast 显示后端错误详情 + +- 代理相关 toast 现在展示后端错误 payload 的详情,而不是一句笼统的失败 + +### Usage 日志去重 + +- 代理和会话日志的用量记录去重,相同请求不再被重复计数 +- 请求日志时间范围与面板的 1d / 7d / 30d 选择器同步 + +### Common Config 勾选持久化 + +- Claude / Codex / Gemini common-config 勾选状态重开后正确保留 (#2191, 感谢 @zxZeng) + +### Claude 插件 `settings.json` 同步 + +- 编辑当前供应商时,会同步回 Claude 插件路径下的 `settings.json` (#1905, 感谢 @chengww5217) + +### Google Official Gemini env 保留 + +- 保存 Google Official Gemini 供应商时不再清空 `env` 块 + +### OpenCode JSON5 尾逗号解析 + +- OpenCode 配置读取容忍尾逗号(JSON5) (#2023, 感谢 @wwminger) + +### 预设刷新 + +- 刷新 DeepSeek 和 Claude 1M 的陈旧 context 窗口 +- 刷新陈旧模型 ID,回填 Hermes 模型列表 +- 修正 Nous 端点,Hermes 占位图替换为 Nous 品牌图 +- 移除未使用的官方 Hermes 预设 + +### 搜索命中时折叠消息自动展开 + +- 搜索匹配落在折叠内容内部时,消息自动展开以定位匹配 + +### 未知订阅配额等级隐藏 + +- 供应商卡片不再渲染未知订阅配额等级 + +### weekly_limit 标签统一 + +- 跨语言把 `weekly_limit` 等级标签对齐到官方的"7 天"命名 + +### 根级 Skill 仓库安装 + +- 修复当仓库根本身就是一个 skill 时的安装失败 + +### Session ID 解析 clippy + +- 移除 session ID 解析里的冗余闭包(clippy 警告) + +### Stream Check 默认探测模型刷新 + +- 默认探测模型更新到每家厂商当前主力 + +### Skills 导入同步 + +- 导入的 Skills 即时同步到启用应用目录,不再仅记录在数据库里导致 UI 显示"已安装"但目标目录空缺 (#2101, 感谢 @yaoguohh) + +### Ghostty 会话恢复 + +- 改为通过 shell 执行 + `--working-directory` 启动 Ghostty 会话恢复 (#1976, 感谢 @Suda202) +- 避免路径含空格 / 特殊字符时 `cwd` 转义问题 + +--- + +## 文档 + +### README 赞助商更新 + +- SiliconFlow 注册赠送更新为 ¥16 +- 精简 SSSAiCode 赞助文案 +- 更新合作伙伴 logo +- 新增 LemonData 赞助商 + +### 全局代理提示澄清 + +- 三语澄清全局代理与 Local Routing 的关系 + +### Takeover → Routing 文档重命名 + +- 接管相关文档在三语下重命名为 routing,同步更新锚点 + +### PIPELLM 网站 URL + +- PIPELLM 赞助商网站 URL 更新为 `code.pipellm.ai` + +--- + +## ⚠️ 重要变更(Breaking) + +### Hermes 必须显式 `api_mode` + +- `Auto` 模式移除;导入或 deeplink 得到的供应商默认落到 `chat_completions` +- 既有 `Auto` 配置的用户会被提示选择协议 + +### Claude Quick-Set 移除 `ANTHROPIC_REASONING_MODEL` + +- 该遗留字段不再暴露;既有设置自动清理 + +### 按供应商代理配置移除 + +- 迁移到全局 Local Routing 设置 +- 既有按供应商代理值被忽略 + +### 数据库 schema v9 → v10 + +- 为 `mcp_servers` 和 `skills` 表新增 `enabled_hermes` 列 +- 自动迁移,`DEFAULT 0`,无数据丢失 + +### Pricing 表 v8 → v9 重置 + +- 首次启动时 `model_pricing` 表被清空并重新种入,以应用新模型和修正后的价格 + +### XCodeAPI 预设移除 + +- 使用 XCodeAPI 预设的用户请迁移到其它供应商 + +--- + +## ⚠️ 风险提示 + +本版本在涉及反向代理类功能上沿用 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#️-风险提示)。 + +用户启用上述功能即表示**自行承担所有风险**。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 | + +### Windows + +| 文件 | 说明 | +| ---------------------------------------- | ----------------------------------- | +| `CC-Switch-v3.14.0-Windows.msi` | **推荐** - MSI 安装包,支持自动更新 | +| `CC-Switch-v3.14.0-Windows-Portable.zip` | 便携版,解压即用,不写入注册表 | + +### macOS + +| 文件 | 说明 | +| -------------------------------- | --------------------------------------------- | +| `CC-Switch-v3.14.0-macOS.dmg` | **推荐** - DMG 安装包,拖入 Applications 即可 | +| `CC-Switch-v3.14.0-macOS.zip` | 解压后拖入 Applications,Universal Binary | +| `CC-Switch-v3.14.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 + +| 发行版 | 推荐格式 | 安装方式 | +| --------------------------------------- | ----------- | ---------------------------------------------------------------------- | +| 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` |