Skip to content

app: model picker tooltip always shows "No reasoning" for V2 catalog models #55906

Closed as duplicate

Description

@lccc233

Summary

In the V2 app model picker, the hover tooltip's Reasoning row always reads "No reasoning" / 「不支持推理」, even for models that clearly support reasoning. For example opencode/deepseek-v4.1-flash-free shows "No reasoning" in the tooltip, yet still exposes low / high / max thinking-effort variants and streams a thinking block. The tooltip reads a capability field that V2 no longer populates.

Environment

  • opencode version: desktop app 2.0.30 (C:\Users\liche\AppData\Local\Programs\@opencode-aidesktop\OpenCode.exe); the npm CLI on PATH is a separate opencode-ai@1.18.31
  • OS: Windows_NT 10.0.26200 (win32 x64)
  • Terminal: xterm-256color (bug is in the app UI, not the terminal)
  • Shell: C:\WINDOWS\system32\cmd.exe
  • Install/channel: latest (desktop app installer)
  • Active plugins: none (global config only sets $schema)

Reproduction

  1. Open the app model picker (/models).
  2. Hover a reasoning model such as opencode/deepseek-v4.1-flash-free (or opencode-go/deepseek-v4.1-flash).
  3. Observe the tooltip's Reasoning row reads "No reasoning" / 「不支持推理」.
  4. Select the model: it still offers the low / high / max variants (thinking effort) and streams a thinking block.

Expected Behavior

When a model advertises reasoning (has reasoning-effort variants and/or reasoning metadata), the tooltip should report that it supports reasoning.

Actual Behavior

The tooltip's Reasoning row reports "No reasoning" regardless of the model.

Additional Context

Source analysis:

  • The label is decided in packages/app/src/providers/models/tooltip.tsx:110-118 from model.capabilities.reasoning (falling back to model.reasoning).
  • V2 catalog models do not carry a reasoning capability: packages/core/src/model.ts:32 (mergeCapabilities) and packages/core/src/models-dev.ts:232 build capabilities with only tools / input / output.
  • The client sync hardcodes the value: packages/app/src/runtime/server/global-sync/utils.ts:84 sets reasoning: false, so the tooltip reads false for every catalog model.

The real reasoning behavior is driven by separate data that is already correct:

  • Thinking effort = variants, derived from models.dev reasoning_options (packages/core/src/models-dev.ts:115 via Variant.resolve). For deepseek-v4.1-flash this is { "type": "effort", "values": ["low", "high", "max"] }.
  • Thinking text = streamed reasoning parts, using the field from interleaved / compatibility.reasoningField ({ "field": "reasoning_content" } for DeepSeek).

models.dev reports reasoning: true and interleaved: { field: "reasoning_content" } for deepseek-v4.1-flash, so the catalog data is correct and only the tooltip's field is disconnected/stale.

  • Frequency: always (deterministic).
  • Impact: cosmetic/misleading only; reasoning features still work. No workaround needed.

Activity

  1. opencode-agent commented on Oct 16, 2026

    @opencode-agent
    Contributor

    Thanks for the clear report and the root-cause analysis! I think this is a duplicate of #50257, which tracks the same "No reasoning" tooltip for every V2 model in the app model picker. The cause is the same too: capabilities.reasoning is hardcoded to false in the app's global-sync mapper, and the V2 model capabilities never carry the catalog's reasoning flag. A fix is open in #55100.

    Possible duplicates and related issues, most likely first:

    The bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different.

  2. opencode-agent commented on Oct 17, 2026

    @opencode-agent
    Contributor

    We didn't hear back, so I'm closing this as a duplicate of #50257. That issue tracks the same "No reasoning" tooltip in the app model picker for V2 models, and the cause is the same: capabilities.reasoning is hardcoded to false. A fix is open in #55100. Please follow #50257 for updates. If your case turns out to be different, reply here with the details and we can reopen. Thanks again for the thorough analysis!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions