Just Vats.

If Agents have unique names, and Aspects have unique names, then a particular Agent and its particular Aspects has a unique name as well. We might as well do away with Agents and Aspects altogether, and simply store all data in a central database. Then state is global, auditable, orthogonally persistent, etc etc.

So, rather than imitate Unity's GameObject/Component design, simply have a key value store acted upon by asynchronous processes.
Just dotted paths for Database