Skip to content

Commit 734f8d7

Browse files
op7418claude
andcommitted
chore: release v0.54.0
- feat(providers): add DeepSeek preset (Anthropic-compatible /anthropic endpoint, V4 Pro + V4 Flash, haiku mapping to Flash for cheaper auxiliary calls) - feat(providers): add GPT-5.5 to OpenAI OAuth (Codex API) model list and bump fallback default - refactor(providers): upgrade Xiaomi MiMo (pay-as-you-go + Token Plan) from mimo-v2-pro to mimo-v2.5-pro - fix(providers): add CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK + CLAUDE_CODE_EFFORT_LEVEL to MANAGED_ENV_KEYS and shadow-home strip list to prevent DeepSeek-only env from leaking across providers - docs(providers): add DeepSeek row to en/zh providers table; sync MiMo-V2.5-Pro + GPT-5.5 references Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0376669 commit 734f8d7

11 files changed

Lines changed: 81 additions & 37 deletions

File tree

RELEASE_NOTES.md

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
1-
## CodePilot v0.53.0
1+
## CodePilot v0.54.0
22

3-
> 设计 Agent 新增 OpenAI GPT Image 2 图像生成能力,同时给 Nano Banana 和 GPT Image 都加上"第三方兼容 API"选项——有中转代理的用户不用再改代码。配套补齐模型选择、实时模型标识、2K/4K 尺寸支持、第三方连接测试等一圈可见性改进
3+
> 本版本补齐服务商生态:新增 DeepSeek 独立预设,OpenAI OAuth 加入 GPT-5.5,小米 MiMo 两个套餐升级到 V2.5-Pro,同时修掉切换服务商时的环境变量残留问题
44
55
### 新增功能
66

7-
- **OpenAI GPT Image 2 图像生成** — 设计 Agent 的服务商列表里新增 OpenAI (Image) 一档,支持 GPT Image 2 / 1.5 / 1 / 1-mini 四个模型。GPT Image 2 尺寸按官方规格算真实的像素比:1:1/16:9/9:16/3:2/2:3/4:3/3:4/4:5/5:4/21:9 十个比例 × 1K/2K/4K 三档分辨率,每一档都会尊重你选的比例而不是套用老三档(1024×1024 / 1536×1024 / 1024×1536)。支持参考图(垫图)走 `/v1/images/edits` 端点,连续编辑不再被丢弃
8-
- **媒体服务商第三方兼容** — Nano Banana 和 GPT Image 都多了"Third-party"预设,只需要填 Base URL 和 Key,其他配置完全照搬官方。现在可以把图像生成走自己架设的 OpenAI 兼容 / Gemini 兼容代理
9-
- **当前图像模型实时显示** — 聊天里的"图片生成"卡片右上角会显示当前要用的模型和服务商(比如"GPT Image 2 · OpenAI (Image)")。当默认服务商缺 Key 或被改过类型时会显示琥珀色提示,点一下跳到设置页
10-
- **"图片生成默认"服务商标记** — 同时配了多个图像服务商的用户,现在可以在设置里一键把某一行设为"用于图片生成"。点某个服务商下的模型胶囊按钮会自动把那一行标为默认
7+
- **DeepSeek 服务商** — 在服务商列表里新增 DeepSeek 独立预设,走官方 Anthropic 兼容端点 `api.deepseek.com/anthropic`,只需填 Key 即用。默认主模型 DeepSeek V4 Pro,Haiku 档位映射到更便宜的 DeepSeek V4 Flash,压缩/总结这类辅助调用能自动走便宜档
8+
- **OpenAI OAuth 支持 GPT-5.5** — ChatGPT Plus/Pro 授权登录后,模型下拉里新增 GPT-5.5(排在 GPT-5.4 之上),新会话未指定模型时默认用 GPT-5.5
9+
10+
### 修复问题
11+
12+
- **切换服务商时环境变量残留** — 之前如果用户在系统环境里设过 DeepSeek 文档里的 `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` / `CLAUDE_CODE_EFFORT_LEVEL`,切到其它服务商后这两个变量仍会带到子进程里,影响其它服务商的请求行为。现在切换服务商时会连同这两个 key 一起清掉,避免跨服务商污染
1113

1214
### 优化改进
1315

14-
- **设计 Agent 选型更确定** — 原先同时配置多个图像服务商时由数据库行顺序决定用哪个,行为不可控。现在走"显式 providerId → 模型名家族前缀 → 用户设定的默认 → 优先 Gemini 兼容"四步优先级,每一步都可预测
15-
- **第三方媒体服务商连接测试正确路由** — 之前 OpenAI/Gemini 图像服务商的"测试连接"按钮跑的是 Anthropic `/v1/messages` 探针,对这两个服务永远失败。现在 OpenAI Image 走 `GET /v1/models` + Bearer,Gemini Image 走 `GET /v1beta/models?key=...`,第三方配置也能真实验证
16-
- **服务商 Base URL 精确匹配加上协议隔离** — 加入 GPT Image 后 `https://api.openai.com/v1` 同时属于多个预设。之前聊天用的 openai-compatible 服务商在这个 URL 下会错误继承 GPT Image 模型目录,现在精确匹配会检查协议一致性
17-
- **第三方媒体服务商强制要求 Base URL** — 创建和编辑时如果 OpenAI/Gemini Image 的 Base URL 为空会被拦下并提示。之前留空会静默回落到官方端点,让"第三方配置"形同虚设
18-
- **失效默认图像服务商有清理入口** — 默认图像服务商的行被删除、类型被改成非媒体类型、或 Key 被清空时,服务商设置页会显示一条琥珀色提示 + 清除按钮。后端也会在删除/改类型时自动清理设置,两边兜底
16+
- **小米 MiMo 升级到 V2.5-Pro** — 按量付费和 Token Plan 两个预设里的默认模型从 `mimo-v2-pro` 全部切到 `mimo-v2.5-pro`,界面上显示名也同步更新为 MiMo-V2.5-Pro
1917

2018
## 下载地址
2119

2220
### macOS
23-
- [Apple Silicon (M1/M2/M3/M4)](https://github.com/op7418/CodePilot/releases/download/v0.53.0/CodePilot-0.53.0-arm64.dmg)
24-
- [Intel](https://github.com/op7418/CodePilot/releases/download/v0.53.0/CodePilot-0.53.0-x64.dmg)
21+
- [Apple Silicon (M1/M2/M3/M4)](https://github.com/op7418/CodePilot/releases/download/v0.54.0/CodePilot-0.54.0-arm64.dmg)
22+
- [Intel](https://github.com/op7418/CodePilot/releases/download/v0.54.0/CodePilot-0.54.0-x64.dmg)
2523

2624
### Windows
27-
- [Windows 安装包](https://github.com/op7418/CodePilot/releases/download/v0.53.0/CodePilot.Setup.0.53.0.exe)
25+
- [Windows 安装包](https://github.com/op7418/CodePilot/releases/download/v0.54.0/CodePilot.Setup.0.54.0.exe)
2826

2927
## 安装说明
3028

apps/site/content/docs/en/providers.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ CodePilot includes built-in configuration presets for major Chinese providers. A
6666
| **Kimi Coding Plan** | Moonshot Kimi coding edition | Pay-as-you-go |
6767
| **Moonshot** | Moonshot API | Pay-as-you-go |
6868
| **MiniMax (Domestic/International)** | MiniMax M2.7 | Token Plan |
69+
| **DeepSeek** | DeepSeek V4 Pro / V4 Flash (Anthropic-compatible endpoint) | Pay-as-you-go |
6970
| **火山引擎 Ark** | ByteDance Volcengine (Doubao, GLM, DeepSeek, Kimi) | Coding Plan |
70-
| **小米 MiMo** | Xiaomi MiMo-V2-Pro (pay-as-you-go or Token Plan) | Pay-as-you-go / Token Plan |
71+
| **小米 MiMo** | Xiaomi MiMo-V2.5-Pro (pay-as-you-go or Token Plan) | Pay-as-you-go / Token Plan |
7172
| **阿里云百炼 Coding Plan** | Alibaba Cloud (Qwen, GLM, Kimi, MiniMax) | Coding Plan |
7273

7374
When adding a Chinese provider in CodePilot, the system automatically handles the authentication method — you just need to enter the key provided by the respective platform. Each provider card shows a direct link to obtain your API key.

apps/site/content/docs/zh/providers.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ CodePilot 内置了国内主流服务商的配置预设,选择后自动填充
6666
| **Kimi Coding Plan** | 月之暗面 Kimi 编程版 | 按量付费 |
6767
| **Moonshot** | 月之暗面 Moonshot API | 按量付费 |
6868
| **MiniMax(国内/国际)** | MiniMax M2.7 | Token Plan |
69+
| **DeepSeek** | DeepSeek V4 Pro / V4 Flash(Anthropic 兼容端点) | 按量付费 |
6970
| **火山引擎 Ark** | 字节跳动火山引擎(豆包、GLM、DeepSeek、Kimi) | Coding Plan |
70-
| **小米 MiMo** | 小米 MiMo-V2-Pro(按量付费或 Token Plan) | 按量 / Token Plan |
71+
| **小米 MiMo** | 小米 MiMo-V2.5-Pro(按量付费或 Token Plan) | 按量 / Token Plan |
7172
| **阿里云百炼 Coding Plan** | 阿里云(通义、GLM、Kimi、MiniMax) | Coding Plan |
7273

7374
在 CodePilot 中添加国内服务商时,系统会自动处理认证方式,你只需填写对应平台提供的密钥。每个服务商卡片上都有直接获取 API Key 的链接。

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codepilot",
3-
"version": "0.53.0",
3+
"version": "0.54.0",
44
"private": true,
55
"license": "BUSL-1.1",
66
"workspaces": [

src/app/api/providers/models/route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { getOAuthStatus } from '@/lib/openai-oauth-manager';
99
// OpenAI models available through ChatGPT Plus/Pro OAuth (Codex API)
1010
// Reasoning effort defaults to 'medium' server-side (not user-configurable)
1111
const OPENAI_OAUTH_MODELS = [
12+
{ value: 'gpt-5.5', label: 'GPT-5.5' },
1213
{ value: 'gpt-5.4', label: 'GPT-5.4' },
1314
{ value: 'gpt-5.4-mini', label: 'GPT-5.4-Mini' },
1415
{ value: 'gpt-5.3-codex', label: 'GPT-5.3-Codex' },
@@ -222,7 +223,7 @@ export async function GET() {
222223

223224
// Legacy: inject ANTHROPIC_MODEL from env overrides if not already present
224225
// Also check upstreamModelId to avoid duplicates (e.g. catalog has modelId='sonnet'
225-
// with upstreamModelId='mimo-v2-pro', and env has ANTHROPIC_MODEL='mimo-v2-pro')
226+
// with upstreamModelId='mimo-v2.5-pro', and env has ANTHROPIC_MODEL='mimo-v2.5-pro')
226227
try {
227228
const envOverrides = provider.env_overrides_json || provider.extra_env || '{}';
228229
const envObj = JSON.parse(envOverrides);

src/components/layout/FeatureAnnouncementDialog.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export function FeatureAnnouncementDialog() {
8585
<p><span className="text-foreground font-medium">AI SDK 引擎</span> — 无需安装 CLI,支持所有已配置的服务商</p>
8686
<p><span className="text-foreground font-medium">Claude Code 引擎</span> — 通过 CLI 驱动,获得完整的命令行能力</p>
8787
</div>
88-
<p>同时支持 <span className="font-medium">OpenAI 授权登录</span>,ChatGPT Plus/Pro 用户可在服务商设置中登录后直接使用 GPT-5.4 等模型。</p>
88+
<p>同时支持 <span className="font-medium">OpenAI 授权登录</span>,ChatGPT Plus/Pro 用户可在服务商设置中登录后直接使用 GPT-5.5 等模型。</p>
8989
</>
9090
) : (
9191
<>
@@ -94,7 +94,7 @@ export function FeatureAnnouncementDialog() {
9494
<p><span className="text-foreground font-medium">AI SDK engine</span> — no CLI needed, works with all configured providers</p>
9595
<p><span className="text-foreground font-medium">Claude Code engine</span> — driven by CLI for full command-line capabilities</p>
9696
</div>
97-
<p>Also supports <span className="font-medium">OpenAI OAuth login</span> — ChatGPT Plus/Pro users can sign in under Providers to use GPT-5.4 and more.</p>
97+
<p>Also supports <span className="font-medium">OpenAI OAuth login</span> — ChatGPT Plus/Pro users can sign in under Providers to use GPT-5.5 and more.</p>
9898
</>
9999
)}
100100
</div>

src/components/settings/provider-presets.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import Bailian from "@lobehub/icons/es/Bailian";
1919
import XiaomiMiMo from "@lobehub/icons/es/XiaomiMiMo";
2020
import Ollama from "@lobehub/icons/es/Ollama";
2121
import OpenAI from "@lobehub/icons/es/OpenAI";
22+
import DeepSeek from "@lobehub/icons/es/DeepSeek";
2223

2324
// ---------------------------------------------------------------------------
2425
// Brand icon resolver
@@ -43,6 +44,7 @@ export function getProviderIcon(name: string, baseUrl: string): ReactNode {
4344
return <XiaomiMiMo size={18} />;
4445
if (url.includes("11434") || lower.includes("ollama")) return <Ollama size={18} />;
4546
if (url.includes("api.openai.com") || lower.includes("openai") || lower.includes("gpt image")) return <OpenAI size={18} />;
47+
if (url.includes("deepseek") || lower.includes("deepseek")) return <DeepSeek size={18} />;
4648
if (lower.includes("bedrock")) return <Bedrock size={18} />;
4749
if (lower.includes("vertex") || lower.includes("google")) return <Google size={18} />;
4850
if (lower.includes("aws")) return <Aws size={18} />;
@@ -89,6 +91,7 @@ function resolveIcon(iconKey: string): ReactNode {
8991
'xiaomi-mimo': <XiaomiMiMo size={18} />,
9092
ollama: <Ollama size={18} />,
9193
openai: <OpenAI size={18} />,
94+
deepseek: <DeepSeek size={18} />,
9295
server: <HardDrives size={18} className="text-muted-foreground" />,
9396
};
9497
return ICON_MAP[iconKey] || <HardDrives size={18} className="text-muted-foreground" />;

src/lib/claude-home-shadow.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ const AUTH_KEYS_TO_STRIP = new Set([
8282
'ANTHROPIC_DEFAULT_OPUS_MODEL',
8383
'ANTHROPIC_SMALL_FAST_MODEL',
8484
'CLAUDE_CODE_SUBAGENT_MODEL',
85+
'CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK',
86+
'CLAUDE_CODE_EFFORT_LEVEL',
8587
'ANTHROPIC_FOUNDRY_API_KEY',
8688
// Bedrock / Vertex routing — they switch the provider entirely
8789
'CLAUDE_CODE_USE_BEDROCK',

src/lib/provider-catalog.ts

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,41 @@ export const VENDOR_PRESETS: VendorPreset[] = [
530530
},
531531
},
532532

533+
// ── DeepSeek ──
534+
{
535+
key: 'deepseek',
536+
name: 'DeepSeek',
537+
description: 'DeepSeek Anthropic-compatible API — V4 Pro / V4 Flash',
538+
descriptionZh: 'DeepSeek Anthropic 兼容 API — V4 Pro / V4 Flash',
539+
protocol: 'anthropic',
540+
authStyle: 'auth_token',
541+
baseUrl: 'https://api.deepseek.com/anthropic',
542+
defaultEnvOverrides: {
543+
CLAUDE_CODE_SUBAGENT_MODEL: 'deepseek-v4-pro',
544+
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
545+
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK: '1',
546+
CLAUDE_CODE_EFFORT_LEVEL: 'max',
547+
},
548+
defaultModels: [
549+
{ modelId: 'sonnet', upstreamModelId: 'deepseek-v4-pro', displayName: 'DeepSeek V4 Pro', role: 'default' },
550+
{ modelId: 'opus', upstreamModelId: 'deepseek-v4-pro', displayName: 'DeepSeek V4 Pro', role: 'opus' },
551+
{ modelId: 'haiku', upstreamModelId: 'deepseek-v4-flash', displayName: 'DeepSeek V4 Flash', role: 'haiku' },
552+
],
553+
defaultRoleModels: {
554+
default: 'deepseek-v4-pro',
555+
sonnet: 'deepseek-v4-pro',
556+
opus: 'deepseek-v4-pro',
557+
haiku: 'deepseek-v4-flash',
558+
},
559+
fields: ['api_key'],
560+
iconKey: 'deepseek',
561+
meta: {
562+
apiKeyUrl: 'https://platform.deepseek.com/api_keys',
563+
docsUrl: 'https://platform.deepseek.com/docs',
564+
billingModel: 'pay_as_you_go',
565+
},
566+
},
567+
533568
// ── Volcengine Ark ──
534569
{
535570
key: 'volcengine',
@@ -556,20 +591,20 @@ export const VENDOR_PRESETS: VendorPreset[] = [
556591
{
557592
key: 'xiaomi-mimo',
558593
name: 'Xiaomi MiMo',
559-
description: 'Xiaomi MiMo Pay-as-you-go API — MiMo-V2-Pro',
560-
descriptionZh: '小米 MiMo 按量付费 — MiMo-V2-Pro',
594+
description: 'Xiaomi MiMo Pay-as-you-go API — MiMo-V2.5-Pro',
595+
descriptionZh: '小米 MiMo 按量付费 — MiMo-V2.5-Pro',
561596
protocol: 'anthropic',
562597
authStyle: 'auth_token',
563598
baseUrl: 'https://api.xiaomimimo.com/anthropic',
564599
defaultEnvOverrides: {},
565600
defaultModels: [
566-
{ modelId: 'sonnet', upstreamModelId: 'mimo-v2-pro', displayName: 'MiMo-V2-Pro', role: 'default' },
601+
{ modelId: 'sonnet', upstreamModelId: 'mimo-v2.5-pro', displayName: 'MiMo-V2.5-Pro', role: 'default' },
567602
],
568603
defaultRoleModels: {
569-
default: 'mimo-v2-pro',
570-
sonnet: 'mimo-v2-pro',
571-
opus: 'mimo-v2-pro',
572-
haiku: 'mimo-v2-pro',
604+
default: 'mimo-v2.5-pro',
605+
sonnet: 'mimo-v2.5-pro',
606+
opus: 'mimo-v2.5-pro',
607+
haiku: 'mimo-v2.5-pro',
573608
},
574609
fields: ['api_key'],
575610
iconKey: 'xiaomi-mimo',
@@ -586,20 +621,20 @@ export const VENDOR_PRESETS: VendorPreset[] = [
586621
{
587622
key: 'xiaomi-mimo-token-plan',
588623
name: 'Xiaomi MiMo Token Plan',
589-
description: 'Xiaomi MiMo Token Plan subscription — MiMo-V2-Pro',
590-
descriptionZh: '小米 MiMo Token Plan 订阅套餐 — MiMo-V2-Pro',
624+
description: 'Xiaomi MiMo Token Plan subscription — MiMo-V2.5-Pro',
625+
descriptionZh: '小米 MiMo Token Plan 订阅套餐 — MiMo-V2.5-Pro',
591626
protocol: 'anthropic',
592627
authStyle: 'auth_token',
593628
baseUrl: 'https://token-plan-cn.xiaomimimo.com/anthropic',
594629
defaultEnvOverrides: {},
595630
defaultModels: [
596-
{ modelId: 'sonnet', upstreamModelId: 'mimo-v2-pro', displayName: 'MiMo-V2-Pro', role: 'default' },
631+
{ modelId: 'sonnet', upstreamModelId: 'mimo-v2.5-pro', displayName: 'MiMo-V2.5-Pro', role: 'default' },
597632
],
598633
defaultRoleModels: {
599-
default: 'mimo-v2-pro',
600-
sonnet: 'mimo-v2-pro',
601-
opus: 'mimo-v2-pro',
602-
haiku: 'mimo-v2-pro',
634+
default: 'mimo-v2.5-pro',
635+
sonnet: 'mimo-v2.5-pro',
636+
opus: 'mimo-v2.5-pro',
637+
haiku: 'mimo-v2.5-pro',
603638
},
604639
fields: ['api_key'],
605640
iconKey: 'xiaomi-mimo',

0 commit comments

Comments
 (0)