기존 코딩 에이전트들이 마음에 안 들어서 직접 만들었습니다 — Mario Zechner (Pi)
원제 · I Hated Every Coding Agent, So I Built My Own — Mario Zechner (Pi)
핵심 요약
복잡한 기능을 배제하고 파일 조작과 Bash 권한만 부여한 미니멀리즘 설계의 코딩 에이전트 Py는 82개 작업으로 구성된 Terminal Bench에서 최상위권 성능을 기록하며 도구의 확장성과 제어권의 중요성을 증명한다.
하이라이트
기존 코딩 에이전트인 Cloud Code는 기능의 90%가 용도를 알 수 없는 상태이며 사용자 몰래 컨텍스트를 조작하여 워크플로우를 파괴한다.
OpenCode는 매 턴마다 40,000 토큰 이전의 데이터를 삭제하는 비효율적인 컨텍스트 관리로 프롬프트 캐싱 인프라를 남용한다.
LSP(Language Server Protocol)를 통한 실시간 피드백 주입은 수정 중인 미완성 코드에 대해 모델에게 혼란을 주어 성능을 저하시킨다.
에이전트에게 필요한 핵심 도구는 파일 읽기, 쓰기, 수정, Bash 실행 등 단 4가지이며 Bash만으로도 대부분의 복잡한 작업 수행이 가능하다.
Py는 시스템 프롬프트의 토큰 양을 최소화하고 확장 프로그램 핫 리로드를 지원하여 5분 내에 커스텀 UI나 도구를 구축할 수 있는 환경을 제공한다.
타임라인
기존 코딩 에이전트의 진화와 한계
초기 코딩 보조는 단순한 함수 단위의 복사 작업이었으나 기술의 발전으로 모델이 직접 코드베이스를 탐색하고 수정하는 수준에 이르렀다. 이러한 변화는 개발자가 직접 코드를 작성하는 시간을 획기적으로 줄여주었으며 개발 워크플로우의 근본적인 변화를 가져왔다.
- 2023년 초 ChatGPT 복사 및 붙여넣기로 시작된 코딩 보조 방식은 깃허브 코파일럿의 자동 완성 시대를 거쳐 에이전틱 검색 단계로 진입했다.
- 강화 학습을 통해 모델이 파일과 Bash 도구를 직접 사용하게 되면서 인간보다 훨씬 많은 코드를 생성하는 것이 가능해졌다.
상업용 및 오픈 소스 도구의 설계 결함
과도한 기능 추가는 사용자가 도구의 동작 원리를 이해하지 못하게 만드는 암흑 물질을 생성한다. 특히 터미널 UI를 게임 엔진처럼 처리하려는 시도나 불안정한 업데이트는 도구의 신뢰성을 떨어뜨리고 숙련된 개발자의 요구사항을 충족하지 못하게 한다.
- Cloud Code는 불필요한 기능을 과도하게 추가하여 실제 사용량이 전체 기능의 5%에 불과한 비대한 소프트웨어가 되었다.
- 도구 제공업체가 사용자 모르게 컨텍스트 정보를 매일 변경하거나 주입함으로써 기존에 잘 작동하던 모델의 반응을 예측 불가능하게 만든다.
기술적 오판과 보안 취약점 사례
설계 단계에서의 심도 있는 고민 부족은 성능 저하와 보안 사고로 이어진다. 특히 프롬프트 캐싱을 고려하지 않은 컨텍스트 절삭 방식은 인프라 비용을 급증시키며 모델이 이전 작업 내용을 기억하지 못하게 만드는 원인이 된다.
- OpenCode는 모든 메시지를 개별 JSON 파일로 저장하는 비효율적인 아키텍처와 치명적인 원격 코드 실행(RCE) 보안 결함을 장기간 방치했다.
- 도구 호출 직후에 LSP 오류를 모델에 주입하는 방식은 전체 수정 과정이 끝나지 않은 상태에서 모델에게 부정적인 피드백을 주어 작업을 포기하게 만든다.
미니멀리즘 에이전트 Py의 설계 원칙
Terminal Bench 결과에 따르면 복잡한 계획 기능이나 웹 검색 없이도 최소한의 인터페이스만으로 모델은 충분한 성능을 발휘한다. Py는 사용자가 직접 도구의 작동 방식을 수정하거나 프로젝트 특화 확장 기능을 5분 내에 추가할 수 있도록 핫 리로드를 포함한 높은 확장성을 제공한다.
- Py는 600줄의 TypeScript 코드로 작성된 가벼운 TUI와 4가지 핵심 도구만으로 구성된 확장 가능한 SDK를 지향한다.
- 사용자가 에이전트의 모든 동작을 승인하는 방식은 피로감을 유발하므로 컨테이너화된 환경에서 완전한 자율성을 부여하는 것이 더 효과적이다.
에이전트 협업 및 오픈 소스 생태계 보호
사용자는 Py를 통해 웹사이트 요소에 주석을 달아 피드백을 주거나 에이전트가 돌아가는 동안 게임을 즐기는 등 자유로운 확장이 가능하다. 또한 AI가 스팸처럼 생성하는 Pull Request로부터 저장소를 보호하기 위해 'OSS 휴가'나 'Vouch' 프로젝트와 같은 인간 중심의 검증 절차를 도입하여 오픈 소스 생태계의 품질을 유지한다.
- 선형적인 채팅 구조 대신 트리 구조의 세션 관리를 통해 비용을 정확히 추적하고 여러 에이전트 간의 소통을 지원한다.
- AI 자동 생성(Clanker) 기반의 무분별한 오픈 소스 기여를 막기 위해 화이트리스트 기반의 승인 체계를 운영하여 사람의 목소리를 검증한다.
설명
Game development veteran, creator of libGDX, and 17-year open-source contributor Mario Zechner tells the story of how he ended up building pi, his own minimal, opinionated terminal coding agent. It started in April 2025 when Peter Steinberger and Armin Ronacher (Flask, Sentry) dragged him into an overnight AI hackathon. Within weeks, Mario was hooked on Claude Code — until he wasn't. There was feature bloat, hidden context injection that changed daily, the infamous terminal flicker, and zero extensibility for power users. He then surveyed the alternatives — Codex CLI, Amp, OpenCode... Eventually, he came across Terminus — an agent that gives the model nothing but a tmux session and raw keystrokes. If that's enough for the model to perform, what are all those extra features actually doing? Mario's thesis: we're still in the "messing around and finding out" stage, and coding agents need to become more malleable so developers can experiment faster. Pi is his answer: four tools (read, write, edit, bash), the shortest system prompt of any major agent, tree-structured sessions, full cost tracking, hot-reloading TypeScript extensions, and nothing injected behind your back. No MCP, no sub-agents, no plan mode — but all of it buildable in minutes through extensions. The community has already shipped pi-annotate (visual frontend feedback), pi-messenger (a multi-agent chatroom), and someone even got Doom running. On TerminalBench, pi with Claude Opus 4.5 landed right behind Terminus — before it even had compaction. 🔗 LINKS & RESOURCES pi coding agent: https://pi.dev Mario Zechner: https://mariozechner.at Peter Steinberger / OpenClaw: https://github.com/steipete Armin Ronacher: https://lucumr.pocoo.org Claude Code: https://docs.anthropic.com/en/docs/claude-code Aider: https://aider.chat OpenCode: https://github.com/anthropics/opencode Amp (Sourcegraph): https://sourcegraph.com/amp TerminalBench: https://terminalbench.com Ghostty: https://ghostty.org Vouch: https://github.com/mitchellh/vouch libGDX: https://libgdx.com AI Engineer London is a community meetup for engineers and founders building with AI, covering everything from agent frameworks and RAG pipelines to LLMs in production. Each event features technical talks, live demos, and hands-on networking. This talk was recorded at AI Engineer London #10, hosted by Tessl, in collaboration with AI Engineer London. AI ENGINEER LONDON 📅 Events: https://lu.ma/aiengineerlondon 💼 LinkedIn: https://linkedin.com/company/ai-engineer-london-meetup 📚 MASTRA RESOURCES Mastra: https://mastra.ai Learn Mastra in the world's first MCP-Based Course: https://mastra.ai/course Principles of Building AI Agents (Book): https://mastra.ai/books/principles-of-building-ai-agents Patterns for Building AI Agents (New Book): https://mastra.ai/books/patterns-of-building-ai-agents MASTRA? Mastra is an open-source TypeScript framework designed for building and shipping AI-powered applications and agents with minimal friction. It supports the full lifecycle of agent development—from prototype to production. You can integrate it with frontend and backend stacks (e.g., React, Next.js, Node) or run agents as standalone services. If you're a JavaScript or TypeScript developer looking to build an agentic or AI-powered product without starting from first principles, Mastra provides the scaffolding, tools, and integrations to accelerate that process. 📑 CHAPTERS 00:00 Intro 02:17 The history of coding agents: ChatGPT → Copilot → Aider → Claude Code 04:52 What Claude Code got right — and where it became a spaceship 06:04 Claude Code Drawbacks 09:39 Claude Code Alternatives 11:38 OpenCode's compaction problem and prompt cache busting 12:51 Why LSP feedback mid-edit is a terrible idea 14:26 OpenCode's architecture issues and security vulnerability 16:06 TerminalBench and Terminus 18:13 Mario's Two Theses 19:08 Introducing pi — strip everything, build a minimal extensible core 20:01 The system prompt 21:18 What's not in pi — and what you build instead 22:40 Extensions: custom tools, custom UI, hot reloading 24:00 Community extensions 24:59 Tree-structured sessions, cost tracking, HTML export 25:33 TerminalBench results 25:54 Open source under siege and human verification
