
지난주에 클로드를 삭제했어.
요약
Claude Code 대신 미니멀리즘과 확장성을 강조한 오픈 소스 하네스인 Pi를 사용하게 된 경험을 공유합니다. 모델을 운영체제처럼 관리하는 '하네스'의 중요성과 Pi의 커스터마이징 능력을 설명합니다.
핵심 포인트
- 모델은 CPU, 하네스는 운영체제와 같은 역할을 수행함
- Claude Code는 기능이 많지만, Pi는 미니멀하고 확장성이 높음
- Pi는 오픈 소스로 시스템 프롬프트와 도구가 투명하게 공개됨
- 사용자는 필요에 따라 모델을 실시간으로 교체하며 사용할 수 있음
- npm 패키지 설치를 통해 기능을 직접 확장 가능함
비디오: 지난주에 클로드를 삭제했어.
채널: 노마드 코더 Nomad Coders
길이: 5분 32초
언어: 한국어
지난주에 CloudCode를 삭제했습니다. 더 많은 기능을 가진 무언가를 찾았기 때문이 아니라, 거의 아무것도 하지 않는 무언가를 찾았기 때문입니다. 그리고 왠지 모르게, 그것이 바로 핵심입니다. 저는 1년 넘게 매일 CloudCode를 사용해 왔습니다. 그것은 저의 기본값이었습니다. 그러다 제가 한 번도 들어본 적 없는 하네스 (harness)를 설치했습니다. 48시간 이내에, 저는 CloudCode를 완전히 여는 것을 멈췄습니다. 참고로, 그것은 OpenClaw를 구동하는 것과 동일한 하네스입니다. 그리고 이론적으로는 CloudCode에게 패배해야 합니다. MCP 지원도 없고, 서브 에이전트 (sub-agents)도 없고, 플랜 모드 (plan mode)도 없고, 권한 시스템 (permission system)도 없습니다. 거의 비어 있는 상태입니다. 하지만 이 하네스가 왜 특별한지 이야기하기 전에, 우리는 하네스 (harness)가 실제로 무엇인지 이해해야 합니다. 그것을 컴퓨터처럼 생각해보세요. 모델 (model), 즉 Claude, GPT, Gemini는 CPU입니다. 컨텍스트 윈도우 (context window)는 RAM입니다. 하네스는 운영체제 (operating system)입니다. 그것은 모델을 관리합니다. 모델이 어떤 도구 (tools)를 호출할 수 있는지 결정합니다. 상황이 너무 커지면 컨텍스트를 정리합니다. 따라서 CloudCode는 하네스입니다. Cursor는 하네스입니다. OpenCode는 하네스입니다. 그것들은 모두 동일한 모델을 실행합니다. 단지 그것들을 매우 다르게 감싸고 있을 뿐입니다. 그렇다면 왜 이 하네스가 중요할까요? 왜냐하면 서로 다른 하네스에 있는 동일한 모델이 완전히 다른 두 개의 에이전트 (agents)처럼 행동할 수 있기 때문입니다. Claude Opus를 평범한 하네스에 넣으면 평범한 결과를 얻을 수 있습니다. 또는 Kimi K2와 같은 더 작은 모델을 적절한 하네스에 넣으면, 비싼 모델보다 더 뛰어난 성능을 발휘하는 것을 볼 수 있습니다. 이것이 제가 Pi를 사용하기 시작한 이후 발견한 것입니다. Pi는 최소한의 터미널을 호출하는 하네스입니다. 미니멀리즘 (minimalism), 커스터마이징 (customization), 그리고 확장성 (extensibility). 그것이 Pi가 신경 쓰는 유일한 것들입니다. 만약 CloudCode가 당신이 배워야 하고 어쩌면 실제로 사용하지도 않을 기능들로 가득 찬 우주선이라면, Pi는 레고 블록 (Lego bricks) 한 더미입니다. 한 줌의 조각들이 있고, 나머지는 당신이 직접 만듭니다. 또는 Pi에게 대신 만들어 달라고 요청할 수도 있습니다. Pi의 핵심 아이디어는 당신의 워크플로우 (workflow)가 아니라 하네스를 바꿀 수 있어야 한다는 것입니다.
그리고 대부분의 코딩 도구들은 정반대의 방식으로 작동합니다. CloudCode는 릴리스(release)가 있을 때마다 변경됩니다. 시스템 프롬프트 (system prompt), 도구 (tools), 내부 동작 방식이 모두 바뀌죠. Pi는 블랙박스 (black box)가 아닙니다. 오픈 소스 (open source)입니다. 시스템 프롬프트는 매우 작습니다. 모든 도구는 눈에 보입니다. 만약 Pi에 기능이 부족하다면, npm을 통해 Pi 패키지를 설치하여 기능을 확장할 수 있습니다. 또는 Pi에게 직접 그 기능을 만들어 달라고 요청한 뒤, 핫 리로드 (hot reload)되는 것을 지켜볼 수도 있습니다. 정말 멋집니다. Pi는 모든 주요 제공업체의 수백 가지 모델을 지원합니다. 그리고 대화 도중에 모델을 전환할 수 있습니다. 이는 대부분의 경우 Kimi K2와 같이 저렴하고 빠른 모델을 선택할 수 있다는 것을 의미합니다. 그러다 어려운 문제가 발생하면 Opus로 전환했다가 다시 돌아올 수 있습니다. 세션 (sessions)은 트리 (trees) 형태로 저장됩니다. 도구 호출 (tool calls), 토큰 수 (token count), 비용 (cost)을 포함하여 대화에서 일어난 모든 일을 확인할 수 있습니다. 이전 메시지로 돌아가 브랜치 (branches)를 생성하여 아이디어를 테스트하거나, 다른 접근 방식을 시도하거나, 메인 대화를 오염시키지 않고 사이드 퀘스트 (side quest)를 시작할 수도 있습니다. 또한 모든 세션을 포크 (fork), 클론 (clone)하고 공유하여 퍼블릭 URL (public URL)을 얻을 수도 있습니다. 이제 압축 (compaction)에 대해 이야기해 봅시다. LLM은 제한된 컨텍스트 윈도우 (context windows)를 가지고 있습니다. 그래서 대화가 길어지면 하네스 (harness)가 가장 오래된 부분을 요약합니다. CloudCode는 자신만의 방식으로 압축을 수행합니다. 압축이 일어났다는 것은 알 수 있지만, 어떻게 일어나는지는 제어할 수 없습니다. Pi를 사용하면 압축이 작동하는 방식을 커스터마이징 (customize)할 수 있습니다. 압축이 언제 일어날지 선택할 수 있고, 몇 개의 메시지를 압축할지도 선택할 수 있습니다. 심지어 어떤 모델이 압축을 수행할지도 선택할 수 있습니다. 만약 그것으로도 부족하다면, 확장 기능 (extensions)을 통해 압축 방식을 완전히 교체할 수도 있습니다. 이는 제가 Pi로 전환한 가장 큰 이유인 확장 기능에 대한 이야기로 이어집니다. 확장 기능은 Pi를 당신만의 것으로 만드는 방법입니다. 확장 기능은 Pi의 동작을 변경하는 작은 TypeScript 파일들입니다. 새로운 도구를 추가하거나, 기존 도구를 수정하거나, 에이전트 루프 (agent loop)에 후킹 (hook)하거나, 자체적인 UI를 구축할 수 있습니다. 사람들은 모든 것을 위한 확장 기능을 만들어 왔습니다. 권한 게이트 (permission gates), git 체크포인트 (git checkpoints), 심지어 에이전트가 생각하는 동안 플레이할 수 있는 게임까지 말이죠.
CloudCode가 웹사이트를 읽기 위해 사용하는 웹 페치 도구 (web fetch tool)를 예로 들어보겠습니다. Pi에서는 Pi 웹 액세스 확장 프로그램 (Pi web access extension)을 통해 이를 확장할 수 있습니다. YouTube 영상의 자막을 가져오거나, 영상 프레임을 추출하거나, GitHub 저장소 (repos)를 클론하거나, PDF를 다운로드하고 읽는 작업 등이 가능합니다. draw 확장 프로그램을 사용하면 터미널에서 그림을 그리고 그 스케치를 모델에 전달할 수 있습니다. 또는 CloudCode에서 실제로 좋아했던 기능들을 재현할 수도 있습니다. 서브 에이전트 (sub-agents), 가드레일 (guardrails), MCP 지원, 사용자에게 질문하는 도구 (ask user tools) 등을 위한 확장 프로그램들이 있으며 그 외에도 매우 많습니다. CloudCode에서 그리워했던 모든 것들을 Pi 확장 프로그램으로 대체할 수 있었습니다. 그리고 어떤 경우에는 오히려 더 개선하기도 했습니다. 만약 테마 꾸미기를 좋아한다면 테마를 설치하고 커스텀할 수도 있습니다. 필요한 확장 프로그램을 찾을 수 없다면 직접 작성하거나 Pi에게 대신 작성해달라고 요청할 수도 있습니다. 보세요. 제가 Pi에게 네온, 핑크, 사이언 색상의 신스웨이브 (synthwave) 테마를 요청했습니다. Pi가 테마 파일을 작성합니다. /readout 명령어를 실행하면 인터페이스 전체의 색상이 바뀝니다. 멋지네요. 하지만 직접 확장 프로그램을 작성할 수도 있습니다. 여기 실행되기 전에 모든 rm -rf 명령어를 차단하는 간단한 예시가 있습니다. 그게 전부입니다. TypeScript로 단 10줄 정도면 됩니다. 모든 도구 호출 (tool call)에 후킹하여, 그것이 bash 명령어인지 확인하고, rm -rf를 찾은 뒤, Pi가 실행하기 전에 저에게 확인을 요청합니다. 제가 확인하지 않으면 차단합니다. 모든 Pi 확장 프로그램은 이와 같습니다. 작고, 읽기 쉬우며, 당신의 것입니다. 저는 그 코드를 Pi의 확장 프로그램 폴더에 있는 TypeScript 파일로 저장합니다. 그런 다음 Pi에게 폴더를 삭제하라고 요청하면 확인 대화 상자가 나타납니다. Pi가 .env 파일을 읽지 못하게 하거나, git push --force를 실행하지 못하게 하거나, 코드 변경 시마다 린터 (linter)를 자동으로 실행하여 Pi에게 경고를 보여주는 확장 프로그램을 만들 수도 있습니다. Cloud Code나 Codex에는 이런 기능이 전혀 없습니다. 그런 도구들에서 당신은 기본적으로 하네스 (harness)를 빌려 쓰고 있는 것입니다. 하지만 Pi에서는 당신이 그것을 소유합니다. 그리고 그것이 Cloud Code에 대한 진정한 위협입니다. Pi가 더 나은 기능을 가지고 있어서가 아닙니다. Pi는 모든 사용자가 자신만의 기능을 직접 만들 수 있게 만들기 때문입니다. Anthropic은 개발자들이 무엇을 원하는지 결정해야만 합니다.
Pi는 단지 상자(box)를 만들었을 뿐입니다. 나머지는 개발자가 구축할 것입니다. 그리고 이것이 제가 Claude가 어려움에 처해 있다고 생각하는 이유입니다. 자, 이제 말씀해 주세요, Pi를 사용해 보셨나요? Pi를 사용해 보실 건가요? 어떤 모델로 말이죠? 저는 OpenCodeZen을 통해 Opus와 함께 KimiK2를 사용합니다. 여러분은 어떠신가요? 댓글로 알려주세요. 다음 영상에서 뵙겠습니다. Jena, Katsuh Hago. Sana Hamida. 다음 영상에서 만나요. Da me bio. 안녕히 계세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube 노마드 코더 (개발)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기