diff --git a/src/components/providers/forms/ProviderPresetSelector.tsx b/src/components/providers/forms/ProviderPresetSelector.tsx
index f283b4b05..da82dbbd4 100644
--- a/src/components/providers/forms/ProviderPresetSelector.tsx
+++ b/src/components/providers/forms/ProviderPresetSelector.tsx
@@ -4,7 +4,15 @@ import { FormLabel } from "@/components/ui/form";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { ClaudeIcon, CodexIcon, GeminiIcon } from "@/components/BrandIcons";
-import { ArrowUpAZ, Search, Zap, Star, Layers, Settings2 } from "lucide-react";
+import {
+ ArrowUpAZ,
+ Search,
+ Zap,
+ Star,
+ Heart,
+ Layers,
+ Settings2,
+} from "lucide-react";
import type { ProviderPreset } from "@/config/claudeProviderPresets";
import type { CodexProviderPreset } from "@/config/codexProviderPresets";
import type { GeminiProviderPreset } from "@/config/geminiProviderPresets";
@@ -380,6 +388,7 @@ export function ProviderPresetSelector({
{visiblePresetEntries.map((entry) => {
const isSelected = selectedPresetId === entry.id;
const isPartner = entry.preset.isPartner;
+ const isPrimePartner = entry.preset.primePartner;
const presetCategory = entry.preset.category ?? "others";
return (
);
diff --git a/src/config/claudeDesktopProviderPresets.ts b/src/config/claudeDesktopProviderPresets.ts
index f13be211a..4b30595cd 100644
--- a/src/config/claudeDesktopProviderPresets.ts
+++ b/src/config/claudeDesktopProviderPresets.ts
@@ -47,6 +47,7 @@ export interface ClaudeDesktopProviderPreset {
apiKeyUrl?: string;
category?: ProviderCategory;
isPartner?: boolean;
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string;
baseUrl: string;
@@ -414,6 +415,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
},
{
name: "Kimi",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
category: "cn_official",
baseUrl: "https://api.moonshot.cn/anthropic",
@@ -429,6 +431,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/?aff=cc-switch",
category: "cn_official",
baseUrl: "https://api.kimi.com/coding/",
diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts
index 09ee68da1..1211577d4 100644
--- a/src/config/claudeProviderPresets.ts
+++ b/src/config/claudeProviderPresets.ts
@@ -31,6 +31,7 @@ export interface ProviderPreset {
settingsConfig: object;
isOfficial?: boolean; // 标识是否为官方预设
isPartner?: boolean; // 标识是否为商业合作伙伴
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string; // 合作伙伴促销信息的 i18n key
category?: ProviderCategory; // 新增:分类
// 新增:指定该预设所使用的 API Key 字段名(默认 ANTHROPIC_AUTH_TOKEN)
@@ -367,6 +368,7 @@ export const providerPresets: ProviderPreset[] = [
},
{
name: "Kimi",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
settingsConfig: {
env: {
@@ -384,6 +386,7 @@ export const providerPresets: ProviderPreset[] = [
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/?aff=cc-switch",
settingsConfig: {
env: {
diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts
index d36c40e9c..ae70a4cd9 100644
--- a/src/config/codexProviderPresets.ts
+++ b/src/config/codexProviderPresets.ts
@@ -19,6 +19,7 @@ export interface CodexProviderPreset {
config: string; // 将写入 ~/.codex/config.toml(TOML 字符串)
isOfficial?: boolean; // 标识是否为官方预设
isPartner?: boolean; // 标识是否为商业合作伙伴
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string; // 合作伙伴促销信息的 i18n key
category?: ProviderCategory; // 新增:分类
isCustomTemplate?: boolean; // 标识是否为自定义模板
@@ -420,6 +421,7 @@ requires_openai_auth = true`,
},
{
name: "Kimi",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
apiKeyUrl: "https://platform.moonshot.cn/console/api-keys?aff=cc-switch",
auth: generateThirdPartyAuth(""),
@@ -450,6 +452,7 @@ requires_openai_auth = true`,
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/",
apiKeyUrl: "https://www.kimi.com/code/",
auth: generateThirdPartyAuth(""),
diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts
index 20bbec6dd..1f1fdb6cd 100644
--- a/src/config/geminiProviderPresets.ts
+++ b/src/config/geminiProviderPresets.ts
@@ -23,6 +23,7 @@ export interface GeminiProviderPreset {
description?: string;
category?: ProviderCategory;
isPartner?: boolean;
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string;
endpointCandidates?: string[];
theme?: GeminiPresetTheme;
diff --git a/src/config/hermesProviderPresets.ts b/src/config/hermesProviderPresets.ts
index 21c728672..817998dbc 100644
--- a/src/config/hermesProviderPresets.ts
+++ b/src/config/hermesProviderPresets.ts
@@ -104,6 +104,7 @@ export interface HermesProviderPreset {
settingsConfig: HermesProviderSettingsConfig;
isOfficial?: boolean;
isPartner?: boolean;
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string;
category?: ProviderCategory;
templateValues?: Record;
@@ -515,6 +516,7 @@ export const hermesProviderPresets: HermesProviderPreset[] = [
},
{
name: "Kimi",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
settingsConfig: {
name: "kimi",
@@ -532,6 +534,7 @@ export const hermesProviderPresets: HermesProviderPreset[] = [
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/?aff=cc-switch",
settingsConfig: {
name: "kimi_coding",
diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts
index 00ddbce85..d3d7f3262 100644
--- a/src/config/openclawProviderPresets.ts
+++ b/src/config/openclawProviderPresets.ts
@@ -26,6 +26,7 @@ export interface OpenClawProviderPreset {
settingsConfig: OpenClawProviderConfig;
isOfficial?: boolean;
isPartner?: boolean;
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string;
category?: ProviderCategory;
/** Template variable definitions */
@@ -491,6 +492,7 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [
},
{
name: "Kimi K2.7 Code",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
apiKeyUrl: "https://platform.moonshot.cn/console/api-keys",
settingsConfig: {
@@ -529,6 +531,7 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/?aff=cc-switch",
apiKeyUrl: "https://platform.moonshot.cn/console/api-keys",
settingsConfig: {
diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts
index f69431c46..52df735ce 100644
--- a/src/config/opencodeProviderPresets.ts
+++ b/src/config/opencodeProviderPresets.ts
@@ -9,6 +9,7 @@ export interface OpenCodeProviderPreset {
settingsConfig: OpenCodeProviderConfig;
isOfficial?: boolean;
isPartner?: boolean;
+ primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string;
category?: ProviderCategory;
templateValues?: Record;
@@ -589,6 +590,7 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [
},
{
name: "Kimi K2.7 Code",
+ primePartner: true,
websiteUrl: "https://platform.moonshot.cn/console?aff=cc-switch",
apiKeyUrl: "https://platform.moonshot.cn/console/api-keys?aff=cc-switch",
settingsConfig: {
@@ -622,6 +624,7 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [
},
{
name: "Kimi For Coding",
+ primePartner: true,
websiteUrl: "https://www.kimi.com/code/docs/?aff=cc-switch",
apiKeyUrl: "https://platform.moonshot.cn/console/api-keys?aff=cc-switch",
settingsConfig: {