Skip to content

Commit 7ba580f

Browse files
committed
feat: 新增api延迟测试与自动择优线路
1 parent 74f3bd2 commit 7ba580f

File tree

10 files changed

+947
-46
lines changed

10 files changed

+947
-46
lines changed

README.md

Lines changed: 144 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22

33
[English](./README_EN.md) | 中文
44

5-
Claude Code settings.json中key自动配置工具,方便API_KEY、AUTH_TOKEN以及多Model之间快速切换
5+
Claude Code settings.json中key自动配置工具,方便多个API_KEY、AUTH_TOKEN以及多Model之间快速切换
66

77
## 功能特性
88

99
- 🚀 **一键切换** - 轻松在不同 Claude API 配置间切换
10+
-**延迟测试** - 快速同时测试所有API配置,延迟智能排序显示
11+
- 🎯 **自动优选** - 自动测试并切换到延迟最低的最优配置
1012
- 🔒 **安全备份** - 修改前自动备份 settings.json 文件
1113
- 📝 **友好提示** - 详细的错误信息和操作指导
12-
- 🎯 **智能识别** - 自动识别当前使用的配置
14+
- 🧠 **智能识别** - 自动识别当前使用的配置和最优路线
1315
- 🛡️ **数据保护** - 敏感信息脱敏显示
1416
- 📄 **多格式支持** - 支持 JSON、JSON5、YAML、TOML 配置文件
17+
- 🔧 **数组支持** - 支持多个URL、Key、Token、Model等字段的数组配置
1518

1619
## 安装
1720

@@ -36,25 +39,31 @@ ccapi -v
3639
```bash
3740
例如:
3841
# 同时设置两个路径
39-
ccapi set --settings /Users/4xian/.claude/settings.json --api /Users/4xian/Desktop/api.json
42+
ccapi set --settings ~/.claude/settings.json --api /Users/4xian/Desktop/api.json5
4043

41-
# 或分别设置
42-
ccapi set --settings /Users/4xian/.claude/settings.json
43-
ccapi set --api /Users/4xian/Desktop/api.json
44+
# 分别设置
45+
ccapi set --settings ~/.claude/settings.json
46+
ccapi set --api /Users/4xian/Desktop/api.json5
47+
48+
# 直接在配置文件中修改路径
49+
~/.ccapi-config.json 文件中(与.claude同级),有存储路径的变量,直接修改即可
50+
{
51+
"settingsPath": "~/.claude/settings.json",
52+
"apiConfigPath": "/Users/4xian/Desktop/api.json5",
53+
}
4454

4555
# 查询当前配置文件路径
4656
ccapi set
4757
```
4858

4959
### 3. 自定义API配置文件格式
5060

51-
现在支持多种配置文件格式:**JSON、JSON5、YAML、TOML**
52-
53-
创建一个配置文件(如 `api.json``api.yaml``api.jsonc``api.json5``api.toml`),格式如下:
61+
支持多种配置文件格式:**JSON、JSON5、YAML、TOML**
62+
创建一个配置文件(如 `api.json``api.yaml``api.json5``api.toml`),格式如下:
5463

5564
**JSON 格式示例:**
5665

57-
```json
66+
```json5
5867
{
5968
"openrouter": {
6069
"url": "https://api.openrouter.ai",
@@ -64,15 +73,12 @@ ccapi set
6473
"timeout": 600000,
6574
"tokens": 65000
6675
},
76+
// 推荐使用数组形式,可进行多个配置
6777
"multiconfig": {
6878
"url": [
6979
"https://api.example1.com",
7080
"https://api.example2.com"
7181
],
72-
"key": [
73-
"sk-key1-for-api1",
74-
"sk-key2-for-api2"
75-
],
7682
"token": [
7783
"token1-for-auth",
7884
"token2-for-auth"
@@ -105,9 +111,6 @@ multiconfig:
105111
url:
106112
- "https://api.example1.com"
107113
- "https://api.example2.com"
108-
key:
109-
- "sk-key1-for-api1"
110-
- "sk-key2-for-api2"
111114
token:
112115
- "token1-for-auth"
113116
- "token2-for-auth"
@@ -152,10 +155,6 @@ url = [
152155
"https://api.example1.com",
153156
"https://api.example2.com"
154157
]
155-
key = [
156-
"sk-key1-for-api1",
157-
"sk-key2-for-api2"
158-
]
159158
token = [
160159
"token1-for-auth",
161160
"token2-for-auth"
@@ -191,7 +190,7 @@ fast = [
191190
- **字符串格式**: 直接指定一个快速模型
192191
- **数组格式**: 可指定多个快速模型,支持通过索引切换
193192
- `timeout`: 请求超时时间(非必需,默认为官方600000ms)
194-
- `tokens`: 最大输出令牌数(非必需,默认为官方
193+
- `tokens`: 最大输出令牌数(非必需,默认以官方为准
195194
- `http`: 为网络连接指定 HTTP 代理服务器
196195
- `https`: 为网络连接指定 HTTPS 代理服务器
197196

@@ -262,9 +261,6 @@ ccapi use multiconfig -t 2 # 只切换到某个Token
262261
ccapi use multiconfig -u 1 # 只切换到某个URL
263262
ccapi use multiconfig -m 3 # 只切换到某个Model
264263
ccapi use multiconfig -f 2 # 只切换到某个Fast Model索引
265-
266-
# 组合使用示例
267-
ccapi use multiconfig -u 1 -k 1 -m 1 -f 2
268264
```
269265

270266
**参数说明:**
@@ -278,6 +274,129 @@ ccapi use multiconfig -u 1 -k 1 -m 1 -f 2
278274
- 不指定索引时默认使用数组的第一个元素
279275
- 可以任意组合使用这些参数
280276

277+
### 6. 测试API延迟
278+
279+
#### 测试所有配置(默认并行模式)
280+
281+
```bash
282+
# 并行测试(快速,推荐)
283+
ccapi test
284+
285+
# 串行测试(逐一测试)
286+
ccapi test -s
287+
```
288+
289+
#### 测试指定配置
290+
291+
```bash
292+
# 并行测试指定配置
293+
ccapi test openrouter
294+
295+
# 串行测试指定配置
296+
ccapi test -s openrouter
297+
```
298+
299+
**测试模式说明:**
300+
301+
- **并行测试(默认)**: 同时测试所有URL,速度快,结果按配置的最佳延迟排序显示
302+
- **串行测试(-s选项)**: 逐个测试URL,按配置分组显示
303+
304+
**测试说明:**
305+
306+
- **测试超时时间**:默认为5秒,可在 ~/.ccapi-config.json 文件中新增变量控制超时,如:testTimeout: 10000
307+
- **测试返回的结果**:默认不显示,由于厂商不同,返回结果仅供参考,返回错误不代表不能在claude code中使用,只需关注延迟时间就行,可在 ~/.ccapi-config.json 文件中新增变量是否显示结果,如:testResponse: true
308+
309+
```json5
310+
{
311+
"settingsPath": "~/.claude/settings.json",
312+
"apiConfigPath": "/Users/4xian/Desktop/api.json5",
313+
"testTimeout": 5000,
314+
"testResponse": false
315+
}
316+
```
317+
318+
- 对于数组格式的url,会测试所有URL地址,数组配置的url内部不会按延迟排序,保持原有的url顺序
319+
- 配置按最佳延迟排序,延迟最低的配置排在前面
320+
- 显示每个配置的最优路线(最快的URL地址)
321+
322+
**并行测试结果示例:**
323+
324+
```text
325+
测试结果(按延迟从低到高):
326+
327+
【xxx】(最优路线: xxx/claude)
328+
1.[https://xxx/claude] ● 628ms
329+
330+
【multiconfig】(最优路线: api.example1.com)
331+
1.[https://api.example1.com] ● 856ms
332+
2.[https://api.example2.com] ● 892ms
333+
334+
```
335+
336+
### 7. 自动选择最优配置
337+
338+
#### 基本自动选择
339+
340+
```bash
341+
# 会先进行测试,然后选择最优的配置进行自动切换
342+
ccapi auto
343+
```
344+
345+
#### 多命令配合执行
346+
347+
```bash
348+
# 常用于组合命令,这样每次启动claude前都会选择最优路线
349+
ccapi auto && claude
350+
351+
# 也可以自定义别名,每次使用别名启动
352+
alias cc=ccapi auto && claude
353+
cc
354+
```
355+
356+
**功能说明:**
357+
358+
- **使用并行测试**:快速同时测试所有API配置的延迟
359+
- **智能选择**:自动选择全局延迟最低的配置并切换
360+
- **注意事项**
361+
- 对于数组格式的配置,自动选择最优URL
362+
- 若KEY/TOKEN为数组,则会对齐最优URL索引进行搭配,比如:最优URL为索引1,KEY/TOKEN也会选择索引1,最优URL为2,KEY/TOKEN也会选择索引2,若不想自动切换KEY/TOKEN,将其始终配为一个即可
363+
- **趣味搭配**
364+
- 由于自动配置的对齐规则,可以在一个配置中进行多厂商配置,比如:
365+
366+
```json5
367+
{
368+
"aaa": {
369+
"url": [
370+
"https: 第一个厂商.com",
371+
"https: 第二个厂商.com",
372+
"https: 第三个厂商.com",
373+
],
374+
"token": [
375+
"第一个厂商的token",
376+
"第二个厂商的token",
377+
"第三个厂商的token",
378+
],
379+
"model": ["xxx"]
380+
},
381+
"bbb": {
382+
"url": [
383+
"https: 第一个厂商.com",
384+
"https: 第二个厂商.com",
385+
"https: 第三个厂商.com",
386+
],
387+
"key": [
388+
"第一个厂商的key",
389+
"第二个厂商的key",
390+
"第三个厂商的key",
391+
],
392+
"model": ["xxx"]
393+
},
394+
}
395+
```
396+
397+
- 这样自动选择第一个厂商的同时会自动选择第一个厂商的token,选择第二个厂商的同时会自动选择第二个厂商的token...
398+
- 注意token类的厂商放一起,key类的厂商放一起
399+
281400
## 系统要求
282401

283402
- Node.js >= 14.0.0

0 commit comments

Comments
 (0)