Skip to content

feat(settings): let OpenAI-compatible profiles declare supported reasoning effort levels (DTE F7) #1376

Description

@easonLiangWorldedtech

What & why

Self-hosted / OpenAI-compatible models (custom OpenAI endpoint, LM Studio, Ollama, vLLM, SGLang, and similar) do not advertise supportsReasoningEffort in the model registry, so the Dynamic Thinking Effort (DTE) feature set is unavailable for them even when the underlying model supports reasoning effort control.

This enhancement adds a per-profile setting that lets the user declare the supported reasoning effort levels for an OpenAI-compatible provider, so the existing DTE surfaces (composer toggle, set_thinking_effort tool gating, new_task effort validation, task-header chip) become available for self-hosted models.

Scope

  • New per-profile setting supportedEffortLevels for OpenAI-compatible profiles (array of effort levels, multi-select in Settings UI).
  • Validation + settings round-trip (storage → webview → runtime).
  • Capability resolution: a declared list is treated as the model's supportsReasoningEffort array (registry values win when both present); undeclared profiles keep today's behavior (no capability advertised).
  • i18n for the new setting across all locales.
  • e2e coverage for the declaration + validation flow.

Follow-up (tracked separately)

Wiring the declared / task-local effort into the actual provider request is a separate follow-up, because each server family needs a different wire shape: LM Studio accepts the object form reasoning: { effort } (flat reasoning_effort is ignored on /v1/chat/completions); vLLM and SGLang take a flat top-level reasoning_effort; Ollama uses its think parameter. A per-provider wire builder gated by the declared capability (undeclared → send nothing) is the design.

Part of the Dynamic Thinking Effort series (umbrella plan: DTE F7). Related: #1328, #1329, #1330, #1331, #1332.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions