Don't listen to anyone who tells you how to build an agent. This stuff has never existed before in the history of the world, and literally everyone is just figuring it out as we go. Work from the simplest basic building blocks possible and do what works for your use case. Eventually things will be figured out, and you can worry about "best practices" then. But it's all just conjecture right now.
I would go further and consider that an agent is an unnecessary concept. "Asynchronous tool calling, with context compression" is more on point for solving complex problems.