오늘도 공부
Pi: OpenClaw 내부의 미니멀 코딩 에이전트 본문
이번 주 인터넷을 뜨겁게 달군 프로젝트가 있다. 바로 OpenClaw다. ClawdBot, MoltBot 등 여러 이름으로 불렸지만, 핵심은 하나다. 원하는 커뮤니케이션 채널에 연결해서 코드를 실행하는 에이전트라는 것. 그리고 이 OpenClaw의 엔진 역할을 하는 작은 코딩 에이전트가 바로 Pi다.
Armin Ronacher(Flask, Jinja2 등의 창시자)가 최근 거의 전적으로 Pi만 사용하고 있다고 밝혔다. 이 글은 그가 Pi에 빠진 이유, 그리고 Pi가 다른 코딩 에이전트와 무엇이 다른지를 정리한 것이다.
Pi란 무엇인가
Pi는 Mario Zechner가 만든 코딩 에이전트다. 시중에 코딩 에이전트는 넘쳐나지만, Armin이 Pi에 매력을 느끼는 이유는 크게 두 가지다.
첫째, 극도로 작은 코어. Pi는 현존하는 에이전트 중 가장 짧은 시스템 프롬프트를 가지고 있으며, 도구도 단 네 가지뿐이다: Read, Write, Edit, Bash. 그게 전부다.
둘째, 확장 시스템. 작은 코어를 보완하기 위해 확장(extension) 시스템을 제공하는데, 확장이 세션에 상태를 저장할 수 있어서 매우 강력하다.
그리고 보너스 하나. Pi 자체가 뛰어난 소프트웨어로 작성되어 있다. 화면이 깜빡이지 않고, 메모리를 과도하게 소비하지 않으며, 무작위로 망가지지 않는다. 안정적이고 신뢰할 수 있다.
Pi는 또한 자기 위에 나만의 에이전트를 구축할 수 있는 조립 가능한 컴포넌트 모음이기도 하다. OpenClaw가 그렇게 만들어졌고, Armin의 텔레그램 봇도, Mario의 mom도 그렇게 만들어졌다.
Pi에 없는 것들 — 그리고 왜 없는가
Pi를 이해하려면 Pi에 뭐가 없는지를 아는 게 더 중요하다.
가장 눈에 띄는 부재는 MCP 지원이다. Pi에는 MCP가 없다. 이건 게으른 생략이 아니라 철학적 선택이다. Pi의 핵심 아이디어는 이것이다:
에이전트가 아직 못하는 일이 있으면, 확장을 다운로드하지 말고 에이전트에게 스스로를 확장하라고 시키자.
코드를 작성하고 실행하는 것 자체를 축하하는 철학이다. 물론 다른 사람의 확장을 다운로드할 수도 있지만, Pi가 진정으로 권장하는 방식은 기존 확장을 가리키며 "저걸 참고해서 내가 원하는 대로 바꿔줘"라고 에이전트에게 시키는 것이다.
MCP가 필요하다면 OpenClaw처럼 mcporter를 통해 CLI나 TypeScript 바인딩으로 MCP를 노출시키면 된다.
에이전트가 에이전트를 만드는 구조
Pi와 OpenClaw가 보여주는 건 점토처럼 변형 가능한 소프트웨어의 가능성이다. 이를 위해 아키텍처에 몇 가지 핵심 설계가 들어가 있다.
다중 모델 프로바이더 지원: Pi의 AI SDK는 하나의 세션에 여러 모델 프로바이더의 메시지가 공존할 수 있도록 설계되어 있다. 특정 프로바이더의 고유 기능에 과도하게 의존하지 않는다.
커스텀 메시지와 확장 상태 저장: 모델 메시지 외에도 확장이 상태를 저장하거나 시스템이 내부 정보를 유지할 수 있는 커스텀 메시지를 세션 파일에 보관한다.
핫 리로딩: 에이전트가 코드를 작성하고, 리로드하고, 테스트하는 루프를 반복할 수 있다. 확장이 실제로 작동할 때까지 이 사이클을 돈다.
트리 구조 세션: Pi의 세션은 트리다. 분기를 만들어서 사이드퀘스트로 진입할 수 있다. 예를 들어 에이전트 도구가 고장났을 때, 메인 세션의 컨텍스트를 낭비하지 않고 별도 분기에서 수리할 수 있다. 수리가 끝나면 세션을 되감고, Pi가 다른 분기에서 일어난 일을 요약해준다.
이 설계가 중요한 이유는, MCP처럼 세션 시작 시 컨텍스트에 도구를 로딩해야 하는 방식과 달리, 캐시를 날리거나 AI를 혼란시키지 않고도 도구를 완전히 리로드할 수 있기 때문이다.
컨텍스트 밖의 도구들
Pi의 확장은 LLM이 호출할 수 있는 도구를 등록할 수 있다. 하지만 Armin이 실제로 추가 도구로 로딩하는 건 하나뿐이다 — 에이전트 전용 로컬 이슈 트래커(투두 리스트)다. 나머지 확장은 대부분 스킬이나 TUI 확장이다.
Pi 확장은 슬래시 커맨드 외에도 터미널에서 직접 커스텀 TUI 컴포넌트를 렌더링할 수 있다. 스피너, 프로그레스 바, 인터랙티브 파일 피커, 데이터 테이블, 프리뷰 패널 등. Mario는 Pi의 TUI에서 Doom을 실행할 수 있다는 것까지 증명했다.
Armin이 직접 쓰는 주요 확장들
/answer — 에이전트의 마지막 응답에서 질문을 추출해서 깔끔한 입력 상자로 재포맷한다. Plan mode를 사용하지 않는 대신, 에이전트가 자연어 산문으로 질문하고 답하는 방식을 선호하되, 질문 답변이 인라인으로 지저분해지는 문제를 해결한다.
/todos — .pi/todos에 마크다운 파일로 저장된 할 일 목록을 관리한다. 에이전트와 사람 모두 조작할 수 있고, 세션이 작업을 클레임해서 진행 중으로 표시할 수 있다.
/review — 에이전트가 작성한 코드를 사람에게 넘기기 전에 에이전트 스스로 먼저 리뷰한다. 세션이 트리이므로 새로운 리뷰 컨텍스트로 분기한 뒤, 결과를 메인 세션으로 가져온다. 커밋, 디프, PR 등을 쉽게 리뷰할 수 있으며, 새로 추가된 의존성 같은 관심 항목을 호출해준다.
/control — 한 Pi 에이전트가 다른 Pi 에이전트에게 프롬프트를 보내는 간단한 멀티 에이전트 시스템. 복잡한 오케스트레이션 없이 실험용으로 사용한다.
/files — 세션에서 변경되거나 참조된 모든 파일을 나열한다. Finder에서 열거나, VS Code에서 디프를 보거나, 퀵룩으로 확인할 수 있다.
커뮤니티에서도 확장이 나오고 있다. Nico의 서브에이전트 확장이나 interactive-shell(Pi가 인터랙티브 CLI를 자율적으로 실행하는 TUI 오버레이) 같은 것들이 있다.
소프트웨어가 소프트웨어를 만든다
핵심은 이것이다: 위의 확장들 중 Armin이 직접 작성한 건 없다. 모두 에이전트가 그의 명세에 따라 만든 것이다. MCP도 없고, 커뮤니티 스킬도 없다. 스킬은 많이 사용하지만, 전부 자기 에이전트가 직접 만든 것이다.
예를 들어 브라우저 자동화를 위한 모든 CLI와 MCP를 CDP를 직접 사용하는 스킬로 대체했다. 기존 도구가 나빠서가 아니라, 이 방식이 자연스럽기 때문이다. 에이전트가 스스로의 기능을 유지보수한다.
Armin은 상당수의 스킬을 보유하고 있으며, 필요 없는 스킬은 과감히 버린다. 다른 엔지니어가 공유한 Pi 세션을 읽는 스킬, 원하는 커밋 메시지 형식과 체인지로그 업데이트 방식을 정의한 스킬, pip 대신 uv를 사용하도록 유도하는 스킬(심지어 pip과 python 호출을 uv로 리다이렉트하는 확장까지) 등이 있다.
결론: 미니멀 에이전트가 보여주는 미래
Pi 같은 미니멀 에이전트와 함께 일하면서 얻는 매력은, 소프트웨어가 더 많은 소프트웨어를 만드는 아이디어를 실제로 살아볼 수 있다는 점이다. 이걸 극단까지 밀고 나가면 UI와 출력을 제거하고 채팅에 연결하는 것 — 그게 바로 OpenClaw가 하는 일이다.
OpenClaw의 폭발적 성장을 보면, 이 방향이 어떤 형태로든 우리의 미래가 될 거라는 확신이 점점 강해진다.
이 글은 Armin Ronacher의 원문을 한국어로 재구성한 것입니다.
'AI > Openclaw' 카테고리의 다른 글
| Moltbot 완벽 가이드: 가상 머신에서 안전하게 AI 비서 설정하기 (0) | 2026.01.30 |
|---|---|
| Moltbot 멀티 에이전트 시스템 가이드 (0) | 2026.01.29 |
| Moltbot(구 Clawdbot) 브라우저 자동화 시스템 상세 분석 (0) | 2026.01.28 |
| Clawdbot: 나만의 AI 자비스를 만들어보자 (2) | 2026.01.26 |
