From 471c0d999015c4e62980d2873cb928e569d12f1e Mon Sep 17 00:00:00 2001 From: hengm3467 <100685635+hengm3467@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:27:50 +0800 Subject: [PATCH] feat: add StepFun provider presets and step-3.5-flash (#1369) * feat: add StepFun provider presets * docs: regroup StepFun pricing entry * docs: tweak StepFun zh label * style: apply prettier fixes * Revert "style: apply prettier fixes" This reverts commit cff7bf2e651456fa0f9d1f27f1c74018aafd33cf. --- docs/user-manual/en/2-providers/2.1-add.md | 3 ++ docs/user-manual/en/4-proxy/4.4-usage.md | 6 +++- docs/user-manual/ja/2-providers/2.1-add.md | 3 ++ docs/user-manual/ja/4-proxy/4.4-usage.md | 6 +++- docs/user-manual/zh/2-providers/2.1-add.md | 4 ++- docs/user-manual/zh/4-proxy/4.4-usage.md | 6 +++- scripts/extract-icons.js | 6 +++- scripts/filter-icons.js | 2 +- scripts/generate-icon-index.js | 1 + src-tauri/src/database/schema.rs | 9 ++++++ src/config/claudeProviderPresets.ts | 20 ++++++++++++ src/config/iconInference.ts | 2 ++ src/config/openclawProviderPresets.ts | 37 ++++++++++++++++++++++ src/config/opencodeProviderPresets.ts | 37 ++++++++++++++++++++++ src/icons/extracted/index.ts | 1 + src/icons/extracted/metadata.ts | 7 ++++ src/icons/extracted/stepfun.svg | 10 ++++++ 17 files changed, 154 insertions(+), 6 deletions(-) create mode 100644 src/icons/extracted/stepfun.svg diff --git a/docs/user-manual/en/2-providers/2.1-add.md b/docs/user-manual/en/2-providers/2.1-add.md index 3ba472ff..76d0f368 100644 --- a/docs/user-manual/en/2-providers/2.1-add.md +++ b/docs/user-manual/en/2-providers/2.1-add.md @@ -33,6 +33,7 @@ Presets are pre-configured provider templates that only require an API Key to us | Bailian | Alibaba Cloud Bailian (Qwen) | | Kimi | Moonshot Kimi model | | Kimi For Coding | Kimi coding-specific model | +| StepFun | StepFun model | | ModelScope | ModelScope community | | KAT-Coder | KAT-Coder model | | Longcat | Longcat AI | @@ -92,6 +93,7 @@ Presets are pre-configured provider templates that only require an API Key to us | Bailian | Alibaba Cloud Bailian | | Kimi k2.5 | Moonshot Kimi-k2.5 model | | Kimi For Coding | Kimi coding-specific model | +| StepFun | StepFun model | | ModelScope | ModelScope community | | KAT-Coder | KAT-Coder model | | Longcat | Longcat AI | @@ -124,6 +126,7 @@ Presets are pre-configured provider templates that only require an API Key to us | Qwen Coder | Qwen coding model | | Kimi k2.5 | Moonshot Kimi-k2.5 model | | Kimi For Coding | Kimi coding-specific model | +| StepFun | StepFun model | | MiniMax | MiniMax model | | MiniMax en | MiniMax (English version) | | KAT-Coder | KAT-Coder model | diff --git a/docs/user-manual/en/4-proxy/4.4-usage.md b/docs/user-manual/en/4-proxy/4.4-usage.md index d59fd27b..fe93db20 100644 --- a/docs/user-manual/en/4-proxy/4.4-usage.md +++ b/docs/user-manual/en/4-proxy/4.4-usage.md @@ -238,10 +238,14 @@ CC Switch includes preset official prices for common models (per million tokens) | gemini-2.5-pro | $1.25 | $10 | $0.125 | | gemini-2.5-flash | $0.30 | $2.50 | $0.03 | -**Chinese Provider Models (CNY)**: +**Chinese Provider Models**: + +> Note: Currency follows each provider's official pricing page. StepFun is currently listed in USD. | Model | Input | Output | Cache Read | |-------|-------|--------|------------| +| **StepFun** | | | | +| step-3.5-flash | $0.10 | $0.30 | $0.02 | | **DeepSeek** | | | | | deepseek-v3.2 | ¥2.00 | ¥3.00 | ¥0.40 | | deepseek-v3.1 | ¥4.00 | ¥12.00 | ¥0.80 | diff --git a/docs/user-manual/ja/2-providers/2.1-add.md b/docs/user-manual/ja/2-providers/2.1-add.md index e1133041..d7d42b18 100644 --- a/docs/user-manual/ja/2-providers/2.1-add.md +++ b/docs/user-manual/ja/2-providers/2.1-add.md @@ -33,6 +33,7 @@ | 百炼 | アリクラウド百炼(通义千問) | | Kimi | Moonshot Kimi モデル | | Kimi For Coding | Kimi プログラミング専用モデル | +| StepFun | StepFun モデル | | ModelScope | 魔搭コミュニティ | | KAT-Coder | KAT-Coder モデル | | Longcat | Longcat AI | @@ -92,6 +93,7 @@ | 百炼 | アリクラウド百炼 | | Kimi k2.5 | Moonshot Kimi-k2.5 モデル | | Kimi For Coding | Kimi プログラミング専用モデル | +| StepFun | StepFun モデル | | ModelScope | 魔搭コミュニティ | | KAT-Coder | KAT-Coder モデル | | Longcat | Longcat AI | @@ -124,6 +126,7 @@ | Qwen Coder | 通义千問コーディングモデル | | Kimi k2.5 | Moonshot Kimi-k2.5 モデル | | Kimi For Coding | Kimi プログラミング専用モデル | +| StepFun | StepFun モデル | | MiniMax | MiniMax モデル | | MiniMax en | MiniMax(英語版) | | KAT-Coder | KAT-Coder モデル | diff --git a/docs/user-manual/ja/4-proxy/4.4-usage.md b/docs/user-manual/ja/4-proxy/4.4-usage.md index 2ae9141e..9d34caeb 100644 --- a/docs/user-manual/ja/4-proxy/4.4-usage.md +++ b/docs/user-manual/ja/4-proxy/4.4-usage.md @@ -238,10 +238,14 @@ CC Switch は一般的なモデルの公式価格(100 万 Token あたり) | gemini-2.5-pro | $1.25 | $10 | $0.125 | | gemini-2.5-flash | $0.30 | $2.50 | $0.03 | -**中国メーカーのモデル(人民元)**: +**中国メーカーのモデル**: + +> 注: 通貨は各プロバイダーの公式料金ページに従います。StepFun は現在 USD 表記です。 | モデル | 入力 | 出力 | キャッシュ読取 | |------|------|------|----------| +| **StepFun** | | | | +| step-3.5-flash | $0.10 | $0.30 | $0.02 | | **DeepSeek** | | | | | deepseek-v3.2 | ¥2.00 | ¥3.00 | ¥0.40 | | deepseek-v3.1 | ¥4.00 | ¥12.00 | ¥0.80 | diff --git a/docs/user-manual/zh/2-providers/2.1-add.md b/docs/user-manual/zh/2-providers/2.1-add.md index a9f831f9..dec61e12 100644 --- a/docs/user-manual/zh/2-providers/2.1-add.md +++ b/docs/user-manual/zh/2-providers/2.1-add.md @@ -33,6 +33,7 @@ | 百炼 | 阿里云百炼(通义千问) | | Kimi | Moonshot Kimi 模型 | | Kimi For Coding | Kimi 编程专用模型 | +| StepFun | 阶跃星辰 Step模型 | | ModelScope | 魔搭社区 | | KAT-Coder | KAT-Coder 模型 | | Longcat | Longcat AI | @@ -92,6 +93,7 @@ | 百炼 | 阿里云百炼 | | Kimi k2.5 | Moonshot Kimi-k2.5 模型 | | Kimi For Coding | Kimi 编程专用模型 | +| StepFun | 阶跃星辰 Step模型 | | ModelScope | 魔搭社区 | | KAT-Coder | KAT-Coder 模型 | | Longcat | Longcat AI | @@ -124,6 +126,7 @@ | Qwen Coder | 通义千问编码模型 | | Kimi k2.5 | Moonshot Kimi-k2.5 模型 | | Kimi For Coding | Kimi 编程专用模型 | +| StepFun | 阶跃星辰 Step模型 | | MiniMax | MiniMax 模型 | | MiniMax en | MiniMax(英文版) | | KAT-Coder | KAT-Coder 模型 | @@ -352,4 +355,3 @@ CC Switch 支持两种方式导入供应商配置: - 🔴 红色:延迟 > 1000ms(较慢) ![image-20260108005327817](../../assets/image-20260108005327817.png) - diff --git a/docs/user-manual/zh/4-proxy/4.4-usage.md b/docs/user-manual/zh/4-proxy/4.4-usage.md index 8e8b912d..c2c693a2 100644 --- a/docs/user-manual/zh/4-proxy/4.4-usage.md +++ b/docs/user-manual/zh/4-proxy/4.4-usage.md @@ -238,10 +238,14 @@ CC Switch 预设了常用模型的官方价格(每百万 Token): | gemini-2.5-pro | $1.25 | $10 | $0.125 | | gemini-2.5-flash | $0.30 | $2.50 | $0.03 | -**中国厂商模型(人民币)**: +**中国厂商模型**: + +> 注:币种遵循各供应商官方定价页面。StepFun 当前按美元列出。 | 模型 | 输入 | 输出 | 缓存读取 | |------|------|------|----------| +| **StepFun** | | | | +| step-3.5-flash | $0.10 | $0.30 | $0.02 | | **DeepSeek** | | | | | deepseek-v3.2 | ¥2.00 | ¥3.00 | ¥0.40 | | deepseek-v3.1 | ¥4.00 | ¥12.00 | ¥0.80 | diff --git a/scripts/extract-icons.js b/scripts/extract-icons.js index 2e14d4cc..59c91f3a 100644 --- a/scripts/extract-icons.js +++ b/scripts/extract-icons.js @@ -6,7 +6,7 @@ const ICONS_TO_EXTRACT = { // AI 服务商(必需) aiProviders: [ 'openai', 'anthropic', 'claude', 'google', 'gemini', - 'deepseek', 'kimi', 'moonshot', 'zhipu', 'minimax', + 'deepseek', 'kimi', 'moonshot', 'stepfun', 'zhipu', 'minimax', 'baidu', 'alibaba', 'tencent', 'meta', 'microsoft', 'cohere', 'perplexity', 'mistral', 'huggingface' ], @@ -60,6 +60,9 @@ ALL_ICONS.forEach(iconName => { fs.copyFileSync(sourceFile, targetFile); console.log(` ✓ ${iconName}.svg`); extracted++; + } else if (fs.existsSync(targetFile)) { + console.log(` ✓ ${iconName}.svg (kept local custom icon)`); + extracted++; } else { console.log(` ✗ ${iconName}.svg (not found)`); notFound.push(iconName); @@ -110,6 +113,7 @@ export const iconMetadata: Record = { deepseek: { name: 'deepseek', displayName: 'DeepSeek', category: 'ai-provider', keywords: ['deep', 'seek'], defaultColor: '#1E88E5' }, moonshot: { name: 'moonshot', displayName: 'Moonshot', category: 'ai-provider', keywords: ['kimi', 'moonshot'], defaultColor: '#6366F1' }, kimi: { name: 'kimi', displayName: 'Kimi', category: 'ai-provider', keywords: ['moonshot'], defaultColor: '#6366F1' }, + stepfun: { name: 'stepfun', displayName: 'StepFun', category: 'ai-provider', keywords: ['stepfun', 'step', 'jieyue', '阶跃星辰'], defaultColor: '#005AFF' }, zhipu: { name: 'zhipu', displayName: 'Zhipu AI', category: 'ai-provider', keywords: ['chatglm', 'glm'], defaultColor: '#0F62FE' }, minimax: { name: 'minimax', displayName: 'MiniMax', category: 'ai-provider', keywords: ['minimax'], defaultColor: '#FF6B6B' }, baidu: { name: 'baidu', displayName: 'Baidu', category: 'ai-provider', keywords: ['ernie', 'wenxin'], defaultColor: '#2932E1' }, diff --git a/scripts/filter-icons.js b/scripts/filter-icons.js index b4567ff8..add6e5ee 100644 --- a/scripts/filter-icons.js +++ b/scripts/filter-icons.js @@ -10,7 +10,7 @@ const KEEP_LIST = [ 'openai', 'anthropic', 'claude', 'google', 'gemini', 'gemma', 'palm', 'microsoft', 'azure', 'copilot', 'meta', 'llama', 'alibaba', 'qwen', 'tencent', 'hunyuan', 'baidu', 'wenxin', - 'bytedance', 'doubao', 'deepseek', 'moonshot', 'kimi', + 'bytedance', 'doubao', 'deepseek', 'moonshot', 'kimi', 'stepfun', 'zhipu', 'chatglm', 'glm', 'minimax', 'mistral', 'cohere', 'perplexity', 'huggingface', 'midjourney', 'stability', 'xai', 'grok', 'yi', 'zeroone', 'ollama', diff --git a/scripts/generate-icon-index.js b/scripts/generate-icon-index.js index 3e13f687..8aa21197 100644 --- a/scripts/generate-icon-index.js +++ b/scripts/generate-icon-index.js @@ -15,6 +15,7 @@ const KNOWN_METADATA = { deepseek: { name: 'deepseek', displayName: 'DeepSeek', category: 'ai-provider', keywords: ['deep', 'seek'], defaultColor: '#1E88E5' }, moonshot: { name: 'moonshot', displayName: 'Moonshot', category: 'ai-provider', keywords: ['kimi', 'moonshot'], defaultColor: '#6366F1' }, kimi: { name: 'kimi', displayName: 'Kimi', category: 'ai-provider', keywords: ['moonshot'], defaultColor: '#6366F1' }, + stepfun: { name: 'stepfun', displayName: 'StepFun', category: 'ai-provider', keywords: ['stepfun', 'step', 'jieyue', '阶跃星辰'], defaultColor: '#005AFF' }, zhipu: { name: 'zhipu', displayName: 'Zhipu AI', category: 'ai-provider', keywords: ['chatglm', 'glm'], defaultColor: '#0F62FE' }, minimax: { name: 'minimax', displayName: 'MiniMax', category: 'ai-provider', keywords: ['minimax'], defaultColor: '#FF6B6B' }, baidu: { name: 'baidu', displayName: 'Baidu', category: 'ai-provider', keywords: ['ernie', 'wenxin'], defaultColor: '#2932E1' }, diff --git a/src-tauri/src/database/schema.rs b/src-tauri/src/database/schema.rs index b8466434..d0b7adad 100644 --- a/src-tauri/src/database/schema.rs +++ b/src-tauri/src/database/schema.rs @@ -1241,6 +1241,15 @@ impl Database { "0.03", "0", ), + // StepFun 系列 + ( + "step-3.5-flash", + "Step 3.5 Flash", + "0.10", + "0.30", + "0.02", + "0", + ), // ====== 国产模型 (CNY/1M tokens) ====== // Doubao (字节跳动) ( diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 07cedfdf..21e9b9c3 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -178,6 +178,26 @@ export const providerPresets: ProviderPreset[] = [ icon: "kimi", iconColor: "#6366F1", }, + { + name: "StepFun", + websiteUrl: "https://platform.stepfun.ai", + apiKeyUrl: "https://platform.stepfun.ai/interface-key", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.stepfun.ai/v1", + ANTHROPIC_AUTH_TOKEN: "", + ANTHROPIC_MODEL: "step-3.5-flash", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "step-3.5-flash", + ANTHROPIC_DEFAULT_SONNET_MODEL: "step-3.5-flash", + ANTHROPIC_DEFAULT_OPUS_MODEL: "step-3.5-flash", + }, + }, + category: "cn_official", + endpointCandidates: ["https://api.stepfun.ai/v1"], + apiFormat: "openai_chat", + icon: "stepfun", + iconColor: "#005AFF", + }, { name: "ModelScope", websiteUrl: "https://modelscope.cn", diff --git a/src/config/iconInference.ts b/src/config/iconInference.ts index 9b318c69..56261014 100644 --- a/src/config/iconInference.ts +++ b/src/config/iconInference.ts @@ -15,6 +15,8 @@ const iconMappings = { aliyun: { icon: "alibaba", iconColor: "#FF6A00" }, kimi: { icon: "kimi", iconColor: "#6366F1" }, moonshot: { icon: "moonshot", iconColor: "#6366F1" }, + stepfun: { icon: "stepfun", iconColor: "#005AFF" }, + step: { icon: "stepfun", iconColor: "#005AFF" }, baidu: { icon: "baidu", iconColor: "#2932E1" }, tencent: { icon: "tencent", iconColor: "#00A4FF" }, hunyuan: { icon: "hunyuan", iconColor: "#00A4FF" }, diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts index 10cd9c7d..f9b5539f 100644 --- a/src/config/openclawProviderPresets.ts +++ b/src/config/openclawProviderPresets.ts @@ -292,6 +292,43 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ modelCatalog: { "kimi-coding/kimi-for-coding": { alias: "Kimi" } }, }, }, + { + name: "StepFun", + websiteUrl: "https://platform.stepfun.ai", + apiKeyUrl: "https://platform.stepfun.ai/interface-key", + settingsConfig: { + baseUrl: "https://api.stepfun.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "step-3.5-flash", + name: "Step 3.5 Flash", + contextWindow: 262144, + }, + ], + }, + category: "cn_official", + icon: "stepfun", + iconColor: "#005AFF", + templateValues: { + baseUrl: { + label: "Base URL", + placeholder: "https://api.stepfun.ai/v1", + defaultValue: "https://api.stepfun.ai/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "step-...", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { primary: "stepfun/step-3.5-flash" }, + modelCatalog: { "stepfun/step-3.5-flash": { alias: "StepFun" } }, + }, + }, { name: "MiniMax", websiteUrl: "https://platform.minimaxi.com", diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts index d20bd5f5..b3b0e583 100644 --- a/src/config/opencodeProviderPresets.ts +++ b/src/config/opencodeProviderPresets.ts @@ -61,6 +61,11 @@ export const OPENCODE_PRESET_MODEL_VARIANTS: Record< outputLimit: 262144, modalities: { input: ["text", "image", "video"], output: ["text"] }, }, + { + id: "step-3.5-flash", + name: "Step 3.5 Flash", + contextLimit: 262144, + }, ], "@ai-sdk/google": [ { @@ -469,6 +474,38 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, + { + name: "StepFun", + websiteUrl: "https://platform.stepfun.ai", + apiKeyUrl: "https://platform.stepfun.ai/interface-key", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "StepFun", + options: { + baseURL: "https://api.stepfun.ai/v1", + apiKey: "", + }, + models: { + "step-3.5-flash": { name: "Step 3.5 Flash" }, + }, + }, + category: "cn_official", + icon: "stepfun", + iconColor: "#005AFF", + templateValues: { + baseURL: { + label: "Base URL", + placeholder: "https://api.stepfun.ai/v1", + defaultValue: "https://api.stepfun.ai/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "step-...", + editorValue: "", + }, + }, + }, { name: "ModelScope", websiteUrl: "https://modelscope.cn", diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts index 9584c5f5..4a2bb734 100644 --- a/src/icons/extracted/index.ts +++ b/src/icons/extracted/index.ts @@ -64,6 +64,7 @@ export const icons: Record = { micu: `Micu`, ucloud: `UCloud`, sssaicode: `SSAI Code1001 11010110 101110 110SSSSAiCode`, + stepfun: `StepFun`, catcoder: `KwaiKAT`, mcp: `ModelContextProtocol`, novita: `Novita`, diff --git a/src/icons/extracted/metadata.ts b/src/icons/extracted/metadata.ts index 8debacd3..4505a5d3 100644 --- a/src/icons/extracted/metadata.ts +++ b/src/icons/extracted/metadata.ts @@ -387,6 +387,13 @@ export const iconMetadata: Record = { keywords: ["nvidia", "nim", "gpu"], defaultColor: "#74B71B", }, + stepfun: { + name: "stepfun", + displayName: "StepFun", + category: "ai-provider", + keywords: ["stepfun", "step", "jieyue", "阶跃星辰"], + defaultColor: "#005AFF", + }, }; export function getIconMetadata(name: string): IconMetadata | undefined { diff --git a/src/icons/extracted/stepfun.svg b/src/icons/extracted/stepfun.svg new file mode 100644 index 00000000..0cbe61d1 --- /dev/null +++ b/src/icons/extracted/stepfun.svg @@ -0,0 +1,10 @@ + + + + + + + + + +