diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts
index c1de539d5..ec3e2f8ad 100644
--- a/src/config/claudeProviderPresets.ts
+++ b/src/config/claudeProviderPresets.ts
@@ -185,6 +185,8 @@ export const providerPresets: ProviderPreset[] = [
},
},
category: "aggregator",
+ icon: "modelscope",
+ iconColor: "#624AFF",
},
{
name: "KAT-Coder",
@@ -228,6 +230,8 @@ export const providerPresets: ProviderPreset[] = [
},
},
category: "cn_official",
+ icon: "longcat",
+ iconColor: "#29E154",
},
{
name: "MiniMax",
@@ -330,6 +334,8 @@ export const providerPresets: ProviderPreset[] = [
// 请求地址候选(用于地址管理/测速),用户可自行选择/覆盖
endpointCandidates: ["https://aihubmix.com", "https://api.aihubmix.com"],
category: "aggregator",
+ icon: "aihubmix",
+ iconColor: "#006FFB",
},
{
name: "DMXAPI",
@@ -365,4 +371,22 @@ export const providerPresets: ProviderPreset[] = [
partnerPromotionKey: "packycode", // 促销信息 i18n key
icon: "packycode",
},
+ {
+ name: "OpenRouter",
+ websiteUrl: "https://openrouter.ai",
+ apiKeyUrl: "https://openrouter.ai/keys",
+ settingsConfig: {
+ env: {
+ ANTHROPIC_BASE_URL: "https://openrouter.ai/api",
+ ANTHROPIC_AUTH_TOKEN: "",
+ ANTHROPIC_MODEL: "anthropic/claude-sonnet-4.5",
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-4.5",
+ ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-4.5",
+ ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-4.5",
+ },
+ },
+ category: "aggregator",
+ icon: "openrouter",
+ iconColor: "#6566F1",
+ },
];
diff --git a/src/icons/extracted/aihubmix-color.svg b/src/icons/extracted/aihubmix-color.svg
new file mode 100644
index 000000000..82ba4ca88
--- /dev/null
+++ b/src/icons/extracted/aihubmix-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts
index cac4d5aa4..507a41a7b 100644
--- a/src/icons/extracted/index.ts
+++ b/src/icons/extracted/index.ts
@@ -45,6 +45,10 @@ export const icons: Record = {
yi: ``,
zeroone: ``,
zhipu: ``,
+ openrouter: ``,
+ longcat: ``,
+ modelscope: ``,
+ aihubmix: ``,
};
export const iconList = Object.keys(icons);
diff --git a/src/icons/extracted/longcat-color.svg b/src/icons/extracted/longcat-color.svg
new file mode 100644
index 000000000..fde6c8a36
--- /dev/null
+++ b/src/icons/extracted/longcat-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/extracted/metadata.ts b/src/icons/extracted/metadata.ts
index 3caa7eead..bc2c5d7d1 100644
--- a/src/icons/extracted/metadata.ts
+++ b/src/icons/extracted/metadata.ts
@@ -303,6 +303,34 @@ export const iconMetadata: Record = {
keywords: ["chatglm", "glm"],
defaultColor: "#0F62FE",
},
+ openrouter: {
+ name: "openrouter",
+ displayName: "OpenRouter",
+ category: "ai-provider",
+ keywords: ["openrouter", "router", "aggregator"],
+ defaultColor: "#6566F1",
+ },
+ longcat: {
+ name: "longcat",
+ displayName: "LongCat",
+ category: "ai-provider",
+ keywords: ["longcat", "long", "cat"],
+ defaultColor: "#29E154",
+ },
+ modelscope: {
+ name: "modelscope",
+ displayName: "ModelScope",
+ category: "ai-provider",
+ keywords: ["modelscope", "alibaba", "scope"],
+ defaultColor: "#624AFF",
+ },
+ aihubmix: {
+ name: "aihubmix",
+ displayName: "AiHubMix",
+ category: "ai-provider",
+ keywords: ["aihubmix", "hub", "mix", "aggregator"],
+ defaultColor: "#006FFB",
+ },
};
export function getIconMetadata(name: string): IconMetadata | undefined {
diff --git a/src/icons/extracted/modelscope-color.svg b/src/icons/extracted/modelscope-color.svg
new file mode 100644
index 000000000..afbaa171a
--- /dev/null
+++ b/src/icons/extracted/modelscope-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/extracted/openrouter.svg b/src/icons/extracted/openrouter.svg
new file mode 100644
index 000000000..e6cca2a86
--- /dev/null
+++ b/src/icons/extracted/openrouter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file