diff --git a/python/sglang/srt/speculative/multi_layer_eagle_worker_v2.py b/python/sglang/srt/speculative/multi_layer_eagle_worker_v2.py index 309efdc308f1..4f3720776161 100644 --- a/python/sglang/srt/speculative/multi_layer_eagle_worker_v2.py +++ b/python/sglang/srt/speculative/multi_layer_eagle_worker_v2.py @@ -673,8 +673,12 @@ def _draft_extend_for_decode( # Batch 2: Draft extend draft_extend_input = EagleDraftExtendInput( hidden_states=batch_result.logits_output.hidden_states, - # Actual width: the multi-layer chain fills num_steps + 1 rows/req. - num_tokens_per_req=self.speculative_num_steps + 1, + # Actual width: the multi-layer chain fills num_steps + 1 rows/req, + # plus the boundary-KV front rows when the widened window is active + # (must match the capture width in the draft-extend graph runner). + num_tokens_per_req=self.speculative_num_steps + + 1 + + self.draft_extend_num_front_tokens, num_tokens_for_logprob_per_req=1, num_front_tokens=self.draft_extend_num_front_tokens, )