@chenpu17/cc-gw 0.3.11 → 0.3.13

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 (27) hide show
  1. package/README.md +26 -1
  2. package/package.json +1 -1
  3. package/src/cli/dist/index.js +1 -0
  4. package/src/server/dist/index.js +2451 -208
  5. package/src/web/dist/assets/{About-DmfYXdTi.js → About-AtNnIQdC.js} +2 -2
  6. package/src/web/dist/assets/{ApiKeys-Bq84uD5O.js → ApiKeys-C0HThTh3.js} +1 -1
  7. package/src/web/dist/assets/{Button-B4UYWk6z.js → Button-BILWXCdK.js} +1 -1
  8. package/src/web/dist/assets/{Dashboard-CJmps0fW.js → Dashboard-MoDWKsK7.js} +1 -1
  9. package/src/web/dist/assets/{FormField-DKIC96zy.js → FormField-CQdheUGn.js} +1 -1
  10. package/src/web/dist/assets/{Help-C7fFCpNH.js → Help-_WE0-0d_.js} +1 -1
  11. package/src/web/dist/assets/{Input-Cr1GbVY7.js → Input-BNPjbXjl.js} +1 -1
  12. package/src/web/dist/assets/{Login-f_-O93Uo.js → Login-fnBtj3Wf.js} +1 -1
  13. package/src/web/dist/assets/{Logs-CyN3g8z0.js → Logs-u8JddAMA.js} +1 -1
  14. package/src/web/dist/assets/ModelManagement-B5GXkgZG.js +1 -0
  15. package/src/web/dist/assets/{PageSection-eOpSKdGw.js → PageSection-BSlxJLSp.js} +1 -1
  16. package/src/web/dist/assets/Settings-B7l_r0Os.js +1 -0
  17. package/src/web/dist/assets/{StatusBadge-CFXAJ2QF.js → StatusBadge-C2HAoly7.js} +1 -1
  18. package/src/web/dist/assets/{copy-Br9n1n5X.js → copy-29mhVWV7.js} +1 -1
  19. package/src/web/dist/assets/index-BfK_4zVV.css +1 -0
  20. package/src/web/dist/assets/{index-DtOsr5xX.js → index-C9B4ue7v.js} +1 -1
  21. package/src/web/dist/assets/{index-ChT0XT-w.js → index-jumaCK3B.js} +4 -4
  22. package/src/web/dist/assets/{info-Cnwm2-vh.js → info-m01xBxq8.js} +1 -1
  23. package/src/web/dist/assets/{useApiQuery-mBT5M_Q6.js → useApiQuery-Ckrkcu4L.js} +1 -1
  24. package/src/web/dist/index.html +2 -2
  25. package/src/web/dist/assets/ModelManagement-B11a4hW3.js +0 -1
  26. package/src/web/dist/assets/Settings-BUNwIquC.js +0 -1
  27. package/src/web/dist/assets/index-BOv43c_r.css +0 -1
package/README.md CHANGED
@@ -8,6 +8,9 @@ cc-gw 是一个面向 Claude Code 与同类客户端的本地多模型网关,
8
8
  - 复刻 Claude API 的流式与工具调用语义
9
9
  - 记录请求日志、Token(含缓存命中)、TTFT/TPOT 等运行指标
10
10
  - 提供可视化 Web 管理台与守护进程 CLI
11
+ - 在同一个 OpenAI 接入点聚合多 Provider / 多模型,兼容 Responses 与 Chat Completions 双协议
12
+
13
+ > **提示(2025-10)**:OpenAI 接入点仍为实验特性,我们会尝试将请求转换为 Anthropic `/v1/messages` 并推断所需 beta 头,但部分专为 Claude Code 适配的代理可能仍返回“暂不支持”。此类模型请直接使用 `/anthropic/v1/messages` 端点。
11
14
 
12
15
  核心组件:
13
16
 
@@ -51,6 +54,7 @@ pnpm --filter @cc-gw/cli exec tsx index.ts start --daemon --port 4100
51
54
  API Key: sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
52
55
  默认模型: claude-3-5-sonnet-20241022
53
56
  ```
57
+ Roo Code / Claude CLI 可通过 OpenAI 接入点访问 Anthropic 模型,但部分第三方代理可能拒绝该路径;若收到“暂不支持”或类似错误,请改用 `/anthropic/v1/messages`。
54
58
  - **Moonshot Kimi**:
55
59
  ```
56
60
  Base URL: https://api.moonshot.cn/v1
@@ -82,10 +86,14 @@ pnpm --filter @cc-gw/cli exec tsx index.ts start --daemon --port 4100
82
86
  export ANTHROPIC_BASE_URL=http://127.0.0.1:4100/anthropic
83
87
  export ANTHROPIC_API_KEY=sk-gw-ide-xxxxxxxxxxxxxxxx
84
88
 
85
- # Codex CLI
89
+ # Codex CLI(Responses API)
86
90
  export OPENAI_BASE_URL=http://127.0.0.1:4100/openai/v1
87
91
  export OPENAI_API_KEY=sk-gw-codex-xxxxxxxxxxxxxxxx
88
92
  export CC_GW_KEY=sk-gw-codex-xxxxxxxxxxxxxxxx
93
+
94
+ # Roo Code / 旧式 OpenAI Chat Completions
95
+ export OPENAI_CHAT_BASE_URL=http://127.0.0.1:4100/openai/v1
96
+ export OPENAI_CHAT_PATH=/chat/completions
89
97
  ```
90
98
 
91
99
  更新完毕后执行 `source ~/.bashrc`(或 `source ~/.zshrc`)让环境变量立即生效。完成后可以马上做一次快速连通性测试:
@@ -117,6 +125,14 @@ codex ask "你好,请介绍一下自己"
117
125
 
118
126
  配置完成后,建议运行 `codex status` 或 `codex chat "测试"` 再确认一次终端输出。
119
127
 
128
+ ##### 5.1 OpenAI 接入点接入说明
129
+
130
+ - **Responses API**:推荐给支持新版 OpenAI Responses(例如 Codex CLI、最新 Agent 工具)的客户端,直接指向 `http://127.0.0.1:4100/openai/v1/responses`,即可自动在下游 Provider 间路由并返回标准 `response` 结构。
131
+ - **Chat Completions API**:针对 Roo Code、OpenAI CLI 等仍使用传统 `POST /v1/chat/completions` 的客户端,现可通过 `http://127.0.0.1:4100/openai/v1/chat/completions` 接入;工具仅需设置 Base URL(例如 Roo Code 的 “OpenAI Compatible” 配置)和 API Key 即可。
132
+ - **注意兼容性**:OpenAI 入口为实验性最佳实践。若下游服务只支持 Claude Code 专用头部,可能仍返回“暂不支持”,此时改用 `/anthropic/v1/messages`。
133
+ - **Anthropic Beta Header**:若上游模型需要 beta 头(例如 Claude 4.5 预览),可设置环境变量 `CC_GW_ANTHROPIC_BETA_<MODEL>`(如 `CC_GW_ANTHROPIC_BETA_CLAUDE_SONNET_4_5_20250929`)或全局 `CC_GW_ANTHROPIC_BETA_ALL`;网关会在转发至 Anthropic 时尝试附加,也会针对 4.5 系列模型进行默认推断。
134
+ - **多模型聚合**:无论使用 Responses 还是 Chat Completions,两种接口都会按配置聚合所有 Provider 模型,`GET /openai/v1/models` 将返回当前可用模型列表及默认 Provider。
135
+
120
136
  #### 步骤 6: 高级配置(可选)
121
137
 
122
138
  ##### 6.1 模型路由配置
@@ -139,10 +155,19 @@ export ANTHROPIC_API_KEY=sk-gw-ide-xxxxxxxxxxxxxxxx
139
155
  export OPENAI_BASE_URL=http://127.0.0.1:4100/openai/v1
140
156
  export OPENAI_API_KEY=sk-gw-codex-xxxxxxxxxxxxxxxx
141
157
  export CC_GW_KEY=sk-gw-codex-xxxxxxxxxxxxxxxx
158
+ # 若需兼容旧版 Chat Completions,可继续暴露聊天端点
159
+ export OPENAI_CHAT_BASE_URL=http://127.0.0.1:4100/openai/v1
160
+ export OPENAI_CHAT_PATH=/chat/completions
161
+ # 针对 Anthropic 新模型可设置 Beta Header(示例)
162
+ export CC_GW_ANTHROPIC_BETA_CLAUDE_SONNET_4_5_20250929=claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14
163
+ export CC_GW_ANTHROPIC_BETA_ALL=claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14
164
+
142
165
  ```
143
166
 
144
167
  然后运行 `direnv allow` 自动加载。
145
168
 
169
+ > ⚠️ 如果 OpenAI 接入点仍返回“暂不支持”,请将客户端改用 `/anthropic/v1/messages` 端点并直接配置 Anthropic Provider。
170
+
146
171
  #### 常见问题排查
147
172
 
148
173
  1. **连接失败**:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chenpu17/cc-gw",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "bin": {
@@ -103,6 +103,7 @@ async function ensureConfigTemplate(port) {
103
103
  defaults: { ...baseDefaults },
104
104
  storeRequestPayloads: true,
105
105
  storeResponsePayloads: true,
106
+ enableRoutingFallback: false,
106
107
  endpointRouting: {
107
108
  anthropic: {
108
109
  defaults: { ...baseDefaults },