feat: add codex fast mode and harden subagent launch

This commit is contained in:
luckyyzh
2026-08-05 03:24:17 +08:00
parent a196c3a6b1
commit 836042b97c
12 changed files with 5950 additions and 3893 deletions
@@ -151,6 +151,13 @@ const ModelCostSchema = Type.Object({
tiers: Type.Optional(Type.Array(ModelCostTierSchema)),
});
const ServiceTierSchema = Type.Union([
Type.Literal("auto"),
Type.Literal("default"),
Type.Literal("priority"),
Type.Literal("flex"),
]);
const ModelDefinitionSchema = Type.Object({
id: Type.String({ minLength: 1 }),
name: Type.Optional(Type.String({ minLength: 1 })),
@@ -163,6 +170,7 @@ const ModelDefinitionSchema = Type.Object({
contextWindow: Type.Optional(Type.Number()),
maxTokens: Type.Optional(Type.Number()),
headers: Type.Optional(Type.Record(Type.String(), Type.String())),
serviceTier: Type.Optional(ServiceTierSchema),
compat: Type.Optional(ProviderCompatSchema),
});
@@ -183,6 +191,7 @@ const ModelOverrideSchema = Type.Object({
contextWindow: Type.Optional(Type.Number()),
maxTokens: Type.Optional(Type.Number()),
headers: Type.Optional(Type.Record(Type.String(), Type.String())),
serviceTier: Type.Optional(ServiceTierSchema),
compat: Type.Optional(ProviderCompatSchema),
});
@@ -117,6 +117,7 @@ function applyModelOverride(model: Model<Api>, override: ModelsJsonModelOverride
: model.cost,
contextWindow: override.contextWindow ?? model.contextWindow,
maxTokens: override.maxTokens ?? model.maxTokens,
serviceTier: override.serviceTier ?? model.serviceTier,
compat: mergeCompat(model.compat, override.compat),
};
}
@@ -154,6 +155,7 @@ function modelFromJson(
contextWindow: definition.contextWindow ?? 128000,
maxTokens: definition.maxTokens ?? 16384,
headers: undefined,
serviceTier: definition.serviceTier,
compat: mergeCompat(providerConfig.compat, definition.compat),
};
}
+5
View File
@@ -309,8 +309,13 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
const websocketConnectTimeoutMs =
options?.websocketConnectTimeoutMs ?? settingsManager.getWebSocketConnectTimeoutMs();
const headerRunner = extensionRunnerRef.current;
// Model-level service tier (models.json `serviceTier`, e.g. "priority" for
// Codex fast mode) is forwarded as request `service_tier`. Providers that
// don't understand it ignore the option.
const serviceTier = model.serviceTier;
return modelRuntime.streamSimple(model, context, {
...options,
...(serviceTier ? { serviceTier } : {}),
timeoutMs,
websocketConnectTimeoutMs,
maxRetries: options?.maxRetries ?? providerRetrySettings.maxRetries,