Kimi K3 · Lesson 12 of 14 · Behaviour
Pretraining produced something that can predict tokens. Nine specialist models and a consolidation step produced something that can work for hours. Then the team published three ways it falls short.
Last piece of new material. The architecture explains what K3 can compute; this explains what it actually does, and the three caveats that matter if you deploy it.
① SFT cold start
synthesised agent trajectories from earlier Kimi models,
multi-stage verified, human-in-the-loop annotated,
serialised in an XTML-based chat template
▼
② RL specialise
3 domains × 3 effort levels = 9 expert models
general tasks ┐
general agents ├── each trained at low / high / max
coding agents ┘
▼
③ MOPD consolidate
Multi-Teacher On-Policy Distillation:
all nine experts distilled into ONE model that keeps
each specialisation at each effort level
training specialized RL models for individual tasks,it covers three broad domains each spanning a wide spectrum of sub-tasks.1
The choice worth noticing is that effort level is a trained axis, not a knob bolted on afterwards. Nine experts means each domain got its own model at each of low, high, and max. When you set effort on the API, you are selecting behaviour that was optimised at that budget.
MOPD is conceptually simple once you see the reward. For each token the student generates, compare the probability the appropriate teacher would have assigned it against the student's own. The log-ratio is the reward, clipped to keep extremes from destabilising training.1
MULTI-TEACHER ON-POLICY DISTILLATION
sample a domain d and an effort level e
│
▼
pick the matching teacher from the nine
│
▼
student generates a token yₜ
│
▼
reward = clip( log [ π_teacher(yₜ) / π_student(yₜ) ] , ±R_max )
└── dense: one signal per token, not per task ──┘
ON-POLICY means the student learns from its OWN outputs,
so it improves where it actually goes wrong
naturally enabl[es] infrastructure-level optimizations such as partial rollout training for long-horizon tasks.
One negative result reported in passing, and negative results are worth collecting: they also tried more fine-grained top-k distillation objectives and observed no clear advantage in either convergence speed or final performance.
The simple log-ratio was enough.
The environments are where K3's agentic behaviour is actually built. The report describes training a general loop of reasoning, acting, observing, verifying, and adapting, often over hundreds or thousands of tool calls and millions of accumulated context tokens.
1
Two infrastructure details make that loop trainable, and both are worth knowing because they explain what K3 is good at.
QAT runs through the entire post-training stage, SFT and RL both. During RL, rollout and training share the same quantization scheme — eliminating the train–inference mismatch.
1 The model does its reinforcement learning at the precision it will be served at, so it never has to adapt to a format change at deployment. MoE expert weights go to MXFP4; attention projections, latent MoE projections, shared experts, and routers stay higher precision.
The launch post includes a limitations section written against the team's own model. This is the most useful part of the release for anyone deciding whether to deploy, and the first one is a genuine operational trap.
① SENSITIVITY TO THINKING HISTORY ← the trap
K3 was trained in preserved-thinking-history mode.
If you do NOT pass its reasoning back on the next turn,
or switch sessions mid-stream, quality
"may become highly unstable."
▸ Practical: persist and replay the reasoning blocks.
Dropping them to save tokens is the expensive kind
of saving.
② EXCESSIVE PROACTIVENESS
May "make unexpected decisions on the user's behalf."
▸ Practical: constrain scope explicitly in the system
prompt or AGENTS.md. Assume it will act unless told
where the boundaries are.
③ USER-EXPERIENCE GAP
A "noticeable gap in user experience" versus Claude
Fable 5 and GPT-5.6 Sol, beyond what benchmarks capture.
▸ Practical: benchmark scores will overstate how it
feels to use. Trial it on your own work.
Most API integrations strip reasoning blocks between turns, because they are large and look like scratch work. For K3 that is a correctness issue, not an optimisation. If you evaluate K3 and find it erratic on multi-turn tasks, check whether your harness is preserving thinking history before concluding anything about the model.
Your mission included being able to make a grounded call on where K3 fits. Here is the summary the evidence supports.
| Question | What the evidence says |
|---|---|
| Is it the best model? | No. It trails Claude Fable 5 and GPT-5.6 Sol overall, and the report says so in its own abstract. |
| Where does it lead? | BrowseComp (91.2), ProgramBench (77.8), SWE-Marathon (42.0), WebDev Arena (1,678 Elo, first of 99). |
| Is it the best open model? | Yes, on this suite, and by a clear margin over GLM-5.2. |
| Is it good value? | Consistently. 38% of Fable 5's cost on KCB 2.0; best BrowseComp score at half GPT-5.6 Sol's price. |
| What is it for? | Long-horizon agentic work, web development, deep research at long context, and anything where open weights matter. |
| What would rule it out? | Under 64 accelerators for self-hosting; a harness that discards reasoning between turns; tasks needing the last few points of raw capability. |
Why did K3's post-training produce nine models before producing one?
General tasks, general agents, and coding agents, each trained at low, high, and max effort. Multi-Teacher On-Policy Distillation then merges all nine into one model that retains each specialisation at each effort level. Effort is a trained axis, not a knob added afterwards.
Your K3 integration gives erratic results on multi-turn agentic tasks. What do you check first?
The first published limitation: K3 was trained in preserved-thinking-history mode, and quality "may become highly unstable" if reasoning is not passed back or sessions switch mid-stream. Most harnesses strip reasoning blocks by default, which makes this a correctness issue rather than an optimisation.
What is notable about how QAT was applied during K3's reinforcement learning?
QAT covers the entire post-training stage, SFT and RL both, with rollout and training using the same scheme. The model learns at the precision it will be served at, so nothing shifts at deployment. This is also why SiTU-GLU's activation bound exists.
✅ L1 the shape of K3 three axes, config table
✅ L2 KDA part 1 fade / erase / write
✅ L3 KDA part 2 chunkwise, g_min, MLA, NoPE
✅ L4 Attention Residuals depth as retrieval
✅ L5 Review A interleaved recall
✅ L6 LatentMoE sparsity 56, deriving 2.78T
✅ L7 SiTU-GLU bounded activations
✅ L7b Quantile Balancing even expert load
✅ L8 native vision from-scratch MoonViT-V2
✅ L9 Per-Head Muon optimiser + scaling law
✅ L10 Review B interleaved recall
✅ L11 serving cost, cache, quantization
✅ L12 post-training RL, MOPD, limitations
▢ L13 Review C capstone
One lesson left, and it is all retrieval. Review C asks you to reconstruct the whole architecture from a blank page, explain K3 to three different audiences, and read an unseen passage from the report cold. That last exercise is the real test of the mission. Remembering K3 was never the goal; reading the next frontier model report without help is.