Update Google Gemini preset to match Claude Official styling: - Rename 'Google' to 'Google Official' - Add GeminiIcon support in preset selector - Add custom theme with Google blue (#4285F4) background - Update PresetTheme type to support 'gemini' icon type Changes: - Add GeminiPresetTheme interface - Add theme config to Google Official preset - Import and render GeminiIcon in ProviderPresetSelector - Update PresetTheme icon type to include 'gemini'
316 lines
9.9 KiB
TypeScript
316 lines
9.9 KiB
TypeScript
/**
|
||
* 预设供应商配置模板
|
||
*/
|
||
import { ProviderCategory } from "../types";
|
||
|
||
export interface TemplateValueConfig {
|
||
label: string;
|
||
placeholder: string;
|
||
defaultValue?: string;
|
||
editorValue: string;
|
||
}
|
||
|
||
/**
|
||
* 预设供应商的视觉主题配置
|
||
*/
|
||
export interface PresetTheme {
|
||
/** 图标类型:'claude' | 'codex' | 'gemini' | 'generic' */
|
||
icon?: "claude" | "codex" | "gemini" | "generic";
|
||
/** 背景色(选中状态),支持 Tailwind 类名或 hex 颜色 */
|
||
backgroundColor?: string;
|
||
/** 文字色(选中状态),支持 Tailwind 类名或 hex 颜色 */
|
||
textColor?: string;
|
||
}
|
||
|
||
export interface ProviderPreset {
|
||
name: string;
|
||
websiteUrl: string;
|
||
// 新增:第三方/聚合等可单独配置获取 API Key 的链接
|
||
apiKeyUrl?: string;
|
||
settingsConfig: object;
|
||
isOfficial?: boolean; // 标识是否为官方预设
|
||
isPartner?: boolean; // 标识是否为商业合作伙伴
|
||
partnerPromotionKey?: string; // 合作伙伴促销信息的 i18n key
|
||
category?: ProviderCategory; // 新增:分类
|
||
// 新增:指定该预设所使用的 API Key 字段名(默认 ANTHROPIC_AUTH_TOKEN)
|
||
apiKeyField?: "ANTHROPIC_AUTH_TOKEN" | "ANTHROPIC_API_KEY";
|
||
// 新增:模板变量定义,用于动态替换配置中的值
|
||
templateValues?: Record<string, TemplateValueConfig>; // editorValue 存储编辑器中的实时输入值
|
||
// 新增:请求地址候选列表(用于地址管理/测速)
|
||
endpointCandidates?: string[];
|
||
// 新增:视觉主题配置
|
||
theme?: PresetTheme;
|
||
}
|
||
|
||
export const providerPresets: ProviderPreset[] = [
|
||
{
|
||
name: "Claude Official",
|
||
websiteUrl: "https://www.anthropic.com/claude-code",
|
||
settingsConfig: {
|
||
env: {},
|
||
},
|
||
isOfficial: true, // 明确标识为官方预设
|
||
category: "official",
|
||
theme: {
|
||
icon: "claude",
|
||
backgroundColor: "#D97757",
|
||
textColor: "#FFFFFF",
|
||
},
|
||
},
|
||
{
|
||
name: "DeepSeek",
|
||
websiteUrl: "https://platform.deepseek.com",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.deepseek.com/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "DeepSeek-V3.2-Exp",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "DeepSeek-V3.2-Exp",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "DeepSeek-V3.2-Exp",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "DeepSeek-V3.2-Exp",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "Zhipu GLM",
|
||
websiteUrl: "https://open.bigmodel.cn",
|
||
apiKeyUrl: "https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://open.bigmodel.cn/api/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "glm-4.6",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-4.5-air",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-4.6",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-4.6",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
isPartner: true, // 合作伙伴
|
||
partnerPromotionKey: "zhipu", // 促销信息 i18n key
|
||
},
|
||
{
|
||
name: "Z.ai GLM",
|
||
websiteUrl: "https://z.ai",
|
||
apiKeyUrl: "https://z.ai/subscribe?ic=8JVLJQFSKB",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.z.ai/api/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "glm-4.6",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-4.5-air",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-4.6",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-4.6",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
isPartner: true, // 合作伙伴
|
||
partnerPromotionKey: "zhipu", // 促销信息 i18n key
|
||
},
|
||
{
|
||
name: "Qwen Coder",
|
||
websiteUrl: "https://bailian.console.aliyun.com",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL:
|
||
"https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "qwen3-max",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "qwen3-max",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "qwen3-max",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "qwen3-max",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "Kimi k2",
|
||
websiteUrl: "https://platform.moonshot.cn/console",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.moonshot.cn/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "kimi-k2-thinking",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-k2-thinking",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-k2-thinking",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-k2-thinking",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "Kimi For Coding",
|
||
websiteUrl: "https://www.kimi.com/coding/docs/",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "kimi-for-coding",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-for-coding",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-for-coding",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-for-coding",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "ModelScope",
|
||
websiteUrl: "https://modelscope.cn",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api-inference.modelscope.cn",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "ZhipuAI/GLM-4.6",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "ZhipuAI/GLM-4.6",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "ZhipuAI/GLM-4.6",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "ZhipuAI/GLM-4.6",
|
||
},
|
||
},
|
||
category: "aggregator",
|
||
},
|
||
{
|
||
name: "KAT-Coder",
|
||
websiteUrl: "https://console.streamlake.ai",
|
||
apiKeyUrl: "https://console.streamlake.ai/console/api-key",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL:
|
||
"https://vanchin.streamlake.ai/api/gateway/v1/endpoints/${ENDPOINT_ID}/claude-code-proxy",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "KAT-Coder-Pro V1",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "KAT-Coder-Air V1",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "KAT-Coder-Pro V1",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "KAT-Coder-Pro V1",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
templateValues: {
|
||
ENDPOINT_ID: {
|
||
label: "Vanchin Endpoint ID",
|
||
placeholder: "ep-xxx-xxx",
|
||
defaultValue: "",
|
||
editorValue: "",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
name: "Longcat",
|
||
websiteUrl: "https://longcat.chat/platform",
|
||
apiKeyUrl: "https://longcat.chat/platform/api_keys",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.longcat.chat/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "LongCat-Flash-Chat",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "LongCat-Flash-Chat",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "LongCat-Flash-Chat",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "LongCat-Flash-Chat",
|
||
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "6000",
|
||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1,
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "MiniMax",
|
||
websiteUrl: "https://platform.minimaxi.com",
|
||
apiKeyUrl: "https://platform.minimaxi.com/user-center/basic-information",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.minimaxi.com/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
API_TIMEOUT_MS: "3000000",
|
||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1,
|
||
ANTHROPIC_MODEL: "MiniMax-M2",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M2",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M2",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M2",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "BaiLing",
|
||
websiteUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/get_started",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://api.tbox.cn/api/anthropic",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
ANTHROPIC_MODEL: "Ling-1T",
|
||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "Ling-1T",
|
||
ANTHROPIC_DEFAULT_SONNET_MODEL: "Ling-1T",
|
||
ANTHROPIC_DEFAULT_OPUS_MODEL: "Ling-1T",
|
||
},
|
||
},
|
||
category: "cn_official",
|
||
},
|
||
{
|
||
name: "AiHubMix",
|
||
websiteUrl: "https://aihubmix.com",
|
||
apiKeyUrl: "https://aihubmix.com",
|
||
// 说明:该供应商使用 ANTHROPIC_API_KEY(而非 ANTHROPIC_AUTH_TOKEN)
|
||
apiKeyField: "ANTHROPIC_API_KEY",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://aihubmix.com",
|
||
ANTHROPIC_API_KEY: "",
|
||
},
|
||
},
|
||
// 请求地址候选(用于地址管理/测速),用户可自行选择/覆盖
|
||
endpointCandidates: ["https://aihubmix.com", "https://api.aihubmix.com"],
|
||
category: "aggregator",
|
||
},
|
||
{
|
||
name: "DMXAPI",
|
||
websiteUrl: "https://www.dmxapi.cn",
|
||
apiKeyUrl: "https://www.dmxapi.cn",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://www.dmxapi.cn",
|
||
ANTHROPIC_API_KEY: "",
|
||
},
|
||
},
|
||
// 请求地址候选(用于地址管理/测速),用户可自行选择/覆盖
|
||
endpointCandidates: ["https://aihubmix.com", "https://api.aihubmix.com"],
|
||
category: "aggregator",
|
||
},
|
||
{
|
||
name: "PackyCode",
|
||
websiteUrl: "https://www.packyapi.com",
|
||
apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://www.packyapi.com",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
},
|
||
},
|
||
// 请求地址候选(用于地址管理/测速)
|
||
endpointCandidates: [
|
||
"https://www.packyapi.com",
|
||
"https://api-slb.packyapi.com",
|
||
],
|
||
category: "third_party",
|
||
isPartner: true, // 合作伙伴
|
||
partnerPromotionKey: "packycode", // 促销信息 i18n key
|
||
},
|
||
{
|
||
name: "AnyRouter",
|
||
websiteUrl: "https://anyrouter.top",
|
||
apiKeyUrl: "https://anyrouter.top/register?aff=PCel",
|
||
settingsConfig: {
|
||
env: {
|
||
ANTHROPIC_BASE_URL: "https://anyrouter.top",
|
||
ANTHROPIC_AUTH_TOKEN: "",
|
||
},
|
||
},
|
||
// 请求地址候选(用于地址管理/测速)
|
||
endpointCandidates: [
|
||
"https://q.quuvv.cn",
|
||
"https://pmpjfbhq.cn-nb1.rainapp.top",
|
||
"https://anyrouter.top",
|
||
],
|
||
category: "third_party",
|
||
},
|
||
];
|