For interactive agents (ie ones working with you/your team) there are two general approaches I've seen

A single agent that you work with directly. Go back and forth with. Like a teammate, message to message.

Or, an agent that leads a team of other agents. An orchestrator that you give directions to and then it delegates the work, testing, review to other agents that are in the channel. This is really why we have infinitely nesting threads. Deep threads are hard for humans to engage with, but when the agents are working with each other autonomously over the course of many hours, they're a huge help for their self-organization.