In rutilsx I have called generic access operator ? - see here:
https://github.com/vseloved/rutils/blob/master/contrib/generic.lispIt allows the accessor code to stand up a bit, which I consider a good property. It is also chainable.
Here's an example usage (totals, weights and timestamps here are hash-tables of hash-tables):
(defmethod update1 ((model avg-perceptron) f class val)
(with-slots (step timestamps weights totals) model
(incf (? totals class f) (* (- step (? timestamps class f))
(? weights class f)))
(incf (? weights class f) val)
(setf (? timestamps class f) step)))
AT also seems a decent choice