The agent runner uses agent workers.
Basically, the runner holds all the state, and the workers are independent.
From a users point of view, you never see which one you are using. But you can also expose both of these pieces and run steps one at a time with stepwise execution, which gives you time to incorporate human feedback, correct steps, debug, etc.
https://docs.llamaindex.ai/en/stable/examples/agent/agent_runner/agent_runner.htmlFrom a dev point of view, this allows for some complex implementations (i.e. parallel task execution, implementing various papers, etc.).