한 줄 요약

아이디어를 시도하고 → 측정하고 → 개선되면 유지, 아니면 버리고 → 영원히 반복한다.

pi-autoresearch는 터미널 AI 코딩 에이전트 pi의 확장으로, Karpathy의 autoresearch 컨셉을 어떤 최적화 문제에든 적용할 수 있도록 일반화한 프로젝트입니다.

먼저, pi가 뭔가요?

pi터미널에서 동작하는 AI 코딩 에이전트입니다. Cursor나 Windsurf 같은 IDE 기반 도구와 달리, 터미널 네이티브로 설계되어 SSH 접속 환경이나 헤드리스 서버에서도 그대로 사용할 수 있습니다.

pi의 핵심 특징은 Extension과 Skill 시스템입니다:

  • Extension — 에이전트에게 새로운 도구(tool)를 추가합니다. 파일 읽기/쓰기, 커맨드 실행 같은 기본 도구 외에 커스텀 도구를 플러그인처럼 끼워 넣을 수 있습니다.
  • Skill — 특정 작업 패턴을 가르칩니다. "이런 상황에서는 이런 순서로 이 도구들을 써라"라는 워크플로우를 정의합니다.

pi install <github-url> 한 줄로 커뮤니티가 만든 Extension과 Skill을 설치할 수 있어서, 에이전트의 능력을 자유롭게 확장하는 구조입니다. pi-autoresearch는 바로 이 시스템 위에 만들어진 Extension+Skill 패키지입니다.

배경: Karpathy의 autoresearch

2026년 3월, Karpathy가 공개한 autoresearch의 아이디어는 단순했습니다:

  • AI 에이전트에게 LLM 학습 코드(train.py) 하나를 주고
  • 코드를 수정하게 하고, 5분간 훈련시키고
  • 검증 loss가 개선되면 keep, 아니면 discard
  • 밤새 반복 → 아침에 일어나면 실험 로그 + 더 나은 모델

극도로 미니멀한 설계(파일 3개, GPU 1장, 메트릭 1개)로, "에이전트가 연구원 역할을 자율 수행한다"는 컨셉을 증명하는 데 집중한 프로젝트였습니다. 다만 NVIDIA GPU 전용 + LLM 훈련에만 적용 가능하다는 태생적 한계가 있었습니다.

pi-autoresearch가 다른 점

1. 도메인 제한 없음

LLM 학습 loss뿐 아니라, 테스트 실행 속도, 번들 사이즈, 빌드 타임, Lighthouse 점수 등 측정 가능한 것이면 무엇이든 최적화 타겟으로 돌릴 수 있습니다. pi의 "인프라(Extension)와 도메인 지식(Skill)" 분리 구조 덕분입니다.

  • 테스트 속도 — seconds ↓ — pnpm test
  • 번들 사이즈 — KB ↓ — pnpm build && du -sb dist
  • LLM 훈련 — val_bpb ↓ — uv run train.py
  • Lighthouse — perf score ↑ — lighthouse --output=json

2. 재시작해도 기억을 잃지 않음

AI 에이전트는 컨텍스트 윈도우에 한계가 있어서, 장시간 실험 중 컨텍스트가 리셋되거나 프로세스가 죽을 수 있습니다. pi-autoresearch는 두 개의 파일로 세션 상태를 완전히 보존합니다:

  • autoresearch.jsonl — 모든 실험의 append-only 로그
  • autoresearch.md — 목표, 시도한 것, 막다른 길, 핵심 성과 요약

메모리가 전혀 없는 새 에이전트가 투입되어도 이 두 파일만 읽으면 정확히 이전 세션을 이어받을 수 있습니다. 사실상 "에이전트를 위한 외부 메모리" 패턴입니다.

3. 노이즈에서 진짜 개선을 구분

벤치마크는 같은 코드를 돌려도 매번 결과가 다릅니다. 3회 이상 실험 후 MAD(Median Absolute Deviation) 기반 confidence score를 자동 계산해서, 개선이 진짜인지 노이즈인지 시각적으로 보여줍니다.

  • 🟢 ≥ 2.0× — 개선이 실제일 가능성 높음
  • 🟡 1.0–2.0× — 노이즈 이상이지만 미미
  • 🔴 < 1.0× — 노이즈 범위 내, 재실행 권장

단, 자동으로 실험을 버리지는 않고, 최종 판단은 에이전트에게 위임합니다.

4. 최적화가 정합성을 깨는 것 방지

autoresearch.checks.sh를 두면, 벤치마크 통과 후 테스트·타입체크·린트 같은 정합성 검증이 자동으로 돌아갑니다. "빠르게 만들었는데 테스트가 깨진다"는 전형적 함정을 시스템 레벨에서 차단합니다.

5. 실험 결과를 깔끔한 PR로 정리

실험이 끝나면 autoresearch-finalize 스킬이 keep된 실험들을 논리적 changeset으로 그룹핑하여 독립적인 git 브랜치로 분리해줍니다. 파일이 겹치지 않도록 보장하므로 각 브랜치를 독립적으로 리뷰하고 머지할 수 있습니다.

워크플로우

1. /autoresearch optimize unit test runtime  
   → 목표·커맨드·메트릭 설정 → baseline 측정 → 루프 시작  
  
2. 자율 루프 (무한 반복)  
   → 코드 수정 → git commit → 벤치마크 → 정합성 검증  
   → 개선? keep / 퇴보? revert → .jsonl에 기록 → 반복  
  
3. /skill:autoresearch-finalize  
   → keep된 실험을 독립 브랜치로 정리 → 리뷰·머지  

비용 제어

자율 루프는 토큰을 계속 소모하므로, API 키 한도 설정과 maxIterations(세션당 최대 실험 횟수) 두 가지 가드레일을 제공합니다.

왜 주목할 만한가

Karpathy의 autoresearch가 "AI가 알아서 실험한다" 는 흥미로운 컨셉 증명이었다면, pi-autoresearch는 그것을 실제 개발 현장에서 쓸 수 있는 범용 도구로 만든 시도입니다. pi의 Extension/Skill 아키텍처 위에 구축되어 있어서, 설치 한 줄이면 기존 pi 워크플로우에 바로 붙일 수 있다는 점도 진입장벽을 낮춥니다.

세션 상태 보존, 통계적 신뢰도 검증, 정합성 보호, Git 네이티브 워크플로우 같은 실전적 문제들을 체계적으로 해결한 점이 인상적이고, 밤에 돌려놓고 아침에 PR을 리뷰하는 워크플로우가 현실이 되는 건지 지켜볼 만합니다.