From d215816a181e58b7c3f58224b4d777cc8582e872 Mon Sep 17 00:00:00 2001 From: jiesen Date: Sun, 21 Dec 2025 20:12:39 +0700 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20Codex=20Base=20URL=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 +- .../provider-pool/AddCredentialModal.tsx | 3 ++ .../credential-forms/CodexForm.tsx | 45 +++++++++++++++---- src/lib/api/providerPool.ts | 7 ++- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3401438c8..0c6187051 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "proxycast", - "version": "0.14.6", + "version": "0.15.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "proxycast", - "version": "0.14.6", + "version": "0.15.0", "dependencies": { "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", diff --git a/src/components/provider-pool/AddCredentialModal.tsx b/src/components/provider-pool/AddCredentialModal.tsx index d5c35f187..3919181e4 100644 --- a/src/components/provider-pool/AddCredentialModal.tsx +++ b/src/components/provider-pool/AddCredentialModal.tsx @@ -35,6 +35,7 @@ export function AddCredentialModal({ defaultCredsPath[providerType] || "", ); const [projectId, setProjectId] = useState(""); + const [apiBaseUrl, setApiBaseUrl] = useState(""); // API Key 字段 const [apiKey, setApiKey] = useState(""); @@ -77,6 +78,8 @@ export function AddCredentialModal({ name, credsFilePath, setCredsFilePath, + apiBaseUrl, + setApiBaseUrl, onSelectFile: handleSelectFile, loading, setLoading, diff --git a/src/components/provider-pool/credential-forms/CodexForm.tsx b/src/components/provider-pool/credential-forms/CodexForm.tsx index 94f3c1846..b22327a10 100644 --- a/src/components/provider-pool/credential-forms/CodexForm.tsx +++ b/src/components/provider-pool/credential-forms/CodexForm.tsx @@ -14,6 +14,8 @@ interface CodexFormProps { name: string; credsFilePath: string; setCredsFilePath: (path: string) => void; + apiBaseUrl: string; + setApiBaseUrl: (url: string) => void; onSelectFile: () => void; loading: boolean; setLoading: (loading: boolean) => void; @@ -25,6 +27,8 @@ export function CodexForm({ name, credsFilePath, setCredsFilePath, + apiBaseUrl, + setApiBaseUrl, onSelectFile, loading: _loading, setLoading, @@ -87,7 +91,12 @@ export function CodexForm({ try { const trimmedName = name.trim() || undefined; - await providerPoolApi.addCodexOAuth(credsFilePath, trimmedName); + const trimmedUrl = apiBaseUrl.trim() || undefined; + await providerPoolApi.addCodexOAuth( + credsFilePath, + trimmedUrl, + trimmedName, + ); onSuccess(); } catch (e) { setError(e instanceof Error ? e.message : String(e)); @@ -130,13 +139,33 @@ export function CodexForm({ /> ) : ( - +
+ + + {/* API Base URL 输入框 */} +
+ + setApiBaseUrl(e.target.value)} + placeholder="https://yunyi.cfd/codex" + className="w-full rounded-md border bg-background px-3 py-2 text-sm" + /> +

+ 云驿代理默认: + https://yunyi.cfd/codex(留空则使用凭证文件中的配置) +

+
+
)} ), diff --git a/src/lib/api/providerPool.ts b/src/lib/api/providerPool.ts index ae4894b00..43a7418bf 100644 --- a/src/lib/api/providerPool.ts +++ b/src/lib/api/providerPool.ts @@ -333,9 +333,14 @@ export const providerPoolApi = { async addCodexOAuth( credsFilePath: string, + apiBaseUrl?: string, name?: string, ): Promise { - return invoke("add_codex_oauth_credential", { credsFilePath, name }); + return invoke("add_codex_oauth_credential", { + credsFilePath, + apiBaseUrl, + name, + }); }, async addClaudeOAuth(