惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 【当耐特】
The Cloudflare Blog
B
Blog
Last Week in AI
Last Week in AI
小众软件
小众软件
量子位
S
SegmentFault 最新的问题
V
Visual Studio Blog
博客园 - 叶小钗
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
A
About on SuperTechFans
雷峰网
雷峰网
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Martin Fowler
Martin Fowler

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
feat(openai): default to GPT-5.5 · openclaw/openclaw@a36903b
steipete · 2026-04-24 · via Recent Commits to openclaw:main

@@ -22,15 +22,21 @@ import {

2222

} from "./shared.js";

23232424

const PROVIDER_ID = "openai";

25+

const OPENAI_GPT_55_MODEL_ID = "gpt-5.5";

26+

const OPENAI_GPT_55_PRO_MODEL_ID = "gpt-5.5-pro";

2527

const OPENAI_GPT_54_MODEL_ID = "gpt-5.4";

2628

const OPENAI_GPT_54_PRO_MODEL_ID = "gpt-5.4-pro";

2729

const OPENAI_GPT_54_MINI_MODEL_ID = "gpt-5.4-mini";

2830

const OPENAI_GPT_54_NANO_MODEL_ID = "gpt-5.4-nano";

31+

const OPENAI_GPT_55_CONTEXT_TOKENS = 1_000_000;

32+

const OPENAI_GPT_55_PRO_CONTEXT_TOKENS = 1_000_000;

2933

const OPENAI_GPT_54_CONTEXT_TOKENS = 1_050_000;

3034

const OPENAI_GPT_54_PRO_CONTEXT_TOKENS = 1_050_000;

3135

const OPENAI_GPT_54_MINI_CONTEXT_TOKENS = 400_000;

3236

const OPENAI_GPT_54_NANO_CONTEXT_TOKENS = 400_000;

3337

const OPENAI_GPT_54_MAX_TOKENS = 128_000;

38+

const OPENAI_GPT_55_COST = { input: 5, output: 30, cacheRead: 0, cacheWrite: 0 } as const;

39+

const OPENAI_GPT_55_PRO_COST = { input: 30, output: 180, cacheRead: 0, cacheWrite: 0 } as const;

3440

const OPENAI_GPT_54_COST = { input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 0 } as const;

3541

const OPENAI_GPT_54_PRO_COST = { input: 30, output: 180, cacheRead: 0, cacheWrite: 0 } as const;

3642

const OPENAI_GPT_54_MINI_COST = {

@@ -45,18 +51,29 @@ const OPENAI_GPT_54_NANO_COST = {

4551

cacheRead: 0.02,

4652

cacheWrite: 0,

4753

} as const;

54+

const OPENAI_GPT_55_TEMPLATE_MODEL_IDS = [OPENAI_GPT_54_MODEL_ID, "gpt-5.2"] as const;

55+

const OPENAI_GPT_55_PRO_TEMPLATE_MODEL_IDS = [

56+

OPENAI_GPT_54_PRO_MODEL_ID,

57+

OPENAI_GPT_54_MODEL_ID,

58+

"gpt-5.2-pro",

59+

"gpt-5.2",

60+

] as const;

4861

const OPENAI_GPT_54_TEMPLATE_MODEL_IDS = ["gpt-5.2"] as const;

4962

const OPENAI_GPT_54_PRO_TEMPLATE_MODEL_IDS = ["gpt-5.2-pro", "gpt-5.2"] as const;

5063

const OPENAI_GPT_54_MINI_TEMPLATE_MODEL_IDS = ["gpt-5-mini"] as const;

5164

const OPENAI_GPT_54_NANO_TEMPLATE_MODEL_IDS = ["gpt-5-nano", "gpt-5-mini"] as const;

5265

const OPENAI_XHIGH_MODEL_IDS = [

66+

"gpt-5.5",

67+

"gpt-5.5-pro",

5368

"gpt-5.4",

5469

"gpt-5.4-pro",

5570

"gpt-5.4-mini",

5671

"gpt-5.4-nano",

5772

"gpt-5.2",

5873

] as const;

5974

const OPENAI_MODERN_MODEL_IDS = [

75+

"gpt-5.5",

76+

"gpt-5.5-pro",

6077

"gpt-5.4",

6178

"gpt-5.4-pro",

6279

"gpt-5.4-mini",

@@ -97,14 +114,38 @@ function normalizeOpenAITransport(model: ProviderRuntimeModel): ProviderRuntimeM

97114

};

98115

}

99116100-

function resolveOpenAIGpt54ForwardCompatModel(

117+

function resolveOpenAIGptForwardCompatModel(

101118

ctx: ProviderResolveDynamicModelContext,

102119

): ProviderRuntimeModel | undefined {

103120

const trimmedModelId = ctx.modelId.trim();

104121

const lower = normalizeLowercaseStringOrEmpty(trimmedModelId);

105122

let templateIds: readonly string[];

106123

let patch: Partial<ProviderRuntimeModel>;

107-

if (lower === OPENAI_GPT_54_MODEL_ID) {

124+

if (lower === OPENAI_GPT_55_MODEL_ID) {

125+

templateIds = OPENAI_GPT_55_TEMPLATE_MODEL_IDS;

126+

patch = {

127+

api: "openai-responses",

128+

provider: PROVIDER_ID,

129+

baseUrl: "https://api.openai.com/v1",

130+

reasoning: true,

131+

input: ["text", "image"],

132+

cost: OPENAI_GPT_55_COST,

133+

contextWindow: OPENAI_GPT_55_CONTEXT_TOKENS,

134+

maxTokens: OPENAI_GPT_54_MAX_TOKENS,

135+

};

136+

} else if (lower === OPENAI_GPT_55_PRO_MODEL_ID) {

137+

templateIds = OPENAI_GPT_55_PRO_TEMPLATE_MODEL_IDS;

138+

patch = {

139+

api: "openai-responses",

140+

provider: PROVIDER_ID,

141+

baseUrl: "https://api.openai.com/v1",

142+

reasoning: true,

143+

input: ["text", "image"],

144+

cost: OPENAI_GPT_55_PRO_COST,

145+

contextWindow: OPENAI_GPT_55_PRO_CONTEXT_TOKENS,

146+

maxTokens: OPENAI_GPT_54_MAX_TOKENS,

147+

};

148+

} else if (lower === OPENAI_GPT_54_MODEL_ID) {

108149

templateIds = OPENAI_GPT_54_TEMPLATE_MODEL_IDS;

109150

patch = {

110151

api: "openai-responses",

@@ -202,7 +243,7 @@ export function buildOpenAIProvider(): ProviderPlugin {

202243

},

203244

}),

204245

],

205-

resolveDynamicModel: (ctx) => resolveOpenAIGpt54ForwardCompatModel(ctx),

246+

resolveDynamicModel: (ctx) => resolveOpenAIGptForwardCompatModel(ctx),

206247

normalizeResolvedModel: (ctx) => {

207248

if (normalizeProviderId(ctx.provider) !== PROVIDER_ID) {

208249

return undefined;

@@ -234,7 +275,7 @@ export function buildOpenAIProvider(): ProviderPlugin {

234275

if (ctx.provider !== PROVIDER_ID || ctx.listProfileIds("openai-codex").length === 0) {

235276

return undefined;

236277

}

237-

return 'No API key found for provider "openai". You are authenticated with OpenAI Codex OAuth. Use openai-codex/gpt-5.4 (OAuth) or set OPENAI_API_KEY to use openai/gpt-5.4.';

278+

return 'No API key found for provider "openai". You are authenticated with OpenAI Codex OAuth. Use openai-codex/gpt-5.5 (OAuth) or set OPENAI_API_KEY to use openai/gpt-5.5.';

238279

},

239280

suppressBuiltInModel: (ctx) => {

240281

if (

@@ -249,6 +290,16 @@ export function buildOpenAIProvider(): ProviderPlugin {

249290

};

250291

},

251292

augmentModelCatalog: (ctx) => {

293+

const openAiGpt55Template = findCatalogTemplate({

294+

entries: ctx.entries,

295+

providerId: PROVIDER_ID,

296+

templateIds: OPENAI_GPT_55_TEMPLATE_MODEL_IDS,

297+

});

298+

const openAiGpt55ProTemplate = findCatalogTemplate({

299+

entries: ctx.entries,

300+

providerId: PROVIDER_ID,

301+

templateIds: OPENAI_GPT_55_PRO_TEMPLATE_MODEL_IDS,

302+

});

252303

const openAiGpt54Template = findCatalogTemplate({

253304

entries: ctx.entries,

254305

providerId: PROVIDER_ID,

@@ -270,6 +321,18 @@ export function buildOpenAIProvider(): ProviderPlugin {

270321

templateIds: OPENAI_GPT_54_NANO_TEMPLATE_MODEL_IDS,

271322

});

272323

return [

324+

buildOpenAISyntheticCatalogEntry(openAiGpt55Template, {

325+

id: OPENAI_GPT_55_MODEL_ID,

326+

reasoning: true,

327+

input: ["text", "image"],

328+

contextWindow: OPENAI_GPT_55_CONTEXT_TOKENS,

329+

}),

330+

buildOpenAISyntheticCatalogEntry(openAiGpt55ProTemplate, {

331+

id: OPENAI_GPT_55_PRO_MODEL_ID,

332+

reasoning: true,

333+

input: ["text", "image"],

334+

contextWindow: OPENAI_GPT_55_PRO_CONTEXT_TOKENS,

335+

}),

273336

buildOpenAISyntheticCatalogEntry(openAiGpt54Template, {

274337

id: OPENAI_GPT_54_MODEL_ID,

275338

reasoning: true,