주요 콘텐츠로 건너뛰기
AI 튜토리얼

Rust 기반 터미널 AI 코딩 도우미 CometixCode 빌드 및 실행

Rust와 ICU4C를 사용해 CometixCode를 빌드하고, 터미널 인터페이스를 실행하며, ripgrep 경로 확인을 구성하고, 현재 활성 검색 바이너리를 진단하고, 프로젝트의 격리된 테스트 워크플로를 올바르게 실행하는 방법을 알아봅니다.

Rust 기반 터미널 AI 코딩 도우미 CometixCode 빌드 및 실행

CometixCode란?

CometixCode는 Rust로 작성된 터미널 기반 AI 코딩 도우미입니다. 공식 Anthropic 제품이 아니라 Anthropic의 Claude Code 터미널 인터페이스를 파일 단위로 독립적으로 재구현한 프로젝트입니다.

CometixCode는 비공식 프로젝트이며 Anthropic과 제휴 관계가 없고 Anthropic의 보증이나 지원을 받지 않습니다. Claude와 Claude Code는 Anthropic, PBC의 상표입니다.

기존 Claude Code 터미널 UI는 React와 Ink를 사용하는 TypeScript로 작성되었습니다. CometixCode는 Ink의 유지 모드 터미널 UI 프레임워크인 iocraft를 포크한 CometixTUI를 사용해 이 구조를 Rust로 재현합니다. TypeScript 컴포넌트는 Rust 컴포넌트로, 훅은 훅으로 대응되며, 의도적인 아키텍처 차이는 소스에 문서화되어 있습니다.

이 프로젝트는 아직 개발 중입니다. 대화형 루프, 도구 실행, 권한, Model Context Protocol 통합, 슬래시 명령의 많은 부분이 구현되어 있지만 일부 영역은 아직 부분적으로만 구현되어 있습니다.

주요 기능 및 아키텍처

  • Rust 기반 터미널 UI: React 스타일의 컴포넌트 및 훅 모델로 인터페이스를 구현합니다.
  • 긴밀한 아키텍처 포팅: 새로운 디자인으로 대체하는 대신 Claude Code의 공개된 CLI 구조를 파일 단위로 따릅니다.
  • 대화형 코딩 워크플로: 도우미 루프와 도구 실행 시스템의 주요 부분이 구현되어 있습니다.
  • 권한 및 명령: 권한 처리와 슬래시 명령 지원이 상당 부분 구현되어 있습니다.
  • MCP 지원: Model Context Protocol 기능이 포함되어 있지만 프로젝트 전체는 계속 개발 중입니다.
  • 향상된 터미널 프리미티브: CometixTUI는 행 단위 diff, 이벤트 전파, SIGCONT 복구, IME 커서 지원, 괄호 붙여넣기, 그리드 레이아웃을 제공합니다.
  • 외부 파일 검색: CometixCode는 ripgrep을 자체 바이너리에 컴파일하지 않고 별도의 ripgrep 실행 파일을 사용합니다.

사전 요구 사항

CometixCode를 빌드하기 전에 다음 의존성을 설치하세요.

  • Rust 1.87 이상, Rust edition 2024 사용.
  • ICU4C, pkg-config를 통해 rust_icu_* 크레이트에 필요.

macOS에 ICU4C 설치

Homebrew는 ICU4C를 keg 전용 패키지로 설치합니다. 다음 명령으로 설치하고 pkgconfig 디렉터리를 검색 경로에 추가하세요.

brew install icu4c
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig"

CometixCode를 빌드하는 셸에서 export 명령을 실행하세요. 프로젝트를 정기적으로 작업한다면 적절한 셸 설정 파일에 이 변수를 추가하세요.

Debian 또는 Ubuntu에 ICU4C 설치

sudo apt install libicu-dev pkg-config

CometixCode 빌드

저장소 루트에서 터미널을 열고 최적화된 릴리스 빌드를 생성하세요.

cargo build --release

생성되는 바이너리의 이름은 cometix입니다. 릴리스 빌드는 Rust의 릴리스 최적화를 활성화하므로 일반적인 사용에 적합합니다.

도우미 실행

다음 명령으로 Cargo를 통해 CometixCode를 빌드하고 실행하세요.

cargo run --release

이 명령은 릴리스 프로필을 사용해 터미널 인터페이스를 시작합니다. 프로젝트가 활발히 개발 중이므로 주요 대화형 기능, 도구, 권한, MCP 및 명령 기능이 이미 제공되더라도 일부 워크플로가 완성되지 않았을 수 있습니다.

기본 진단 명령

CometixCode 내부에서 다음 슬래시 명령을 사용하면 사용 중인 ripgrep 실행 파일을 포함해 구성된 환경을 확인할 수 있습니다.

/doctor

파일 검색을 사용할 수 없거나 CometixCode가 패키지된 rg 바이너리와 호스트에 설치된 rg 바이너리 중 무엇을 선택했는지 확인해야 할 때 특히 유용합니다.

파일 검색을 위한 ripgrep 구성

CometixCode는 명령줄 도구인 ripgrep의 rg에 파일 검색을 위임합니다. ripgrep 실행 파일은 외부 자산으로 유지되며 cometix 실행 파일에 절대 컴파일되지 않습니다.

CometixCode는 다음 순서로 ripgrep을 검색합니다.

  1. 릴리스 아카이브에서 사용되는 실행 파일 옆의 vendor/ripgrep/<arch>-<os>/rg.
  2. 개발 중 사용되는 소스 트리의 vendor/ripgrep/<arch>-<os>/rg.
  3. PATH를 통해 사용할 수 있는 호스트 시스템의 rg 명령.

따라서 일치하는 vendor/ripgrep/ 플랫폼 디렉터리에 특정 버전의 ripgrep 빌드를 배치하거나, 호스트에 ripgrep을 설치하고 rg가 PATH에 포함되도록 설정할 수 있습니다.

호스트 ripgrep 바이너리 강제 사용

벤더로 포함된 ripgrep 자산을 건너뛰고 호스트 실행 파일을 사용하려면 USE_BUILTIN_RIPGREP을 0으로 설정하세요.

USE_BUILTIN_RIPGREP=0 cargo run --release

실행한 후 /doctor를 입력해 선택된 바이너리를 확인하세요.

테스트 모음을 올바르게 실행하기

CometixCode에는 환경 변수와 OnceLock 캐시를 포함한 프로세스 전역 상태가 있습니다. 모든 테스트를 하나의 프로세스에서 스레드로 실행하면 테스트 간에 상태가 유출될 수 있으므로 일반적인 cargo test는 이 크레이트의 유효한 품질 검증 단계로 간주되지 않습니다.

대신 이 프로젝트는 just를 통해 실행되는 cargo-nextest를 사용합니다. 이를 통해 각 테스트가 자체 프로세스에서 실행되며, 테스트가 상속할 수 있는 호스트 상태가 고정됩니다.

전체 테스트 모음 실행

just test

이 명령은 프로젝트에서 요구하는 전체 테스트 검증 단계입니다.

패턴과 일치하는 테스트 실행

just t <pattern>

<pattern>을 실행하려는 테스트를 필터링하는 데 사용할 부분 문자열로 바꾸세요.

빠른 코드 검사 수행

just check

링크 없이 타입 검사와 대여 검사를 수행하므로 Rust 코드를 편집하는 동안 빠르게 피드백을 확인하는 데 유용합니다.

고급 개발 팁

  • 일반적인 사용에는 릴리스 모드를 우선 사용하세요: 프로젝트 문서에 지정된 최적화된 빌드를 실행하려면 cargo run --release를 사용하세요.
  • 먼저 ICU 검색 경로를 확인하세요: macOS에서 ICU와 관련된 빌드 실패가 발생하면 PKG_CONFIG_PATH에 Homebrew의 ICU4C 메타데이터 디렉터리가 포함되지 않았을 수 있습니다.
  • /doctor로 파일 검색을 진단하세요: 벤더 파일이나 시스템 구성을 변경하기 전에 선택된 ripgrep 실행 파일이 정확한지 확인하세요.
  • 재현성이 중요할 때는 ripgrep 버전을 고정하세요: 전역에 설치된 버전에 의존하지 말고 플랫폼별 vendor/ripgrep/ 경로에 사용할 바이너리를 배치하세요.
  • 프로젝트 게이트를 대신해 cargo test를 사용하지 마세요: 코드베이스에서 요구하는 프로세스 격리를 테스트에 적용하려면 just test를 사용하세요.
  • 테스트 근거는 justfile을 확인하세요: 헤더에 선택된 테스트 전략을 뒷받침하는 측정 결과가 설명되어 있습니다.

라이선스 고려 사항

CometixCode는 AGPL-3.0-only 라이선스에 따라 배포됩니다. 이 라이선스에는 네트워크 사용 조항이 포함되어 있습니다. 수정된 버전을 네트워크 서비스로 운영하는 경우 해당 사용자는 그에 상응하는 수정된 소스 코드를 제공받을 권리가 있습니다.

결론

CometixCode는 CometixTUI를 사용해 Claude Code 터미널 아키텍처를 Rust로 재현한 구현을 제공합니다. Rust, ICU4C, 적절한 ripgrep 실행 파일을 사용할 수 있으면 Cargo로 빌드하고 실행할 수 있으며, /doctor를 통해 검색 구성을 점검하고 프로젝트의 프로세스 격리형 just test 워크플로로 변경 사항을 검증할 수 있습니다.