PiG을 소개합니다: Go로 재작성된 나만의 Pi 코딩 하네스
Meet PiG: The Pi coding harness that is yours but in Go
핵심 요약
기존 Pi 코딩 에이전트 하네스를 Go 언어로 포팅하여 성능과 메모리 효율을 대폭 개선한 오픈소스 프로젝트 'PiG'를 소개합니다.
- Go 언어 포팅 — 기존 Pi 하네스를 Go로 재작성하여 메모리 사용량 감소 및 실행 속도 향상됨.
- 확장성 지원 — Go, Rust, Python으로 확장 기능을 작성할 수 있으며 라이브 리로드 지원함.
- 성능 최적화 — 정적 바이너리로 배포되며, 시작 시간 21ms 및 낮은 메모리 점유율 달성함.
- 오픈소스 공개 — 커뮤니티 기여를 환영하며, 기존 Pi와의 호환성 및 동기화 유지 계획함.

r/PiGCodingAgent에서 가져왔음. 이 프로젝트는 여기 애들이 제일 관심 가질 것 같아서 올려본다. 회사 일하면서 꽤 오랫동안 틈틈이 만들었는데, 드디어 오픈 소스로 풀고 커뮤니티도 만들어보려고 함. 비판이나 제안, 특히 기여는 언제든 환영이다. 확인해 주는 사람들 다들 고맙고, 내가 재밌게 만든 만큼 너희도 마음에 들었으면 좋겠다 :)
PiG는 그 쩌는 Pi 에이전트 하네스를 macOS, Linux, Windows(Windows는 프리뷰)용 Go 바이너리 하나로 그대로 포팅한 거임. Node.js는 TypeScript 확장 프로그램 돌릴 때만 필요함. Pi 확장 프로그램은 수정 없이 그대로 돌아가고, Go나 Rust, Python으로 새로 짜서 실시간으로 /reload 할 수도 있음. Pi의 에이전트 루프, 터미널 UI, 세션, 프로바이더, 확장 시스템을 libc 의존성 없는 정적 Go 바이너리 하나로 싹 다 옮겨놨다.
이 갤러리 애들이 좋아할 만한 Go 관련 특징 몇 개 적어봄:
-
Go로 짠 확장 프로그램은 바이너리에 퓨즈(fused) 시켜서 소켓 대신 인메모리 파이프로 호스트랑 통신 가능함. 다른 언어들은 로컬 소켓을 쓰는 관리형 서브 프로세스로 돌아감.
-
TUI는 차분 렌더링(differentially) 방식으로 작동함. 너비 처리 알고리즘은 Pi 거 그대로 가져와서 150만 건 넘는 케이스로 Pi 코드랑 비교 테스트까지 마쳤음: tui/widthx/pi_width_diff_test.go.
-
동작 방식은 실제 터미널(tmux로 화면 비교하는 시나리오)에서 Pi랑 똑같이 나오는지 검증함.
-
go installgithub.com/MichaelKinsy/PiG/cmd/pig@latest잘 작동함. curl 설치나npm i -gu/pi-in-go/pig도 가능함(플랫폼에 맞는 네이티브 바이너리 알아서 깔아줌).
측정해보니까 시작 속도는 21ms 정도로, 평균 300ms 걸리는 거에 비하면 훨씬 빠르고 메모리 사용량도 피크치 기준 4분의 1 수준임(자세한 방법은 블로그에 있음).
참고로 포팅 작업 대부분은 에이전트가 했음. 테스트랑 Pi랑 나란히 놓고 비교하는 작업, 그리고 사람이 직접 diff 확인해서 최종 결과물 결정함.


