Abstraction cost is not fixed: with compile-time evaluation and optimization, a high-level construct can compile down to code as fast as (or faster than) the hand-written low-level equivalent, making the abstraction 'negative overhead' rather than merely zero overhead.
If abstraction layers in an agent system are resolved at build/compile time rather than per-request, harness layering (schemas, planners, tool wrappers) can be added for expressiveness and safety without paying a runtime latency or token cost.
Any layer added above a runtime can be made effectively free if its decisions are moved to build time: typed tool schemas compiled to constrained decoding, prompt templates compiled to static prompts, routing tables precomputed instead of re-decided per call.
More abstraction does not have to cost you anything.
C++ can achieve negative overhead abstractions through compile-time evaluation and optimization.
Templates and inline functions optimizing away abstraction penalty.