The Anatomy of an Agent: Model vs. Harness
An AI agent is composed of a 10% model and a 90% harness. The harness includes instructions, rule files, tools (MCP servers), orchestration logic, sandboxes, and observability. Most agent failures are configuration issues within the harness—such as missing tools, loose rules, or context bloat—rather than model limitations. Improving agent performance often requires refining this harness rather than swapping the underlying model.
Context Engineering as an Architectural Decision
Context management directly impacts both performance and cost. It should be categorized into two buckets:
- Static Context: System instructions, global memory, and core guardrails loaded on every turn. It is reliable but expensive due to constant token consumption.
- Dynamic Context: Task-specific skills, tool results, and RAG-retrieved documents loaded on demand.
Effective systems use 'progressive disclosure' to load heavy reference material only when needed. This boundary should be treated as a first-class architectural decision, subject to pull requests and version control, rather than an ad-hoc prompting exercise.
Verification: The Line Between Vibe Coding and Engineering
'Vibe coding'—casual, prompt-based generation—is cheap to start but expensive to maintain. As code complexity grows, the 'vibe coding' approach incurs a 3x to 10x cost penalty due to token burn, maintenance debt, and security cleanup.
Transitioning to 'Agentic Engineering' requires formalizing verification through two mechanisms:
- Output Evaluation: Verifying the final result is correct.
- Trajectory Evaluation: Verifying the reasoning path and tool usage used to reach the result.
Reliable systems set the bar at the evaluation suite, not the demo. By investing in structured context and automated evals upfront, teams reduce long-term marginal costs and catch regressions early.
The Compressed Lifecycle
AI compresses implementation time from weeks to hours, but requirements, architecture, and verification remain judgment-heavy tasks. This shifts the bottleneck to specification quality. Modern workflows now blend two modes:
- Conductor: Real-time, IDE-based interaction for exploration.
- Orchestrator: Async, goal-oriented execution for well-defined tasks like migrations or test generation.
Modern tooling allows the same terminal workflow to move from a local prototype to a production-ready agent, effectively collapsing the traditional stack into a single, continuous loop.