cc-viewer 1.6.330 → 1.6.333

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +7 -8
  2. package/cli.js +6 -6
  3. package/concepts/ar/GlobalSettings.md +5 -2
  4. package/concepts/ar/ProxySwitch.md +15 -5
  5. package/concepts/da/GlobalSettings.md +5 -2
  6. package/concepts/da/ProxySwitch.md +15 -5
  7. package/concepts/de/GlobalSettings.md +5 -2
  8. package/concepts/de/ProxySwitch.md +15 -5
  9. package/concepts/en/GlobalSettings.md +7 -2
  10. package/concepts/en/ProxySwitch.md +15 -5
  11. package/concepts/es/GlobalSettings.md +5 -2
  12. package/concepts/es/ProxySwitch.md +15 -5
  13. package/concepts/fr/GlobalSettings.md +5 -2
  14. package/concepts/fr/ProxySwitch.md +15 -5
  15. package/concepts/it/GlobalSettings.md +5 -2
  16. package/concepts/it/ProxySwitch.md +15 -5
  17. package/concepts/ja/GlobalSettings.md +5 -2
  18. package/concepts/ja/ProxySwitch.md +15 -5
  19. package/concepts/ko/GlobalSettings.md +5 -2
  20. package/concepts/ko/ProxySwitch.md +15 -5
  21. package/concepts/no/GlobalSettings.md +5 -2
  22. package/concepts/no/ProxySwitch.md +15 -5
  23. package/concepts/pl/GlobalSettings.md +5 -2
  24. package/concepts/pl/ProxySwitch.md +15 -5
  25. package/concepts/pt-BR/GlobalSettings.md +5 -2
  26. package/concepts/pt-BR/ProxySwitch.md +34 -24
  27. package/concepts/ru/GlobalSettings.md +5 -2
  28. package/concepts/ru/ProxySwitch.md +15 -5
  29. package/concepts/th/GlobalSettings.md +5 -2
  30. package/concepts/th/ProxySwitch.md +15 -5
  31. package/concepts/tr/GlobalSettings.md +5 -2
  32. package/concepts/tr/ProxySwitch.md +34 -24
  33. package/concepts/uk/GlobalSettings.md +5 -2
  34. package/concepts/uk/ProxySwitch.md +15 -5
  35. package/concepts/zh/GlobalSettings.md +5 -2
  36. package/concepts/zh/ProxySwitch.md +15 -5
  37. package/concepts/zh-TW/GlobalSettings.md +7 -4
  38. package/concepts/zh-TW/ProxySwitch.md +15 -5
  39. package/dist/assets/App-BUcRXok_.js +2 -0
  40. package/dist/assets/{MdxEditorPanel-BmO4cIBT.js → MdxEditorPanel-B0pZ244F.js} +1 -1
  41. package/dist/assets/{Mobile-ZXwho8zA.js → Mobile-ZwY4z6l3.js} +1 -1
  42. package/dist/assets/{_baseUniq-jDC_lFvH.js → _baseUniq-DWlfWgt4.js} +1 -1
  43. package/dist/assets/{arc-D_MHcfPz.js → arc-CzmkWEz_.js} +1 -1
  44. package/dist/assets/{architectureDiagram-Q4EWVU46-D3LhuQ4p.js → architectureDiagram-Q4EWVU46-CYaOQmkg.js} +1 -1
  45. package/dist/assets/{blockDiagram-DXYQGD6D-Bi9G2rJp.js → blockDiagram-DXYQGD6D-Dall5YkT.js} +1 -1
  46. package/dist/assets/{c4Diagram-AHTNJAMY-DlY0w3X4.js → c4Diagram-AHTNJAMY-DAk_9Ur1.js} +1 -1
  47. package/dist/assets/{channel-C87hLHco.js → channel-Ccyxypgy.js} +1 -1
  48. package/dist/assets/{chunk-4BX2VUAB-DodXg0hV.js → chunk-4BX2VUAB-CvbVyElK.js} +1 -1
  49. package/dist/assets/{chunk-4TB4RGXK-Ba2E_IX7.js → chunk-4TB4RGXK-BRyhy_Du.js} +1 -1
  50. package/dist/assets/{chunk-55IACEB6-CWG3ZdRs.js → chunk-55IACEB6-a32qQl3r.js} +1 -1
  51. package/dist/assets/{chunk-EDXVE4YY-lT5M-dRo.js → chunk-EDXVE4YY-KDrHEMBT.js} +1 -1
  52. package/dist/assets/{chunk-FMBD7UC4-BY_2pfoq.js → chunk-FMBD7UC4-BY0F4AhW.js} +1 -1
  53. package/dist/assets/{chunk-OYMX7WX6-DzLhEX7n.js → chunk-OYMX7WX6-7lPaUOt9.js} +1 -1
  54. package/dist/assets/{chunk-QZHKN3VN-BvdoGurF.js → chunk-QZHKN3VN-C9UszWzd.js} +1 -1
  55. package/dist/assets/{chunk-YZCP3GAM-C7rlhtyD.js → chunk-YZCP3GAM-YG3JSfbH.js} +1 -1
  56. package/dist/assets/classDiagram-6PBFFD2Q-CYXcQTEj.js +1 -0
  57. package/dist/assets/classDiagram-v2-HSJHXN6E-CYXcQTEj.js +1 -0
  58. package/dist/assets/clone-BRA0Q3Eo.js +1 -0
  59. package/dist/assets/{cose-bilkent-S5V4N54A-DhsYplMy.js → cose-bilkent-S5V4N54A-DIU72glS.js} +1 -1
  60. package/dist/assets/{dagre-KV5264BT-PLnp9yct.js → dagre-KV5264BT-EouMsh-P.js} +1 -1
  61. package/dist/assets/{diagram-5BDNPKRD-DqvSM_bo.js → diagram-5BDNPKRD-Cgr24o-m.js} +1 -1
  62. package/dist/assets/{diagram-G4DWMVQ6-DYN80unA.js → diagram-G4DWMVQ6-DSNxAipm.js} +1 -1
  63. package/dist/assets/{diagram-MMDJMWI5-D-jv3M8U.js → diagram-MMDJMWI5-D8OP-yt5.js} +1 -1
  64. package/dist/assets/{diagram-TYMM5635-BbVwY3fb.js → diagram-TYMM5635-BF-y_3p_.js} +1 -1
  65. package/dist/assets/{erDiagram-SMLLAGMA-9-rp8xsO.js → erDiagram-SMLLAGMA-kJejykzr.js} +1 -1
  66. package/dist/assets/{flowDiagram-DWJPFMVM-Bu_JuIe2.js → flowDiagram-DWJPFMVM-B7mSPWGk.js} +1 -1
  67. package/dist/assets/{ganttDiagram-T4ZO3ILL-B-PvSqDf.js → ganttDiagram-T4ZO3ILL-DN1NKD86.js} +1 -1
  68. package/dist/assets/{gitGraphDiagram-UUTBAWPF-DGloG4Vg.js → gitGraphDiagram-UUTBAWPF-gN8Ai_7H.js} +1 -1
  69. package/dist/assets/{graph-CbR0Gq9P.js → graph-CSC5UcCt.js} +1 -1
  70. package/dist/assets/{index-D4Pum3K_.js → index-BMKeFQ8D.js} +2 -2
  71. package/dist/assets/{index-Dyqfqy0-.js → index-C5sBul9J.js} +1 -1
  72. package/dist/assets/{index-D8UlD-Rs.js → index-CLOW0OUz.js} +1 -1
  73. package/dist/assets/{index-70lDhcDm.js → index-Cv33V1Pr.js} +1 -1
  74. package/dist/assets/{index-jdQotxUf.js → index-Cwi-o2jM.js} +1 -1
  75. package/dist/assets/{index-7ibWcMau.js → index-DHgN3ufc.js} +1 -1
  76. package/dist/assets/{index-CtigeZCJ.js → index-DI6crI9z.js} +1 -1
  77. package/dist/assets/{index-CtLTny8H.js → index-bUhmgSxt.js} +1 -1
  78. package/dist/assets/{infoDiagram-42DDH7IO-FGosRpTG.js → infoDiagram-42DDH7IO-DuSgqRNf.js} +1 -1
  79. package/dist/assets/{ishikawaDiagram-UXIWVN3A-BlclfpV5.js → ishikawaDiagram-UXIWVN3A-B4EdK2CC.js} +1 -1
  80. package/dist/assets/{journeyDiagram-VCZTEJTY--UkR986E.js → journeyDiagram-VCZTEJTY-B5wbjiO8.js} +1 -1
  81. package/dist/assets/{jszip.min-PwTGeWmJ.js → jszip.min-Dx820onf.js} +1 -1
  82. package/dist/assets/{kanban-definition-6JOO6SKY-1oO9JAku.js → kanban-definition-6JOO6SKY-1UxMJBgT.js} +1 -1
  83. package/dist/assets/{layout-DKdPIoav.js → layout-BZ4cy_A3.js} +1 -1
  84. package/dist/assets/{linear-D2uKszhd.js → linear-BKdLoimm.js} +1 -1
  85. package/dist/assets/{mermaid.core-Adp4RVnV.js → mermaid.core-DMom7_rg.js} +2 -2
  86. package/dist/assets/{min-Czdk6h6Y.js → min-wRNE9X51.js} +1 -1
  87. package/dist/assets/{mindmap-definition-QFDTVHPH-Bs7NLrcq.js → mindmap-definition-QFDTVHPH-BNmfJpA6.js} +1 -1
  88. package/dist/assets/{pieDiagram-DEJITSTG-D7z6f5QH.js → pieDiagram-DEJITSTG-vaH4-8Or.js} +1 -1
  89. package/dist/assets/{quadrantDiagram-34T5L4WZ-2rae23Td.js → quadrantDiagram-34T5L4WZ-C2AY6FOB.js} +1 -1
  90. package/dist/assets/{requirementDiagram-MS252O5E-B4uC_pLr.js → requirementDiagram-MS252O5E-aUdzXxVm.js} +1 -1
  91. package/dist/assets/{sankeyDiagram-XADWPNL6-xo0rKzRA.js → sankeyDiagram-XADWPNL6-911CtS8z.js} +1 -1
  92. package/dist/assets/seqResourceLoaders-BPRKtmaY.js +2 -0
  93. package/dist/assets/{seqResourceLoaders-BFMsIN74.css → seqResourceLoaders-P_ytfji6.css} +1 -1
  94. package/dist/assets/{sequenceDiagram-FGHM5R23-3zQ_CXGR.js → sequenceDiagram-FGHM5R23-2R6stVjM.js} +1 -1
  95. package/dist/assets/{stateDiagram-FHFEXIEX-BnAvwAN8.js → stateDiagram-FHFEXIEX-CbgRIOYj.js} +1 -1
  96. package/dist/assets/{stateDiagram-v2-QKLJ7IA2-Q4raD3B2.js → stateDiagram-v2-QKLJ7IA2-Xsvwai6m.js} +1 -1
  97. package/dist/assets/{timeline-definition-GMOUNBTQ-BMSMoqEA.js → timeline-definition-GMOUNBTQ-BhhXvDyp.js} +1 -1
  98. package/dist/assets/{vendor-antd-TJ9xmLQO.js → vendor-antd-DM2TzIqO.js} +1 -1
  99. package/dist/assets/{vendor-codemirror-CIGft5iF.js → vendor-codemirror-Bfrxv9Q7.js} +1 -1
  100. package/dist/assets/{vendor-mdxeditor-BuIUwnOf.js → vendor-mdxeditor-CtZ5Rl88.js} +2 -2
  101. package/dist/assets/{vendor-qrcode-BOhJZrOT.js → vendor-qrcode-55J239aW.js} +1 -1
  102. package/dist/assets/{vendor-virtuoso-CyrVCdOW.js → vendor-virtuoso-DY16TiQ-.js} +1 -1
  103. package/dist/assets/{vennDiagram-DHZGUBPP-Dd_tCka1.js → vennDiagram-DHZGUBPP-H7FLlPyO.js} +1 -1
  104. package/dist/assets/{wardley-RL74JXVD-DGkrRuSv.js → wardley-RL74JXVD-Dp35Fq7j.js} +1 -1
  105. package/dist/assets/{wardleyDiagram-NUSXRM2D-DlbDpNJR.js → wardleyDiagram-NUSXRM2D-CcKrzQBH.js} +1 -1
  106. package/dist/assets/{xychartDiagram-5P7HB3ND-CtBG1yl-.js → xychartDiagram-5P7HB3ND-CwTqQPcT.js} +1 -1
  107. package/dist/index.html +4 -4
  108. package/dist/voice-packs/default/pack.json +1 -1
  109. package/findcc.js +50 -40
  110. package/interceptor.js +1 -1
  111. package/package.json +8 -4
  112. package/plugins/README.md +8 -0
  113. package/server/_paths.js +24 -22
  114. package/server/interceptor.js +39 -25
  115. package/server/lib/interceptor-core.js +107 -0
  116. package/server/routes/preferences.js +14 -1
  117. package/server.js +1 -0
  118. package/ultraAgents/README.md +49 -40
  119. package/dist/assets/App-DPdFPyOI.js +0 -2
  120. package/dist/assets/classDiagram-6PBFFD2Q-DiOul2Ap.js +0 -1
  121. package/dist/assets/classDiagram-v2-HSJHXN6E-DiOul2Ap.js +0 -1
  122. package/dist/assets/clone-r-iPz1mj.js +0 -1
  123. package/dist/assets/seqResourceLoaders-DXQFWqYa.js +0 -2
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | 기본 모델. `fable` / `mythos` 계열에 속하는 모델 요청은 값으로 재작성됩니다 |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | 확장: `model`에 `opus`가 포함된 요청은 값으로 재작성됩니다 |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | 확장: `model`에 `sonnet`이 포함된 요청은 이 값으로 재작성됩니다 |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | 확장: `model`에 `haiku`가 포함된 요청은 이 값으로 재작성됩니다 |
20
+ | **강도 레벨** | ❌ | 요청 본문에 `output_config.effort`(`low`/`medium`/`high`/`xhigh`/`max`)를 주입합니다. "기본값"으로 두면 건너뜁니다 |
21
+
22
+ 모델 매칭은 요청의 `model` 필드에 대한 대소문자 구분 없는 부분 문자열 판정이므로, 어떤 버전(예: `claude-opus-4-8`, 향후 `claude-opus-5`)이든 재설정 없이 동일한 계열로 매핑됩니다. 계열 필드를 비워 두면 해당 계열은 변경되지 않으며, 인식할 수 없는 계열은 그대로 통과됩니다.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — 요청 본문의 `model`을 계열 단위로 재작성합니다(opus/sonnet/haiku 해당 필드, fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — 강도 레벨이 설정되어 있으면 `output_config.effort`를 주입합니다(`count_tokens` / 하트비트 요청은 건너뜀)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - 레거시 `models` / `activeModel`을 사용하는 profile은 로드 시 자동으로 `ANTHROPIC_MODEL`로 마이그레이션됩니다
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 家族映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 家族使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 家族使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 家族使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 级别 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | Primary model. Requests whose model belongs to the `fable` / `mythos` family are rewritten to this |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Extended: requests whose model contains `opus` are rewritten to this |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Extended: requests whose model contains `sonnet` are rewritten to this |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Extended: requests whose model contains `haiku` are rewritten to this |
20
+ | **Effort Level** | ❌ | Injects `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) into the request body. Leave as "Default" to skip |
21
+
22
+ Model matching is a case-insensitive substring test on the request's `model` field, so any version (e.g. `claude-opus-4-8`, a future `claude-opus-5`) maps to the same family with no reconfiguration. An empty family field means that family is left unchanged; an unrecognized family is passed through untouched.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — Rewrites the request body `model` by family (opus/sonnet/haiku the matching field; fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — If an effort level is set, injects `output_config.effort` (skipped for `count_tokens` / heartbeat requests)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - Legacy profiles using `models` / `activeModel` are auto-migrated to `ANTHROPIC_MODEL` on load
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 系列映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 系列使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 系列使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 系列使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 等级 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | Primary model. Requests whose model belongs to the `fable` / `mythos` family are rewritten to this |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Extended: requests whose model contains `opus` are rewritten to this |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Extended: requests whose model contains `sonnet` are rewritten to this |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Extended: requests whose model contains `haiku` are rewritten to this |
20
+ | **Effort Level** | ❌ | Injects `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) into the request body. Leave as "Default" to skip |
21
+
22
+ Model matching is a case-insensitive substring test on the request's `model` field, so any version (e.g. `claude-opus-4-8`, a future `claude-opus-5`) maps to the same family with no reconfiguration. An empty family field means that family is left unchanged; an unrecognized family is passed through untouched.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — Rewrites the request body `model` by family (opus/sonnet/haiku the matching field; fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — If an effort level is set, injects `output_config.effort` (skipped for `count_tokens` / heartbeat requests)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - Legacy profiles using `models` / `activeModel` are auto-migrated to `ANTHROPIC_MODEL` on load
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 家族映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 家族使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 家族使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 家族使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 级别 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -1,32 +1,38 @@
1
- # Hot-Switch Proxy
1
+ # Proxy de Troca Rápida
2
2
 
3
- ## Overview
3
+ ## Visão Geral
4
4
 
5
- Hot-Switch Proxy lets you dynamically redirect API requests to a different endpoint without restarting Claude Code. This is useful when using third-party API proxy services.
5
+ O Proxy de Troca Rápida permite redirecionar dinamicamente as requisições de API para um endpoint diferente sem reiniciar o Claude Code. Isso é útil ao usar serviços de proxy de API de terceiros.
6
6
 
7
- > ⚠️ Do not use this feature if you are a Claude Max subscriber.
7
+ > ⚠️ Não use este recurso se você for assinante do Claude Max.
8
8
 
9
- ## Fields
9
+ ## Campos
10
10
 
11
- | Field | Required | Description |
12
- |-------|----------|-------------|
13
- | **Name** | ✅ | Display name for this proxy, used to identify it |
14
- | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
- | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
11
+ | Campo | Obrigatório | Descrição |
12
+ |-------|-------------|-----------|
13
+ | **Name** | ✅ | Nome de exibição deste proxy, usado para identificá-lo |
14
+ | **Base URL** | ✅ | URL base do serviço de API (ex. `https://api.example.com`). A origem original da requisição será substituída |
15
+ | **API Key** | ✅ | Chave de API do serviço de proxy, substitui a autenticação original |
16
+ | **ANTHROPIC_MODEL** | ❌ | Modelo primário. Requisições cujo modelo pertence à família `fable` / `mythos` são reescritas para este |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Estendido: requisições cujo modelo contém `opus` são reescritas para este |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Estendido: requisições cujo modelo contém `sonnet` são reescritas para este |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Estendido: requisições cujo modelo contém `haiku` são reescritas para este |
20
+ | **Effort Level** | ❌ | Injeta `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) no corpo da requisição. Deixe como "Default" para ignorar |
18
21
 
19
- ## How It Works
22
+ A correspondência de modelo é um teste de substring sem distinção entre maiúsculas e minúsculas no campo `model` da requisição, de modo que qualquer versão (ex. `claude-opus-4-8`, um futuro `claude-opus-5`) mapeia para a mesma família sem reconfiguração. Um campo de família vazio significa que essa família permanece inalterada; uma família não reconhecida passa sem modificação.
20
23
 
21
- When a proxy is active, `server/interceptor.js` performs the following before each API request:
24
+ ## Como Funciona
22
25
 
23
- 1. **URL Rewrite** Replaces the request origin with the proxy's Base URL
24
- 2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
26
+ Quando um proxy está ativo, o `server/interceptor.js` executa o seguinte antes de cada requisição de API:
26
27
 
27
- ## Config File
28
+ 1. **URL Rewrite** — Substitui a origem da requisição pela Base URL do proxy
29
+ 2. **Auth Replace** — Substitui o cabeçalho `x-api-key` ou `Authorization` pela API Key do proxy
30
+ 3. **Model Replace** — Reescreve o campo `model` do corpo da requisição por família (opus/sonnet/haiku → o campo correspondente; fable/mythos → `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — Se um nível de effort estiver definido, injeta `output_config.effort` (ignorado para requisições `count_tokens` / heartbeat)
28
32
 
29
- Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder icon in the title to open the directory:
33
+ ## Arquivo de Configuração
34
+
35
+ A configuração é armazenada em `~/.claude/cc-viewer/profile.json`. Clique no ícone de pasta no título para abrir o diretório:
30
36
 
31
37
  ```json
32
38
  {
@@ -38,13 +44,17 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
46
55
  ```
47
56
 
48
- - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
- - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
50
- - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
57
+ - `active` — ID do perfil atual. Defina como `"max"` para conexão direta (sem proxy)
58
+ - `profiles` — Lista de perfis. `id: "max"` é integrado e não pode ser excluído
59
+ - Perfis legados que usam `models` / `activeModel` são migrados automaticamente para `ANTHROPIC_MODEL` no carregamento
60
+ - As alterações entram em vigor em ~1,5 segundos (monitorado via `fs.watchFile`), sem necessidade de reiniciar
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 系列映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 系列使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 系列使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 系列使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 等级 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | Primary model. Requests whose model belongs to the `fable` / `mythos` family are rewritten to this |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Extended: requests whose model contains `opus` are rewritten to this |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Extended: requests whose model contains `sonnet` are rewritten to this |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Extended: requests whose model contains `haiku` are rewritten to this |
20
+ | **Effort Level** | ❌ | Injects `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) into the request body. Leave as "Default" to skip |
21
+
22
+ Model matching is a case-insensitive substring test on the request's `model` field, so any version (e.g. `claude-opus-4-8`, a future `claude-opus-5`) maps to the same family with no reconfiguration. An empty family field means that family is left unchanged; an unrecognized family is passed through untouched.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — Rewrites the request body `model` by family (opus/sonnet/haiku the matching field; fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — If an effort level is set, injects `output_config.effort` (skipped for `count_tokens` / heartbeat requests)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - Legacy profiles using `models` / `activeModel` are auto-migrated to `ANTHROPIC_MODEL` on load
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 家族映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 家族使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 家族使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 家族使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 级别 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | Primary model. Requests whose model belongs to the `fable` / `mythos` family are rewritten to this |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Extended: requests whose model contains `opus` are rewritten to this |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Extended: requests whose model contains `sonnet` are rewritten to this |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Extended: requests whose model contains `haiku` are rewritten to this |
20
+ | **Effort Level** | ❌ | Injects `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) into the request body. Leave as "Default" to skip |
21
+
22
+ Model matching is a case-insensitive substring test on the request's `model` field, so any version (e.g. `claude-opus-4-8`, a future `claude-opus-5`) maps to the same family with no reconfiguration. An empty family field means that family is left unchanged; an unrecognized family is passed through untouched.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — Rewrites the request body `model` by family (opus/sonnet/haiku the matching field; fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — If an effort level is set, injects `output_config.effort` (skipped for `count_tokens` / heartbeat requests)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - Legacy profiles using `models` / `activeModel` are auto-migrated to `ANTHROPIC_MODEL` on load
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 家族映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 家族使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 家族使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 家族使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 级别 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -1,32 +1,38 @@
1
- # Hot-Switch Proxy
1
+ # Anlık Geçiş Proxy'si
2
2
 
3
- ## Overview
3
+ ## Genel Bakış
4
4
 
5
- Hot-Switch Proxy lets you dynamically redirect API requests to a different endpoint without restarting Claude Code. This is useful when using third-party API proxy services.
5
+ Anlık Geçiş Proxy'si, Claude Code'u yeniden başlatmadan API isteklerini dinamik olarak farklı bir noktaya yönlendirmenizi sağlar. Üçüncü taraf API proxy hizmetleri kullanırken faydalıdır.
6
6
 
7
- > ⚠️ Do not use this feature if you are a Claude Max subscriber.
7
+ > ⚠️ Claude Max aboneliğiniz varsa bu özelliği kullanmayın.
8
8
 
9
- ## Fields
9
+ ## Alanlar
10
10
 
11
- | Field | Required | Description |
12
- |-------|----------|-------------|
13
- | **Name** | ✅ | Display name for this proxy, used to identify it |
14
- | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
- | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
11
+ | Alan | Zorunlu | Açıklama |
12
+ |------|---------|----------|
13
+ | **Name** | ✅ | Bu proxy'yi tanımlamak için kullanılan görünen ad |
14
+ | **Base URL** | ✅ | API hizmetinin temel URL'si (ör. `https://api.example.com`). Orijinal istek kaynağı bununla değiştirilir |
15
+ | **API Key** | ✅ | Proxy hizmetinin API anahtarı, orijinal kimlik doğrulamanın yerini alır |
16
+ | **ANTHROPIC_MODEL** | ❌ | Birincil model. Modeli `fable` / `mythos` ailesine ait olan istekler buna yeniden yazılır |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Genişletilmiş: modeli `opus` içeren istekler buna yeniden yazılır |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Genişletilmiş: modeli `sonnet` içeren istekler buna yeniden yazılır |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Genişletilmiş: modeli `haiku` içeren istekler buna yeniden yazılır |
20
+ | **Effort Level** | ❌ | İstek gövdesine `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) ekler. Atlamak için "Default" olarak bırakın |
18
21
 
19
- ## How It Works
22
+ Model eşleştirme, isteğin `model` alanı üzerinde büyük/küçük harfe duyarsız bir alt dize testidir; böylece herhangi bir sürüm (ör. `claude-opus-4-8`, gelecekteki bir `claude-opus-5`) yeniden yapılandırma gerektirmeden aynı aileye eşlenir. Boş bir aile alanı, o ailenin değiştirilmeden bırakıldığı anlamına gelir; tanınmayan bir aile olduğu gibi geçirilir.
20
23
 
21
- When a proxy is active, `server/interceptor.js` performs the following before each API request:
24
+ ## Nasıl Çalışır
22
25
 
23
- 1. **URL Rewrite** Replaces the request origin with the proxy's Base URL
24
- 2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
26
+ Bir proxy etkin olduğunda, `server/interceptor.js` her API isteğinden önce şunları yapar:
26
27
 
27
- ## Config File
28
+ 1. **URL Rewrite** — İstek kaynağını proxy'nin Base URL'si ile değiştirir
29
+ 2. **Auth Replace** — `x-api-key` veya `Authorization` başlığını proxy'nin API Anahtarı ile değiştirir
30
+ 3. **Model Replace** — İstek gövdesindeki `model` alanını aileye göre yeniden yazar (opus/sonnet/haiku → eşleşen alan; fable/mythos → `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — Bir effort seviyesi ayarlanmışsa `output_config.effort` ekler (`count_tokens` / heartbeat istekleri için atlanır)
28
32
 
29
- Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder icon in the title to open the directory:
33
+ ## Yapılandırma Dosyası
34
+
35
+ Yapılandırma `~/.claude/cc-viewer/profile.json` konumunda saklanır. Dizini açmak için başlıktaki klasör simgesine tıklayın:
30
36
 
31
37
  ```json
32
38
  {
@@ -38,13 +44,17 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
46
55
  ```
47
56
 
48
- - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
- - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
50
- - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
57
+ - `active` — Mevcut profilin ID'si. Doğrudan bağlantı (proxy yok) için `"max"` olarak ayarlayın
58
+ - `profiles` — Profil listesi. `id: "max"` yerleşiktir ve silinemez
59
+ - `models` / `activeModel` kullanan eski profiller, yüklenirken otomatik olarak `ANTHROPIC_MODEL`'e taşınır
60
+ - Değişiklikler ~1,5 saniye içinde etkili olur (`fs.watchFile` ile izlenir), yeniden başlatma gerekmez
@@ -165,8 +165,11 @@ claude() { ... }
165
165
  | `name` | 显示名称 |
166
166
  | `baseURL` | 代理 API 地址(替换请求 origin) |
167
167
  | `apiKey` | 代理 API 密钥(替换认证头) |
168
- | `models` | 可用模型列表 |
169
- | `activeModel` | 当前选中的模型 |
168
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 系列映射到此) |
169
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 系列使用的模型(扩展) |
170
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 系列使用的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 系列使用的模型(扩展) |
172
+ | `effort` | 强制的 `output_config.effort` 等级 |
170
173
 
171
174
  ## 九、插件系统
172
175
 
@@ -13,8 +13,13 @@ Hot-Switch Proxy lets you dynamically redirect API requests to a different endpo
13
13
  | **Name** | ✅ | Display name for this proxy, used to identify it |
14
14
  | **Base URL** | ✅ | Base URL of the API service (e.g. `https://api.example.com`). The original request origin will be replaced |
15
15
  | **API Key** | ✅ | API key for the proxy service, replaces the original authentication |
16
- | **Models** | ❌ | Comma-separated list of models supported by this proxy (e.g. `model-a, model-b`) |
17
- | **Active Model** | ❌ | Select the active model from the list. The `model` field in requests will be replaced |
16
+ | **ANTHROPIC_MODEL** | ❌ | Primary model. Requests whose model belongs to the `fable` / `mythos` family are rewritten to this |
17
+ | **ANTHROPIC_DEFAULT_OPUS_MODEL** | ❌ | Extended: requests whose model contains `opus` are rewritten to this |
18
+ | **ANTHROPIC_DEFAULT_SONNET_MODEL** | ❌ | Extended: requests whose model contains `sonnet` are rewritten to this |
19
+ | **ANTHROPIC_DEFAULT_HAIKU_MODEL** | ❌ | Extended: requests whose model contains `haiku` are rewritten to this |
20
+ | **Effort Level** | ❌ | Injects `output_config.effort` (`low`/`medium`/`high`/`xhigh`/`max`) into the request body. Leave as "Default" to skip |
21
+
22
+ Model matching is a case-insensitive substring test on the request's `model` field, so any version (e.g. `claude-opus-4-8`, a future `claude-opus-5`) maps to the same family with no reconfiguration. An empty family field means that family is left unchanged; an unrecognized family is passed through untouched.
18
23
 
19
24
  ## How It Works
20
25
 
@@ -22,7 +27,8 @@ When a proxy is active, `server/interceptor.js` performs the following before ea
22
27
 
23
28
  1. **URL Rewrite** — Replaces the request origin with the proxy's Base URL
24
29
  2. **Auth Replace** — Replaces `x-api-key` or `Authorization` header with the proxy's API Key
25
- 3. **Model Replace** — If an active model is set, replaces the `model` field in the request body
30
+ 3. **Model Replace** — Rewrites the request body `model` by family (opus/sonnet/haiku the matching field; fable/mythos `ANTHROPIC_MODEL`)
31
+ 4. **Effort Inject** — If an effort level is set, injects `output_config.effort` (skipped for `count_tokens` / heartbeat requests)
26
32
 
27
33
  ## Config File
28
34
 
@@ -38,8 +44,11 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
38
44
  "name": "My Proxy",
39
45
  "baseURL": "https://api.example.com",
40
46
  "apiKey": "sk-xxx",
41
- "models": ["model-a", "model-b"],
42
- "activeModel": "model-a"
47
+ "ANTHROPIC_MODEL": "model-primary",
48
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
49
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
50
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
51
+ "effort": "max"
43
52
  }
44
53
  ]
45
54
  }
@@ -47,4 +56,5 @@ Configuration is stored at `~/.claude/cc-viewer/profile.json`. Click the folder
47
56
 
48
57
  - `active` — ID of the current profile. Set to `"max"` for direct connection (no proxy)
49
58
  - `profiles` — Profile list. `id: "max"` is built-in and cannot be deleted
59
+ - Legacy profiles using `models` / `activeModel` are auto-migrated to `ANTHROPIC_MODEL` on load
50
60
  - Changes take effect within ~1.5 seconds (monitored via `fs.watchFile`), no restart needed
@@ -166,8 +166,11 @@ claude() { ... }
166
166
  | `name` | 显示名称 |
167
167
  | `baseURL` | 代理 API 地址(替换请求 origin) |
168
168
  | `apiKey` | 代理 API 密钥(替换认证头) |
169
- | `models` | 可用模型列表 |
170
- | `activeModel` | 当前选中的模型 |
169
+ | `ANTHROPIC_MODEL` | 主模型(fable/mythos 家族映射到此) |
170
+ | `ANTHROPIC_DEFAULT_OPUS_MODEL` | opus 家族对应的模型(扩展) |
171
+ | `ANTHROPIC_DEFAULT_SONNET_MODEL` | sonnet 家族对应的模型(扩展) |
172
+ | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | haiku 家族对应的模型(扩展) |
173
+ | `effort` | 强制的 `output_config.effort` 等级 |
171
174
 
172
175
  ## 九、插件系统
173
176