There are no "derivative collect" commands in xTensor. Derivatives thread automatically over sums, like D itself does, so any collection operation would be immediately undone by the collected derivative operator, unless we inserted some Hold or Inactive wrapper.
If you know that your problem only has first and second order derivatives, say, then the simplest (and fastest) thing to do here is to write separate rules for first and second order derivatives of your original rule.
But let us suppose that your problem involves very high derivative orders, and you don't want to write separate rules. Then you could do the following. I will simplify your problem, for the sake of clarity. Start with a basic setup:
<< xAct`xTensor`
DefManifold[M, 4, {a, b, c, d, e, f}]
DefMetric[-1, g[-a, -b], CD]
DefTensor[A[], M]
DefTensor[B[], M]
DefTensor[F[], M]
Imagine that you want to replace A[] + B[] -> F[] inside an expression that contains high order derivatives of A[] and B[].
Define this recursive function:
LinearCollect[expr_, patt_, rule_] := Quiet[Module[{p},
expr /. ((p: patt)[expr1_] + (p: patt)[expr2_] :> p[LinearCollect[expr1 + expr2, patt, rule]]) /. rule
]]
Take for example the expression:
expr = PD[-a][PD[-b][A[]]] + PD[-a][PD[-b][B[]]]
Then we can do this:
In[]:= LinearCollect[expr, PD[_], A[] + B[] -> F[]]
Out[]= PD[-a][PD[-b][F[]]]
The second argument specifies the head pattern you want to collect, and the third argument specifies the internal rule you want to apply. The pattern should not have names inside (i.e. do not use PD[a_]).
The key point in the construction is to use a pattern name p to make sure that we are collecting the exact same pattern, including index names. For example this does not work:
expr = PD[-a][PD[-b][A[]]] + PD[-b][PD[-a][B[]]]
In[]:= LinearCollect[expr, PD[_], A[] + B[] -> F[]]
Out[]= PD[-a][PD[-b][A[]]] + PD[-b][PD[-a][B[]]]
because the indices of the two double derivatives are sorted differently.
Cheers,
Jose.