Skip to content

Kimi K3 reasoning variants incorrectly use budget tokens instead of effort #37418

Description

@BiuBiu2015

Description

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:

  • highthinking: { type: "enabled", budgetTokens: 16000 }
  • maxthinking: { 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.

References:

Plugins

No response

OpenCode version

1.18.3

Steps to reproduce

  1. Authenticate with the built-in Kimi For Coding provider and refresh the model list.
  2. Select kimi-for-coding/k3.
  3. Open the reasoning variant selector with Ctrl+T.
  4. Observe that default, high, and max are available, while the generated high and max options use Anthropic budgetTokens.

Screenshot and/or share link

No response

Operating System

macOS

Terminal

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions