You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Kimi K3 reasoning variants incorrectly use budget tokens instead of effort #37418
OpenCode generates generic reasoning variants (default/high/max) for Kimi K3 that use budget-token semantics rather than K3's native effort mechanism.
reasoningVariants() attempts to map max through anthropicEffort(), but the k3 API ID returns undefined. It then falls back to ProviderTransform.variants(base), which produces generic Anthropic variants:
high → thinking: { type: "enabled", budgetTokens: 16000 }
max → thinking: { type: "enabled", budgetTokens: 31999 }
K3 currently supports only effort max; low and high are not available yet. The default variant works because no effort is sent and Kimi maps null/undefined to max.
Expected behavior: Do not generate generic budget-token variants for K3. Only expose the native max effort variant, or rely on the default variant and its server-side max. Future effort levels should follow the capabilities declared in models.dev.
All four calls returned successfully, but OpenCode never sent K3 native effort controls. A local explicit variant override was also tested end-to-end and produced the expected Anthropic-compatible K3 payloads:
All three native-effort requests were accepted by the Kimi Code endpoint.
The issue therefore remains valid. The expected behavior should now be updated to expose the low / high / max variants declared by models.dev and lower them to K3 native adaptive effort, without falling back to Anthropic budget-token variants.
Activity
BiuBiu2015 commentedon Jul 17, 2026
Update after Kimi Code exposed multiple K3 effort levels:
low,high, andmaxfor K3.kimi-for-coding/k3with OpenCode 1.18.3 after refreshing the model cache and captured only the sanitized reasoning-related request fields.Observed OpenCode wire payloads:
default: nothinkingor effort field (server default ismax)low: identical todefault; the requested variant is silently ignoredhigh:thinking: { type: "enabled", budget_tokens: 16000 }max:thinking: { type: "enabled", budget_tokens: 31999 }All four calls returned successfully, but OpenCode never sent K3 native effort controls. A local explicit variant override was also tested end-to-end and produced the expected Anthropic-compatible K3 payloads:
low:thinking: { type: "adaptive" }+output_config: { effort: "low" }high:thinking: { type: "adaptive" }+output_config: { effort: "high" }max:thinking: { type: "adaptive" }+output_config: { effort: "max" }All three native-effort requests were accepted by the Kimi Code endpoint.
The issue therefore remains valid. The expected behavior should now be updated to expose the
low/high/maxvariants declared by models.dev and lower them to K3 native adaptive effort, without falling back to Anthropic budget-token variants.