You are building a coding agent for an internal engineering org. The agent should read a repository, plan changes, edit files, run tests, and explain what it changed. It is meant for real software tasks, not toy code generation, so it needs to work across multi-file changes, partial failures, and ambiguous requests.
How would you design a coding agent like Devin or Claude Code?