What is the uses of Evaluators and Conditions in StateTrees?

I’m trying to understand the flow of using StateTrees, they appeal to me more than BTs
But I don’t exactly get the thoughts behind key features (and there’s obviously few documentation about it still)
If there are any more advanced StateTree users around there, please help me
Any tips would be appreciated

For instance, how should I run the functions that are checked on the Conditions to enter a state?
Like, if I want to run a State if “HasEnemies” is true, where should I execute the function that looks for enemies to feed to the Condition?
I could use a evaluator, but I would need a lot of custom code if I only want to check for that when needed
I could use a Task on the parent state, but that’s pointless because the State I’m trying to trigger would always fail at least once
I could use a custom Condition, but then I waste the information (The enemy found for example) because Conditions can’t output anything

I also have some questions on the general behavior and uses of the Running, Success and Fail returns. If you have information on those I would be glad as well