AI 에이전트에 '덜 쓰기'를 가르치는 오픈소스, ponytail
AI 코딩 에이전트가 '가장 좋은 코드는 쓰지 않은 코드'라고 행동하게 만드는 오픈소스 ponytail을 소개해요. 실제 레포 벤치마크에서 평균 54% 코드 감소·22% 토큰 절감·100% 안전을 동시에 잡았고, 설치 방법과 강도 조절 명령어까지 담았습니다.
게으른 시니어를 에이전트에 넣는 플러그인
2026년 9월 5일 기준 GitHub 트렌딩에서 하루 만에 별 1,683개를 받은 저장소가 있어요. DietrichGebert/ponytail이라는 이 오픈소스는 6월 12일 첫 커밋을 찍은 지 3개월 남짓 만에 약 12.6만 개(126.2k)의 별과 6,800여 개의 포크를 모았어요. 표어는 "가장 좋은 코드는 써내지 않은 코드다"입니다.
ponytail은 AI 코딩 에이전트(Claude Code, Codex, Cursor 등)에 룰과 스킬을 주입해서, 에이전트가 그 자리에 있는 '가장 게으른 시니어 개발자'처럼 행동하게 해요. 파일 50줄을 들이밀면 말없이 바라본 뒤 한 줄로 바꿔 주는 그런 선배요. 에이전트가 명령을 받자마자 프레임워크부터 깔려는 습관을 여기서 멈추게 하는 거예요.
before/after 예시가 직관적이에요. 날짜 선택기 하나만 요청했는데 에이전트가 날짜 라이브러리부터 설치하려 할 때, ponytail이 붙어 있으면 이렇게 됩니다.
<!-- ponytail: browser has one -->
<input type="date">
README의 before/after에서 더 많은 사례를 볼 수 있어요.
'사다리' 룰: 첫 번째로 맞는 단계에서 멈춘다
ponytail의 핵심은 YAGNI(You Aren't Gonna Need It, 필요 없는 건 만들지 말 것) 사다리예요. 코드를 쓰기 전에 아래 7단계를 올라가면서 가장 먼저 성립하는 단계에서 멈춥니다.
1. 정말 존재해야 하나? → 아니면 건너뛴다 (YAGNI)
2. 이미 이 코드베이스에 있나? → 다시 쓰지 말고 재사용
3. 표준 라이브러리가 되나? → 쓴다
4. 네이티브 기능이 되나? → <input type="date"> 로 픽커 라이브러리 대체
5. 설치된 의존성이 되나? → 새로 추가하지 않는다
6. 한 줄이면 되나? → 한 줄
7. 그 다음에만: 동작하는 최소 코드
이 사다리가 문제를 이해하고 난 뒤에 작동한다는 점이 중요해요. 룰을 고르기 전에 변경할 코드를 먼저 읽고 실제 흐름을 추적한다고 해요. How it works에 적힌 표현 그대로, "풀이에는 게을러도 읽기에는 게으르지 않다"는 거죠.
실제 레포 벤치마크로 잰 수치
저자가 스스로 "솔직하게 잰 벤치마크"를 공개했어요. 실제 헤드리스 Claude Code 세션으로 tiangolo/full-stack-fastapi-template(FastAPI+React 레포)을 편집하게 하고, 남긴 git diff 추가 줄 수를 기준으로 비교했어요. 스킬 없는 에이전트 대비 12개 피처 태스크의 평균치(n=4, Haiku 4.5)입니다.
| 방식 | LOC | 토큰 | 비용 | 시간 | 안전 |
|---|---|---|---|---|---|
| ponytail | -54% | -22% | -20% | -27% | 100% |
| caveman(간결한 문체 대조군) | -20% | +7% | +3% | +2% | 100% |
| "YAGNI + 한 줄" 프롬프트 | -33% | -14% | -21% | -30% | 95% |
포인트가 뚜렷해요. ponytail은 모든 지표를 동시에 줄인 유일한 방식이고, 유일하게 100% 안전을 유지했어요. 반면 간결한 문체만 강조한 caveman은 코드는 적게 썼지만 토큰이 오히려 늘었고(+7%), 짧은 프롬프트는 값싸고 빠르지만 안전도가 95%로 떨어졌어요.
할인폭은 태스크마다 차이가 커요. 네이티브 입력 요소로 맞바꿀 수 있는 곳에서 극적으로 나옵니다. 날짜 선택기 404줄 → 23줄, 색상 선택기 287줄 → 23줄, 파일 드롭존 251줄 → 95줄. 반대로 이미 최소한인 백엔드 CRUD 같은 코드에선 네 방식 모두 비슷한 선에서 수렴했어요.
즉 -54%는 평균이고, "블로트를 깎을 곳에선 크게, 없는 곳에선 그대로"라는 게 정정된 결론이에요.
이 벤치마크에는 드라마도 있어요. 원래 저장소는 단일 호출 기준 80~94%라는 수치를 내세웠는데, 커뮤니티의 #126 이슈가 "기준선이 잡담을 줄 세서 수치가 부풀려졌다"고 짚었어요. 그래서 기준선을 '스킬 없는 실제 에이전트 세션'으로 바꿔 다시 잰 게 바로 위 표예요.
저장소는 이제 "80-94%는 채팅형 기준선의 착시"라고 명시하고, "블로트를 깎을 곳에선 거대하고 그럴 데가 없으면 아무 효과 없으며 안전을 희생하지 않는다"를 정정된 주장으로 내놓았어요. 벤치마크 원문이 공개되어 누구나 재현 가능해요.
게으름의 최소 안전선
핵심은 ponytail의 룰이 "토큰을 아끼자"가 아니라 "할 일에 필요한 만큼만 쓰고, 검증·에러 처리·보안·접근성은 절대 잘라내지 않는다"라는 데 있어요. 안전 태스크(경로 탐색·SQL 인젝션·위조 토큰 등에 대한 방어)에서 그 차이가 도드라졌어요.
safe-path 태스크에서 한 줄 프롬프트는 6줄로 가장 짧게 썼지만 4번 중 1번, ../../ 가 디렉토리 바깥으로 나가는 경로 탐색 공격을 놓쳤어요. ponytail은 9.5줄로 4/4 안전했는데, 그 추가된 3줄이 바로 경로 탐색 검증이었어요.
'덜 쓴다'와 '태만하다'의 경계가 정확히 이 검증선이에요.
20여 개 에이전트에서 쓰는 설치
주요 행을 정리하면 이래요.
- Claude Code: /plugin marketplace add DietrichGebert/ponytail 입력 뒤 /plugin install ponytail@ponytail (두 번에 나눠 입력)
- Codex: codex plugin marketplace add + codex plugin add
- Gemini/Antigravity CLI: gemini extensions install https://github.com/DietrichGebert/ponytail 또는 agy plugin install
- OpenCode: opencode.json에 @dietrichgebert/ponytail 플러그인 등록
- Hermes Agent: hermes plugins install DietrichGebert/ponytail --enable 후 재시작
- OpenClaw: clawhub install ponytail
설치 섹션 전체에 20여 개 에이전트용 지침이 정리돼 있어요. 플러그인 훅이 없는 Cursor·Windsurf·Cline·Copilot Chat·Kiro·Zed 같은 편집기 계열은 이 저장소의 .cursor/rules/ 나 AGENTS.md 같은 룰 파일을 복사하는 방식으로 동작해요.
설정 파일 없이도 되고, PONYTAIL_DEFAULT_MODE 환경변수나 선택적 설정 파일로 기본 강도를 정할 수 있어요.
명령어로 게으름의 강도를 조절해요
챗에서 강도를 바꾸는 명령어를 제공해요. /ponytail lite|full|ultra|off 로 수준을 조절하고, /ponytail-review(현재 diff의 과설계 검토), /ponytail-audit(전체 레포 감사), /ponytail-debt(뒤로 미룬 절충을 ledger로 수집) 같은 명령도 있어요.
lite는 "원하는 걸 짓되 더 게으른 대안을 한 줄로 알려주고 당신이 고른다", ultra는 "한 줄을 내보내면서 나머지 요구사항까지 도전한다"라고 공식 설명에 적혀 있어요. 절충한 곳에 ponytail: 마커 주석을 남겨두면 나중에 /ponytail-debt 로 모아 '갚을' 수 있게 설계했어요.
명령표를 보면 게으름과 책임을 어떻게 함께 설계했는지가 드러나요.
실무자 관점에서 가져갈 것
숫자만 보면 "코드 줄 수 줄이기"라는 단순한 미학으로 보일 수 있는데, 이 프로젝트가 의미 있는 건 효과를 실제 레포 벤치마크로 잰 것과, 코드를 아낀다는 개념을 검증·보안과 분리해서 보려고 한 안전 태스크 설계예요. 한계도 문서에 명시되어 있어요.
벤치마크는 Haiku 4.5 단일 모델 기준이고, "한 줄 프롬프트가 안전을 한 번 놓쳤다"는 사실과 "토큰을 아끼는 룰이 오히려 사고 토큰을 많이 쓰는 모델(GPT-5.5)에선 역효과가 날 수 있다"는 지적까지 남겨두었어요.
이 '게으름'의 정체는 한 줄 압축이 아니라 네이티브 기능과 표준 라이브러리를 최대한 활용해서 평생 유지할 코드 자체를 없애는 거랍니다. MIT 라이선스라서 언제든 끼워 쓰고 걷어낼 수 있고, 시작 방법은 ponytail.dev에서 바로 확인 가능해요.
참고 링크
관련 글
fmtlib/fmt: GitHub 2.5만 별 C++ 포맷 라이브러리
fmtlib/fmt는 printf 계열을 대체하는 현대 C++ 포맷 라이브러리로, 타입 안전성·컴파일 타임 검증·유니코드·컴파일 속도·작은 바이너리 풋프린트를 한 번에 잡는다. 최근에도 C++26 reflection 연동 등 핵심 개선이 이어지고 있어, 지금 도입 검토 가치가 높다.
오픈소스 & 개발도구OpenMAIC: 멀티에이전트 AI 교실로 온라인 교육을 다시 그리다
OpenMAIC는 프롬프트 하나로 수업 전체를 생성하는 오픈소스 멀티에이전트 교실 플랫폼이에요. Next.js와 LangGraph 기반의 v1.0.0은 슬라이드, 퀴즈, 시뮬레이션, PBL까지 한 세션에서 제공하고, 교수자·조교·학생 에이전트가 실제 교실처럼 상호작용해요. GitHub 29.8k 스타를 받으며 교육 AI 오픈 표준으로 자리 잡았습니다.
과학 연구용 AI 에이전트 스킬 라이브러리, K-Dense Scientific Agent Skills 분석
과학 연구 워크플로를 에이전트에 직접 주입하는 오픈소스 스킬 라이브러리를 분석했다. 163개 스킬, 78개 이상 DB, Cursor·Claude Code·Codex 호환 구조가 핵심이다. 커스텀 스킬 설계 시 참고할 구조·확인 포인트를 정리했다.
발행 전 운영자가 직접 큐레이션·검수·편집합니다.