Carrick 소개
요약
Carrick은 다중 저장소(polyrepo) 환경의 TypeScript 팀을 위한 컨텍스트 레이어 도구입니다. AST 파싱과 벡터 임베딩을 통해 시스템 전체의 타입과 계약을 인덱싱하여, AI 코딩 에이전트가 코드의 의미와 의도를 기반으로 정확한 컨텍스트를 파악하도록 돕습니다.
핵심 포인트
- MCP를 통해 AI 에이전트에게 구조화된 시스템 컨텍스트 제공
- AST 및 TypeScript 컴파일러를 활용한 컴파일러 수준의 타입 정확도 확보
- 의도(intent) 기반 벡터 검색으로 이름이 아닌 기능 중심의 코드 탐색 가능
- CI 연동을 통해 코드 변경 시 에이전트의 컨텍스트 자동 업데이트
- 토큰 효율성을 극대화하여 저장소 규모와 상관없이 일정한 응답 속도 유지
carrick.tools에서 교차 게시되었습니다.
오늘 우리는 polyrepo (다중 저장소) TypeScript 팀을 위한 컨텍스트 레이어(context layer)인 Carrick을 출시합니다. Carrick은 시스템 전체, 모든 서비스, 타입(type) 및 계약(contract)을 하나의 인덱스로 통합하여, MCP를 통해 AI 코딩 에이전트에게 제공하고 CI에서 확인합니다. 이를 통해 에이전트는 코드가 수행하는 기능으로 검색하고, 서비스 경계를 넘나드는 실제 타입에 대해 검증하며, 함수를 새로 작성하는 대신 재사용할 수 있습니다. 에이전트는 소스 코드를 grep(검색)하고 읽는 대신 질문당 하나의 구조화된 답변을 읽으므로, 시스템이 3개의 저장소이든 30개의 저장소이든 질문에 소요되는 토큰 양은 동일합니다.
Carrick은 CI에서 배포된 코드의 소스 코드를 파싱하여 작동하므로, 모든 머지(merge)가 에이전트의 컨텍스트를 업데이트합니다. 이는 먼저 SWC (Speedy Web Compiler)를 사용하여 AST (abstract syntax tree, 추상 구문 트리)를 구축하고 함수 클로저(function closures), API 라우트, 프로토콜 계약 및 의존성을 추출함으로써 달성됩니다. 이와 함께 TypeScript 컴파일러 사이드카(sidecar)가 명시적 및 암시적 타입을 해결하여, Carrick이 컴파일러 수준의 정확도로 함수의 인자, 반환 타입 및 요청/응답 타입을 알 수 있게 합니다. AST 데이터는 다단계 추론(inference) 과정을 거치며, 이를 통해 Carrick은 코드가 무엇을 하는지뿐만 아니라 무엇을 의도하고 있는지도 알 수 있습니다. 그런 다음 우리는 이러한 의도(intent) 설명을 벡터화(vectorise)하여 에이전트에게 노출함으로써, 에이전트가 이름이 아닌 의미로 grep(검색)할 수 있도록 합니다. 에이전트는 코드를 찾아 헤매는 대신 자연어로 질문하고 필요한 코드를 돌려받을 수 있습니다.
예를 들어, 에이전트가 구독 데이터(subscription data)를 사용하여 사용자 정보를 보강해야 한다면, "subscriptions" 또는 "users"를 grep(검색)할 수 있으며, 이 과정에서 수백 개의 일치 항목이 나타날 수 있습니다. 그러면 에이전트는 가능성이 높은 소스 파일(source files)을 식별하여 컨텍스트(context)로 로드해야 합니다. 만약 검색에 실패하면 다시 시도합니다. 코드를 찾게 되면, 그것은 아마도 api -> v1 -> users와 같이 보이는 라우트 트리(route tree)에 호이스팅(hoisted)된 /subs 라우트 경로(route path) 상의 로직일 수 있습니다. 그러면 에이전트는 이 트리를 임포트(import) 단위로, 파일 단위로 탐색하여, 정확하게 수행할 수 있다는 가정하에 api/v1/users/subs를 찾아내야 합니다. 이러한 모든 컨텍스트 수집 과정은 새로운 기능을 빌드할 때마다 반복됩니다. Carrick은 에이전트가 다른 경로를 택할 수 있게 해줍니다. 에이전트는 자신이 정확히 무엇을 필요로 하는지 요청함으로써 올바른 코드를 찾아낼 수 있습니다:
"사용자 데이터를 구독 데이터로 보강해야 합니다"
Carrick은 CI(지속적 통합) 과정에서 벡터 임베딩(vector embeddings)을 구축하고 콜 그래프(call graphs)를 생성하여, 개발 중에 에이전트가 필요한 것을 한 번에 정확히 찾아낼 수 있도록 합니다. 검색이 이름(naming)이 아닌 의도된 동작(intended behaviour)을 기반으로 실행되기 때문에 익명 함수(anonymous functions)도 쉽게 찾을 수 있습니다. 이는 또한 에이전트가 기존 유틸리티(utilities)와 거의 동일한 중복 코드를 작성하는 대신, 기존의 것을 재사용할 수 있게 해주는 핵심 요소입니다. 에이전트가 엔드포인트(endpoint)를 호출해야 하는 경우 마운트 그래프(mount graph)가 완전히 해결(resolved)되어 있으며, 올바른 요청 본문(request body)을 구성해야 하는 경우에도 해당 데이터에 대한 완전한 타입 레벨(type level) 액세스 권한을 가집니다.
Carrick은 https://api.carrick.tools/mcp를 통해 MCP (Model Context Protocol)로 에이전트가 접근할 수 있습니다. TypeScript 컴파일러와 긴밀하게 통합되어 있기 때문에, 에이전트에게 실제 타입 정보를 노출하며, 이를 통해 에이전트가 API 형태를 환각(hallucination)하는 대신 서비스 경계를 가로질러 실제 타입에 따라 검증할 수 있도록 합니다. Carrick은 API 라이브러리와 프레임워크 전반의 마운팅 패턴(mounting patterns) 및 경로 식별자(path identifiers)를 따르는 브랜치-리프 노드 라우팅(branch to leaf node routing) 프로세스를 사용하여 애플리케이션 전반에 걸쳐 정확한 REST 라우트를 구축하며, 프로토콜(protocols) 간에도 동일한 작업을 수행합니다. 이러한 결합은 에이전트에게 강력한 컨텍스트(context)를 제공하여, 소스 코드만 읽고도 서비스 간의 계약(contracts)을 구축하고 유지 관리할 수 있게 합니다. 동일한 인덱스는 CI (Continuous Integration) 환경에서도 사용자에게 유용하게 작동합니다. Carrick GitHub App은 풀 리퀘스트(pull request)에서 계약 드리프트(contract drift)를 포착하여, 병합(merge) 전에 중복 함수, 버전 충돌 및 계약 불일치를 표시합니다.
컨텍스트 문제는 여러 리포지토리(cross repo)를 작업할 때 더욱 심화되는데, 이것이 Carrick이 단일 리포지토리, 모노레포(monorepo), 그리고 폴리레포(polyrepo) 설정 모두를 위해 개발된 이유입니다. 단일 리포지토리에서 바이브 코딩(vibe coding)을 하고 있거나, 모노레포 백엔드로 React 프론트엔드를 서비스하거나, 레거시 시스템의 여러 리포지토리를 다루고 있는 경우에도, 지금 바로 Carrick을 사용하여 에이전트에게 전체 시스템의 컨텍스트를 제공하고, 자신 있게 구축하며 빠르게 배포할 수 있습니다.
Carrick은 프리릴리스(pre-release) 기간 동안 무료입니다. 카드 등록도, 신청도 필요 없습니다. 가격 정책을 결정하는 동안 모든 스캔, MCP 호출 및 PR 체크는 저희가 부담하며, 폴리레포 팀은 3개월간의 무료 추론을 신청할 수 있습니다. 유료 플랜이 출시되면 개인 개발자를 위한 관대한 무료 티어(free tier)가 제공될 예정이며, 팀 가격 정책은 Carrick을 배포하는 비용이 스스로를 충당할 수 있도록 설계됨과 동시에, 더 중요한 것은 에이전트의 결과물(agentic output)을 개선하고 프로덕션 환경에서의 버그를 줄일 수 있도록 설계될 것입니다.
지금 바로 app.carrick.tools에서 시작할 수 있습니다: GitHub으로 가입하고, TypeScript 리포지토리에 Carrick GitHub Action을 추가한 다음, 에이전트를 연결하세요:
claude mcp add --transport http carrick https://api.carrick.tools/mcp
인증은 키가 필요 없는 (keyless) 엔드 투 엔드 (end-to-end) 방식입니다. Action은 GitHub Actions OIDC를 통해 인증하며, 사용자의 에이전트는 브라우저를 통해 Carrick에 로그인하므로 API 키가 전달되지 않습니다. 시스템 요구 사항 및 문서는 docs.carrick.tools에서 확인할 수 있습니다.
Carrick은 폴리레포 (polyrepo) TypeScript 팀을 위한 컨텍스트 레이어 (context layer)입니다. 모든 서비스, 타입 (type) 및 계약 (contract)에 대한 단일 인덱스를 제공하며, 이는 MCP를 통해 AI 코딩 에이전트에게 전달되고 CI에서 검증됩니다. 시작하기.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기