DeepSeek effort aliases silently escalate low/medium; configured variants are not bridged to request options

Author: youdiaoCreated Sep 17, 2026Updated Sep 17, 2026

Configured reasoning effort silently dropped when variant channel is not bridged to options.reasoningEffort

oh-my-openagent version: 4.19.4

Reproduction

Configure an agent with reasoning: "high" for a model served through an OpenAI-compatible provider. The model's resolved capabilities declare high as a variant, but the provider has no default reasoning effort. Start a fresh oh-my-openagent run for that agent and inspect an allowlisted outbound request capture.

Expected: the request contains reasoning_effort: "high".

Actual: the request has no reasoning_effort field.

lowerReasoningForModel returns { variant: level } whenever the configured level is included in model capabilities. applyAgentVariant therefore populates message.variant. In createChatParamsHandler, desired.variant is read from that message and the resulting variant is written back to rawMessage.variant, but the handler never bridges that value to output.options.reasoningEffort. Mirroring the same value in both reasoning and variant does not fix it because normalization collapses them to reasoning.

Second issue: non-configurable DeepSeek escalation

The DeepSeek-family compatibility table hardcodes low -> high, medium -> high, and xhigh -> max for reasoningEffortAliases. When the options reasoning-effort path is selected, a configured low effort can silently serialize as high. There is no opt-out.

Local workaround

I locally disabled the DeepSeek alias table as a temporary mitigation. A chat.params hook writing output.options.reasoningEffort serializes reasoning_effort for GPT-5-family control requests, so an upstream bridge at this handler is a viable direction; it must preserve explicitly supplied options as higher precedence. This is a dist-bundle workaround and will be replaced by updates.

Source: code-yeongyu/oh-my-openagent