Skip to content
Merged
2 changes: 1 addition & 1 deletion messages/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -641,8 +641,8 @@
},
"disclaimer": {
"title": "Notice",
"resultReference": "[IMPORTANT] Results may vary by provider and are for reference only",
"realRequest": "This test sends a real request to the provider and may consume a small quota",
"resultReference": "Results may vary by provider and are for reference only",
"confirmConfig": "Please verify provider URL, API key, and model configuration"
}
},
Expand Down
2 changes: 1 addition & 1 deletion messages/zh-CN/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,8 @@
},
"disclaimer": {
"title": "注意",
"resultReference": "【重要】因各家供应商情况不同,测试结果仅供参考,不代表实际调用效果",
"realRequest": "测试将向供应商发送真实请求,可能消耗少量额度",
"resultReference": "因各家供应商情况不同,测试结果仅供参考,不代表实际调用效果",
"confirmConfig": "请确认供应商 URL、API 密钥及模型配置正确"
}
},
Expand Down
2 changes: 1 addition & 1 deletion messages/zh-TW/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,8 @@
"failed": "失敗",
"disclaimer": {
"title": "注意",
"resultReference": "【重要】因各家供應商情況不同,測試結果僅供參考,不代表實際呼叫效果",
"realRequest": "測試將向供應商發送真實請求,可能消耗少量額度",
"resultReference": "因各家供應商情況不同,測試結果僅供參考,不代表實際呼叫效果",
"confirmConfig": "請確認供應商 URL、API 金鑰及模型設定正確"
}
},
Expand Down
10 changes: 7 additions & 3 deletions src/actions/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1615,6 +1615,7 @@ async function executeProviderApiTest(
headers: (apiKey: string, context: { providerUrl: string }) => Record<string, string>;
body: (model: string) => unknown;
successMessage: string;
userAgent: string; // 渠道特定的 User-Agent
extract: (result: ProviderApiResponse) => {
model?: string;
usage?: Record<string, unknown>;
Expand Down Expand Up @@ -1680,9 +1681,8 @@ async function executeProviderApiTest(
method: "POST",
headers: {
...options.headers(data.apiKey, { providerUrl: normalizedProviderUrl }),
// 使用更完整的请求头,模拟真实 Claude CLI 行为
// 避免被 Cloudflare Bot 检测拦截
"User-Agent": "claude-cli/2.0.33 (external, cli)",
// 使用渠道特定的 User-Agent,避免被 Cloudflare Bot 检测拦截
"User-Agent": options.userAgent,
Accept: "application/json, text/event-stream",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
Expand Down Expand Up @@ -2027,6 +2027,7 @@ export async function testProviderAnthropicMessages(
stream: false, // 显式禁用流式响应,避免 Cloudflare 520 错误
messages: [{ role: "user", content: API_TEST_CONFIG.TEST_PROMPT }],
}),
userAgent: "claude-cli/2.0.50 (external, cli)",
successMessage: "Anthropic Messages API 测试成功",
extract: (result) => ({
model: "model" in result ? result.model : undefined,
Expand Down Expand Up @@ -2060,6 +2061,7 @@ export async function testProviderOpenAIChatCompletions(
{ role: "user", content: "你好" },
],
}),
userAgent: "OpenAI/NodeJS/3.2.1",
successMessage: "OpenAI Chat Completions API 测试成功",
extract: (result) => ({
model: "model" in result ? result.model : undefined,
Expand Down Expand Up @@ -2102,6 +2104,7 @@ export async function testProviderOpenAIResponses(
},
],
}),
userAgent: "codex_cli_rs/0.63.0",
successMessage: "OpenAI Responses API 测试成功",
extract: (result) => ({
model: "model" in result ? result.model : undefined,
Expand Down Expand Up @@ -2159,6 +2162,7 @@ export async function testProviderGemini(
},
};
},
userAgent: "GeminiCLI/v0.17.1 (platform; arch)",
successMessage: "Gemini API 测试成功",
extract: (result) => {
const geminiResult = result as GeminiResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export function AddProviderDialog({ enableMultiProviderTypes }: AddProviderDialo
<ServerCog className="h-4 w-4" /> 新增服务商
</Button>
</DialogTrigger>
<DialogContent className="max-w-4xl max-h-[90vh] overflow-y-auto">
<DialogContent className="max-w-6xl max-h-[90vh] overflow-y-auto">
<FormErrorBoundary>
<ProviderForm
mode="create"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -396,8 +396,8 @@ export function ApiTestButton({
<div className="rounded-md border border-amber-200 bg-amber-50 p-3 text-xs text-amber-800 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-200">
<div className="font-medium mb-1">⚠️ {t("disclaimer.title")}</div>
<div className="space-y-1 text-amber-700 dark:text-amber-300">
<div>• {t("disclaimer.realRequest")}</div>
<div>• {t("disclaimer.resultReference")}</div>
<div>• {t("disclaimer.realRequest")}</div>
<div>• {t("disclaimer.confirmConfig")}</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ export function ProviderRichListItem({

{/* 编辑 Dialog */}
<Dialog open={openEdit} onOpenChange={setOpenEdit}>
<DialogContent className="max-w-4xl max-h-[90vh] overflow-y-auto">
<DialogContent className="max-w-6xl max-h-[90vh] overflow-y-auto">
<FormErrorBoundary>
<ProviderForm
mode="edit"
Expand All @@ -477,7 +477,7 @@ export function ProviderRichListItem({

{/* 克隆 Dialog */}
<Dialog open={openClone} onOpenChange={setOpenClone}>
<DialogContent className="max-w-4xl max-h-[90vh] overflow-y-auto">
<DialogContent className="max-w-6xl max-h-[90vh] overflow-y-auto">
<FormErrorBoundary>
<ProviderForm
mode="create"
Expand Down
Loading