[Bug]: Kimi Code export omits support_efforts and default_effort from declared model metadata
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- devtools
Research direction
Start in src/clients/config-export.ts: add the optional support_efforts and default_effort fields to KimiModelBlock, then update buildKimiClientConfig() to read reasoningEfforts and defaultReasoningEffort from ExportModel in src/clients/config-export/contracts.ts. Use src/clients/config-export/dsh.ts as the reference for how the ladder is mapped. Done when the generated block includes the filtered ladder and a default that belongs to it, an explicit empty ladder emits nothing, ultra is dropped, and the existing context and image_in tests still pass.
Written by the indexing model from the issue text.
Description
Client or integration
Other
Area
Installation or packaging
Summary
In ocx 2.96.0, the Kimi Code integration still drops declared reasoning-effort metadata when it writes ~/.kimi-code/config.toml. buildKimiClientConfig() does not read model.reasoningEfforts or model.defaultReasoningEffort, and KimiModelBlock has no support_efforts or default_effort fields. As a result, routed model entries lack the metadata Kimi Code uses to offer thinking-effort selection.
This is the same class of problem previously reported in #2688, but it is still present in the current 2.96.0 source. I am reporting the current source and live configuration rather than assuming the earlier issue's fix was released and later reverted.
The model data itself is complete. For example, /api/models returns this row:
{
"id": "k3.1-pro",
"provider": "kimi",
"namespaced": "kimi/k3.1-pro",
"reasoningEfforts": ["low", "high", "max"],
"defaultReasoningEffort": "low",
"supportsReasoningEffort": true
}
Kimi Code's documented model format supports support_efforts and default_effort. A routed selector such as kimi/k3.1-pro also cannot rely on provider-specific model-name-prefix inference, so omitting the explicit metadata loses the effort control even though the proxy already accepts reasoning_effort for that model.
Reproduction
- Enable a provider/model with a declared effort ladder, such as
kimi/k3.1-proabove, and apply the Kimi Code integration. - Inspect the generated block in
~/.kimi-code/config.toml:
[models."opencodex/kimi/k3.1-pro"]
provider = "opencodex"
model = "kimi/k3.1-pro"
max_context_size = 1048576
display_name = "K3.1 Pro"
capabilities = ["image_in"]
# support_efforts is absent
# default_effort is absent
- Compare with Kimi Code's managed entry for a related model, which contains:
support_efforts = ["low", "high", "max"]
default_effort = "high"
- Compare with the DSH exporter for the same ocx catalog:
src/clients/config-export/dsh.tsreads the ladder and emitsreasoningEfforts, so the effort metadata is available there but missing from Kimi Code.
Current source evidence in 2.96.0:
src/clients/config-export.ts:978-984:KimiModelBlockdeclares onlyprovider,model,max_context_size,display_name, and an optionalcapabilitiestuple containing onlyimage_in.src/clients/config-export.ts:1171-1185:buildKimiClientConfig()uses only the context window, display name, and image modality; it never reads the declared effort fields.src/clients/config-export/contracts.ts:99-104:ExportModelalready carriesreasoningEffortsanddefaultReasoningEffort.src/clients/config-export/dsh.ts:53-72,106-114: DSH explicitly maps and writes the same metadata.
Expected: emit support_efforts from the effective declared ladder and emit default_effort when a declared default belongs to that ladder. Do not invent a ladder for an explicit empty/unknown effort declaration, and filter values the client cannot accept (for example, ocx's orchestration-only ultra must not become a Kimi Code effort). A suitable implementation can reuse the canonical effort projection rather than adding a separate provider-specific fact table.
A focused regression test should cover a declared ladder/default, an explicit empty ladder, and filtering of unsupported values. It should also preserve the existing context/modality behavior and cover the related thinking capability evidence discussed in #2688.
Version
2.96.0 (@bitkyc08/opencodex, npm global); Kimi Code CLI 2.3.3
Operating system
Windows 11 (build 26300)
Provider and model
kimi / k3.1-pro (also applicable to other routed providers and custom model rows)
Logs or error output
There is no write-time error. The integration reports "applied" successfully, but the generated model block omits the fields:
# ocx model metadata
reasoningEfforts = ["low", "high", "max"]
defaultReasoningEffort = "low"
supportsReasoningEffort = true
# generated Kimi Code block
provider = "opencodex"
model = "kimi/k3.1-pro"
max_context_size = 1048576
display_name = "K3.1 Pro"
capabilities = ["image_in"]
# no support_efforts / default_effort
As a local confirmation, I added support_efforts to the 14 generated ocx model entries using their actual declared ladders, filtering out ultra. kimi doctor config then completed with:
OK config.toml C:\Users\<user>\.kimi-code\config.toml
All checked config files are valid.
That manual edit is only local evidence. Reapplying the integration would overwrite it because the writer still omits the fields.
Screenshots and supporting files
The Integrations page shows Kimi Code as applied to ~/.kimi-code/config.toml. Kimi Code's managed model entries contain effort fields, while the ocx-generated entries do not.
Redacted configuration
{
"id": "k3.1-pro",
"provider": "kimi",
"namespaced": "kimi/k3.1-pro",
"reasoningEfforts": ["low", "high", "max"],
"defaultReasoningEffort": "low",
"supportsReasoningEffort": true
}
Checks
- I searched existing issues and documentation.
- I removed secrets, tokens, account details, request credentials, and personal data.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.3k
- Avg merge
- 16h 51m
- Merged PRs (30d)
- 681
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lidge-jun/opencodex
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
lidge-jun/opencodex#8101 · 2 comments ·
Maintainers usually reply within 1 day
-
bug install
Difficulty 4/5 3-5 days Newbie friendliness 30/100
lidge-jun/opencodex#8093 · 1 comment ·
Maintainers usually reply within 1 day
-
bug proxy tools
Difficulty 4/5 3-5 days Newbie friendliness 25/100
lidge-jun/opencodex#8089 · 2 comments ·
Maintainers usually reply within 1 day
-
account-pool provider provider-compatibility
Difficulty 4/5 3-5 days Newbie friendliness 22/100
lidge-jun/opencodex#8087 · 1 comment ·
Maintainers usually reply within 1 day
-
account-pool enhancement
Difficulty 4/5 3-5 days Newbie friendliness 30/100
lidge-jun/opencodex#8082 · 1 comment ·
Maintainers usually reply within 1 day
All issues in lidge-jun/opencodex
Similar issues
-
area: cli bug flake ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
gazetta-studio/gazetta-studio#1772 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
microsoft/playwright#43875 · 1 comment ·
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
feature
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
calagopus/panel#285 · 1 comment ·
Maintainers usually reply within 1 day