web: model tooltip always shows "No reasoning" because capabilities.reasoning is hard-coded false
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- frontend
Línea de trabajo
Encuentra el código de la UI web que transforma los modelos del servidor en la estructura de modelos del cliente; el issue señala la asignación de capabilities.reasoning y el modelo variants como los datos pertinentes. Lee cómo se representan variants y cómo el tooltip consulta la capability; después, comprueba si hay pruebas existentes sobre la asignación de modelos o el selector de modelos. El trabajo estará terminado cuando los modelos con variantes de reasoning muestren «Allows reasoning» y los modelos sin ellas muestren «No reasoning», y las variantes correspondientes sigan estando disponibles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
In the Web UI, the model picker tooltip reports "No reasoning" for every model, even ones that clearly expose reasoning. Reasoning detection is driven by capabilities.reasoning, which the client hard-codes to false (and which the V2 model payload never populates) instead of being derived from the model's variants (thinking / effort). Result: users believe no model supports reasoning.
Environment
- opencode version: 2.0.26
- OS: Linux VM-0-3-ubuntu 7.0.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 4 09:10:14 UTC 2026 x86_64 GNU/Linux
- Terminal: Web UI in a browser (client served by
opencode serve --serviceon:port); shell TERM=xterm-256color - Shell: /bin/bash
- Install/channel: latest installer,
/home/ubuntu/.opencode/bin/opencode - Active plugins: none found in config
Reproduction
/connect→ select the built-in OpenCode Console provider and enter an API key (provider idopencode).- Start/serve the Web UI (
opencode serve; in our case the shared background service athttp://<host>:<port>). - Open the model picker and hover/inspect a model that supports reasoning, e.g. Claude Haiku 5.5 (
opencode/claude-haiku-5-5). - The tooltip's Reasoning row shows "No reasoning".
The same happens for every model in the provider, e.g. opencode/gpt-5.5, opencode/claude-opus-5-5, opencode/glm-5.3.
Expected Behavior
A model that exposes reasoning variants should show "Allows reasoning" (and offer the corresponding variants).
Actual Behavior
Every model shows "No reasoning", regardless of its actual capabilities. No error is raised.
Additional Context
Server truth contradicts the tooltip. opencode api get /api/model returns reasoning variants for opencode/claude-haiku-5-5:
{
"id": "claude-haiku-5-5",
"providerID": "opencode",
"package": "@opencode/ai/providers/anthropic",
"capabilities": { "tools": true, "input": ["text","image","pdf"], "output": ["text"] },
"variants": [
{ "id": "none", "settings": { "thinking": { "type": "disabled" } } },
{ "id": "low", "settings": { "thinking": { "type": "adaptive", "display": "summarized" }, "effort": "low" } },
{ "id": "medium", "settings": { "thinking": { "type": "adaptive", "display": "summarized" }, "effort": "medium" } },
{ "id": "high", "settings": { "thinking": { "type": "adaptive", "display": "summarized" }, "effort": "high" } },
{ "id": "xhigh", "settings": { "thinking": { "type": "adaptive", "display": "summarized" }, "effort": "xhigh" } },
{ "id": "max", "settings": { "thinking": { "type": "adaptive", "display": "summarized" }, "effort": "max" } }
]
}
The V2 OpenAPI Model.Capabilities schema only defines { tools, input, output } — there is no reasoning field. Reasoning is expressed through variants (settings.thinking / settings.effort) and compatibility.reasoningField.
Client hard-codes the flag. In the served client bundle (_assets/runtime-*.js), server models are mapped into a models.dev-shaped object with reasoning forced to false:
t.models[e.id] = {
id: e.id,
providerID: e.providerID,
api: { id: e.modelID, url: ``, npm: e.package ?? t.id },
name: e.name,
family: e.family,
capabilities: {
temperature: false,
reasoning: false, // <-- hard-coded; never derived from e.variants
attachment: e.capabilities.input.some(x => x !== `text`),
toolcall: e.capabilities.tools,
input: { text: ..., audio: ..., image: ..., video: ..., pdf: ... },
output: { text: ..., audio: ..., image: ..., video: ..., pdf: ... },
interleaved: false,
},
...
variants: Object.fromEntries(e.variants.map(e => [e.id, e.settings ?? {}])),
}
The tooltip then chooses its label from this flag (i18n keys in the client bundle):
"model.tooltip.reasoning": "Reasoning"
"model.tooltip.reasoning.allowed": "Allows reasoning"
"model.tooltip.reasoning.none": "No reasoning"
Because capabilities.reasoning is always false, the none label is always selected.
Impact: display-only. Selecting a reasoning variant (e.g. #high) still works, but the UI misleads users into thinking reasoning is unsupported. Suggested fix: derive reasoning from whether the model exposes reasoning variants (e.g. any variant carrying settings.thinking), or from a dedicated capability on the model payload.
Frequency: reproducible consistently on every load.
- Lenguaje dominante
- TypeScript
- Estrellas
- 213k
- Forks
- 28.4k
- Merge medio
- 8 h 29 min
- PR fusionados (30 d)
- 252
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de anomalyco/opencode
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
anomalyco/opencode#56380 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
anomalyco/opencode#56352 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
web / desktop client: model tooltip shows "No reasoning" for models that expose reasoning variantsAbiertopending close triaging
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
anomalyco/opencode#56317 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
anomalyco/opencode#56277 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
anomalyco/opencode#56251 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de anomalyco/opencode
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ranxianglei/billion-context#3583 ·
Los mantenedores suelen responder en 1 día
-
bug:new
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
callstackincubator/simlock#673 ·
Los mantenedores suelen responder en 1 día
-
documentation v3
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
NIAEFEUP/website-niaefeup-frontend#489 ·
Los mantenedores suelen responder en 2 días