← 블로그로
Ai약 11 분 읽기

JetBrains ThinkRail, worktree로 병렬 에이전트를 격리한다

게시일 2026년 11월 2일
JetBrains ThinkRail, worktree로 병렬 에이전트를 격리한다

JetBrains는 당신이 뭘 하는지 이미 안다고 가정하는 도구를 내놓는 버릇이 있습니다. ThinkRail은 다릅니다. 그 차이는 README의 한 문장에 있습니다. git 저장소를 프로젝트로 열고, 거기서 워크스페이스를 git worktree로 잘라 쓴다.

그게 전체 논지이고, “AI IDE”보다 나은 논지입니다. ThinkRail은 JetBrains 인큐베이터 프로젝트로 스타 약 7,100개에 지난주 5,760개가 붙었고, 오픈 코딩 에이전트 pi를 중심으로 만들어졌습니다. JetBrains가 더한 건 채팅 패널이 아닙니다. 여러 에이전트가 서로 밟지 않고 동시에 일하게 하는 배관입니다.

희망 대신 worktree

같은 저장소에서 에이전트 둘을 돌려 봤다면 그 실패 모드를 압니다. 하나는 auth.ts를 고치기 시작하고, 다른 하나는 auth.ts를 리팩터링하기로 합니다. 그리고 당신은 오후 내내 양쪽 다 자기가 썼다고 믿는 머지 충돌을 고고학하듯 파고듭니다.

ThinkRail의 답은 모든 워크스페이스가 자기 브랜치와 자기 작업 디렉터리를 가진 git worktree라는 것입니다. 에이전트들은 병렬로 일하고 아무도 당신의 체크아웃을 건드리지 않습니다. 마음에 드는 브랜치를 머지하고 나머지는 지우면 됩니다.

그 위에 정리 정돈도 잘 돼 있습니다. 끝났거나 잠든 워크스페이스는 PR이 머지되거나 닫힐 때, 또는 조용한 한 주가 지나면 프로젝트별 선반에 저절로 내려앉고, 다시 그 안에서 작업하는 순간 돌아옵니다. fix-thing-2 같은 이름의 낡은 브랜치가 스무 개 쌓인 적이 있다면, 이건 당신이 원하는 줄도 몰랐던 기능입니다.

Four identical wooden workbenches in a workshop, each lit by its own lamp

상단 바는 활성 브랜치가 origin과 PR 대비 어디에 있는지 추적하고, 다음 단계를 클릭 한 번에 붙여 둡니다. 퍼블리시, 푸시, 또는 계획과 커밋, 템플릿, 에이전트가 쓴 초안으로 설명을 채운 PR 열기입니다. PR이 열리면 CI 체크와 리뷰 결정을 보여주고, 실패한 체크나 갈라진 브랜치를 에이전트에게 되돌려 줄 수 있습니다.

IDE 부분도 진짜다, 장식이 아니다

분할 가능한 Monaco 탭, git 변경 표시가 실시간으로 붙는 파일 트리, 변경 파일 뷰, 터미널, 문서가 전부 활성 워크스페이스 범위로 묶여 있습니다. 파일과 diff에 고정 리뷰 코멘트를 남겨 채팅에 구조화된 컨텍스트로 보낼 수 있습니다. 아니면 워크트리를 설치된 IDE에서 열 수도 있습니다. 우리 중 일부는 여전히 WebStorm을 원한다는 솔직한 인정입니다.

채팅은 세션별 토큰과 비용을 실시간으로 보여주며 스트리밍됩니다. 만드는 사람들이 자기 청구서를 내야 할 때만 나오는 디테일입니다. 돌아가는 턴에 개입하고, 후속 작업을 큐에 넣고, 서브에이전트에 위임하고, 에이전트가 당신이 편집하는 동안 갱신하는 공유 계획을 함께 쓸 수 있습니다. 완료된 단계마다 따로 커밋하고 리뷰할 수 있는데, “여기 38개 파일 있습니다”보다 훨씬 나은 리뷰 단위입니다.

⌘K 또는 Shift 두 번으로 여는 커맨드 팔레트는 열린 모든 프로젝트의 채팅, 워크스페이스, 프로젝트를 찾습니다. 아무것도 입력하지 않으면 당신을 기다리는 채팅을 나열합니다. 세션을 많이 돌리는 도구의 기본값으로 맞습니다.

살아남는 것은 스펙

제가 계속 돌아가게 되는 기능은 스펙 그래프입니다. 연결된 SPEC.md 묶음이 코드 옆에 살고, 에이전트는 전용 spec_* 도구로 이걸 읽고 검색하고 유지합니다. 읽기 전용 Specs 도구는 그래프를 워크벤치에 트리로 렌더링합니다.

논리는 탄탄합니다. 컨텍스트 윈도는 끝나고 세션도 끝납니다. 살아남는 건 적어 둔 것입니다. 대부분의 에이전트 도구는 “계획을 기억해”를 메모리 문제로 다룹니다. ThinkRail은 문서 문제로 다룹니다. 6개월 뒤 사람도 읽을 수 있는 쪽입니다.

동시에 가장 썩기 쉬운 기능이기도 합니다. 에이전트가 유지하고 아무도 리뷰하지 않는 스펙 그래프는 더 이상 존재하지 않는 소프트웨어에 대한 아주 자신 있고 아주 상세한 설명이 됩니다. 도구가 유지비를 싸게 만들 뿐, 공짜로 만들지는 않습니다. 규율은 당신 몫입니다.

설치

두 가지 형태이고 둘 다 덧붙이는 방식입니다. 네이티브 데스크톱 설치 프로그램, 그리고 같은 앱을 브라우저에서 여는 자체 완결 CLI입니다. 둘 다 릴리스 페이지에 SHA256SUMS를 올립니다.

macOS나 Linux, 그리고 Git Bash의 Windows에서 커맨드라인은 이렇습니다.

curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash

Windows의 cmd나 PowerShell에서는 이렇습니다.

powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"

그다음은 이렇습니다.

thinkrail ~/code/my-repo

PATH에 git이 있고 모델 프로바이더가 있어야 합니다. 앱에서 JetBrains AI로 로그인하거나, pi 자체 인증으로 아무 프로바이더나 연결하면 됩니다. ThinkRail 계정은 없습니다. JetBrains에서 기대하지 않았던 문장입니다.

Linux 데스크톱 빌드는 glibc 2.38 이상과 GTK 3, WebKitGTK 4.1, Ayatana AppIndicator 3, librsvg 2가 필요합니다. 실질적으로 Ubuntu 24.04 이상입니다. 업데이터는 패키지에 유효한 HTTPS 피드 아이덴티티가 있을 때만 나타나므로, 그보다 오래된 설치는 수동 설치를 한 번 해야 합니다.

이식성을 만드는 디테일

ThinkRail은 기존 ~/.pi/agent 설정을 읽습니다. 업무용 프로필을 따로 둔다면 PI_CODING_AGENT_DIR로 다른 곳을 가리키면 됩니다. 설정의 Custom servers는 OpenAI 호환 엔드포인트를 연결합니다. LiteLLM, sglang, vLLM, Ollama, LM Studio, llama.cpp 같은 것들이고, pi의 models.json에 기록되므로 채팅 선택기와 CLI 양쪽에 나타납니다.

mcp.json의 MCP 서버도 함께 따라오는데 동작이 옳습니다. 서버가 읽기 전용으로 표시하지 않은 호출은 채팅에서 먼저 묻고, 저장소가 정의한 서버는 승인 전까지 꺼 두고, OAuth 서버는 설정에서 로그인시킵니다.

에이전트 확장도 실용적입니다. 설정에서 에이전트가 무엇을 받는지 보여주고, 각각을 끌 수 있고, pi 패키지를 소스 단위로(npm, git, 로컬 폴더) 나를 위해 또는 저장소를 위해 설치합니다. ask-user-question과 visualize 도구는 별도 패키지로 공개돼 있어서, 터미널의 순정 pi도 같은 객관식 프롬프트와 인라인 다이어그램을 얻습니다.

제가 지켜볼 것

인큐베이터 프로젝트가 일주일에 7,600 스타를 받는 건, JetBrains 릴리스 주기를 아직 거치지 않은 물건에 쏟아지는 과한 관심입니다. JetBrains의 인큐베이터 프로젝트는 제품이 되거나 조용히 멈추는 이력이 있고, 베타는 어느새 의존하는 버전이 되곤 합니다.

다른 위험은 개념적입니다. 표면이 아주 많은 완성도 높은 도구입니다. 워크트리, 스펙, 팔레트, 확장, MCP, 테마, 폰트, 문서화된 추가 경로가 있는 네 가지 내장 언어. 하나하나가 코드를 쓰는 대신 설정하게 되는 자리입니다. ThinkRail에 가장 좋은 결말은 워크트리 모델이 너무 당연해져서 아무도 더 이상 말하지 않게 되고, 나머지 앱이 비켜서는 것입니다.

이미 병렬 에이전트를 돌리고 있고 지금의 답이 “터미널 창 여러 개와 손가락 교차”라면 써 보세요. 워크트리 격리만으로도 다운로드할 값이 있습니다. 평범한 IDE로 쓰면, 그걸 노리는 물건이 아니라는 걸 알게 될 겁니다.

관련 글