How do you normalize a sample-by-sample processed signal? I am writing an audio effect based on a second-order filter that adds two samples. The resulting output is clipped. So I multiplied the signal by 0.5, which results in an output that is too low. Since I am process sample-by-sample, I don’t see how you can apply normalization because the peak-values in the normalization window will vary too much.
How do you do this? Calculate the right audible half volumes in dB and add those?
Calculate the right audible half volumes in dB and add those?

Can't do that: dB is a logarithmic thing. Adding logarithms means multiplying the values. You want to build a linear filter, not a self-intermodulation generator, don't you?
If your filter coefficients are really just [1 1], well, then multiplying by 0.5 exactly retains your original signal power for low-frequency signals. Since this is a low-pass filter, of course higher frequencies than DC are attenuated, which is not a fault of the 0.5, but exactly the result of your filtering.
A usual way to avoid clipping that only happens rarely  would be a soft-clip function that lets through any &quot;benign&quot; amplitudes and starts saturating &quot;softly&quot; towards the maximum amplitudes.
If you want to do something more &quot;time-smooth&quot;, that would for example be an adaptive gain control (AGC), which reduces gain gradually as your signal works towards higher peaks. However, that's not a &quot;sample-by-sample&quot; thing, but something with at the very least memory (and often even implemented in a somewhat acausal manner).