Skip to content

[ACP] Expose reasoning effort (5 tiers: low/medium/high/xhigh/max) as a session config option #8514

Description

@kenconnet666

Summary

In the terminal, Qwen Code already supports selecting reasoning effort via
the /effort <tier> command, with five tiers defined in
packages/core/src/core/reasoning-effort.ts:

var REASONING_EFFORT_TIERS = ["low", "medium", "high", "xhigh", "max"];
It is persisted via model.reasoningEffort in settings and applied through config.setReasoningEffort() with per-provider mapping/clamping (clampReasoningEffort).
However, when Qwen Code runs as an ACP agent (e.g. inside JetBrains IDEs), there is no way to select the thinking/reasoning effort: buildConfigOptions() in packages/cli/src/acp-integration/acpAgent.ts returns only two config options  mode and model:
return [modeConfigOption, modelConfigOption];
By contrast, @agentclientprotocol/codex-acp exposes a reasoning_effort select option (REASONING_EFFORT_CONFIG_ID / createReasoningEffortConfigOption), which JetBrains renders as a picker and applies via session/set_config_option.
Expected behavior
Expose the existing five-tier reasoning effort through the standard ACP session config option mechanism, e.g.:
{
  "id": "reasoning_effort",
  "name": "Reasoning effort",
  "category": "model",
  "type": "select",
  "currentValue": "high",
  "options": [
    { "value": "low",    "name": "Low" },
    { "value": "medium", "name": "Medium" },
    { "value": "high",   "name": "High" },
    { "value": "xhigh",  "name": "Extra high" },
    { "value": "max",    "name": "Max" }
  ]
}

session/new / session/load responses include it in configOptions

session/set_config_option applies it (same code path as /effort, i.e. config.setReasoningEffort(); per-provider clamping already exists)

config_option_update refreshes it when relevant (e.g. after a model switch changes which tiers are meaningful)

Optionally include a "default/not set" entry, since today an unset value means "use the provider default"
Why this should be cheap to implement
Everything needed already exists:

Tier list + normalization: REASONING_EFFORT_TIERS, normalizeReasoningEffort() (packages/core/src/core/reasoning-effort.ts)

Runtime getter/setter: config.getReasoningEffort() / config.setReasoningEffort()

Persistence: settings key model.reasoningEffort

Provider adaptation: clampReasoningEffort(requested, supported), DeepSeek/DashScope/Anthropic request translation paths

ACP plumbing: setSessionConfigOption is already implemented; only the option itself is missing from buildConfigOptions()
Reference
codex-acp's reasoning effort option: https://github.com/agentclientprotocol/codex-acp (src/ModelConfigOption.ts)
Environment

@qwen-code/qwen-code 0.21.5 (installed via the JetBrains ACP registry)

IntelliJ IDEA 2026.2 (native ACP / AI Assistant), Windows

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions