-
-
- setCustomUa(v => !v)} />
+ {isCodexProvider ? (
+
+
+
+ {CODEX_COMMAND}
+
+
+
o.value === model)?.hint}
+ >
+
+ {codexCustomModel && (
+ setModel(e.target.value)}
+ placeholder="例如 gpt-5.5"
+ className={`${INPUT_CLS} mt-2`}
+ />
+ )}
-
- {customUa
- ? '当前使用下方自定义 UA 调用 AI API。'
- : '默认已使用内置浏览器标识,可绕过 Cloudflare 等 CDN/WAF 拦截。仅在默认标识被拦截时才需开启自定义。'}
-
- {customUa && (
-
+
+
+
+
+ setApiKey(e.target.value)} placeholder={configured ? `${s?.ai_api_key_masked} · 留空不修改` : 'sk-...'} className={`${INPUT_CLS} pr-9`} />
+
+
+
+
+
+
+
+
+
+
+
+ setCustomUa(v => !v)} />
+
+
+ {customUa && (
+
+ setUserAgent(e.target.value)} placeholder="粘贴浏览器 User-Agent" className={`${INPUT_CLS} flex-1`} />
+
+
+ )}
+
+ >
+ )}
- {/* ===== 安全提示 ===== */}
- API Key 仅保存在本机项目文件,不上传至任何服务器。请妥善保管,勿泄露给他人。
+ {isCodexProvider
+ ? 'Codex CLI 模式会复用本机已登录的 Codex 账户, 个股、财务、复盘等分析上下文会发送给 OpenAI/Codex。保存即表示确认仅在本机或可信内网使用。'
+ : 'API Key 仅保存在本机项目文件中, 不会上传到任何服务器。请妥善保管。'}
- {/* ===== 保存 / 清空 ===== */}
-
- {/* 二次确认:清空 AI 配置 */}
{confirmClear && (
setConfirmClear(false)} />
清空 AI 配置
- 将清除 API Key、API 地址、模型等所有 AI 配置。自定义请求头(User-Agent)会保留。清空后相关 AI 功能将不可用,需重新配置。
+ 这会清空已保存的 provider、API Key、API 地址、模型和 Codex CLI 命令。之后可以重新配置。
- setConfirmClear(false)}
- className="px-3 py-1.5 rounded-btn bg-elevated text-secondary hover:bg-elevated/80 text-sm transition-colors">
+ setConfirmClear(false)} className="px-3 py-1.5 rounded-btn bg-elevated text-secondary hover:bg-elevated/80 text-sm transition-colors">
取消
- clear.mutate()} disabled={clear.isPending}
- className="px-3 py-1.5 rounded-btn bg-danger/15 text-danger hover:bg-danger/25 text-sm font-medium transition-colors disabled:opacity-50">
- {clear.isPending ? '清空中...' : '确认清空'}
+ clear.mutate()} disabled={clear.isPending} className="px-3 py-1.5 rounded-btn bg-danger/15 text-danger hover:bg-danger/25 text-sm font-medium transition-colors disabled:opacity-50">
+ {clear.isPending ? '清空中...' : '确认'}
@@ -323,7 +369,6 @@ export function SettingsAIPanel() {
)
}
-
// ===== 通用卡片(与 Keys 页风格统一) =====
interface CardProps {