earendil-works/pi
요약
pi는 자체 확장 가능한 코딩 에이전트 하네스 프로젝트로, CLI 에이전트, 에이전트 런타임, 멀티 프로바이더 LLM API를 포함합니다. 실제 작업 세션을 공유하여 코딩 에이전트의 성능을 개선하는 오픈 소스 생태계를 지향합니다.
핵심 포인트
- 대화형 코딩 에이전트 CLI 제공
- 도구 호출 및 상태 관리가 가능한 에이전트 런타임 포함
- OpenAI, Anthropic, Google 등 멀티 프로바이더 LLM 통합
- 실제 작업 세션 공유를 통한 에이전트 개선 데이터 수집
pi.dev 도메인을 흔쾌히 기부해 주신 분들:

exe.dev
새로운 기여자로부터 발생한 새로운 Issue와 PR은 기본적으로 자동 종료(auto-closed)됩니다. 유지 관리자(Maintainers)는 자동 종료된 Issue를 매일 검토합니다. CONTRIBUTING.md를 참조하세요.
이곳은 자체 확장 가능한 코딩 에이전트(self extensible coding agent)를 포함한 pi 에이전트 하네스(agent harness) 프로젝트의 홈입니다.
@earendil-works/pi-coding-agent: 대화형 코딩 에이전트 CLI
@earendil-works/pi-agent-core: 도구 호출(tool calling) 및 상태 관리(state management) 기능을 갖춘 에이전트 런타임(Agent runtime)
@earendil-works/pi-ai: 통합 멀티 프로바이더 LLM API (OpenAI, Anthropic, Google, …)
pi에 대해 더 자세히 알아보려면:
- 데모가 포함된 프로젝트 웹사이트인 pi.dev를 방문하세요.
- 문서를 읽어보세요. 또는 에이전트에게 직접 설명을 요청할 수도 있습니다.
오픈 소스 작업을 위해 pi 또는 다른 코딩 에이전트를 사용한다면, 여러분의 세션(sessions)을 공유해 주세요.
공개된 OSS 세션 데이터는 단순한 토이 벤치마크(toy benchmarks) 대신 실제 작업, 도구 사용, 실패 및 수정 사례를 통해 코딩 에이전트를 개선하는 데 도움이 됩니다.
전체 설명은 X의 이 포스트를 참조하세요.
세션을 게시하려면 badlogic/pi-share-hf를 사용하세요.
설정 지침은 해당 리포지토리의 README.md를 읽어보시기 바랍니다. 필요한 것은 Hugging Face 계정, Hugging Face CLI, 그리고 pi-share-hf뿐입니다.
또한 제가 pi-mono 세션을 게시하는 방법을 보여주는 이 영상을 시청하실 수 있습니다.
저는 저의 pi-mono 작업 세션을 이곳에 정기적으로 게시합니다:
| 패키지 | 설명 |
|---|---|
| @earendil-works/pi-ai | 통합 멀티 프로바이더 LLM API (OpenAI, Anthropic, Google 등) |
| @earendil-works/pi-agent-core | 도구 호출(tool calling) 및 상태 관리(state management) 기능을 갖춘 에이전트 런타임(Agent runtime) |
| @earendil-works/pi-coding-agent | 대화형 코딩 에이전트 CLI |
| @earendil-works/pi-tui | 차분 렌더링(differential rendering) 기능이 있는 터미널 UI 라이브러리 |
Slack/채팅 자동화 및 워크플로우에 대해서는 earendil-works/pi-chat을 참조하세요.
기여 가이드라인은 CONTRIBUTING.md를, 프로젝트별 규칙(사람과 에이전트 모두 해당)은 AGENTS.md를 참조하세요.
npm install --ignore-scripts # 라이프사이클 스크립트를 실행하지 않고 모든 의존성 설치
npm run build # 모든 패키지 빌드
npm run check # Lint, 포맷팅 및 타입 체크
...
우리는 npm 의존성(dependency) 변경을 검토된 코드 변경 사항으로 취급합니다.
- 직접적인 외부 의존성(external dependencies)은 정확한 버전으로 고정(pinned)됩니다. 내부 워크스페이스 패키지(internal workspace packages)는 버전 범위(version-ranged)를 유지합니다.
.npmrc파일에서save-exact=true와min-release-age=2를 설정하여, npm 해결(resolution) 과정 중 당일 출시된 의존성이 포함되는 것을 방지합니다.
package-lock.json은 의존성의 신뢰할 수 있는 근거(ground truth)입니다. Pre-commit 단계에서는PI_ALLOW_LOCKFILE_CHANGE=1이 설정되지 않는 한 실수로 인한 락파일(lockfile) 커밋을 차단합니다.
npm run check는 고정된 직접 의존성, 네이티브 TypeScript 임포트(import) 호환성, 그리고 생성된 코딩 에이전트(coding-agent)의 shrinkwrap을 검증합니다. - 배포되는 CLI 패키지에는 npm 사용자를 위한 간접 의존성(transitive deps) 고정을 위해, 루트 락파일로부터 생성된
packages/coding-agent/npm-shrinkwrap.json이 포함됩니다. - 릴리스 스모크 테스트(Release smoke tests)는 배포 전, 레포지토리 외부에서 빌드, 패키징 및 격리된 npm 및 Bun 설치를 수행하기 위해
npm run release:local을 사용합니다. - 로컬 릴리스 설치, 문서화된 npm 설치, 그리고
pi update --self는 지원되는 경우--ignore-scripts를 사용합니다. - CI 설치는
npm ci --ignore-scripts를 사용하며, 예약된 GitHub 워크플로우(workflow)가npm audit --omit=dev와npm audit signatures --omit=dev를 실행합니다. - Shrinkwrap 생성 시 의존성 라이프사이클 스크립트(lifecycle scripts)에 대한 명시적인 허용 목록(allowlist)을 가집니다. 새로운 라이프사이클 스크립트 의존성은 검토될 때까지 체크를 통과하지 못합니다.
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기