DI for agent orchestration is underrated — I've seen teams hardcode the LLM client in every tool class and then spend days trying to swap providers. Registering the agent factory as scoped vs singleton matters more than most realize: scoped gives you cleaner per-request memory/context isolation, singleton gets you lower init overhead but you have to be disciplined about state. Are you handling tool registration through DI too, or still using attribute-based discovery? The decoupling really shines when you need to mock the LLM for integration tests.