Skip to main content
Glama

InReview

InReview는 풀 리퀘스트를 열지 않고 로컬 Jujutsu (jj) 변경 사항을 검토하기 위한 VS Code 확장 프로그램입니다.

jj 변경 사항의 연속 범위를 선택하고, VS Code에서 결합 diff 또는 변경별 diff를 살펴보고, diff의 새 쪽에 댓글을 남길 수 있습니다. 네이티브 로컬 MCP 브리지를 통해 GitHub Copilot CLI가 해당 댓글을 읽고, 답글을 달고, 코드를 업데이트한 후 댓글을 해결할 수 있습니다.

InReview는 실험적인 로컬 빌드입니다. VS Code Marketplace에 게시되지 않았습니다.

Features

  • 검토할 과거의 연속 변경 범위, revset, 또는 @로 끝나는 최신 X개 변경 사항을 선택합니다.

  • 결합 스택 diff 하나와 변경별 diff 사이를 전환합니다.

  • VS Code의 네이티브 diff 편집기, 구문 강조, 테마, Comments API를 사용합니다.

  • 추가된 줄, 변경되지 않은 컨텍스트 줄, 전체 파일에 댓글을 추가합니다.

  • 추가, 수정, 삭제, 이름 변경, 복사, 바이너리, 심볼릭 링크 항목을 검토합니다.

  • jj가 다시 쓰는 동안 정확한 댓글 기록을 유지하면서 검토를 새로 고칩니다.

  • 일치하지 않는 댓글을 원래 스냅샷에 연결된 오래된(outdated) 스레드로 유지합니다.

  • 로컬 검토를 보관하고 복원합니다.

  • 네이티브 사용자별 MCP 브리지를 통해 GitHub Copilot CLI를 한 번 연결합니다.

Related MCP server: copilot-mcp-server

Requirements

  • VS Code 1.96 이상.

  • VS Code 확장 호스트에서 사용할 수 있는 jj 0.44 이상.

  • jj 저장소 하나를 포함하는 신뢰할 수 있는 파일 시스템 워크스페이스.

  • 에이전트 검토 지원을 원하면 GitHub Copilot CLI.

패키징된 확장 프로그램에는 네이티브 브리지 실행 파일이 포함됩니다. 최종 사용자에게 Node.js, Rust 또는 다른 브리지 런타임이 필요하지 않습니다.

일치하는 네이티브 VSIX를 실행할 수 있는 로컬 및 원격 확장 호스트가 지원됩니다. 여기에는 WSL, SSH, Dev Containers, VS Code Tunnels가 포함됩니다. GitHub Copilot CLI를 InReview와 동일한 확장 호스트 환경에서 실행하세요. 브리지는 호스트 간에 IPC를 전달하지 않습니다.

VS Code가 jj를 찾지 못하면 PATH를 변경한 후 모든 VS Code 창을 다시 시작하거나, InReview: Jj Path에 절대 실행 파일 경로를 설정하세요.

Install the local VSIX

빌드 및 설치:

npm ci
npm run package:vsix
code --install-extension .\inreview-<target>-0.0.1.vsix --force

VSIX를 빌드하려면 Rust 1.88 이상이 필요합니다. <target>linux-x64, darwin-arm64, win32-x64 같은 현재 네이티브 플랫폼입니다.

main에 대한 각 커밋은 Build VSIX packages GitHub Actions 워크플로를 실행합니다. 실행은 Linux, macOS, Windows의 x64 및 arm64 변형에 대한 개별 아티팩트를 업로드합니다.

설치 후 VS Code를 다시 로드하세요.

Known issue: Node URL deprecation warning

VS Code 1.135은 로컬 VSIX를 성공적으로 설치한 후 url.parse()에 대한 Node DEP0169 경고를 출력할 수 있습니다. 사용 중단 추적은 VS Code의 cliProcessMain.js에 있는 갤러리 메타데이터 요청을 가리킵니다. 격리된 사용자 데이터 및 확장 디렉터리에서 최소 확장으로도 동일한 추적이 발생합니다. 테스트 시작 시 VS Code의 기본 제공 Agent Host가 시작된 직후 [AgentHost:stderr]로 경고가 보고될 수도 있습니다. InReview의 소스 및 프로덕션 번들은 더 이상 사용되지 않는 API를 호출하지 않습니다. Microsoft가 microsoft/vscode#301941에서 업스트림 수정을 소유하고 있습니다. 해당 VSIX 보고서는 중복으로 종결되었습니다.

Review changes

  1. VS Code에서 신뢰할 수 있는 jj 저장소 하나를 엽니다.

  2. InReview 활동 표시줄 보기를 엽니다.

  3. InReview: Start Review를 실행합니다.

  4. Choose Range, Current Stack (Last X), 또는 Advanced: Enter jj Revset을 선택합니다.

  5. 범위의 경우 포함할 최신 변경 사항을 선택한 다음 가장 오래된 포함 변경 사항을 선택합니다. Load older changes를 사용하여 기록 창을 확장합니다.

  6. 정렬된 선택 미리 보기를 확인합니다.

  7. Active Review에서 파일을 선택하여 네이티브 diff를 엽니다.

  8. 추가되었거나 변경되지 않은 새 쪽 줄의 댓글 거터를 사용하거나 Add File Comment를 사용합니다.

  9. 선택한 변경 사항이 다시 쓰여진 후 InReview: Refresh Review를 실행합니다.

InReview는 변경할 수 없는 스냅샷을 저장합니다. 스레드의 전체 대상과 컨텍스트가 새로 고쳐진 diff에 정확하고 고유하게 매핑되는 경우에만 스레드가 인라인으로 유지됩니다. 그렇지 않으면 Outdated가 되어 Comments 보기에서 계속 사용할 수 있습니다.

Last X@에 최대 X - 1개의 직접 조상을 더한 것을 의미합니다. 선택 항목은 연속된 단일 부모 스택입니다. jj 루트 변경 전에 중지되므로 요청에 X개보다 적은 변경 사항이 포함될 수 있습니다. InReview는 선택한 스택에서 병합, 분기 변경, 해결되지 않은 충돌을 거부합니다. 새로 고침은 다시 쓰기 후 원래의 안정적인 변경 ID를 따릅니다. 나중에 @가 되는 새 하위를 추가하지 않습니다.

Choose Range@의 조상을 최대 200개까지 50개씩 페이지로 탐색합니다. 선택한 최신 및 가장 오래된 변경 사항이 모두 포함됩니다. InReview는 병합을 가로지르거나, 분기 변경 또는 해결되지 않은 충돌을 포함하거나, 하나의 연속 부모 체인을 형성하지 않는 범위를 거부합니다.

Advanced jj Revset은 하나의 연속 단일 부모 체인에서 1~200개의 변경 사항으로 해석되는 모든 revset을 허용합니다. InReview는 해석된 변경 사항을 미리 보고 전체 안정적인 변경 ID를 저장합니다. 새로 고침 중에 원래 revset을 저장하거나 다시 평가하지 않습니다.

줄 댓글은 새 쪽의 추가되었거나 변경되지 않은 줄에서만 사용할 수 있습니다. 삭제된 줄은 계속 표시되지만 댓글을 달 수 없습니다. 삭제된 파일에는 파일 댓글을 달 수 있습니다. 새로 고침은 전체 대상과 컨텍스트가 정확히 하나 일치하는 경우에만 스레드를 최신 상태로 유지합니다. 다른 모든 스레드는 Outdated가 되며 변경할 수 없는 원래 스냅샷에 계속 연결됩니다. 사용자 댓글은 편집하거나 삭제할 수 있습니다. 에이전트 답글은 변경할 수 없습니다. 해결된 스레드는 다시 열 수 있습니다.

Connect GitHub Copilot CLI

확장 프로그램은 패키징된 네이티브 브리지를 안정적인 확장 저장소에 설치합니다. 사용자당 하나의 브리지 데몬이 동일한 확장 호스트 환경에서 적격한 모든 InReview 창을 제공합니다. 각 신뢰할 수 있는 창은 사용자 전용 Unix 도메인 소켓 또는 Windows 명명된 파이프를 통해 정식 워크스페이스를 등록합니다. InReview는 TCP 포트를 열지 않습니다.

브리지는 신뢰할 수 있는 창에 지원되는 jj 저장소가 하나 포함되어 있고 inreview.mcp.enabled가 켜져 있으면 자동으로 시작됩니다. InReview 보기를 열거나 명령을 실행할 필요는 없습니다.

  1. InReview: Copy InReview MCP Setup을 실행합니다.

  2. copilot mcp add 명령 또는 mcp-config.json 조각 중 하나를 선택합니다.

  3. 결과를 동일한 확장 호스트 환경에서 GitHub Copilot CLI에 한 번 붙여넣습니다.

  4. /mcp show를 사용하여 서버 연결을 확인합니다.

복사된 명령의 형태는 다음과 같습니다.

copilot mcp add --tools "list_workspaces,connect_workspace,read_review_metadata,read_comments,reply_comment,close_comments" inreview -- "<native-launcher>"

inreview 항목은 해당 환경에 등록된 모든 워크스페이스를 검색합니다. 저장소마다 MCP 항목이 하나씩 필요하지 않습니다. 에이전트에게 열린 워크스페이스 목록을 요청하고, 반환된 절대 루트 중 하나에 연결하고, 열린 댓글을 검토하도록 요청하세요.

MCP tools

도구

용도

list_workspaces

브리지에 등록된 정식 루트와 호스트 플랫폼을 나열합니다.

connect_workspace

MCP 세션을 정확한 워크스페이스 루트와 활성 검토에 바인딩합니다.

read_review_metadata

선택한 변경 사항, 스냅샷, 파일 메타데이터, 댓글 수를 읽습니다.

read_comments

필터링된 현재, 오래된, 열린 또는 해결된 스레드를 읽습니다.

reply_comment

열린 스레드 하나에 Agent로 답글을 달고 해결하지 않습니다.

close_comments

선택적 해결 메모와 함께 하나 이상의 열린 스레드를 원자적으로 해결합니다.

브리지는 베어러 토큰을 사용하지 않습니다. 소켓 또는 명명된 파이프를 현재 사용자로 제한하고, 제한된 메시지를 검증하고, MCP 세션을 격리하며, 위의 여섯 가지 도구만 노출합니다. 브리지는 등록된 확장 프로세스로 작업을 라우팅합니다. 임의의 파일을 읽거나, 셸 명령을 실행하거나, jj를 실행할 수 없습니다. 신뢰할 수 없는 공유 사용자 환경에서 사용하지 마세요.

Commands

명령 팔레트 또는 해당 보기 및 댓글 작업을 사용하세요.

명령

용도

InReview: Start Review

범위, revset 또는 최신 변경 스택을 선택하고 캡처합니다.

InReview: Refresh Review

동일한 안정적인 변경 ID의 다시 쓰여진 버전을 캡처합니다.

InReview: Archive Review

활성 검토를 읽기 전용으로 만들고 기록으로 이동합니다.

InReview: Restore Archived Review

보관된 검토를 활성 검토로 복원합니다.

InReview: Rename Review

활성 검토 제목을 변경합니다.

InReview: Delete Archived Review

보관된 검토 하나를 영구적으로 제거합니다.

InReview: Show Combined Diff

가장 오래된 변경의 부모와 스택 헤드를 비교합니다.

InReview: Show Per-Change Diffs

각 선택 변경 사항을 직접 부모와 비교하여 표시합니다.

InReview: Add File Comment

전체 파일에 적용되는 댓글을 추가합니다.

InReview: Resolve Comment / Reopen Comment

스레드의 해결 상태를 변경합니다.

InReview: Submit/Edit/Save/Cancel/Delete Comment

VS Code의 Comments UI를 통해 사용자 댓글을 관리합니다.

InReview: Copy InReview MCP Setup

일회성 네이티브 stdio 명령 또는 JSON MCP 구성을 복사합니다.

InReview: Show MCP Bridge Status

네이티브 브리지 설치 및 워크스페이스 등록 상태를 표시합니다.

Views

  • Active Review는 선택한 변경 사항, 현재 스냅샷, 표시 모드, 변경된 파일을 표시합니다.

  • Comments는 열린 현재, 열린 오래된, 해결된 스레드를 그룹화합니다.

  • History는 최근 보관된 검토 20개를 표시합니다.

검토 데이터는 VS Code의 확장 전역 저장소에 저장됩니다. 여기에는 변경할 수 없는 파일 스냅샷, 검토 메타데이터, 댓글이 포함됩니다. 저장소에는 절대 기록되지 않습니다. InReview는 압축된 콘텐츠 주소 지정 blob을 사용하고, 저장소별로 쓰기를 직렬화하고, 최근 보관된 검토 20개를 유지하며, 참조되지 않은 blob을 가비지 수집합니다. 원격 분석을 보내지 않으며 네트워크 요청을 하지 않습니다. MCP 트래픽은 로컬 사용자별 소켓 또는 명명된 파이프에 유지됩니다.

Settings

설정

기본값

설명

inreview.jj.path

jj

jj 실행 파일의 명령 이름 또는 절대 경로.

inreview.review.defaultChangeCount

1

Current Stack (Last X) 프롬프트의 초기 값.

inreview.review.largeDiffWarningLines

10000

확인이 필요한 변경된 줄 수.

inreview.mcp.enabled

true

적격한 신뢰할 수 있는 워크스페이스를 네이티브 MCP 브리지에 등록합니다.

inreview.logging.level

info

출력 채널 로깅 임계값.

Current limitations

  • VS Code 창당 하나의 jj 저장소.

  • 리뷰에는 하나의 연속된 단일 부모 변경 스택이 포함되어야 합니다.

  • 병합 변경 사항과 해결되지 않은 충돌은 거부됩니다.

  • 삭제된 줄에는 주석을 달 수 없습니다.

  • VS Code의 제안된 다중 파일 diff API 대신 파일별 네이티브 diff.

  • 로컬 및 원격 확장 호스트 간 브리지 전달이 없습니다.

  • 클라우드 동기화 또는 공유 리뷰 서버가 없습니다.

  • 브리지에는 애플리케이션 토큰이 없습니다. 로컬 IPC 엔드포인트는 현재 사용자의 운영 체제 액세스 제어에 의존합니다.

  • Linux, macOS, WSL, SSH, Dev Container 및 Tunnel 확장 호스트는 지원 대상이지만 0.0.1 릴리스에서 모두 수동으로 테스트되지는 않았습니다.

개발

npm ci
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration
npm run build:production
npm run validate:package
npm run package:vsix

npm run check는 타입 검사, 린팅, 단위 및 jj 통합 테스트, 프로덕션 번들, 패키지 검증을 실행합니다.

이 확장은 안정적인 공개 VS Code API를 사용합니다. 제안된 API는 활성화하지 않습니다. 패키지 검증은 정확한 VSIX 허용 목록을 적용합니다: 매니페스트, README, 변경 로그, 프로덕션 번들, 아이콘.

주요 소스 영역은 다음과 같습니다.

src/domain/   Persisted review and comment models
src/storage/  Atomic manifests, locks, and content-addressed blobs
src/jj/       Safe jj process adapter and snapshot capture
src/diff/     Git patch parsing and file classification
src/review/   Review lifecycle and comment services
src/vscode/   Views, native virtual diffs, and Comments API integration
src/mcp/      Streamable HTTP transport, tools, and Copilot setup

Related MCP Connectors

Related MCP Servers