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
Summary
In the terminal, Qwen Code already supports selecting reasoning effort via
the
/effort <tier>command, with five tiers defined inpackages/core/src/core/reasoning-effort.ts: